Convert framework packages to new static translation wrappers.
authorJan Schneider <jan@horde.org>
Fri, 22 Oct 2010 17:26:53 +0000 (19:26 +0200)
committerJan Schneider <jan@horde.org>
Fri, 22 Oct 2010 17:27:04 +0000 (19:27 +0200)
223 files changed:
framework/Alarm/lib/Horde/Alarm/Handler.php
framework/Alarm/lib/Horde/Alarm/Handler/Desktop.php
framework/Alarm/lib/Horde/Alarm/Handler/Mail.php
framework/Alarm/lib/Horde/Alarm/Handler/Notify.php
framework/Alarm/lib/Horde/Alarm/Translation.php [new file with mode: 0644]
framework/Alarm/package.xml
framework/Argv/lib/Horde/Argv/HelpFormatter.php
framework/Argv/lib/Horde/Argv/IndentedHelpFormatter.php
framework/Argv/lib/Horde/Argv/Option.php
framework/Argv/lib/Horde/Argv/Parser.php
framework/Argv/lib/Horde/Argv/TitledHelpFormatter.php
framework/Argv/lib/Horde/Argv/Translation.php [new file with mode: 0644]
framework/Argv/package.xml
framework/Block/lib/Horde/Block.php
framework/Block/lib/Horde/Block/Collection.php
framework/Block/lib/Horde/Block/Layout.php
framework/Block/lib/Horde/Block/Layout/Manager.php
framework/Block/lib/Horde/Block/Layout/View.php
framework/Block/lib/Horde/Block/Translation.php [new file with mode: 0644]
framework/Block/lib/Horde/Block/Ui.php
framework/Block/package.xml
framework/Cli/lib/Horde/Cli.php
framework/Cli/lib/Horde/Cli/Translation.php [new file with mode: 0644]
framework/Cli/package.xml
framework/Compress/lib/Horde/Compress.php
framework/Compress/lib/Horde/Compress/Dbx.php
framework/Compress/lib/Horde/Compress/Gzip.php
framework/Compress/lib/Horde/Compress/Rar.php
framework/Compress/lib/Horde/Compress/Tar.php
framework/Compress/lib/Horde/Compress/Translation.php [new file with mode: 0644]
framework/Compress/lib/Horde/Compress/Zip.php
framework/Compress/package.xml
framework/Core/lib/Horde.php
framework/Core/lib/Horde/Core/Ajax/Application.php
framework/Core/lib/Horde/Core/Auth/Application.php
framework/Core/lib/Horde/Core/Auth/Signup/Base.php
framework/Core/lib/Horde/Core/Auth/Signup/Form.php
framework/Core/lib/Horde/Core/Factory/History.php
framework/Core/lib/Horde/Core/Factory/Prefs.php
framework/Core/lib/Horde/Core/Factory/Share.php
framework/Core/lib/Horde/Core/Factory/Twitter.php
framework/Core/lib/Horde/Core/Factory/Vfs.php
framework/Core/lib/Horde/Core/Mime/Viewer/Vcard.php
framework/Core/lib/Horde/Core/Notification/Status.php
framework/Core/lib/Horde/Core/Perms/Ui.php
framework/Core/lib/Horde/Core/Prefs/Identity.php
framework/Core/lib/Horde/Core/Prefs/Ui.php
framework/Core/lib/Horde/Core/Prefs/Ui/Widgets.php
framework/Core/lib/Horde/Core/Sidebar.php
framework/Core/lib/Horde/Core/Text/Filter/Highlightquotes.php
framework/Core/lib/Horde/Core/Translation.php [new file with mode: 0644]
framework/Core/lib/Horde/Core/Ui/JsCalendar.php
framework/Core/lib/Horde/Core/Ui/Pager.php
framework/Core/lib/Horde/Core/Ui/VarRenderer/Html.php
framework/Core/lib/Horde/Help.php
framework/Core/lib/Horde/Menu.php
framework/Core/lib/Horde/Registry.php
framework/Core/lib/Horde/Script/Files.php
framework/Core/package.xml
framework/Crypt/lib/Horde/Crypt.php
framework/Crypt/lib/Horde/Crypt/Pgp.php
framework/Crypt/lib/Horde/Crypt/Smime.php
framework/Crypt/lib/Horde/Crypt/Translation.php [new file with mode: 0644]
framework/Crypt/package.xml
framework/Data/lib/Horde/Data/Base.php
framework/Data/lib/Horde/Data/Translation.php [new file with mode: 0644]
framework/Data/lib/Horde/Data/Tsv.php
framework/Data/package.xml
framework/Date/lib/Horde/Date/Recurrence.php
framework/Date/lib/Horde/Date/Translation.php [new file with mode: 0644]
framework/Date/lib/Horde/Date/Utils.php
framework/Date/package.xml
framework/Exception/lib/Horde/Exception/NotFound.php
framework/Exception/lib/Horde/Exception/PermissionDenied.php
framework/Exception/lib/Horde/Exception/Translation.php [new file with mode: 0644]
framework/Exception/package.xml
framework/File_Csv/lib/Horde/File/Csv.php
framework/File_Csv/lib/Horde/File/Csv/Translation.php [new file with mode: 0644]
framework/File_Csv/package.xml
framework/Form/Form.php
framework/Form/Form/Renderer.php
framework/Form/Form/Translation.php [new file with mode: 0644]
framework/Form/Form/Type.php
framework/Form/Form/Type/tableset.php
framework/Form/Form/Variable.php
framework/Form/package.xml
framework/Icalendar/lib/Horde/Icalendar/Translation.php [new file with mode: 0644]
framework/Icalendar/lib/Horde/Icalendar/Vevent.php
framework/Icalendar/package.xml
framework/Image/lib/Horde/Image/Exif.php
framework/Image/lib/Horde/Image/Exif/Base.php
framework/Image/lib/Horde/Image/Exif/Bundled.php
framework/Image/lib/Horde/Image/Exif/Parser/Base.php
framework/Image/lib/Horde/Image/Exif/Parser/Canon.php
framework/Image/lib/Horde/Image/Exif/Parser/Fujifilm.php
framework/Image/lib/Horde/Image/Exif/Parser/Nikon.php
framework/Image/lib/Horde/Image/Exif/Parser/Olympus.php
framework/Image/lib/Horde/Image/Exif/Parser/Panasonic.php
framework/Image/lib/Horde/Image/Exif/Parser/Sanyo.php
framework/Image/lib/Horde/Image/Translation.php [new file with mode: 0644]
framework/Image/package.xml
framework/Itip/lib/Horde/Itip/Event/Vevent.php
framework/Itip/lib/Horde/Itip/Response/Type/Accept.php
framework/Itip/lib/Horde/Itip/Response/Type/Base.php
framework/Itip/lib/Horde/Itip/Response/Type/Decline.php
framework/Itip/lib/Horde/Itip/Response/Type/Tentative.php
framework/Itip/package.xml
framework/Kolab/Kolab.php
framework/Kolab/Kolab/Translation.php [new file with mode: 0644]
framework/Kolab/package.xml
framework/Kolab_Format/lib/Horde/Kolab/Format/Translation.php [new file with mode: 0644]
framework/Kolab_Format/lib/Horde/Kolab/Format/Xml.php
framework/Kolab_Format/package.xml
framework/Kolab_FreeBusy/lib/Horde/Kolab/FreeBusy/Driver/Base.php
framework/Kolab_FreeBusy/lib/Horde/Kolab/FreeBusy/Driver/Freebusy/Base.php
framework/Kolab_FreeBusy/lib/Horde/Kolab/FreeBusy/Driver/Freebusy/Kolab.php
framework/Kolab_FreeBusy/lib/Horde/Kolab/FreeBusy/Imap.php
framework/Kolab_FreeBusy/lib/Horde/Kolab/FreeBusy/Report.php
framework/Kolab_FreeBusy/lib/Horde/Kolab/FreeBusy/Translation.php [new file with mode: 0644]
framework/Kolab_FreeBusy/lib/Horde/Kolab/FreeBusy/View.php
framework/Kolab_FreeBusy/package.xml
framework/Kolab_Resource/lib/Horde/Kolab/Resource.php
framework/Kolab_Resource/lib/Horde/Kolab/Resource/Translation.php [new file with mode: 0644]
framework/Kolab_Resource/package.xml
framework/Kolab_Storage/lib/Horde/Kolab/Storage/Data.php
framework/Kolab_Storage/lib/Horde/Kolab/Storage/Translation.php [new file with mode: 0644]
framework/Kolab_Storage/package.xml
framework/LoginTasks/lib/Horde/LoginTasks.php
framework/LoginTasks/lib/Horde/LoginTasks/Translation.php [new file with mode: 0644]
framework/LoginTasks/package.xml
framework/Mime/lib/Horde/Mime/Headers.php
framework/Mime/lib/Horde/Mime/Mail.php
framework/Mime/lib/Horde/Mime/Mdn.php
framework/Mime/lib/Horde/Mime/Translation.php [new file with mode: 0644]
framework/Mime/package.xml
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Base.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Msword.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Rar.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Rfc822.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Rtf.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Tgz.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Translation.php [new file with mode: 0644]
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Wordperfect.php
framework/Mime_Viewer/lib/Horde/Mime/Viewer/Zip.php
framework/Mime_Viewer/package.xml
framework/Model/lib/Horde/Form.php
framework/Model/lib/Horde/Form/Renderer.php
framework/Model/lib/Horde/Form/Renderer/Xhtml.php
framework/Model/lib/Horde/Form/Type.php
framework/Model/lib/Horde/Form/Type/Color.php
framework/Model/lib/Horde/Form/Type/CreditCard.php
framework/Model/lib/Horde/Form/Type/Date.php
framework/Model/lib/Horde/Form/Type/Email.php
framework/Model/lib/Horde/Form/Type/Enum.php
framework/Model/lib/Horde/Form/Type/Int.php
framework/Model/lib/Horde/Form/Type/Number.php
framework/Model/lib/Horde/Form/Type/Octal.php
framework/Model/lib/Horde/Form/Type/Password.php
framework/Model/lib/Horde/Form/Type/Phone.php
framework/Model/lib/Horde/Form/Type/Set.php
framework/Model/lib/Horde/Form/Type/String.php
framework/Model/lib/Horde/Form/Type/Time.php
framework/Model/lib/Horde/Form/VarRenderer/Xhtml.php
framework/Model/lib/Horde/Model/Translation.php [new file with mode: 0644]
framework/Net_IMSP/IMSP.php
framework/Net_IMSP/IMSP/Auth.php
framework/Net_IMSP/IMSP/Book.php
framework/Net_IMSP/IMSP/Translation.php [new file with mode: 0644]
framework/Net_IMSP/package.xml
framework/Nls/lib/Horde/Nls/Countries.php
framework/Nls/lib/Horde/Nls/Geoip.php
framework/Nls/lib/Horde/Nls/Tld.php
framework/Nls/lib/Horde/Nls/Translation.php [new file with mode: 0644]
framework/Nls/package.xml
framework/Perms/lib/Horde/Perms.php
framework/Perms/lib/Horde/Perms/Translation.php [new file with mode: 0644]
framework/Perms/package.xml
framework/Prefs/lib/Horde/Prefs.php
framework/Prefs/lib/Horde/Prefs/CategoryManager.php
framework/Prefs/lib/Horde/Prefs/Identity.php
framework/Prefs/lib/Horde/Prefs/Translation.php [new file with mode: 0644]
framework/Prefs/package.xml
framework/Rpc/lib/Horde/Rpc.php
framework/Rpc/lib/Horde/Rpc/Phpgw.php
framework/Rpc/lib/Horde/Rpc/Soap.php
framework/Rpc/lib/Horde/Rpc/Translation.php [new file with mode: 0644]
framework/Rpc/lib/Horde/Rpc/Webdav.php
framework/Rpc/package.xml
framework/Service_Facebook/lib/Horde/Service/Facebook/Request.php
framework/Service_Facebook/lib/Horde/Service/Facebook/Translation.php [new file with mode: 0644]
framework/Service_Facebook/lib/Horde/Service/Facebook/UploadRequest.php
framework/Service_Facebook/package.xml
framework/Service_Scribd/lib/Horde/Block/Scribd.php
framework/Service_Scribd/lib/Horde/Service/Scribd/Translation.php [new file with mode: 0644]
framework/Service_Scribd/package.xml
framework/Share/lib/Horde/Share.php
framework/Share/lib/Horde/Share/Kolab.php
framework/Share/lib/Horde/Share/Object/Kolab.php
framework/Share/lib/Horde/Share/Sql.php
framework/Share/lib/Horde/Share/Sql/Hierarchical.php
framework/Share/lib/Horde/Share/Translation.php [new file with mode: 0644]
framework/Share/package.xml
framework/SyncML/SyncML/Backend.php
framework/SyncML/SyncML/Translation.php [new file with mode: 0644]
framework/SyncML/package.xml
framework/Text_Filter/lib/Horde/Text/Filter/Base.php
framework/Text_Filter/lib/Horde/Text/Filter/Html2text.php
framework/Text_Filter/lib/Horde/Text/Filter/Translation.php [new file with mode: 0644]
framework/Text_Filter/package.xml
framework/VFS/lib/VFS.php
framework/VFS/lib/VFS/Translation.php [new file with mode: 0644]
framework/VFS/lib/VFS/smb.php
framework/VFS/lib/VFS/sql_file.php
framework/VFS/package.xml
framework/VFS_ISOWriter/ISOWriter.php
framework/VFS_ISOWriter/ISOWriter/RealInputStrategy.php
framework/VFS_ISOWriter/ISOWriter/RealInputStrategy/copy.php
framework/VFS_ISOWriter/ISOWriter/RealOutputStrategy.php
framework/VFS_ISOWriter/ISOWriter/RealOutputStrategy/copy.php
framework/VFS_ISOWriter/ISOWriter/RealOutputStrategy/direct.php
framework/VFS_ISOWriter/ISOWriter/Translation.php [new file with mode: 0644]
framework/VFS_ISOWriter/ISOWriter/mkisofs.php
framework/VFS_ISOWriter/package.xml

index 8dafdca..a45d330 100644 (file)
@@ -25,27 +25,6 @@ abstract class Horde_Alarm_Handler
     public $alarm;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
-     * Constructor.
-     *
-     * @param array $params  Any parameters that the handler might need.
-     */
-    public function __construct(array $params = null)
-    {
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Alarm', dirname(__FILE__) . '/../../../locale');
-        }
-    }
-
-    /**
      * Notifies about an alarm.
      *
      * @param array $alarm  An alarm hash.
index 8198ab4..87d4359 100644 (file)
@@ -43,7 +43,6 @@ class Horde_Alarm_Handler_Desktop extends Horde_Alarm_Handler
      */
     public function __construct(array $params = null)
     {
-        parent::__construct($params);
         /*
         if (!isset($params['js_notify'])) {
             throw new InvalidArgumentException('Parameter \'js_notify\' missing.');
@@ -83,6 +82,6 @@ class Horde_Alarm_Handler_Desktop extends Horde_Alarm_Handler
      */
     public function getDescription()
     {
-        return $this->_dict->t("Desktop notification (with certain browsers)");
+        return Horde_Alarm_Translation::t("Desktop notification (with certain browsers)");
     }
 }
index c35ee65..1b89ffb 100644 (file)
@@ -42,8 +42,6 @@ class Horde_Alarm_Handler_Mail extends Horde_Alarm_Handler
      */
     public function __construct(array $params = null)
     {
-        parent::__construct($params);
-
         foreach (array('identity', 'mail') as $param) {
             if (!isset($params[$param])) {
                 throw new Horde_Alarm_Exception('Parameter \'' . $param . '\' missing.');
@@ -115,7 +113,7 @@ class Horde_Alarm_Handler_Mail extends Horde_Alarm_Handler
      */
     public function getDescription()
     {
-        return $this->_dict->t("Email");
+        return Horde_Alarm_Translation::t("Email");
     }
 
     /**
@@ -135,7 +133,7 @@ class Horde_Alarm_Handler_Mail extends Horde_Alarm_Handler
         return array(
             'email' => array(
                 'type' => 'text',
-                'desc' => $this->_dict->t("Email address (optional)"),
+                'desc' => Horde_Alarm_Translation::t("Email address (optional)"),
                 'required' => false));
     }
 }
index 90cd4ba..ab53156 100644 (file)
@@ -41,8 +41,6 @@ class Horde_Alarm_Handler_Notify extends Horde_Alarm_Handler
      */
     public function __construct(array $params = null)
     {
-        parent::__construct($params);
-
         /*
         if (!isset($params['notification'])) {
             throw new Horde_Alarm_Exception('Parameter \'notification\' missing.');
@@ -78,7 +76,7 @@ class Horde_Alarm_Handler_Notify extends Horde_Alarm_Handler
      */
     public function getDescription()
     {
-        return $this->_dict->t("Inline");
+        return Horde_Alarm_Translation::t("Inline");
     }
 
     /**
@@ -98,7 +96,7 @@ class Horde_Alarm_Handler_Notify extends Horde_Alarm_Handler
         return array(
             'sound' => array(
                 'type' => 'sound',
-                'desc' => $this->_dict->t("Play a sound?"),
+                'desc' => Horde_Alarm_Translation::t("Play a sound?"),
                 'required' => false));
     }
 }
diff --git a/framework/Alarm/lib/Horde/Alarm/Translation.php b/framework/Alarm/lib/Horde/Alarm/Translation.php
new file mode 100644 (file)
index 0000000..034ce63
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Alarm
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Alarm_Translation is the translation wrapper class for Horde_Alarm.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Alarm
+ */
+class Horde_Alarm_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Alarm';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Alarm/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Alarm';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Alarm/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index 799a54c..8e63373 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.9.0" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Alarm</name>
  <channel>pear.horde.org</channel>
  <summary>Horde alarm libraries</summary>
@@ -13,8 +13,8 @@
   <email>jan@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2010-05-17</date>
- <time>13:58:59</time>
+ <date>2010-10-22</date>
+ <time>19:12:53</time>
  <version>
   <release>0.2.0</release>
   <api>0.2.0</api>
       <file name="Null.php" role="php" />
       <file name="Object.php" role="php" />
       <file name="Sql.php" role="php" />
+      <file name="Translation.php" role="php">
+       <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+      </file>
      </dir> <!-- /lib/Horde/Alarm -->
      <file name="Alarm.php" role="php" />
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Alarm.mo" role="data" />
+      <file name="Horde_Alarm.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Alarm.pot" role="data" />
+   </dir> <!-- /locale -->
    <dir name="migration">
     <dir name="Horde">
      <dir name="Alarm">
     <name>Exception</name>
     <channel>pear.horde.org</channel>
    </package>
+   <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
   </required>
   <optional>
    <package>
    <install as="Horde/Alarm/Null.php" name="lib/Horde/Alarm/Null.php" />
    <install as="Horde/Alarm/Object.php" name="lib/Horde/Alarm/Object.php" />
    <install as="Horde/Alarm/Sql.php" name="lib/Horde/Alarm/Sql.php" />
+   <install as="Horde/Alarm/Translation.php" name="lib/Horde/Alarm/Translation.php" />
    <install as="Horde/Alarm/Handler/Desktop.php" name="lib/Horde/Alarm/Handler/Desktop.php" />
    <install as="Horde/Alarm/Handler/Mail.php" name="lib/Horde/Alarm/Handler/Mail.php" />
    <install as="Horde/Alarm/Handler/Notify.php" name="lib/Horde/Alarm/Handler/Notify.php" />
+   <install as="locale/Horde_Alarm.pot" name="locale/Horde_Alarm.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Alarm.mo" name="locale/ar/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Alarm.po" name="locale/ar/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Alarm.mo" name="locale/bg/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Alarm.po" name="locale/bg/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Alarm.mo" name="locale/bs/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Alarm.po" name="locale/bs/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Alarm.mo" name="locale/ca/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Alarm.po" name="locale/ca/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Alarm.mo" name="locale/cs/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Alarm.po" name="locale/cs/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Alarm.mo" name="locale/da/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Alarm.po" name="locale/da/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Alarm.mo" name="locale/de/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Alarm.po" name="locale/de/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Alarm.mo" name="locale/el/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Alarm.po" name="locale/el/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Alarm.mo" name="locale/en/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Alarm.po" name="locale/en/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Alarm.mo" name="locale/es/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Alarm.po" name="locale/es/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Alarm.mo" name="locale/et/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Alarm.po" name="locale/et/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Alarm.mo" name="locale/eu/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Alarm.po" name="locale/eu/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Alarm.mo" name="locale/fa/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Alarm.po" name="locale/fa/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Alarm.mo" name="locale/fi/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Alarm.po" name="locale/fi/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Alarm.mo" name="locale/fr/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Alarm.po" name="locale/fr/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Alarm.mo" name="locale/gl/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Alarm.po" name="locale/gl/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Alarm.mo" name="locale/he/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Alarm.po" name="locale/he/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Alarm.mo" name="locale/hr/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Alarm.po" name="locale/hr/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Alarm.mo" name="locale/hu/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Alarm.po" name="locale/hu/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Alarm.mo" name="locale/id/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Alarm.po" name="locale/id/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Alarm.mo" name="locale/is/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Alarm.po" name="locale/is/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Alarm.mo" name="locale/it/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Alarm.po" name="locale/it/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Alarm.mo" name="locale/ja/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Alarm.po" name="locale/ja/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Alarm.mo" name="locale/km/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Alarm.po" name="locale/km/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Alarm.mo" name="locale/ko/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Alarm.po" name="locale/ko/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Alarm.mo" name="locale/lt/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Alarm.po" name="locale/lt/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Alarm.mo" name="locale/lv/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Alarm.po" name="locale/lv/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Alarm.mo" name="locale/mk/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Alarm.po" name="locale/mk/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Alarm.mo" name="locale/nb/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Alarm.po" name="locale/nb/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Alarm.mo" name="locale/nl/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Alarm.po" name="locale/nl/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Alarm.mo" name="locale/nn/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Alarm.po" name="locale/nn/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Alarm.mo" name="locale/pl/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Alarm.po" name="locale/pl/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Alarm.mo" name="locale/pt/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Alarm.po" name="locale/pt/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Alarm.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Alarm.po" name="locale/pt_BR/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Alarm.mo" name="locale/ro/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Alarm.po" name="locale/ro/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Alarm.mo" name="locale/ru/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Alarm.po" name="locale/ru/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Alarm.mo" name="locale/sk/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Alarm.po" name="locale/sk/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Alarm.mo" name="locale/sl/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Alarm.po" name="locale/sl/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Alarm.mo" name="locale/sv/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Alarm.po" name="locale/sv/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Alarm.mo" name="locale/tr/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Alarm.po" name="locale/tr/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Alarm.mo" name="locale/uk/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Alarm.po" name="locale/uk/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Alarm.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Alarm.po" name="locale/zh_CN/LC_MESSAGES/Horde_Alarm.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Alarm.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Alarm.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Alarm.po" name="locale/zh_TW/LC_MESSAGES/Horde_Alarm.po" />
    <install as="Horde/Alarm/migration/1_horde_alarms_table.php" name="migration/Horde/Alarm/1_horde_alarms_table.php" />
    <install as="Horde/Alarm/AllTests.php" name="test/Horde/Alarm/AllTests.php" />
    <install as="Horde/Alarm/conf.php.dist" name="test/Horde/Alarm/conf.php.dist" />
     <release>beta</release>
     <api>beta</api>
    </stability>
-   <date>2010-05-17</date>
+   <date>2010-10-22</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
    <notes>
 * Initial Horde 4 package.
index 772d9a7..8ab39b6 100644 (file)
@@ -61,23 +61,9 @@ abstract class Horde_Argv_HelpFormatter
 
     public $parser = null;
 
-    /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
     public function __construct($indent_increment, $max_help_position,
-                                $width = null, $short_first = false,
-                                $dict = null)
+                                $width = null, $short_first = false)
     {
-        if ($dict) {
-            $this->_dict = $dict;
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Argv', dirname(__FILE__) . '/../../../locale');
-        }
-
         $this->indent_increment = $indent_increment;
         $this->help_position = $this->max_help_position = $max_help_position;
         if (is_null($width)) {
index bff6815..6cd9b57 100644 (file)
@@ -26,7 +26,7 @@ class Horde_Argv_IndentedHelpFormatter extends Horde_Argv_HelpFormatter
 
     public function formatUsage($usage)
     {
-        return sprintf($this->_dict->t("Usage:") . " %s\n", $usage);
+        return sprintf(Horde_Argv_Translation::t("Usage:") . " %s\n", $usage);
     }
 
     public function formatHeading($heading)
index 85dc9ed..2713724 100644 (file)
@@ -40,13 +40,6 @@ class Horde_Argv_Option
      */
     public static $NO_DEFAULT = array('NO', 'DEFAULT');
 
-    /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
     public static function parseNumber($value)
     {
         if (!strlen($value)) {
@@ -98,8 +91,8 @@ class Horde_Argv_Option
             $number = self::parseNumber($value);
             if ($number === false) {
                 $message = $this->type == 'int'
-                    ? $this->_dict->t("option %s: invalid integer value: '%s'")
-                    : $this->_dict->t("option %s: invalid long integer value: '%s'");
+                    ? Horde_Argv_Translation::t("option %s: invalid integer value: '%s'")
+                    : Horde_Argv_Translation::t("option %s: invalid long integer value: '%s'");
                 throw new Horde_Argv_OptionValueException(
                     sprintf($message, $opt, $value));
             }
@@ -108,7 +101,7 @@ class Horde_Argv_Option
         case 'float':
             if (!is_numeric($value)) {
                 throw new Horde_Argv_OptionValueException(
-                    sprintf($this->_dict->t("option %s: invalid floating-point value: '%s'"),
+                    sprintf(Horde_Argv_Translation::t("option %s: invalid floating-point value: '%s'"),
                             $opt, $value));
             }
             return floatval($value);
@@ -126,7 +119,7 @@ class Horde_Argv_Option
             }
             $choices = "'" . implode("', '", $choices) . "'";
             throw new Horde_Argv_OptionValueException(sprintf(
-                $this->_dict->t("option %s: invalid choice: '%s' (choose from %s)"),
+                Horde_Argv_Translation::t("option %s: invalid choice: '%s' (choose from %s)"),
                 $opt, $value, $choices));
         }
     }
@@ -259,8 +252,6 @@ class Horde_Argv_Option
      */
     public function __construct()
     {
-        $this->_dict = new Horde_Translation_Gettext('Horde_Argv', dirname(__FILE__) . '/../../../locale');
-
         // The last argument to this function is an $attrs hash, if it
         // is present and an array. All other arguments are $opts.
         $opts = func_get_args();
@@ -291,17 +282,6 @@ class Horde_Argv_Option
         }
     }
 
-    /**
-     * Passes a translation handler.
-     *
-     * @param Horde_Translation $dict  A translation handler implementing
-     *                                 Horde_Translation.
-     */
-    public function setDictionary($dict)
-    {
-        $this->_dict = $dict;
-    }
-
     protected function _checkOptStrings($opts)
     {
         // Filter out None because early versions of Optik had exactly
index 149a45c..522b79a 100644 (file)
@@ -77,21 +77,8 @@ class Horde_Argv_Parser extends Horde_Argv_OptionContainer
     protected $_usage;
     public $optionGroups = array();
 
-    /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
     public function __construct($args = array())
     {
-        if (isset($args['translation'])) {
-            $this->_dict = $args['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Argv', dirname(__FILE__) . '/../../../locale');
-        }
-
         $args = array_merge(array(
             'usage' => null,
             'optionList' => null,
@@ -162,13 +149,13 @@ class Horde_Argv_Parser extends Horde_Argv_OptionContainer
     protected function _addHelpOption()
     {
         $this->addOption('-h', '--help', array('action' => 'help',
-                                               'help' => $this->_dict->t("show this help message and exit")));
+                                               'help' => Horde_Argv_Translation::t("show this help message and exit")));
     }
 
     protected function _addVersionOption()
     {
         $this->addOption('--version', array('action' => 'version',
-                                            'help' => $this->_dict->t("show program's version number and exit")));
+                                            'help' => Horde_Argv_Translation::t("show program's version number and exit")));
     }
 
     protected function _populateOptionList($optionList, $add_help = true)
@@ -196,7 +183,7 @@ class Horde_Argv_Parser extends Horde_Argv_OptionContainer
     public function setUsage($usage)
     {
         if (is_null($usage))
-            $this->_usage = '%prog ' . $this->_dict->t("[options]");
+            $this->_usage = '%prog ' . Horde_Argv_Translation::t("[options]");
         elseif ($usage == Horde_Argv_Option::SUPPRESS_USAGE)
             $this->_usage = null;
         else
@@ -492,9 +479,9 @@ class Horde_Argv_Parser extends Horde_Argv_OptionContainer
             if (count($rargs) < $nargs) {
                 if (!$option->hasDefault()) {
                     if ($nargs == 1) {
-                        $this->parserError(sprintf($this->_dict->t("%s option requires an argument"), $opt));
+                        $this->parserError(sprintf(Horde_Argv_Translation::t("%s option requires an argument"), $opt));
                     } else {
-                        $this->parserError(sprintf($this->_dict->t("%s option requires %d arguments"), $opt, $nargs));
+                        $this->parserError(sprintf(Horde_Argv_Translation::t("%s option requires %d arguments"), $opt, $nargs));
                     }
                 }
             } elseif ($nargs == 1) {
@@ -504,7 +491,7 @@ class Horde_Argv_Parser extends Horde_Argv_OptionContainer
             }
 
         } elseif ($had_explicit_value) {
-            $this->parserError(sprintf($this->_dict->t("%s option does not take a value"), $opt));
+            $this->parserError(sprintf(Horde_Argv_Translation::t("%s option does not take a value"), $opt));
 
         } else {
             $value = null;
@@ -544,9 +531,9 @@ class Horde_Argv_Parser extends Horde_Argv_OptionContainer
                 if (count($rargs) < $nargs) {
                     if (!$option->hasDefault()) {
                         if ($nargs == 1) {
-                            $this->parserError(sprintf($this->_dict->t("%s option requires an argument"), $opt));
+                            $this->parserError(sprintf(Horde_Argv_Translation::t("%s option requires an argument"), $opt));
                         } else {
-                            $this->parserError(sprintf($this->_dict->t("%s option requires %d arguments"), $opt, $nargs));
+                            $this->parserError(sprintf(Horde_Argv_Translation::t("%s option requires %d arguments"), $opt, $nargs));
                         }
                     }
                 } elseif ($nargs == 1) {
@@ -669,7 +656,7 @@ class Horde_Argv_Parser extends Horde_Argv_OptionContainer
             $formatter = $this->formatter;
         $formatter->storeOptionStrings($this);
         $result = array();
-        $result[] = $formatter->formatHeading($this->_dict->t("Options"));
+        $result[] = $formatter->formatHeading(Horde_Argv_Translation::t("Options"));
         $formatter->indent();
         if ($this->optionList) {
             $result[] = parent::formatOptionHelp($formatter);
index 800fafb..a283d3e 100644 (file)
@@ -26,7 +26,7 @@ class Horde_Argv_TitledHelpFormatter extends Horde_Argv_HelpFormatter
 
     public function formatUsage($usage)
     {
-        return sprintf("%s  %s\n", $this->formatHeading($this->_dict->t("Usage")), $usage);
+        return sprintf("%s  %s\n", $this->formatHeading(Horde_Argv_Translation::t("Usage")), $usage);
     }
 
     public function formatHeading($heading)
diff --git a/framework/Argv/lib/Horde/Argv/Translation.php b/framework/Argv/lib/Horde/Argv/Translation.php
new file mode 100644 (file)
index 0000000..51387aa
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Argv
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Argv_Translation is the translation wrapper class for Horde_Argv.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Argv
+ */
+class Horde_Argv_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Argv';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Argv/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Argv';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Argv/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index 7723805..cb9878a 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.9.0" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Argv</name>
  <channel>pear.horde.org</channel>
  <summary>Horde command-line argument parsing package</summary>
@@ -18,8 +18,8 @@
   <email>mike@maintainable.com</email>
   <active>yes</active>
  </lead>
- <date>2010-03-18</date>
- <time>22:26:03</time>
+ <date>2010-10-22</date>
+ <time>19:03:08</time>
  <version>
   <release>0.1.0</release>
   <api>0.1.0</api>
       <file name="OptionValueException.php" role="php" />
       <file name="Parser.php" role="php" />
       <file name="TitledHelpFormatter.php" role="php" />
+      <file name="Translation.php" role="php">
+       <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+      </file>
       <file name="Values.php" role="php" />
      </dir> <!-- /lib/Horde/Argv -->
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Argv.mo" role="data" />
+      <file name="Horde_Argv.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Argv.pot" role="data" />
+   </dir> <!-- /locale -->
    <dir name="test">
     <dir name="Horde">
      <dir name="Argv">
    <pearinstaller>
     <min>1.5.0</min>
    </pearinstaller>
+   <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
   </required>
  </dependencies>
  <phprelease>
    <install as="Horde/Argv/OptionValueException.php" name="lib/Horde/Argv/OptionValueException.php" />
    <install as="Horde/Argv/Parser.php" name="lib/Horde/Argv/Parser.php" />
    <install as="Horde/Argv/TitledHelpFormatter.php" name="lib/Horde/Argv/TitledHelpFormatter.php" />
+   <install as="Horde/Argv/Translation.php" name="lib/Horde/Argv/Translation.php" />
    <install as="Horde/Argv/Values.php" name="lib/Horde/Argv/Values.php" />
+   <install as="locale/Horde_Argv.pot" name="locale/Horde_Argv.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Argv.mo" name="locale/ar/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Argv.po" name="locale/ar/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Argv.mo" name="locale/bg/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Argv.po" name="locale/bg/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Argv.mo" name="locale/bs/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Argv.po" name="locale/bs/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Argv.mo" name="locale/ca/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Argv.po" name="locale/ca/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Argv.mo" name="locale/cs/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Argv.po" name="locale/cs/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Argv.mo" name="locale/da/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Argv.po" name="locale/da/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Argv.mo" name="locale/de/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Argv.po" name="locale/de/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Argv.mo" name="locale/el/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Argv.po" name="locale/el/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Argv.mo" name="locale/en/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Argv.po" name="locale/en/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Argv.mo" name="locale/es/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Argv.po" name="locale/es/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Argv.mo" name="locale/et/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Argv.po" name="locale/et/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Argv.mo" name="locale/eu/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Argv.po" name="locale/eu/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Argv.mo" name="locale/fa/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Argv.po" name="locale/fa/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Argv.mo" name="locale/fi/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Argv.po" name="locale/fi/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Argv.mo" name="locale/fr/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Argv.po" name="locale/fr/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Argv.mo" name="locale/gl/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Argv.po" name="locale/gl/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Argv.mo" name="locale/he/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Argv.po" name="locale/he/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Argv.mo" name="locale/hr/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Argv.po" name="locale/hr/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Argv.mo" name="locale/hu/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Argv.po" name="locale/hu/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Argv.mo" name="locale/id/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Argv.po" name="locale/id/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Argv.mo" name="locale/is/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Argv.po" name="locale/is/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Argv.mo" name="locale/it/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Argv.po" name="locale/it/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Argv.mo" name="locale/ja/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Argv.po" name="locale/ja/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Argv.mo" name="locale/km/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Argv.po" name="locale/km/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Argv.mo" name="locale/ko/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Argv.po" name="locale/ko/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Argv.mo" name="locale/lt/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Argv.po" name="locale/lt/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Argv.mo" name="locale/lv/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Argv.po" name="locale/lv/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Argv.mo" name="locale/mk/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Argv.po" name="locale/mk/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Argv.mo" name="locale/nb/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Argv.po" name="locale/nb/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Argv.mo" name="locale/nl/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Argv.po" name="locale/nl/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Argv.mo" name="locale/nn/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Argv.po" name="locale/nn/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Argv.mo" name="locale/pl/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Argv.po" name="locale/pl/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Argv.mo" name="locale/pt/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Argv.po" name="locale/pt/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Argv.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Argv.po" name="locale/pt_BR/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Argv.mo" name="locale/ro/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Argv.po" name="locale/ro/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Argv.mo" name="locale/ru/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Argv.po" name="locale/ru/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Argv.mo" name="locale/sk/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Argv.po" name="locale/sk/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Argv.mo" name="locale/sl/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Argv.po" name="locale/sl/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Argv.mo" name="locale/sv/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Argv.po" name="locale/sv/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Argv.mo" name="locale/tr/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Argv.po" name="locale/tr/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Argv.mo" name="locale/uk/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Argv.po" name="locale/uk/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Argv.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Argv.po" name="locale/zh_CN/LC_MESSAGES/Horde_Argv.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Argv.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Argv.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Argv.po" name="locale/zh_TW/LC_MESSAGES/Horde_Argv.po" />
    <install as="Horde/Argv/AllTests.php" name="test/Horde/Argv/AllTests.php" />
    <install as="Horde/Argv/BoolTest.php" name="test/Horde/Argv/BoolTest.php" />
    <install as="Horde/Argv/CallbackCheckAbbrevTest.php" name="test/Horde/Argv/CallbackCheckAbbrevTest.php" />
     <release>beta</release>
     <api>beta</api>
    </stability>
-   <date>2010-03-18</date>
+   <date>2010-10-22</date>
    <license uri="http://opensource.org/licenses/bsd-license.php">BSD</license>
    <notes>
 * Initial release, ported from Optik (http://optik.sourceforge.net/)
index 006002f..fcaf444 100644 (file)
@@ -51,31 +51,15 @@ class Horde_Block
     protected $_app;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Constructor.
      *
      * @param array|boolean $params  Any parameters the block needs. If false,
      *                               the default parameter will be used.
      * @param integer $row           The block row.
      * @param integer $col           The block column.
-     * @param Horde_Translation $dict  A translation handler implementing
-     *                                 Horde_Translation.
      */
-    public function __construct($params = array(), $row = null, $col = null,
-                                $dict = null)
+    public function __construct($params = array(), $row = null, $col = null)
     {
-        if ($dict) {
-            $this->_dict = $dict;
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Block', dirname(__FILE__) . '/../../locale');
-        }
-
         // @todo: we can't simply merge the default values and stored values
         // because empty parameter values are not stored at all, so they would
         // always be overwritten by the defaults.
index d958e3f..c5d29ec 100644 (file)
@@ -38,13 +38,6 @@ class Horde_Block_Collection
     protected $_blocks = array();
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Returns a single instance of the Horde_Blocks class.
      *
      * @param array $apps  The applications whose blocks to list.
@@ -67,19 +60,11 @@ class Horde_Block_Collection
      * Constructor.
      *
      * @param array $apps              The applications whose blocks to list.
-     * @param Horde_Translation $dict  A translation handler implementing
-     *                                 Horde_Translation.
      */
-    public function __construct($apps = array(), $dict = null)
+    public function __construct($apps = array())
     {
         global $session;
 
-        if ($dict) {
-            $this->_dict = $dict;
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Block', dirname(__FILE__) . '/../../../locale');
-        }
-
         $signature = serialize($apps);
         if ($this->_blocks = $session['horde:blocks/' . $signature]) {
             return;
@@ -408,7 +393,7 @@ class Horde_Block_Collection
     {
         return isset($this->_blocks[$app][$block])
             ? $this->_blocks[$app][$block]['name']
-            : sprintf($this->_dict->t("Block \"%s\" of application \"%s\" not found."), $block, $app);
+            : sprintf(Horde_Block_Translation::t("Block \"%s\" of application \"%s\" not found."), $block, $app);
     }
 
     /**
index 2303a66..7e97410 100644 (file)
@@ -31,29 +31,6 @@ class Horde_Block_Layout
     protected $_viewUrl;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
-     * Constructor.
-     *
-     * @param array $params  Hash with configuration data. Possible values:
-     *                       - 'translation': A translation handler
-     *                                        implementing Horde_Translation.
-     */
-    public function __construct($params = array())
-    {
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Block', dirname(__FILE__) . '/../../../locale');
-        }
-    }
-
-    /**
      * Returns whether the specified block may be removed.
      *
      * @param integer $row  A layout row.
@@ -127,17 +104,17 @@ class Horde_Block_Layout
         $icons = '';
         if ($edit) {
             $icons .= Horde::link($this->getActionUrl('edit', $row, $col),
-                                  $this->_dict->t("Edit"))
-                . Horde::img('edit.png', $this->_dict->t("Edit"))
+                                  Horde_Block_Translation::t("Edit"))
+                . Horde::img('edit.png', Horde_Block_Translation::t("Edit"))
                 . '</a>';
         }
         if ($this->isRemovable($row, $col)) {
             $icons .= Horde::link(
-                $this->getActionUrl('removeBlock', $row, $col), $this->_dict->t("Remove"),
+                $this->getActionUrl('removeBlock', $row, $col), Horde_Block_Translation::t("Remove"),
                 '', '',
                 'return window.confirm(\''
-                . addslashes($this->_dict->t("Really delete this block?")) . '\')')
-                . Horde::img('delete.png', $this->_dict->t("Remove"))
+                . addslashes(Horde_Block_Translation::t("Really delete this block?")) . '\')')
+                . Horde::img('delete.png', Horde_Block_Translation::t("Remove"))
                 . '</a>';
         }
         return $icons;
index e740a65..8460f26 100644 (file)
@@ -103,7 +103,6 @@ class Horde_Block_Layout_Manager extends Horde_Block_Layout
      */
     function __construct($collection, $layout = array())
     {
-        parent::__construct();
         $this->_collection = $collection;
         $this->_layout = $layout;
         $this->_editUrl = Horde::selfUrl();
@@ -118,7 +117,7 @@ class Horde_Block_Layout_Manager extends Horde_Block_Layout
             }
             for ($col = 0; $col < $cols; $col++) {
                 if (!isset($this->_layout[$row][$col])) {
-                    $this->_blocks[$row][$col] = PEAR::raiseError($this->_dict->t("No block exists at the requested position"), 'horde.error');
+                    $this->_blocks[$row][$col] = PEAR::raiseError(Horde_Block_Translation::t("No block exists at the requested position"), 'horde.error');
                 } elseif (is_array($this->_layout[$row][$col])) {
                     $field = $this->_layout[$row][$col];
 
@@ -242,7 +241,7 @@ class Horde_Block_Layout_Manager extends Horde_Block_Layout
                     try {
                         $message = Horde::callHook('perms_denied', array('horde:max_blocks'));
                     } catch (Horde_Exception_HookNotSet $e) {
-                        $message = htmlspecialchars(sprintf($this->_dict->ngettext("You are not allowed to create more than %d block.", "You are not allowed to create more than %d blocks.", $max_blocks), $max_blocks));
+                        $message = htmlspecialchars(sprintf(Horde_Block_Translation::ngettext("You are not allowed to create more than %d block.", "You are not allowed to create more than %d blocks.", $max_blocks), $max_blocks));
                     }
                     $GLOBALS['notification']->push($message, 'horde.error', array('content.raw'));
                     break;
@@ -573,12 +572,12 @@ class Horde_Block_Layout_Manager extends Horde_Block_Layout
 
         switch ($type[0]) {
         case 'expand':
-            $title = $this->_dict->t("Expand");
+            $title = Horde_Block_Translation::t("Expand");
             $img = 'large_' . $type[1];
             break;
 
         case 'shrink':
-            $title = $this->_dict->t("Shrink");
+            $title = Horde_Block_Translation::t("Shrink");
             $img = 'large_';
 
             switch ($type[1]) {
@@ -603,19 +602,19 @@ class Horde_Block_Layout_Manager extends Horde_Block_Layout
         case 'move':
             switch ($type[1]) {
             case 'up':
-                $title = $this->_dict->t("Move Up");
+                $title = Horde_Block_Translation::t("Move Up");
                 break;
 
             case 'down':
-                $title = $this->_dict->t("Move Down");
+                $title = Horde_Block_Translation::t("Move Down");
                 break;
 
             case 'left':
-                $title = $this->_dict->t("Move Left");
+                $title = Horde_Block_Translation::t("Move Left");
                 break;
 
             case 'right':
-                $title = $this->_dict->t("Move Right");
+                $title = Horde_Block_Translation::t("Move Right");
                 break;
             }
 
index 3dc51b9..1db15d1 100644 (file)
@@ -41,7 +41,6 @@ class Horde_Block_Layout_View extends Horde_Block_Layout
     public function __construct($layout = array(), $editUrl = '',
                                 $viewUrl = '')
     {
-        parent::__construct();
         $this->_layout = $layout;
         $this->_editUrl = $editUrl;
         $this->_viewUrl = $viewUrl;
@@ -95,7 +94,7 @@ class Horde_Block_Layout_View extends Horde_Block_Layout
                             $html .= '<td width="' . ($width * $colspan) . '%">&nbsp;</td>';
                         }
                     } catch (Horde_Exception $e) {
-                        $header = $this->_dict->t("Error");
+                        $header = Horde_Block_Translation::t("Error");
                         $content = $e->getMessage();
                         ob_start();
                         include $tplDir . '/portal/block.inc';
diff --git a/framework/Block/lib/Horde/Block/Translation.php b/framework/Block/lib/Horde/Block/Translation.php
new file mode 100644 (file)
index 0000000..7affcf2
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Block
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Block_Translation is the translation wrapper class for Horde_Block.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Block
+ */
+class Horde_Block_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Block';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Block/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Block';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Block/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index 6f9e0e8..0bdc3b2 100644 (file)
@@ -35,26 +35,10 @@ class Horde_Block_UI
     protected $_vars = null;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Constructor.
-     *
-     * @param array $params  Hash with configuration data. Possible values:
-     *                       - 'translation': A translation handler
-     *                                        implementing Horde_Translation.
      */
-    public function __construct($params = array())
+    public function __construct()
     {
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Block', dirname(__FILE__) . '/../../../locale');
-        }
         $this->_blocks = Horde_Block_Collection::singleton();
     }
 
@@ -86,7 +70,7 @@ class Horde_Block_UI
 
         if (!($this->_form instanceof Horde_Form)) {
             /* No existing valid form object set so set up a new one. */
-            $this->setForm(new Horde_Form($this->_vars, $this->_dict->t("Edit Block")));
+            $this->setForm(new Horde_Form($this->_vars, Horde_Block_Translation::t("Edit Block")));
         }
 
         /* Get the current value of the block selection. */
@@ -94,7 +78,7 @@ class Horde_Block_UI
 
         /* Field to select apps. */
         $apps = $this->_blocks->getBlocksList();
-        $v = $this->_form->addVariable($this->_dict->t("Application"), $field . '[app]', 'enum', true, false, null, array($apps));
+        $v = $this->_form->addVariable(Horde_Block_Translation::t("Application"), $field . '[app]', 'enum', true, false, null, array($apps));
         $v->setOption('trackchange', true);
 
         if (empty($value['app'])) {
index d70f5e1..d9f3875 100644 (file)
@@ -1,15 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.4.9" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
-http://pear.php.net/dtd/tasks-1.0.xsd
-http://pear.php.net/dtd/package-2.0
-http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Block</name>
  <channel>pear.horde.org</channel>
  <summary>Horde Block API</summary>
  <description>The Horde_Block API provides a mechanism for displaying content
  blocks from numerous Horde applications or other sources, manipulating those
- blocks, configuring them, etc.
- </description>
+ blocks, configuring them, etc.</description>
  <lead>
   <name>Chuck Hagenbuch</name>
   <user>chuck</user>
@@ -22,7 +18,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <email>jan@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2009-12-01</date>
+ <date>2010-10-22</date>
+ <time>19:03:04</time>
  <version>
   <release>0.1.0</release>
   <api>0.1.0</api>
@@ -32,11 +29,12 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <api>beta</api>
  </stability>
  <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
- <notes>* Removed sidebar-specifc code.
+ <notes>
+* Removed sidebar-specifc code.
  * Initial Horde 4 package.
  </notes>
  <contents>
-  <dir name="/">
+  <dir baseinstalldir="/" name="/">
    <dir name="lib">
     <dir name="Horde">
      <dir name="Block">
@@ -47,11 +45,262 @@ http://pear.php.net/dtd/package-2.0.xsd">
       <file name="Collection.php" role="php" />
       <file name="Exception.php" role="php" />
       <file name="Layout.php" role="php" />
+      <file name="Translation.php" role="php">
+       <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+      </file>
       <file name="Ui.php" role="php" />
      </dir> <!-- /lib/Horde/Block -->
      <file name="Block.php" role="php" />
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.mo" role="data" />
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Block.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Block.pot" role="data" />
+   </dir> <!-- /locale -->
   </dir> <!-- / -->
  </contents>
  <dependencies>
@@ -67,30 +316,119 @@ http://pear.php.net/dtd/package-2.0.xsd">
     <channel>pear.horde.org</channel>
    </package>
    <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
+   <package>
     <name>Util</name>
     <channel>pear.horde.org</channel>
    </package>
   </required>
-  <optional>
-   <extension>
-    <name>gettext</name>
-   </extension>
-  </optional>
  </dependencies>
  <phprelease>
   <filelist>
-   <install name="lib/Horde/Block/Layout/Manager.php" as="Horde/Block/Layout/Manager.php" />
-   <install name="lib/Horde/Block/Layout/View.php" as="Horde/Block/Layout/View.php" />
-   <install name="lib/Horde/Block/Collection.php" as="Horde/Block/Collection.php" />
-   <install name="lib/Horde/Block/Exception.php" as="Horde/Block/Exception.php" />
-   <install name="lib/Horde/Block/Layout.php" as="Horde/Block/Layout.php" />
-   <install name="lib/Horde/Block/Ui.php" as="Horde/Block/Ui.php" />
-   <install name="lib/Horde/Block.php" as="Horde/Block.php" />
+   <install as="Horde/Block.php" name="lib/Horde/Block.php" />
+   <install as="Horde/Block/Collection.php" name="lib/Horde/Block/Collection.php" />
+   <install as="Horde/Block/Exception.php" name="lib/Horde/Block/Exception.php" />
+   <install as="Horde/Block/Layout.php" name="lib/Horde/Block/Layout.php" />
+   <install as="Horde/Block/Translation.php" name="lib/Horde/Block/Translation.php" />
+   <install as="Horde/Block/Ui.php" name="lib/Horde/Block/Ui.php" />
+   <install as="Horde/Block/Layout/Manager.php" name="lib/Horde/Block/Layout/Manager.php" />
+   <install as="Horde/Block/Layout/View.php" name="lib/Horde/Block/Layout/View.php" />
+   <install as="locale/Horde_Block.pot" name="locale/Horde_Block.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Block.po" name="locale/ar/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Block.po" name="locale/bg/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Block.po" name="locale/bs/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Block.po" name="locale/ca/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Block.mo" name="locale/cs/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Block.po" name="locale/cs/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Block.mo" name="locale/da/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Block.po" name="locale/da/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Block.mo" name="locale/de/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Block.po" name="locale/de/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Block.mo" name="locale/el/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Block.po" name="locale/el/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Block.mo" name="locale/en/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Block.po" name="locale/en/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Block.mo" name="locale/es/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Block.po" name="locale/es/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Block.mo" name="locale/et/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Block.po" name="locale/et/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Block.po" name="locale/eu/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Block.po" name="locale/fa/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Block.mo" name="locale/fi/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Block.po" name="locale/fi/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Block.mo" name="locale/fr/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Block.po" name="locale/fr/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Block.po" name="locale/gl/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Block.mo" name="locale/he/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Block.po" name="locale/he/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Block.mo" name="locale/hr/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Block.po" name="locale/hr/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Block.mo" name="locale/hu/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Block.po" name="locale/hu/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Block.po" name="locale/id/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Block.po" name="locale/is/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Block.mo" name="locale/it/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Block.po" name="locale/it/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Block.mo" name="locale/ja/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Block.po" name="locale/ja/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Block.po" name="locale/km/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Block.mo" name="locale/ko/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Block.po" name="locale/ko/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Block.mo" name="locale/lt/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Block.po" name="locale/lt/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Block.mo" name="locale/lv/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Block.po" name="locale/lv/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Block.po" name="locale/mk/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Block.mo" name="locale/nb/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Block.po" name="locale/nb/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Block.mo" name="locale/nl/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Block.po" name="locale/nl/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Block.mo" name="locale/nn/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Block.po" name="locale/nn/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Block.mo" name="locale/pl/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Block.po" name="locale/pl/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Block.mo" name="locale/pt/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Block.po" name="locale/pt/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Block.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Block.po" name="locale/pt_BR/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Block.mo" name="locale/ro/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Block.po" name="locale/ro/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Block.mo" name="locale/ru/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Block.po" name="locale/ru/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Block.mo" name="locale/sk/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Block.po" name="locale/sk/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Block.mo" name="locale/sl/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Block.po" name="locale/sl/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Block.mo" name="locale/sv/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Block.po" name="locale/sv/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Block.mo" name="locale/tr/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Block.po" name="locale/tr/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Block.mo" name="locale/uk/LC_MESSAGES/Horde_Block.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Block.po" name="locale/uk/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Block.po" name="locale/zh_CN/LC_MESSAGES/Horde_Block.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Block.po" name="locale/zh_TW/LC_MESSAGES/Horde_Block.po" />
   </filelist>
  </phprelease>
  <changelog>
   <release>
    <version>
+    <release>0.0.1</release>
+    <api>0.0.1</api>
+   </version>
+   <stability>
+    <release>alpha</release>
+    <api>alpha</api>
+   </stability>
+   <date>2004-02-13</date>
+   <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
+   <notes>
+Initial packaging
+   </notes>
+  </release>
+  <release>
+   <version>
     <release>0.0.2</release>
     <api>0.0.2</api>
    </version>
@@ -101,21 +439,24 @@ http://pear.php.net/dtd/package-2.0.xsd">
     <api>alpha</api>
    </stability>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Converted to package.xml 2.0 for pear.horde.org
+   <notes>
+Converted to package.xml 2.0 for pear.horde.org
    </notes>
   </release>
   <release>
    <version>
-    <release>0.0.1</release>
-    <api>0.0.1</api>
+    <release>0.1.0</release>
+    <api>0.1.0</api>
    </version>
    <stability>
-    <release>alpha</release>
-    <api>alpha</api>
+    <release>beta</release>
+    <api>beta</api>
    </stability>
-   <date>2004-02-13</date>
+   <date>2010-10-22</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Initial packaging
+   <notes>
+* Removed sidebar-specifc code.
+ * Initial Horde 4 package.
    </notes>
   </release>
  </changelog>
index 74b3dfd..9efc03a 100644 (file)
@@ -119,29 +119,13 @@ class Horde_Cli
     );
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Detect the current environment (web server or console) and sets
      * internal values accordingly.
      *
      * The constructor must not be called after init().
-     *
-     * @param Horde_Translation $dict  A translation handler implementing
-     *                                 Horde_Translation.
      */
-    public function __construct($dict = null)
+    public function __construct()
     {
-        if ($dict) {
-            $this->_dict = $dict;
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Cli', dirname(__FILE__) . '/../../locale');
-        }
-
         $this->_console = $this->runningFromCLI();
 
         if ($this->_console) {
@@ -335,7 +319,7 @@ class Horde_Cli
         }
         $this->writeln($this->red('===================='));
         $this->writeln();
-        $this->writeln($this->red($this->_dict->t("Fatal Error:")));
+        $this->writeln($this->red(Horde_Cli_Translation::t("Fatal Error:")));
         $this->writeln($this->red($error));
         $this->writeln();
         $this->writeln((string)$backtrace);
@@ -369,7 +353,7 @@ class Horde_Cli
                 foreach ($choices as $key => $choice) {
                     $this->writeln($this->indent('(' . $this->bold($key) . ') ' . $choice));
                 }
-                $this->writeln($this->_dict->t("Type your choice: "), true);
+                $this->writeln(Horde_Cli_Translation::t("Type your choice: "), true);
                 @ob_flush();
 
                 // Get the user choice.
@@ -380,7 +364,7 @@ class Horde_Cli
                 if (isset($choices[$response])) {
                     return $response;
                 } else {
-                    $this->writeln($this->red(sprintf($this->_dict->t("\"%s\" is not a valid choice."), $response)));
+                    $this->writeln($this->red(sprintf(Horde_Cli_Translation::t("\"%s\" is not a valid choice."), $response)));
                 }
             } else {
                 @ob_flush();
@@ -454,16 +438,13 @@ class Horde_Cli
      * Either use the singleton() method to retrieve a Horde_Cli object after
      * calling init(), or don't call init() statically.
      *
-     * @param Horde_Translation $dict  A translation handler implementing
-     *                                 Horde_Translation.
-     *
      * @return Horde_Cli  A Horde_Cli instance.
      */
-    static public function init($dict = null)
+    static public function init()
     {
         /* Run constructor now because it requires $_SERVER['SERVER_NAME'] to
          * be empty if called with a CGI SAPI. */
-        $cli = new self($dict);
+        $cli = new self();
 
         @set_time_limit(0);
         ob_implicit_flush(true);
diff --git a/framework/Cli/lib/Horde/Cli/Translation.php b/framework/Cli/lib/Horde/Cli/Translation.php
new file mode 100644 (file)
index 0000000..090e4de
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Cli
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Cli_Translation is the translation wrapper class for Horde_Cli.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Cli
+ */
+class Horde_Cli_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Cli';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Cli/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Cli';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Cli/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index d323cae..d8d2ef6 100644 (file)
@@ -16,8 +16,8 @@
   <email>jan@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2010-08-15</date>
- <time>15:33:56</time>
+ <date>2010-10-22</date>
+ <time>19:03:10</time>
  <version>
   <release>0.2.0</release>
   <api>0.2.0</api>
    </dir> <!-- /doc -->
    <dir name="lib">
     <dir name="Horde">
+     <dir name="Cli">
+      <file name="Translation.php" role="php">
+       <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+      </file>
+     </dir> <!-- /lib/Horde/Cli -->
      <file name="Cli.php" role="php" />
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Cli.mo" role="data" />
+      <file name="Horde_Cli.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Cli.pot" role="data" />
+   </dir> <!-- /locale -->
   </dir> <!-- / -->
  </contents>
  <dependencies>
     <name>Translation</name>
     <channel>pear.horde.org</channel>
    </package>
-   <extension>
-    <name>gettext</name>
-   </extension>
   </required>
  </dependencies>
  <phprelease>
   <filelist>
    <install as="Horde/Cli/colors.php" name="doc/Horde/Cli/colors.php" />
    <install as="Horde/Cli.php" name="lib/Horde/Cli.php" />
+   <install as="Horde/Cli/Translation.php" name="lib/Horde/Cli/Translation.php" />
+   <install as="locale/Horde_Cli.pot" name="locale/Horde_Cli.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Cli.mo" name="locale/ar/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Cli.po" name="locale/ar/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Cli.mo" name="locale/bg/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Cli.po" name="locale/bg/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Cli.mo" name="locale/bs/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Cli.po" name="locale/bs/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Cli.mo" name="locale/ca/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Cli.po" name="locale/ca/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Cli.mo" name="locale/cs/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Cli.po" name="locale/cs/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Cli.mo" name="locale/da/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Cli.po" name="locale/da/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Cli.mo" name="locale/de/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Cli.po" name="locale/de/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Cli.mo" name="locale/el/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Cli.po" name="locale/el/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Cli.mo" name="locale/en/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Cli.po" name="locale/en/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Cli.mo" name="locale/es/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Cli.po" name="locale/es/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Cli.mo" name="locale/et/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Cli.po" name="locale/et/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Cli.mo" name="locale/eu/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Cli.po" name="locale/eu/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Cli.mo" name="locale/fa/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Cli.po" name="locale/fa/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Cli.mo" name="locale/fi/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Cli.po" name="locale/fi/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Cli.mo" name="locale/fr/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Cli.po" name="locale/fr/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Cli.mo" name="locale/gl/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Cli.po" name="locale/gl/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Cli.mo" name="locale/he/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Cli.po" name="locale/he/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Cli.mo" name="locale/hr/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Cli.po" name="locale/hr/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Cli.mo" name="locale/hu/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Cli.po" name="locale/hu/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Cli.mo" name="locale/id/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Cli.po" name="locale/id/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Cli.mo" name="locale/is/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Cli.po" name="locale/is/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Cli.mo" name="locale/it/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Cli.po" name="locale/it/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Cli.mo" name="locale/ja/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Cli.po" name="locale/ja/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Cli.mo" name="locale/km/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Cli.po" name="locale/km/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Cli.mo" name="locale/ko/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Cli.po" name="locale/ko/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Cli.mo" name="locale/lt/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Cli.po" name="locale/lt/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Cli.mo" name="locale/lv/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Cli.po" name="locale/lv/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Cli.mo" name="locale/mk/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Cli.po" name="locale/mk/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Cli.mo" name="locale/nb/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Cli.po" name="locale/nb/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Cli.mo" name="locale/nl/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Cli.po" name="locale/nl/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Cli.mo" name="locale/nn/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Cli.po" name="locale/nn/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Cli.mo" name="locale/pl/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Cli.po" name="locale/pl/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Cli.mo" name="locale/pt/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Cli.po" name="locale/pt/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Cli.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Cli.po" name="locale/pt_BR/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Cli.mo" name="locale/ro/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Cli.po" name="locale/ro/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Cli.mo" name="locale/ru/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Cli.po" name="locale/ru/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Cli.mo" name="locale/sk/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Cli.po" name="locale/sk/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Cli.mo" name="locale/sl/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Cli.po" name="locale/sl/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Cli.mo" name="locale/sv/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Cli.po" name="locale/sv/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Cli.mo" name="locale/tr/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Cli.po" name="locale/tr/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Cli.mo" name="locale/uk/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Cli.po" name="locale/uk/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Cli.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Cli.po" name="locale/zh_CN/LC_MESSAGES/Horde_Cli.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Cli.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Cli.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Cli.po" name="locale/zh_TW/LC_MESSAGES/Horde_Cli.po" />
   </filelist>
  </phprelease>
  <changelog>
@@ -129,7 +480,7 @@ Add &apos;default&apos; parameter to Horde_CLI::prompt().
     <release>beta</release>
     <api>beta</api>
    </stability>
-   <date>2010-08-15</date>
+   <date>2010-10-22</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
    <notes>
 * Horde_CLI:: -&gt; Horde_Cli::
index eb97457..c76ab87 100644 (file)
 class Horde_Compress
 {
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Attempts to return a concrete instance based on $driver.
      *
      * @param mixed $driver  The type of concrete subclass to
@@ -52,21 +45,6 @@ class Horde_Compress
     }
 
     /**
-     * Constructor.
-     *
-     * @param Horde_Translation $dict  A translation handler implementing
-     *                                 Horde_Translation.
-     */
-    public function __construct($dict = null)
-    {
-        if ($dict) {
-            $this->_dict = $dict;
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Compress', dirname(__FILE__) . '/../../locale');
-        }
-    }
-
-    /**
      * Compress the data.
      *
      * @param string $data   The data to compress.
index 04fd0be..d80669f 100644 (file)
@@ -125,7 +125,7 @@ class Horde_Compress_Dbx extends Horde_Compress
                     }
                     $msg_item = unpack('LFilePos/LUnknown/LItemSize/LNextItem/a512Content', $s);
                     if ($msg_item['FilePos'] != $position) {
-                        throw new Horde_Exception($this->_dict->t("Invalid file format"));
+                        throw new Horde_Exception(Horde_Compress_Translation::t("Invalid file format"));
                     }
                     $position += 528;
                     $msg .= substr($msg_item['Content'], 0, $msg_item['ItemSize']);
@@ -154,7 +154,7 @@ class Horde_Compress_Dbx extends Horde_Compress
         $message_info = array();
         $msg_header = unpack('Lposition/LDataLength/SHeaderLength/SFlagCount', substr($data, $position, 12));
         if ($msg_header['position'] != $position) {
-            throw new Horde_Exception($this->_dict->t("Invalid file format"));
+            throw new Horde_Exception(Horde_Compress_Translation::t("Invalid file format"));
         }
         $position += 12;
         $message_info['HeaderPosition'] = $msg_header['position'];
@@ -235,7 +235,7 @@ class Horde_Compress_Dbx extends Horde_Compress
     {
         $index_header = unpack('LFilePos/LUnknown1/LPrevIndex/LNextIndex/LCount/LUnknown', substr($data, $position, 24));
         if ($index_header['FilePos'] != $position) {
-            throw new Horde_Exception($this->_dict->t("Invalid file format"));
+            throw new Horde_Exception(Horde_Compress_Translation::t("Invalid file format"));
         }
 
         // Push it into list of processed items.
index 1a1ff65..466e64e 100644 (file)
@@ -39,14 +39,14 @@ class Horde_Compress_Gzip extends Horde_Compress
     {
         /* If gzip is not compiled into PHP, return now. */
         if (!Horde_Util::extensionExists('zlib')) {
-            throw new Horde_Exception($this->_dict->t("This server can't uncompress gzip files."));
+            throw new Horde_Exception(Horde_Compress_Translation::t("This server can't uncompress gzip files."));
         }
 
         /* Gzipped File - decompress it first. */
         $position = 0;
         $info = @unpack('CCM/CFLG/VTime/CXFL/COS', substr($data, $position + 2));
         if (!$info) {
-            throw new Horde_Exception($this->_dict->t("Unable to decompress data."));
+            throw new Horde_Exception(Horde_Compress_Translation::t("Unable to decompress data."));
         }
         $position += 10;
 
@@ -76,7 +76,7 @@ class Horde_Compress_Gzip extends Horde_Compress
 
         $result = @gzinflate(substr($data, $position, strlen($data) - $position));
         if (empty($result)) {
-            throw new Horde_Exception($this->_dict->t("Unable to decompress data."));
+            throw new Horde_Exception(Horde_Compress_Translation::t("Unable to decompress data."));
         }
 
         return $result;
index 80611b8..c7545f7 100644 (file)
@@ -51,7 +51,7 @@ class Horde_Compress_Rar extends Horde_Compress
     {
         $blockStart = strpos($data, "\x52\x61\x72\x21\x1a\x07\x00");
         if ($blockStart === false) {
-            throw new Horde_Exception($this->_dict->t("Invalid RAR data."));
+            throw new Horde_Exception(Horde_Compress_Translation::t("Invalid RAR data."));
         }
 
         $data_len = strlen($data);
index edb1306..3d3d4bd 100644 (file)
@@ -71,7 +71,7 @@ class Horde_Compress_Tar extends Horde_Compress
         while ($position < $data_len) {
             $info = @unpack("a100filename/a8mode/a8uid/a8gid/a12size/a12mtime/a8checksum/Ctypeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor", substr($data, $position));
             if (!$info) {
-                throw new Horde_Exception($this->_dict->t("Unable to decompress data."));
+                throw new Horde_Exception(Horde_Compress_Translation::t("Unable to decompress data."));
             }
 
             $position += 512;
diff --git a/framework/Compress/lib/Horde/Compress/Translation.php b/framework/Compress/lib/Horde/Compress/Translation.php
new file mode 100644 (file)
index 0000000..6d7b6d9
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Compress
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Compress_Translation is the translation wrapper class for Horde_Compress.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Compress
+ */
+class Horde_Compress_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Compress';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Compress/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Compress';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Compress/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index 18c4b28..3c5d490 100644 (file)
@@ -90,7 +90,7 @@ class Horde_Compress_Zip extends Horde_Compress
     public function compress($data, $params = array())
     {
         if (!Horde_Util::extensionExists('zlib')) {
-            throw new Horde_Exception($this->_dict->t("This server can't compress zip files."));
+            throw new Horde_Exception(Horde_Compress_Translation::t("This server can't compress zip files."));
         }
 
         $this->_ctrldir = array();
@@ -194,7 +194,7 @@ class Horde_Compress_Zip extends Horde_Compress
 
         do {
             if (strlen($data) < $fhStart + 31) {
-                throw new Horde_Exception($this->_dict->t("Invalid ZIP data"));
+                throw new Horde_Exception(Horde_Compress_Translation::t("Invalid ZIP data"));
             }
             $info = unpack('vMethod/VTime/VCRC32/VCompressed/VUncompressed/vLength', substr($data, $fhStart + 10, 20));
             $name = substr($data, $fhStart + 46, $info['Length']);
@@ -221,7 +221,7 @@ class Horde_Compress_Zip extends Horde_Compress
                        ((($info['Time'] >> 25) & 0x7f) + 1980));
 
             if (strlen($data) < $fhStart + 43) {
-                throw new Horde_Exception($this->_dict->t("Invalid ZIP data"));
+                throw new Horde_Exception(Horde_Compress_Translation::t("Invalid ZIP data"));
             }
             $info = unpack('vInternal/VExternal', substr($data, $fhStart + 36, 6));
 
@@ -241,7 +241,7 @@ class Horde_Compress_Zip extends Horde_Compress
 
         do {
             if ($data_len < $fhStart + 34) {
-                throw new Horde_Exception($this->_dict->t("Invalid ZIP data"));
+                throw new Horde_Exception(Horde_Compress_Translation::t("Invalid ZIP data"));
             }
             $info = unpack('vMethod/VTime/VCRC32/VCompressed/VUncompressed/vLength/vExtraLength', substr($data, $fhStart + 8, 25));
             $name = substr($data, $fhStart + 30, $info['Length']);
index d537f17..664e501 100644 (file)
@@ -1,13 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.4.9" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
-http://pear.php.net/dtd/tasks-1.0.xsd
-http://pear.php.net/dtd/package-2.0
-http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Compress</name>
  <channel>pear.horde.org</channel>
  <summary>Horde Compression API</summary>
- <description>This package provides an API for various compression techniques.
- </description>
+ <description>This package provides an API for various compression techniques.</description>
  <lead>
   <name>Chuck Hagenbuch</name>
   <user>chuck</user>
@@ -26,7 +22,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <email>slusarz@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2009-07-13</date>
+ <date>2010-10-22</date>
+ <time>19:03:08</time>
  <version>
   <release>0.1.0</release>
   <api>0.1.0</api>
@@ -36,10 +33,11 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <api>beta</api>
  </stability>
  <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
- <notes>* Initial Horde 4 package.
+ <notes>
+* Initial Horde 4 package.
  </notes>
  <contents>
-  <dir name="/">
+  <dir baseinstalldir="/" name="/">
    <dir name="lib">
     <dir name="Horde">
      <dir name="Compress">
@@ -48,11 +46,275 @@ http://pear.php.net/dtd/package-2.0.xsd">
       <file name="Rar.php" role="php" />
       <file name="Tar.php" role="php" />
       <file name="Tnef.php" role="php" />
+      <file name="Translation.php" role="php">
+       <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+      </file>
       <file name="Zip.php" role="php" />
      </dir> <!-- /lib/Horde/Compress -->
      <file name="Compress.php" role="php" />
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Compress.mo" role="data" />
+      <file name="Horde_Compress.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Compress.pot" role="data" />
+   </dir> <!-- /locale -->
   </dir> <!-- / -->
  </contents>
  <dependencies>
@@ -68,32 +330,136 @@ http://pear.php.net/dtd/package-2.0.xsd">
     <channel>pear.horde.org</channel>
    </package>
    <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
+   <package>
     <name>Util</name>
     <channel>pear.horde.org</channel>
    </package>
   </required>
   <optional>
    <extension>
-    <name>gettext</name>
-   </extension>
-   <extension>
     <name>zlib</name>
    </extension>
   </optional>
  </dependencies>
  <phprelease>
   <filelist>
-   <install name="lib/Horde/Compress/Dbx.php" as="Horde/Compress/Dbx.php" />
-   <install name="lib/Horde/Compress/Gzip.php" as="Horde/Compress/Gzip.php" />
-   <install name="lib/Horde/Compress/Rar.php" as="Horde/Compress/Rar.php" />
-   <install name="lib/Horde/Compress/Tar.php" as="Horde/Compress/Tar.php" />
-   <install name="lib/Horde/Compress/Tnef.php" as="Horde/Compress/Tnef.php" />
-   <install name="lib/Horde/Compress/Zip.php" as="Horde/Compress/Zip.php" />
-   <install name="lib/Horde/Compress.php" as="Horde/Compress.php" />
+   <install as="Horde/Compress.php" name="lib/Horde/Compress.php" />
+   <install as="Horde/Compress/Dbx.php" name="lib/Horde/Compress/Dbx.php" />
+   <install as="Horde/Compress/Gzip.php" name="lib/Horde/Compress/Gzip.php" />
+   <install as="Horde/Compress/Rar.php" name="lib/Horde/Compress/Rar.php" />
+   <install as="Horde/Compress/Tar.php" name="lib/Horde/Compress/Tar.php" />
+   <install as="Horde/Compress/Tnef.php" name="lib/Horde/Compress/Tnef.php" />
+   <install as="Horde/Compress/Translation.php" name="lib/Horde/Compress/Translation.php" />
+   <install as="Horde/Compress/Zip.php" name="lib/Horde/Compress/Zip.php" />
+   <install as="locale/Horde_Compress.pot" name="locale/Horde_Compress.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Compress.mo" name="locale/ar/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Compress.po" name="locale/ar/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Compress.mo" name="locale/bg/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Compress.po" name="locale/bg/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Compress.mo" name="locale/bs/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Compress.po" name="locale/bs/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Compress.mo" name="locale/ca/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Compress.po" name="locale/ca/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Compress.mo" name="locale/cs/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Compress.po" name="locale/cs/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Compress.mo" name="locale/da/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Compress.po" name="locale/da/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Compress.mo" name="locale/de/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Compress.po" name="locale/de/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Compress.mo" name="locale/el/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Compress.po" name="locale/el/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Compress.mo" name="locale/en/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Compress.po" name="locale/en/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Compress.mo" name="locale/es/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Compress.po" name="locale/es/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Compress.mo" name="locale/et/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Compress.po" name="locale/et/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Compress.mo" name="locale/eu/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Compress.po" name="locale/eu/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Compress.mo" name="locale/fa/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Compress.po" name="locale/fa/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Compress.mo" name="locale/fi/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Compress.po" name="locale/fi/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Compress.mo" name="locale/fr/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Compress.po" name="locale/fr/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Compress.mo" name="locale/gl/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Compress.po" name="locale/gl/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Compress.mo" name="locale/he/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Compress.po" name="locale/he/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Compress.mo" name="locale/hr/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Compress.po" name="locale/hr/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Compress.mo" name="locale/hu/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Compress.po" name="locale/hu/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Compress.mo" name="locale/id/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Compress.po" name="locale/id/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Compress.mo" name="locale/is/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Compress.po" name="locale/is/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Compress.mo" name="locale/it/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Compress.po" name="locale/it/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Compress.mo" name="locale/ja/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Compress.po" name="locale/ja/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Compress.mo" name="locale/km/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Compress.po" name="locale/km/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Compress.mo" name="locale/ko/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Compress.po" name="locale/ko/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Compress.mo" name="locale/lt/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Compress.po" name="locale/lt/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Compress.mo" name="locale/lv/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Compress.po" name="locale/lv/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Compress.mo" name="locale/mk/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Compress.po" name="locale/mk/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Compress.mo" name="locale/nb/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Compress.po" name="locale/nb/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Compress.mo" name="locale/nl/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Compress.po" name="locale/nl/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Compress.mo" name="locale/nn/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Compress.po" name="locale/nn/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Compress.mo" name="locale/pl/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Compress.po" name="locale/pl/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Compress.mo" name="locale/pt/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Compress.po" name="locale/pt/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Compress.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Compress.po" name="locale/pt_BR/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Compress.mo" name="locale/ro/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Compress.po" name="locale/ro/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Compress.mo" name="locale/ru/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Compress.po" name="locale/ru/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Compress.mo" name="locale/sk/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Compress.po" name="locale/sk/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Compress.mo" name="locale/sl/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Compress.po" name="locale/sl/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Compress.mo" name="locale/sv/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Compress.po" name="locale/sv/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Compress.mo" name="locale/tr/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Compress.po" name="locale/tr/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Compress.mo" name="locale/uk/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Compress.po" name="locale/uk/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Compress.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Compress.po" name="locale/zh_CN/LC_MESSAGES/Horde_Compress.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Compress.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Compress.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Compress.po" name="locale/zh_TW/LC_MESSAGES/Horde_Compress.po" />
   </filelist>
  </phprelease>
  <changelog>
   <release>
+   <version>
+    <release>0.0.1</release>
+    <api>0.0.1</api>
+   </version>
+   <stability>
+    <release>alpha</release>
+    <api>alpha</api>
+   </stability>
+   <date>2003-07-03</date>
+   <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
+   <notes>
+Initial release as a PEAR package
+   </notes>
+  </release>
+  <release>
    <date>2006-05-08</date>
    <time>18:34:08</time>
    <version>
@@ -105,22 +471,24 @@ http://pear.php.net/dtd/package-2.0.xsd">
     <api>alpha</api>
    </stability>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>* Added rar driver.
+   <notes>
+* Added rar driver.
   * Converted to package.xml 2.0 for pear.horde.org
    </notes>
   </release>
   <release>
    <version>
-    <release>0.0.1</release>
-    <api>0.0.1</api>
+    <release>0.1.0</release>
+    <api>0.1.0</api>
    </version>
    <stability>
-    <release>alpha</release>
-    <api>alpha</api>
+    <release>beta</release>
+    <api>beta</api>
    </stability>
-   <date>2003-07-03</date>
+   <date>2010-10-22</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Initial release as a PEAR package
+   <notes>
+* Initial Horde 4 package.
    </notes>
   </release>
  </changelog>
index ab5cbc9..4dca04f 100644 (file)
@@ -104,9 +104,8 @@ class Horde
     {
         $admin = $GLOBALS['registry']->isAdmin();
         $cli = Horde_Cli::runningFromCLI();
-        $dict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../locale');
 
-        $errortext = '<h1>' . $dict->t("A fatal error has occurred") . '</h1>';
+        $errortext = '<h1>' . Horde_Core_Translation::t("A fatal error has occurred") . '</h1>';
 
         if (($error instanceof PEAR_Error) ||
             (is_object($error) && method_exists($error, 'getMessage'))) {
@@ -124,12 +123,12 @@ class Horde
             $backtrace = new Horde_Support_Backtrace($trace);
             $errortext .= '<div id="backtrace"><pre>' . (string)$backtrace . '</pre></div>';
             if (is_object($error)) {
-                $errortext .= '<h3>' . $dict->t("Details") . '</h3>';
-                $errortext .= '<h4>' . $dict->t("The full error message is logged in Horde's log file, and is shown below only to administrators. Non-administrative users will not see error details.") . '</h4>';
+                $errortext .= '<h3>' . Horde_Core_Translation::t("Details") . '</h3>';
+                $errortext .= '<h4>' . Horde_Core_Translation::t("The full error message is logged in Horde's log file, and is shown below only to administrators. Non-administrative users will not see error details.") . '</h4>';
                 $errortext .= '<div id="details"><pre>' . htmlspecialchars(print_r($error, true)) . '</pre></div>';
             }
         } elseif ($log) {
-            $errortext .= '<h3>' . $dict->t("Details have been logged for the administrator.") . '</h3>';
+            $errortext .= '<h3>' . Horde_Core_Translation::t("Details have been logged for the administrator.") . '</h3>';
         }
 
         // Log the error via logMessage() if requested.
@@ -375,13 +374,11 @@ HTML;
         global $conf, $session;
 
         if (!isset($session['horde:form_secrets/' . $token])) {
-            $dict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../locale');
-            throw new Horde_Exception($dict->t("We cannot verify that this request was really sent by you. It could be a malicious request. If you intended to perform this action, you can retry it now."));
+            throw new Horde_Exception(Horde_Core_Translation::t("We cannot verify that this request was really sent by you. It could be a malicious request. If you intended to perform this action, you can retry it now."));
         }
 
         if (($session['horde:form_secrets/' . $token] + $GLOBALS['conf']['urls']['token_lifetime'] * 60) < time()) {
-            $dict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../locale');
-            throw new Horde_Exception(sprintf($dict->t("This request cannot be completed because the link you followed or the form you submitted was only valid for %s minutes. Please try again now."), $GLOBALS['conf']['urls']['token_lifetime']));
+            throw new Horde_Exception(sprintf(Horde_Core_Translation::t("This request cannot be completed because the link you followed or the form you submitted was only valid for %s minutes. Please try again now."), $GLOBALS['conf']['urls']['token_lifetime']));
         }
     }
 
@@ -674,8 +671,7 @@ HTML;
     static public function requireSecureConnection()
     {
         if (!self::isConnectionSecure()) {
-            $dict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../locale');
-            throw new Horde_Exception($dict->t("The encryption features require a secure web connection."));
+            throw new Horde_Exception(Horde_Core_Translation::t("The encryption features require a secure web connection."));
         }
     }
 
@@ -866,20 +862,18 @@ HTML;
         $fileroot = isset($registry) ? $registry->get('fileroot') : '';
 
         if (!is_array($params) || !count($params)) {
-            $dict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../locale');
             throw new Horde_Exception(
-                sprintf($dict->t("No configuration information specified for %s."), $name) . "\n\n" .
-                sprintf($dict->t("The file %s should contain some %s settings."),
+                sprintf(Horde_Core_Translation::t("No configuration information specified for %s."), $name) . "\n\n" .
+                sprintf(Horde_Core_Translation::t("The file %s should contain some %s settings."),
                     $fileroot . '/config/' . $file,
                     sprintf("%s['%s']['params']", $variable, $driver)));
         }
 
         foreach ($fields as $field) {
             if (!isset($params[$field])) {
-                $dict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../locale');
                 throw new Horde_Exception(
-                    sprintf($dict->t("Required \"%s\" not specified in %s configuration."), $field, $name) . "\n\n" .
-                    sprintf($dict->t("The file %s should contain a %s setting."),
+                    sprintf(Horde_Core_Translation::t("Required \"%s\" not specified in %s configuration."), $field, $name) . "\n\n" .
+                    sprintf(Horde_Core_Translation::t("The file %s should contain a %s setting."),
                         $fileroot . '/config/' . $file,
                         sprintf("%s['%s']['params']['%s']", $variable, $driver, $field)));
             }
@@ -1614,8 +1608,7 @@ HTML;
         $ak = self::getAccessKey($label, $nocheck);
         $attributes = 'title="' . self::stripAccessKey($label);
         if (!empty($ak)) {
-            $dict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../locale');
-            $attributes .= sprintf($dict->t(" (Accesskey %s)"), strtoupper($ak))
+            $attributes .= sprintf(Horde_Core_Translation::t(" (Accesskey %s)"), strtoupper($ak))
               . '" accesskey="' . $ak;
         }
 
@@ -2084,8 +2077,7 @@ HTML;
         $menu = new Horde_Menu(isset($opts['mask']) ? $opts['mask'] : Horde_Menu::MASK_ALL);
 
         if (!in_array($registry->get('status', 'horde'), array('notoolbar', 'hidden', 'inactive'))) {
-            $dict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../locale');
-            $menu->add(Horde::url('services/portal/', false, array('app' => 'horde')), $dict->t("_Home"), 'horde.png');
+            $menu->add(Horde::url('services/portal/', false, array('app' => 'horde')), Horde_Core_Translation::t("_Home"), 'horde.png');
         }
 
         $registry->callAppMethod($opts['app'], 'menu', array(
index b41425c..a549c44 100644 (file)
@@ -181,8 +181,7 @@ abstract class Horde_Core_Ajax_Application
         }
         $res = $rfc822->parseAddressList($this->_vars->email, $params);
         if (!count($res)) {
-            $dict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../../../../locale');
-            throw new Horde_Exception($dict->t("No valid email address found"));
+            throw new Horde_Exception(Horde_Core_Translation::t("No valid email address found"));
         }
 
         return (object)array(
index 5a47d7d..4833f5c 100644 (file)
@@ -67,13 +67,6 @@ class Horde_Core_Auth_Application extends Horde_Auth_Base
     );
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_coreDict;
-
-    /**
      * Constructor.
      *
      * @param array $params  Required parameters:
@@ -102,8 +95,6 @@ class Horde_Core_Auth_Application extends Horde_Auth_Base
             unset($params['base']);
         }
 
-        $this->_coreDict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../../../../locale');
-
         parent::__construct($params);
     }
 
@@ -582,7 +573,7 @@ class Horde_Core_Auth_Application extends Horde_Auth_Base
             isset($GLOBALS['notification']) &&
             ($expire = $this->_base->getCredential('expire'))) {
             $toexpire = ($expire - time()) / 86400;
-            $GLOBALS['notification']->push(sprintf($this->_coreDict->ngettext("%d day until your password expires.", "%d days until your password expires.", $toexpire), $toexpire), 'horde.warning');
+            $GLOBALS['notification']->push(sprintf(Horde_Core_Translation::ngettext("%d day until your password expires.", "%d days until your password expires.", $toexpire), $toexpire), 'horde.warning');
         }
 
         if ($this->hasCapability('authenticatecallback')) {
index 3315d70..0ea1651 100644 (file)
 abstract class Horde_Core_Auth_Signup_Base
 {
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_coreDict;
-
-    /**
-     * Constructor.
-     */
-    public function __construct()
-    {
-        $this->_coreDict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../../../../../locale');
-    }
-
-    /**
      * Adds a new user to the system and handles any extra fields that may have
      * been compiled, relying on the hooks.php file.
      *
@@ -93,14 +78,14 @@ abstract class Horde_Core_Auth_Signup_Base
                 'u' => $signup->name,
                 'h' => hash_hmac('sha1', $signup->name, $conf['secret_key'])
             ));
-            $message = sprintf($this->_coreDict->t("A new account for the user \"%s\" has been requested through the signup form."), $signup->name)
+            $message = sprintf(Horde_Core_Translation::t("A new account for the user \"%s\" has been requested through the signup form."), $signup->name)
                 . "\n\n"
-                . $this->_coreDict->t("Approve the account:")
+                . Horde_Core_Translation::t("Approve the account:")
                 . "\n" . $link->copy()->add('a', 'approve') . "\n"
-                . $this->_coreDict->t("Deny the account:")
+                . Horde_Core_Translation::t("Deny the account:")
                 . "\n" . $link->copy()->add('a', 'deny');
             $mail = new Horde_Mime_Mail(array(
-                'subject' => sprintf($this->_coreDict->t("Account signup request for \"%s\""), $signup->name),
+                'subject' => sprintf(Horde_Core_Translation::t("Account signup request for \"%s\""), $signup->name),
                 'body' => $message,
                 'to' => $conf['signup']['email'],
                 'from' => $conf['signup']['email'],
@@ -126,7 +111,7 @@ abstract class Horde_Core_Auth_Signup_Base
         // the signup queue.
         if ($GLOBALS['auth']->exists($info['user_name']) ||
             $this->exists($info['user_name'])) {
-            throw new Horde_Exception(sprintf($this->_coreDict->t("Username \"%s\" already exists."), $info['user_name']));
+            throw new Horde_Exception(sprintf(Horde_Core_Translation::t("Username \"%s\" already exists."), $info['user_name']));
         }
     }
 
index 2d2cd88..765ea26 100644 (file)
@@ -20,23 +20,15 @@ class Horde_Core_Auth_Signup_Form extends Horde_Form
     protected $_useFormToken = true;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_coreDict;
-
-    /**
      * Constructor
      *
      * @var params Horde_Variables  TODO
      */
     public function __construct(&$vars)
     {
-        $this->_coreDict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../../../../../locale');
-        parent::__construct($vars, sprintf($this->_coreDict->t("%s Sign Up"), $GLOBALS['registry']->get('name')));
+        parent::__construct($vars, sprintf(Horde_Core_Translation::t("%s Sign Up"), $GLOBALS['registry']->get('name')));
 
-        $this->setButtons($this->_coreDict->t("Sign up"), true);
+        $this->setButtons(Horde_Core_Translation::t("Sign up"), true);
 
         $this->addHidden('', 'url', 'text', false);
 
@@ -47,10 +39,10 @@ class Horde_Core_Auth_Signup_Form extends Horde_Form
 
         if (!empty($extra)) {
             if (!isset($extra['user_name'])) {
-                $this->addVariable($this->_coreDict->t("Choose a username"), 'user_name', 'text', true);
+                $this->addVariable(Horde_Core_Translation::t("Choose a username"), 'user_name', 'text', true);
             }
             if (!isset($extra['password'])) {
-                $this->addVariable($this->_coreDict->t("Choose a password"), 'password', 'passwordconfirm', true, false, $this->_coreDict->t("type the password twice to confirm"));
+                $this->addVariable(Horde_Core_Translation::t("Choose a password"), 'password', 'passwordconfirm', true, false, Horde_Core_Translation::t("type the password twice to confirm"));
             }
             foreach ($extra as $field_name => $field) {
                 $readonly = isset($field['readonly']) ? $field['readonly'] : null;
@@ -63,8 +55,8 @@ class Horde_Core_Auth_Signup_Form extends Horde_Form
                                    $desc, $field_params);
             }
         } else {
-            $this->addVariable($this->_coreDict->t("Choose a username"), 'user_name', 'text', true);
-            $this->addVariable($this->_coreDict->t("Choose a password"), 'password', 'passwordconfirm', true, false, $this->_coreDict->t("type the password twice to confirm"));
+            $this->addVariable(Horde_Core_Translation::t("Choose a username"), 'user_name', 'text', true);
+            $this->addVariable(Horde_Core_Translation::t("Choose a password"), 'password', 'passwordconfirm', true, false, Horde_Core_Translation::t("type the password twice to confirm"));
         }
     }
 
index 4d235c8..cf6e65a 100644 (file)
@@ -9,8 +9,7 @@ class Horde_Core_Factory_History
     {
         if (empty($GLOBALS['conf']['sql']['phptype']) ||
             ($GLOBALS['conf']['sql']['phptype'] == 'none')) {
-            $dict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../../../../locale');
-            throw new Horde_Exception($dict->t("The History system is disabled."));
+            throw new Horde_Exception(Horde_Core_Translation::t("The History system is disabled."));
         }
 
         $ob = Horde_History::factory('Sql', $GLOBALS['conf']['sql']);
index d0ba2cb..de73e57 100644 (file)
@@ -42,13 +42,6 @@ class Horde_Core_Factory_Prefs
     private $_injector;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_coreDict;
-
-    /**
      * Constructor.
      *
      * @param Horde_Injector $injector  The injector to use.
@@ -56,7 +49,6 @@ class Horde_Core_Factory_Prefs
     public function __construct(Horde_Injector $injector)
     {
         $this->_injector = $injector;
-        $this->_coreDict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../../../../locale');
     }
 
     /**
@@ -132,7 +124,7 @@ class Horde_Core_Factory_Prefs
                 if (!$GLOBALS['session']['horde:no_prefs']) {
                     $GLOBALS['session']['horde:no_prefs'] = true;
                     if (isset($GLOBALS['notification'])) {
-                        $GLOBALS['notification']->push($this->_coreDict->t("The preferences backend is currently unavailable and your preferences have not been loaded. You may continue to use the system with default preferences."));
+                        $GLOBALS['notification']->push(Horde_Core_Translation::t("The preferences backend is currently unavailable and your preferences have not been loaded. You may continue to use the system with default preferences."));
                     }
                 }
                 unset($opts['cache']);
@@ -165,7 +157,7 @@ class Horde_Core_Factory_Prefs
             return false;
         }
 
-        $GLOBALS['notification']->push(sprintf($this->_coreDict->t("The preference \"%s\" could not be saved because its data exceeds the maximum allowable size"), $pref), 'horde.error');
+        $GLOBALS['notification']->push(sprintf(Horde_Core_Translation::t("The preference \"%s\" could not be saved because its data exceeds the maximum allowable size"), $pref), 'horde.error');
         return true;
     }
 
index da09354..38e8a8b 100644 (file)
@@ -79,8 +79,7 @@ class Horde_Core_Factory_Share
         if (empty($ob)) {
             $class = 'Horde_Share_' . ucfirst(basename($driver));
             if (!class_exists($class)) {
-                $dict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../../../../locale');
-                throw new Horde_Exception(sprintf($dict->t("\"%s\" share driver not found."), $driver));
+                throw new Horde_Exception(sprintf(Horde_Core_Translation::t("\"%s\" share driver not found."), $driver));
             }
 
             $ob = new $class($app, $this->_injector->getInstance('Horde_Perms'));
index ad62274..66913ee 100644 (file)
@@ -39,8 +39,7 @@ class Horde_Core_Factory_Twitter
 
             return $twitter;
         } else {
-            $dict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../../../../locale');
-            throw new Horde_Service_Twitter_Exception($dict->t("No OAuth Key or Secret found for the Twitter API"));
+            throw new Horde_Service_Twitter_Exception(Horde_Core_Translation::t("No OAuth Key or Secret found for the Twitter API"));
         }
     }
 }
index 0206326..f447d57 100644 (file)
@@ -78,8 +78,7 @@ class Horde_Core_Factory_Vfs
         global $conf;
 
         if (($name !== 'horde') && !isset($conf[$name]['type'])) {
-            $dict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../../../../locale');
-            throw new Horde_Exception($dict->t("You must configure a VFS backend."));
+            throw new Horde_Exception(Horde_Core_Translation::t("You must configure a VFS backend."));
         }
 
         $vfs = ($name == 'horde' || $conf[$name]['type'] == 'horde')
index 424794f..00de316 100644 (file)
@@ -34,13 +34,6 @@ class Horde_Core_Mime_Viewer_Vcard extends Horde_Mime_Viewer_Base
     protected $_imageUrl;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_coreDict;
-
-    /**
      * Constructor.
      *
      * @param Horde_Mime_Part $mime_part  The object with the data to be
@@ -57,8 +50,6 @@ class Horde_Core_Mime_Viewer_Vcard extends Horde_Mime_Viewer_Base
      */
     public function __construct(Horde_Mime_Part $part, array $conf = array())
     {
-        $this->_coreDict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../../../../../locale');
-
         $this->_required = array_merge($this->_required, array(
             'browser',
             'notification',
@@ -108,11 +99,11 @@ class Horde_Core_Mime_Viewer_Vcard extends Horde_Mime_Viewer_Base
         $data = $this->_mimepart->getContents();
         $html = '';
         $import_msg = null;
-        $title = $this->_coreDict->t("vCard");
+        $title = Horde_Core_Translation::t("vCard");
 
         $iCal = new Horde_Icalendar();
         if (!$iCal->parsevCalendar($data, 'VCALENDAR', $this->_mimepart->getCharset())) {
-            $notification->push($this->_coreDict->t("There was an error reading the contact data."), 'horde.error');
+            $notification->push(Horde_Core_Translation::t("There was an error reading the contact data."), 'horde.error');
         }
 
         if (Horde_Util::getFormData('import') &&
@@ -126,11 +117,11 @@ class Horde_Core_Mime_Viewer_Vcard extends Horde_Mime_Viewer_Base
                         $contacts = $registry->call('contacts/import', array($c, null, $source));
                         ++$count;
                     } catch (Horde_Exception $e) {
-                        $notification->push($this->_coreDict->t("There was an error importing the contact data:") . ' ' . $e->getMessage(), 'horde.error');
+                        $notification->push(Horde_Core_Translation::t("There was an error importing the contact data:") . ' ' . $e->getMessage(), 'horde.error');
                     }
                 }
             }
-            $notification->push(sprintf($this->_coreDict->ngettext(
+            $notification->push(sprintf(Horde_Core_Translation::ngettext(
                 "%d contact was successfully added to your address book.",
                 "%d contacts were successfully added to your address book.",
                 $count),
@@ -154,18 +145,18 @@ class Horde_Core_Mime_Viewer_Vcard extends Horde_Mime_Viewer_Base
 
             $n = $vc->printableName();
             if (!empty($n)) {
-                $html .= $this->_row($this->_coreDict->t("Name"), $n);
+                $html .= $this->_row(Horde_Core_Translation::t("Name"), $n);
             }
 
             try {
-                $html .= $this->_row($this->_coreDict->t("Alias"), implode("\n", $vc->getAttributeValues('ALIAS')));
+                $html .= $this->_row(Horde_Core_Translation::t("Alias"), implode("\n", $vc->getAttributeValues('ALIAS')));
             } catch (Horde_Icalendar_Exception $e) {}
 
             try {
                 $birthdays = $vc->getAttributeValues('BDAY');
                 $birthday = new Horde_Date($birthdays[0]);
                 $html .= $this->_row(
-                    $this->_coreDict->t("Birthday"),
+                    Horde_Core_Translation::t("Birthday"),
                     $birthday->strftime($prefs->getValue('date_format')));
             } catch (Horde_Icalendar_Exception $e) {}
 
@@ -173,7 +164,7 @@ class Horde_Core_Mime_Viewer_Vcard extends Horde_Mime_Viewer_Base
             foreach ($photos as $p => $photo) {
                 if (isset($photo['params']['VALUE']) &&
                     Horde_String::upper($photo['params']['VALUE']) == 'URI') {
-                    $html .= $this->_row($this->_coreDict->t("Photo"),
+                    $html .= $this->_row(Horde_Core_Translation::t("Photo"),
                                          '<img src="' . htmlspecialchars($photo['value']) . '" />',
                                          false);
                 } elseif (isset($photo['params']['ENCODING']) &&
@@ -181,11 +172,11 @@ class Horde_Core_Mime_Viewer_Vcard extends Horde_Mime_Viewer_Base
                           isset($photo['params']['TYPE'])) {
                     if ($browser->hasFeature('datauri') === true ||
                         $browser->hasFeature('datauri') >= strlen($photo['value'])) {
-                        $html .= $this->_row($this->_coreDict->t("Photo"),
+                        $html .= $this->_row(Horde_Core_Translation::t("Photo"),
                                              '<img src="data:' . htmlspecialchars($photo['params']['TYPE'] . ';base64,' . $photo['value']) . '" />',
                                              false);
                     } elseif ($this->_imageUrl) {
-                        $html .= $this->_row($this->_coreDict->t("Photo"),
+                        $html .= $this->_row(Horde_Core_Translation::t("Photo"),
                                              '<img src="' . htmlspecialchars($this->_imageUrl->add(array('c' => $i, 'p' => $p))) . '" />',
                                              false);
                     }
@@ -205,36 +196,36 @@ class Horde_Core_Mime_Viewer_Vcard extends Horde_Mime_Viewer_Base
                 foreach ($label['params']['TYPE'] as $type) {
                     switch(Horde_String::upper($type)) {
                     case 'HOME':
-                        $types[] = $this->_coreDict->t("Home Address");
+                        $types[] = Horde_Core_Translation::t("Home Address");
                         break;
 
                     case 'WORK':
-                        $types[] = $this->_coreDict->t("Work Address");
+                        $types[] = Horde_Core_Translation::t("Work Address");
                         break;
 
                     case 'DOM':
-                        $types[] = $this->_coreDict->t("Domestic Address");
+                        $types[] = Horde_Core_Translation::t("Domestic Address");
                         break;
 
                     case 'INTL':
-                        $types[] = $this->_coreDict->t("International Address");
+                        $types[] = Horde_Core_Translation::t("International Address");
                         break;
 
                     case 'POSTAL':
-                        $types[] = $this->_coreDict->t("Postal Address");
+                        $types[] = Horde_Core_Translation::t("Postal Address");
                         break;
 
                     case 'PARCEL':
-                        $types[] = $this->_coreDict->t("Parcel Address");
+                        $types[] = Horde_Core_Translation::t("Parcel Address");
                         break;
 
                     case 'PREF':
-                        $types[] = $this->_coreDict->t("Preferred Address");
+                        $types[] = Horde_Core_Translation::t("Preferred Address");
                         break;
                     }
                 }
                 if (!count($types)) {
-                    $types = array($this->_coreDict->t("Address"));
+                    $types = array(Horde_Core_Translation::t("Address"));
                 }
                 $html .= $this->_row(implode('/', $types), $label['value']);
             }
@@ -269,36 +260,36 @@ class Horde_Core_Mime_Viewer_Vcard extends Horde_Mime_Viewer_Base
                 foreach ($item['params']['TYPE'] as $type) {
                     switch(Horde_String::upper($type)) {
                     case 'HOME':
-                        $types[] = $this->_coreDict->t("Home Address");
+                        $types[] = Horde_Core_Translation::t("Home Address");
                         break;
 
                     case 'WORK':
-                        $types[] = $this->_coreDict->t("Work Address");
+                        $types[] = Horde_Core_Translation::t("Work Address");
                         break;
 
                     case 'DOM':
-                        $types[] = $this->_coreDict->t("Domestic Address");
+                        $types[] = Horde_Core_Translation::t("Domestic Address");
                         break;
 
                     case 'INTL':
-                        $types[] = $this->_coreDict->t("International Address");
+                        $types[] = Horde_Core_Translation::t("International Address");
                         break;
 
                     case 'POSTAL':
-                        $types[] = $this->_coreDict->t("Postal Address");
+                        $types[] = Horde_Core_Translation::t("Postal Address");
                         break;
 
                     case 'PARCEL':
-                        $types[] = $this->_coreDict->t("Parcel Address");
+                        $types[] = Horde_Core_Translation::t("Parcel Address");
                         break;
 
                     case 'PREF':
-                        $types[] = $this->_coreDict->t("Preferred Address");
+                        $types[] = Horde_Core_Translation::t("Preferred Address");
                         break;
                     }
                 }
                 if (!count($types)) {
-                    $types = array($this->_coreDict->t("Address"));
+                    $types = array(Horde_Core_Translation::t("Address"));
                 }
                 $html .= $this->_row(implode('/', $types), implode("\n", $a));
             }
@@ -315,19 +306,19 @@ class Horde_Core_Mime_Viewer_Vcard extends Horde_Mime_Viewer_Base
                     }
                 }
                 if (isset($number['params']['FAX'])) {
-                    $html .= $this->_row($this->_coreDict->t("Fax"), $number['value']);
+                    $html .= $this->_row(Horde_Core_Translation::t("Fax"), $number['value']);
                 } else {
                     if (isset($number['params']['HOME'])) {
-                        $html .= $this->_row($this->_coreDict->t("Home Phone"),
+                        $html .= $this->_row(Horde_Core_Translation::t("Home Phone"),
                                              $number['value']);
                     } elseif (isset($number['params']['WORK'])) {
-                        $html .= $this->_row($this->_coreDict->t("Work Phone"),
+                        $html .= $this->_row(Horde_Core_Translation::t("Work Phone"),
                                              $number['value']);
                     } elseif (isset($number['params']['CELL'])) {
-                        $html .= $this->_row($this->_coreDict->t("Cell Phone"),
+                        $html .= $this->_row(Horde_Core_Translation::t("Cell Phone"),
                                              $number['value']);
                     } else {
-                        $html .= $this->_row($this->_coreDict->t("Phone"),
+                        $html .= $this->_row(Horde_Core_Translation::t("Phone"),
                                              $number['value']);
                     }
                 }
@@ -361,36 +352,36 @@ class Horde_Core_Mime_Viewer_Vcard extends Horde_Mime_Viewer_Base
             }
 
             if (count($emails)) {
-                $html .= $this->_row($this->_coreDict->t("Email"), implode("\n", $emails), false);
+                $html .= $this->_row(Horde_Core_Translation::t("Email"), implode("\n", $emails), false);
             }
 
             try {
                 $title = $vc->getAttributeValues('TITLE');
-                $html .= $this->_row($this->_coreDict->t("Title"), $title[0]);
+                $html .= $this->_row(Horde_Core_Translation::t("Title"), $title[0]);
             } catch (Horde_Icalendar_Exception $e) {}
 
             try {
                 $role = $vc->getAttributeValues('ROLE');
-                $html .= $this->_row($this->_coreDict->t("Role"), $role[0]);
+                $html .= $this->_row(Horde_Core_Translation::t("Role"), $role[0]);
             } catch (Horde_Icalendar_Exception $e) {}
 
             try {
                 $org = $vc->getAttributeValues('ORG');
-                $html .= $this->_row($this->_coreDict->t("Company"), $org[0]);
+                $html .= $this->_row(Horde_Core_Translation::t("Company"), $org[0]);
                 if (isset($org[1])) {
-                    $html .= $this->_row($this->_coreDict->t("Department"), $org[1]);
+                    $html .= $this->_row(Horde_Core_Translation::t("Department"), $org[1]);
                 }
             } catch (Horde_Icalendar_Exception $e) {}
 
             try {
                 $notes = $vc->getAttributeValues('NOTE');
-                $html .= $this->_row($this->_coreDict->t("Notes"), $notes[0]);
+                $html .= $this->_row(Horde_Core_Translation::t("Notes"), $notes[0]);
             } catch (Horde_Icalendar_Exception $e) {}
 
             try {
                 $url = $vc->getAttributeValues('URL');
                 $html .= $this->_row(
-                    $this->_coreDict->t("URL"),
+                    Horde_Core_Translation::t("URL"),
                     '<a href="' . htmlspecialchars($url[0])
                         . '" target="_blank">' . htmlspecialchars($url[0])
                         . '</a>',
@@ -412,9 +403,9 @@ class Horde_Core_Mime_Viewer_Vcard extends Horde_Mime_Viewer_Base
             if (count($sources) > 1) {
                 $html .=
                     '<input type="submit" class="button" name="import" value="'
-                    . $this->_coreDict->t("Add to address book:") . '" />'
+                    . Horde_Core_Translation::t("Add to address book:") . '" />'
                     . '<label for="add_source" class="hidden">'
-                    . $this->_coreDict->t("Address Book") . '</label>'
+                    . Horde_Core_Translation::t("Address Book") . '</label>'
                     . '<select id="add_source" name="source">';
                 foreach ($sources as $key => $label) {
                     $selected = ($key == $prefs->getValue('add_source'))
@@ -427,7 +418,7 @@ class Horde_Core_Mime_Viewer_Vcard extends Horde_Mime_Viewer_Base
                 reset($sources);
                 $html .=
                     '<input type="submit" class="button" name="import" value="'
-                    . $this->_coreDict->t("Add to my address book") . '" />'
+                    . Horde_Core_Translation::t("Add to my address book") . '" />'
                     . '<input type="hidden" name="source" value="'
                     . htmlspecialchars(key($sources)) . '" />';
             }
index acba9f8..5730c2f 100644 (file)
 class Horde_Core_Notification_Status extends Horde_Notification_Event_Status
 {
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_coreDict;
-
-    /**
      * Constructor.
      *
      * @param mixed $data   Message: either a string or an Exception or
@@ -30,8 +23,6 @@ class Horde_Core_Notification_Status extends Horde_Notification_Event_Status
      */
     public function __construct($data, $type = null, array $flags = array())
     {
-        $this->_coreDict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../../../../locale');
-
         if (empty($type)) {
             $type = ($data instanceof PEAR_Error || $data instanceof Exception)
                 ? 'horde.error'
@@ -74,15 +65,15 @@ class Horde_Core_Notification_Status extends Horde_Notification_Event_Status
                     return $e->getMessage();
                 }
                 $opts = array(
-                    '-1' => $this->_coreDict->t("Dismiss"),
-                    '5' => $this->_coreDict->t("5 minutes"),
-                    '15' => $this->_coreDict->t("15 minutes"),
-                    '60' => $this->_coreDict->t("1 hour"),
-                    '360' => $this->_coreDict->t("6 hours"),
-                    '1440' => $this->_coreDict->t("1 day")
+                    '-1' => Horde_Core_Translation::t("Dismiss"),
+                    '5' => Horde_Core_Translation::t("5 minutes"),
+                    '15' => Horde_Core_Translation::t("15 minutes"),
+                    '60' => Horde_Core_Translation::t("1 hour"),
+                    '360' => Horde_Core_Translation::t("6 hours"),
+                    '1440' => Horde_Core_Translation::t("1 day")
                 );
                 $id = 'snooze_' . md5($alarm['id']);
-                $text .= ' <small onmouseover="if(typeof ' . $id . '_t!=\'undefined\')clearTimeout(' . $id . '_t);Element.show(\'' . $id . '\')" onmouseout="' . $id . '_t=setTimeout(function(){Element.hide(\'' . $id . '\')},500)">[' . $this->_coreDict->t("Snooze...") . '<span id="' . $id . '" style="display:none"> ';
+                $text .= ' <small onmouseover="if(typeof ' . $id . '_t!=\'undefined\')clearTimeout(' . $id . '_t);Element.show(\'' . $id . '\')" onmouseout="' . $id . '_t=setTimeout(function(){Element.hide(\'' . $id . '\')},500)">[' . Horde_Core_Translation::t("Snooze...") . '<span id="' . $id . '" style="display:none"> ';
                 $first = true;
                 foreach ($opts as $minutes => $desc) {
                     if (!$first) {
@@ -95,30 +86,30 @@ class Horde_Core_Notification_Status extends Horde_Notification_Event_Status
             }
 
             $img = 'alerts/alarm.png';
-            $label = $this->_coreDict->t("Alarm");
+            $label = Horde_Core_Translation::t("Alarm");
             break;
 
         case 'horde.error':
             $img = 'alerts/error.png';
-            $label = $this->_coreDict->t("Error");
+            $label = Horde_Core_Translation::t("Error");
             $text = parent::__toString();
             break;
 
         case 'horde.message':
             $img = 'alerts/message.png';
-            $label = $this->_coreDict->t("Message");
+            $label = Horde_Core_Translation::t("Message");
             $text = parent::__toString();
             break;
 
         case 'horde.success':
             $img = 'alerts/success.png';
-            $label = $this->_coreDict->t("Success");
+            $label = Horde_Core_Translation::t("Success");
             $text = parent::__toString();
             break;
 
         case 'horde.warning':
             $img = 'alerts/warning.png';
-            $label = $this->_coreDict->t("Warning");
+            $label = Horde_Core_Translation::t("Warning");
             $text = parent::__toString();
             break;
 
index 8c506a6..0172841 100644 (file)
@@ -43,13 +43,6 @@ class Horde_Core_Perms_Ui
     protected $_type = 'matrix';
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_coreDict;
-
-    /**
      * Constructor.
      *
      * @param Horde_Perms $perms  The object to display UI stuff for.
@@ -57,7 +50,6 @@ class Horde_Core_Perms_Ui
     public function __construct($perms)
     {
         $this->_perms = $perms;
-        $this->_coreDict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../../../../locale');
     }
 
     /**
@@ -75,11 +67,11 @@ class Horde_Core_Perms_Ui
 
         $perms_node = array('icon' => Horde_Themes::img('perms.png'));
         $add = Horde::url('admin/perms/addchild.php');
-        $add_img = Horde::img('add_perm.png', $this->_coreDict->t("Add Permission"));
+        $add_img = Horde::img('add_perm.png', Horde_Core_Translation::t("Add Permission"));
         $edit = Horde::url('admin/perms/edit.php');
         $delete = Horde::url('admin/perms/delete.php');
-        $edit_img = Horde::img('edit.png', $this->_coreDict->t("Edit Permission"));
-        $delete_img = Horde::img('delete.png', $this->_coreDict->t("Delete Permission"));
+        $edit_img = Horde::img('edit.png', Horde_Core_Translation::t("Edit Permission"));
+        $delete_img = Horde::img('delete.png', Horde_Core_Translation::t("Delete Permission"));
         $blank_img = Horde::img('blank.gif', '', array('width' => 16, 'height' => 16));
 
         /* Set up the tree. */
@@ -98,10 +90,10 @@ class Horde_Core_Perms_Ui
                 ? array('class' => 'selected')
                 : array();
             if ($perm_id == Horde_Perms::ROOT) {
-                $add_link = $add->add('perm_id', $perm_id)->link(array('title' => $this->_coreDict->t("Add New Permission"))) . $add_img . '</a>';
+                $add_link = $add->add('perm_id', $perm_id)->link(array('title' => Horde_Core_Translation::t("Add New Permission"))) . $add_img . '</a>';
                 $base_node_params = array('icon' => Horde_Themes::img('administration.png'));
 
-                $tree->addNode($perm_id, null, $this->_coreDict->t("All Permissions"), 0, true,
+                $tree->addNode($perm_id, null, Horde_Core_Translation::t("All Permissions"), 0, true,
                                $base_node_params + $node_class,
                                array($add_link));
             } else {
@@ -127,15 +119,15 @@ class Horde_Core_Perms_Ui
 
                 if (isset($app_perms['tree']) &&
                     is_array(Horde_Array::getElement($app_perms['tree'], $parents))) {
-                    $add_link = $add->add('perm_id', $perm_id)->link(array('title' => $this->_coreDict->t("Add Child Permission"))) . $add_img . '</a>';
+                    $add_link = $add->add('perm_id', $perm_id)->link(array('title' => Horde_Core_Translation::t("Add Child Permission"))) . $add_img . '</a>';
                     $perms_extra[] = $add_link;
                 } else {
                     $perms_extra[] = $blank_img;
                 }
 
-                $edit_link = $edit->add('perm_id', $perm_id)->link(array('title' => $this->_coreDict->t("Edit Permission"))) . $edit_img . '</a>';
+                $edit_link = $edit->add('perm_id', $perm_id)->link(array('title' => Horde_Core_Translation::t("Edit Permission"))) . $edit_img . '</a>';
                 $perms_extra[] = $edit_link;
-                $delete_link = $delete->add('perm_id', $perm_id)->link(array('title' => $this->_coreDict->t("Delete Permission"))) . $delete_img . '</a>';
+                $delete_link = $delete->add('perm_id', $perm_id)->link(array('title' => Horde_Core_Translation::t("Delete Permission"))) . $delete_img . '</a>';
                 $perms_extra[] = $delete_link;
                 $name = $this->_perms->getTitle($node);
 
@@ -188,8 +180,8 @@ class Horde_Core_Perms_Ui
         /* Initialise form if required. */
         $this->_formInit();
 
-        $this->_form->setTitle(sprintf($this->_coreDict->t("Add a child permission to \"%s\""), $this->_perms->getTitle($permission->getName())));
-        $this->_form->setButtons($this->_coreDict->t("Add"));
+        $this->_form->setTitle(sprintf(Horde_Core_Translation::t("Add a child permission to \"%s\""), $this->_perms->getTitle($permission->getName())));
+        $this->_form->setButtons(Horde_Core_Translation::t("Add"));
         $this->_vars->set('perm_id', $this->_perms->getPermissionId($permission));
         $this->_form->addHidden('', 'perm_id', 'text', false);
 
@@ -197,15 +189,15 @@ class Horde_Core_Perms_Ui
         $child_perms = $this->_perms->getAvailable($permission->getName());
         if ($child_perms === false) {
             /* False, so no childs are to be added below this level. */
-            $this->_form->addVariable($this->_coreDict->t("Permission"), 'child', 'invalid', true, false, null, array($this->_coreDict->t("No children can be added to this permission.")));
+            $this->_form->addVariable(Horde_Core_Translation::t("Permission"), 'child', 'invalid', true, false, null, array(Horde_Core_Translation::t("No children can be added to this permission.")));
         } elseif (is_array($child_perms)) {
             if (!empty($force_choice)) {
                 /* Choice array available, but choice being forced. */
                 $this->_vars->set('child', $force_choice);
-                $this->_form->addVariable($this->_coreDict->t("Permissions"), 'child', 'enum', true, true, null, array($child_perms));
+                $this->_form->addVariable(Horde_Core_Translation::t("Permissions"), 'child', 'enum', true, true, null, array($child_perms));
             } else {
                 /* Choice array available, so set up enum field. */
-                $this->_form->addVariable($this->_coreDict->t("Permissions"), 'child', 'enum', true, false, null, array($child_perms));
+                $this->_form->addVariable(Horde_Core_Translation::t("Permissions"), 'child', 'enum', true, false, null, array($child_perms));
             }
         }
     }
@@ -240,7 +232,7 @@ class Horde_Core_Perms_Ui
         /* Initialise form if required. */
         $this->_formInit();
 
-        $this->_form->setButtons($this->_coreDict->t("Update"), true);
+        $this->_form->setButtons(Horde_Core_Translation::t("Update"), true);
         $perm_id = $this->_perms->getPermissionId($permission);
         $this->_form->addHidden('', 'perm_id', 'text', false);
 
@@ -250,7 +242,7 @@ class Horde_Core_Perms_Ui
 
         /* Default permissions. */
         $perm_val = $permission->getDefaultPermissions();
-        $this->_form->setSection('default', $this->_coreDict->t("All Authenticated Users"), Horde::img('perms.png'), false);
+        $this->_form->setSection('default', Horde_Core_Translation::t("All Authenticated Users"), Horde::img('perms.png'), false);
 
         /* We MUST use 'deflt' for the variable name because 'default' is a
          * reserved word in JavaScript. */
@@ -268,7 +260,7 @@ class Horde_Core_Perms_Ui
 
         /* Guest permissions. */
         $perm_val = $permission->getGuestPermissions();
-        $this->_form->setSection('guest', $this->_coreDict->t("Guest Permissions"), '', false);
+        $this->_form->setSection('guest', Horde_Core_Translation::t("Guest Permissions"), '', false);
 
         if ($this->_type == 'matrix') {
             /* Define a single matrix row for guest perms. */
@@ -281,7 +273,7 @@ class Horde_Core_Perms_Ui
 
         /* Object creator permissions. */
         $perm_val = $permission->getCreatorPermissions();
-        $this->_form->setSection('creator', $this->_coreDict->t("Creator Permissions"), Horde::img('user.png'), false);
+        $this->_form->setSection('creator', Horde_Core_Translation::t("Creator Permissions"), Horde::img('user.png'), false);
 
         if ($this->_type == 'matrix') {
             /* Define a single matrix row for creator perms. */
@@ -294,7 +286,7 @@ class Horde_Core_Perms_Ui
 
         /* Users permissions. */
         $perm_val = $permission->getUserPermissions();
-        $this->_form->setSection('users', $this->_coreDict->t("Individual Users"), Horde::img('user.png'), false);
+        $this->_form->setSection('users', Horde_Core_Translation::t("Individual Users"), Horde::img('user.png'), false);
         $auth = $GLOBALS['injector']->getInstance('Horde_Core_Factory_Auth')->create();
         if ($auth->hasCapability('list')) {
             /* The auth driver has list capabilities so set up an array which
@@ -335,7 +327,7 @@ class Horde_Core_Perms_Ui
                 if (is_array($new_users)) {
                     $u_n = Horde_Util::getFormData('u_n');
                     $u_n = empty($u_n['u']) ? null : $u_n['u'];
-                    $user_html = '<select name="u_n[u]"><option value="">' . $this->_coreDict->t("-- select --") . '</option>';
+                    $user_html = '<select name="u_n[u]"><option value="">' . Horde_Core_Translation::t("-- select --") . '</option>';
                     foreach ($new_users as $new_user) {
                         $user_html .= '<option value="' . $new_user . '"';
                         $user_html .= $u_n == $new_user ? ' selected="selected"' : '';
@@ -355,7 +347,7 @@ class Horde_Core_Perms_Ui
 
         /* Groups permissions. */
         $perm_val = $permission->getGroupPermissions();
-        $this->_form->setSection('groups', $this->_coreDict->t("Groups"), Horde::img('group.png'), false);
+        $this->_form->setSection('groups', Horde_Core_Translation::t("Groups"), Horde::img('group.png'), false);
         try {
             $groups = $GLOBALS['injector']->getInstance('Horde_Group');
             $group_list = $groups->listGroups();
@@ -394,7 +386,7 @@ class Horde_Core_Perms_Ui
                 if (is_array($new_groups)) {
                     $g_n = Horde_Util::getFormData('g_n');
                     $g_n = empty($g_n['g']) ? null : $g_n['g'];
-                    $group_html = '<select name="g_n[g]"><option value="">' . $this->_coreDict->t("-- select --") . '</option>';
+                    $group_html = '<select name="g_n[g]"><option value="">' . Horde_Core_Translation::t("-- select --") . '</option>';
                     foreach ($new_groups as $groupId => $group) {
                         $group_html .= '<option value="' . $groupId . '"';
                         $group_html .= $g_n == $groupId ? ' selected="selected"' : '';
@@ -413,7 +405,7 @@ class Horde_Core_Perms_Ui
         }
 
         /* Set form title. */
-        $this->_form->setTitle(sprintf($this->_coreDict->t("Edit permissions for \"%s\""), $this->_perms->getTitle($permission->getName())));
+        $this->_form->setTitle(sprintf(Horde_Core_Translation::t("Edit permissions for \"%s\""), $this->_perms->getTitle($permission->getName())));
     }
 
     /**
@@ -479,10 +471,10 @@ class Horde_Core_Perms_Ui
         /* Initialise form if required. */
         $this->_formInit();
 
-        $this->_form->setTitle(sprintf($this->_coreDict->t("Delete permissions for \"%s\""), $this->_perms->getTitle($permission->getName())));
-        $this->_form->setButtons(array($this->_coreDict->t("Delete"), $this->_coreDict->t("Do not delete")));
+        $this->_form->setTitle(sprintf(Horde_Core_Translation::t("Delete permissions for \"%s\""), $this->_perms->getTitle($permission->getName())));
+        $this->_form->setButtons(array(Horde_Core_Translation::t("Delete"), Horde_Core_Translation::t("Do not delete")));
         $this->_form->addHidden('', 'perm_id', 'text', false);
-        $this->_form->addVariable(sprintf($this->_coreDict->t("Delete permissions for \"%s\" and any sub-permissions?"), $this->_perms->getTitle($permission->getName())), 'prompt', 'description', false);
+        $this->_form->addVariable(sprintf(Horde_Core_Translation::t("Delete permissions for \"%s\" and any sub-permissions?"), $this->_perms->getTitle($permission->getName())), 'prompt', 'description', false);
     }
 
     /**
@@ -498,7 +490,7 @@ class Horde_Core_Perms_Ui
     {
         $form_submit = $this->_vars->get('submitbutton');
 
-        if ($form_submit == $this->_coreDict->t("Delete")) {
+        if ($form_submit == Horde_Core_Translation::t("Delete")) {
             if ($this->_form->validate($this->_vars)) {
                 $this->_form->getInfo($this->_vars, $info);
                 return true;
index 5a8fdd3..a242349 100644 (file)
 class Horde_Core_Prefs_Identity extends Horde_Prefs_Identity
 {
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_coreDict;
-
-    /**
-     * Constructor.
-     *
-     * @see Horde_Prefs_Identity::__construct()
-     */
-    public function __construct($params = array())
-    {
-        $this->_coreDict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../../../../locale');
-        parent::__construct($params);
-    }
-
-    /**
      * Sends a message to an email address supposed to be added to the
      * identity.
      * A message is send to this address containing a link to confirm that the
@@ -59,7 +41,7 @@ class Horde_Core_Prefs_Identity extends Horde_Prefs_Identity
 
         $new_addr = $this->getValue($this->_prefnames['from_addr'], $id);
         $confirm = Horde::getServiceLink('emailconfirm')->add('h', $hash)->setRaw(true);
-        $message = sprintf($this->_coreDict->t("You have requested to add the email address \"%s\" to the list of your personal email addresses.\n\nGo to the following link to confirm that this is really your address:\n%s\n\nIf you don't know what this message means, you can delete it."),
+        $message = sprintf(Horde_Core_Translation::t("You have requested to add the email address \"%s\" to the list of your personal email addresses.\n\nGo to the following link to confirm that this is really your address:\n%s\n\nIf you don't know what this message means, you can delete it."),
                            $new_addr,
                            $confirm);
 
@@ -69,7 +51,7 @@ class Horde_Core_Prefs_Identity extends Horde_Prefs_Identity
         $msg_headers->addHeader('Date', date('r'));
         $msg_headers->addHeader('To', $new_addr);
         $msg_headers->addHeader('From', $old_addr);
-        $msg_headers->addHeader('Subject', $this->_coreDict->t("Confirm new email address"));
+        $msg_headers->addHeader('Subject', Horde_Core_Translation::t("Confirm new email address"));
 
         $body = new Horde_Mime_Part();
         $body->setType('text/plain');
@@ -78,7 +60,7 @@ class Horde_Core_Prefs_Identity extends Horde_Prefs_Identity
 
         $body->send($new_addr, $msg_headers, $GLOBALS['injector']->getInstance('Horde_Mail'));
 
-        $GLOBALS['notification']->push(sprintf($this->_coreDict->t("A message has been sent to \"%s\" to verify that this is really your address. The new email address is activated as soon as you confirm this message."), $new_addr), 'horde.message');
+        $GLOBALS['notification']->push(sprintf(Horde_Core_Translation::t("A message has been sent to \"%s\" to verify that this is really your address. The new email address is activated as soon as you confirm this message."), $new_addr), 'horde.message');
     }
 
     /**
@@ -93,16 +75,16 @@ class Horde_Core_Prefs_Identity extends Horde_Prefs_Identity
 
         $confirm = $this->_prefs->getValue('confirm_email');
         if (empty($confirm)) {
-            $notification->push($this->_coreDict->t("There are no email addresses to confirm."), 'horde.message');
+            $notification->push(Horde_Core_Translation::t("There are no email addresses to confirm."), 'horde.message');
             return;
         }
 
         $confirm = @unserialize($confirm);
         if (empty($confirm)) {
-            $notification->push($this->_coreDict->t("There are no email addresses to confirm."), 'horde.message');
+            $notification->push(Horde_Core_Translation::t("There are no email addresses to confirm."), 'horde.message');
             return;
         } elseif (!isset($confirm[$hash])) {
-            $notifcation->push($this->_coreDict->t("Email addresses to confirm not found."), 'horde.message');
+            $notifcation->push(Horde_Core_Translation::t("Email addresses to confirm not found."), 'horde.message');
             return;
         }
 
@@ -127,7 +109,7 @@ class Horde_Core_Prefs_Identity extends Horde_Prefs_Identity
         unset($confirm[$hash]);
         $this->_prefs->setValue('confirm_email', serialize($confirm));
 
-        $notification->push(sprintf($this->_coreDict->t("The email address %s has been added to your identities. You can close this window now."), $verified[$this->_prefnames['from_addr']]), 'horde.success');
+        $notification->push(sprintf(Horde_Core_Translation::t("The email address %s has been added to your identities. You can close this window now."), $verified[$this->_prefnames['from_addr']]), 'horde.success');
     }
 
     /**
index 3c86432..a0b3a0b 100644 (file)
@@ -91,21 +91,12 @@ class Horde_Core_Prefs_Ui
     public $nobuttons = false;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_coreDict;
-
-    /**
      * Constructor.
      *
      * @param Horde_Variables $vars  Form variables.
      */
     public function __construct($vars)
     {
-        $this->_coreDict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../../../../locale');
-
         $this->app = isset($vars->app)
             ? $vars->app
             : $this->getDefaultApp();
@@ -256,7 +247,7 @@ class Horde_Core_Prefs_Ui
                 if (isset($enum[$this->vars->$pref])) {
                     $updated |= $save->setValue($pref, $this->vars->$pref);
                 } else {
-                    $notification->push($this->_coreDict->t("An illegal value was specified."), 'horde.error');
+                    $notification->push(Horde_Core_Translation::t("An illegal value was specified."), 'horde.error');
                 }
                 break;
 
@@ -272,7 +263,7 @@ class Horde_Core_Prefs_Ui
                         if (isset($enum[$val])) {
                             $set[] = $val;
                         } else {
-                            $notification->push($this->_coreDict->t("An illegal value was specified."), 'horde.error');
+                            $notification->push(Horde_Core_Translation::t("An illegal value was specified."), 'horde.error');
                             break 2;
                         }
                     }
@@ -284,9 +275,9 @@ class Horde_Core_Prefs_Ui
             case 'number':
                 $num = $this->vars->$pref;
                 if ((string)(double)$num !== $num) {
-                    $notification->push($this->_coreDict->t("This value must be a number."), 'horde.error');
+                    $notification->push(Horde_Core_Translation::t("This value must be a number."), 'horde.error');
                 } elseif (empty($num)) {
-                    $notification->push($this->_coreDict->t("This number must be non-zero."), 'horde.error');
+                    $notification->push(Horde_Core_Translation::t("This number must be non-zero."), 'horde.error');
                 } else {
                     $updated |= $save->setValue($pref, $num);
                 }
@@ -320,9 +311,9 @@ class Horde_Core_Prefs_Ui
             }
 
             if ($prefs instanceof Horde_Prefs_Session) {
-                $notification->push($this->_coreDict->t("Your preferences have been updated for the duration of this session."), 'horde.success');
+                $notification->push(Horde_Core_Translation::t("Your preferences have been updated for the duration of this session."), 'horde.success');
             } else {
-                $notification->push($this->_coreDict->t("Your preferences have been updated."), 'horde.success');
+                $notification->push(Horde_Core_Translation::t("Your preferences have been updated."), 'horde.success');
             }
 
             $this->_loadPrefs($this->app);
@@ -395,7 +386,7 @@ class Horde_Core_Prefs_Ui
         }
 
         if (empty($columns) && empty($pref_list)) {
-            $notification->push($this->_coreDict->t("There are no preferences available for this application."), 'horde.message');
+            $notification->push(Horde_Core_Translation::t("There are no preferences available for this application."), 'horde.message');
             $this->nobuttons = true;
         }
 
@@ -548,7 +539,7 @@ class Horde_Core_Prefs_Ui
 
         $content = Horde::endBuffer();
 
-        $title = $this->_coreDict->t("User Preferences");
+        $title = Horde_Core_Translation::t("User Preferences");
 
         /* Get the menu output before we start to output the page.
          * Again, this will catch any javascript inserted into the page. */
@@ -594,7 +585,7 @@ class Horde_Core_Prefs_Ui
             );
         }
         $t->set('apps', $tmp);
-        $t->set('header', htmlspecialchars(($this->app == 'horde') ? $this->_coreDict->t("Global Preferences") : sprintf($this->_coreDict->t("Preferences for %s"), $registry->get('name', $this->app))));
+        $t->set('header', htmlspecialchars(($this->app == 'horde') ? Horde_Core_Translation::t("Global Preferences") : sprintf(Horde_Core_Translation::t("Preferences for %s"), $registry->get('name', $this->app))));
 
         if ($GLOBALS['session']['horde:prefs_advanced']) {
             $t->set('advanced', $this->selfUrl()->add('show_advanced', 1));
@@ -754,8 +745,8 @@ class Horde_Core_Prefs_Ui
             $t->set('default_identity', intval($default_identity));
             $identities = array($default_identity);
         } else {
-            $t->set('defaultid', $this->_coreDict->t("Your default identity:"));
-            $t->set('label', Horde::label('identity', $this->_coreDict->t("Select the identity you want to change:")));
+            $t->set('defaultid', Horde_Core_Translation::t("Your default identity:"));
+            $t->set('label', Horde::label('identity', Horde_Core_Translation::t("Select the identity you want to change:")));
             $identities = $identity->getAll('id');
         }
 
@@ -822,7 +813,7 @@ class Horde_Core_Prefs_Ui
             $id = intval($this->vars->id);
             $deleted_identity = $identity->delete($id);
             $this->_loadPrefs($this->app);
-            $notification->push(sprintf($this->_coreDict->t("The identity \"%s\" has been deleted."), $deleted_identity[0]['id']), 'horde.success');
+            $notification->push(sprintf(Horde_Core_Translation::t("The identity \"%s\" has been deleted."), $deleted_identity[0]['id']), 'horde.success');
             return;
         }
 
@@ -836,7 +827,7 @@ class Horde_Core_Prefs_Ui
             if ($new_default != $old_default) {
                 $identity->setDefault($new_default);
                 $old_default = $new_default;
-                $notification->push($this->_coreDict->t("Your default identity has been changed."), 'horde.success');
+                $notification->push(Horde_Core_Translation::t("Your default identity has been changed."), 'horde.success');
 
                 /* Need to immediately save, since we may short-circuit
                  * saving the identities below. */
@@ -868,7 +859,7 @@ class Horde_Core_Prefs_Ui
             try {
                 $identity->verifyIdentity($id, empty($current_from) ? $new_from : $current_from);
             } catch (Horde_Exception $e) {
-                $notification->push($this->_coreDict->t("The new from address can't be verified, try again later: ") . $e->getMessage(), 'horde.error');
+                $notification->push(Horde_Core_Translation::t("The new from address can't be verified, try again later: ") . $e->getMessage(), 'horde.error');
                 Horde::logMessage($e, 'ERR');
             }
         } else {
index 9e79250..50b1892 100644 (file)
  */
 class Horde_Core_Prefs_Ui_Widgets
 {
-    /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    static protected $_coreDict;
-
-    /**
-     * Constructor.
-     */
-    static protected function _getDict()
-    {
-        if (empty(self::$_coreDict)) {
-            self::$_coreDict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../../../../../locale');
-        }
-
-        return self::$_coreDict;
-    }
-
     /* Source selection widget. */
 
     /**
index 65c8a63..5681bc7 100644 (file)
@@ -23,7 +23,6 @@ class Horde_Core_Sidebar
     {
         global $injector, $registry;
 
-        $dict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../../../locale');
         $isAdmin = $registry->isAdmin();
         $menu = $parents = array();
 
@@ -55,7 +54,7 @@ class Horde_Core_Sidebar
         // Add the administration menu if the user is an admin.
         if ($isAdmin) {
             $menu['administration'] = array(
-                'name' => $dict->t("Administration"),
+                'name' => Horde_Core_Translation::t("Administration"),
                 'icon' => Horde_Themes::img('administration.png'),
                 'status' => 'heading'
             );
@@ -77,7 +76,7 @@ class Horde_Core_Sidebar
             !($injector->getInstance('Horde_Core_Factory_Prefs')->create() instanceof Horde_Prefs_Session)) {
             $menu['prefs'] = array(
                 'icon' => Horde_Themes::img('prefs.png'),
-                'name' => $dict->t("Preferences"),
+                'name' => Horde_Core_Translation::t("Preferences"),
                 'status' => 'active'
             );
 
@@ -88,7 +87,7 @@ class Horde_Core_Sidebar
                 $menu['prefs_' . 'horde'] = array(
                     'icon' => $registry->get('icon', 'horde'),
                     'menu_parent' => 'prefs',
-                    'name' => $dict->t("Global Preferences"),
+                    'name' => Horde_Core_Translation::t("Global Preferences"),
                     'status' => 'active',
                     'url' => Horde::getServiceLink('prefs', 'horde')
                 );
@@ -110,14 +109,14 @@ class Horde_Core_Sidebar
         if ($registry->getAuth()) {
             $menu['logout'] = array(
                 'icon' => Horde_Themes::img('logout.png'),
-                'name' => $dict->t("Log out"),
+                'name' => Horde_Core_Translation::t("Log out"),
                 'status' => 'active',
                 'url' => Horde::getServiceLink('logout', 'horde')
             );
         } else {
             $menu['login'] = array(
                 'icon' => Horde_Themes::img('login.png'),
-                'name' => $dict->t("Log in"),
+                'name' => Horde_Core_Translation::t("Log in"),
                 'status' => 'active',
                 'url' => Horde::getServiceLink('login', 'horde')
             );
@@ -140,7 +139,7 @@ class Horde_Core_Sidebar
                 // Need to run the name through gettext since the user's
                 // locale may not have been loaded when registry.php was
                 // parsed.
-                $name = $dict->t($params['name']);
+                $name = Horde_Core_Translation::t($params['name']);
 
                 // Headings have no webroot; they're just containers for other
                 // menu items.
index 691dfb5..637582e 100644 (file)
  */
 class Horde_Core_Text_Filter_Highlightquotes extends Horde_Text_Filter_Highlightquotes
 {
-    /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_coreDict;
-
      /**
      * Constructor.
      *
@@ -46,8 +39,6 @@ class Horde_Core_Text_Filter_Highlightquotes extends Horde_Text_Filter_Highlight
 
         parent::__construct($params);
 
-        $this->_coreDict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../../../../../locale');
-
         if (!$this->_params['noJS'] && $this->_params['outputJS']) {
             Horde::addScriptFile('prototype.js', 'horde');
         }
@@ -70,9 +61,9 @@ class Horde_Core_Text_Filter_Highlightquotes extends Horde_Text_Filter_Highlight
         return (($this->_params['citeblock']) ? '<br />' : '') .
             '<div class="toggleQuoteParent">' .
             '<span ' . ($this->_params['outputJS'] ? 'onclick="[ this, this.next(), this.next(1) ].invoke(\'toggle\')" ' : '') .
-            'class="widget toggleQuoteShow"' . ($this->_params['hideBlocks'] ? '' : ' style="display:none"') . '>' . htmlspecialchars(sprintf($this->_coreDict->t("[Show Quoted Text - %d lines]"), $qcount)) . '</span>' .
+            'class="widget toggleQuoteShow"' . ($this->_params['hideBlocks'] ? '' : ' style="display:none"') . '>' . htmlspecialchars(sprintf(Horde_Core_Translation::t("[Show Quoted Text - %d lines]"), $qcount)) . '</span>' .
             '<span ' . ($this->_params['outputJS'] ? 'onclick="[ this, this.previous(), this.next() ].invoke(\'toggle\')" ' : "") .
-            'class="widget toggleQuoteHide"' . ($this->_params['hideBlocks'] ? ' style="display:none"' : '') . '>' . htmlspecialchars($this->_coreDict->t("[Hide Quoted Text]")) . '</span>';
+            'class="widget toggleQuoteHide"' . ($this->_params['hideBlocks'] ? ' style="display:none"' : '') . '>' . htmlspecialchars(Horde_Core_Translation::t("[Hide Quoted Text]")) . '</span>';
     }
 
     /**
diff --git a/framework/Core/lib/Horde/Core/Translation.php b/framework/Core/lib/Horde/Core/Translation.php
new file mode 100644 (file)
index 0000000..73f32b4
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Core
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Core_Translation is the translation wrapper class for Horde_Core.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Core
+ */
+class Horde_Core_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Core';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Core/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Core';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Core/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index fcf80db..70817ed 100644 (file)
@@ -23,13 +23,6 @@ class Horde_Core_Ui_JsCalendar
     static protected $_initRun = false;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    static protected $_coreDict;
-
-    /**
      * Output the necessary javascript code to allow display of the calendar
      * widget.
      *
@@ -56,8 +49,6 @@ class Horde_Core_Ui_JsCalendar
         }
         self::$_initRun = true;
 
-        self::$_coreDict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../../../../locale');
-
         $params = array_merge(array(
             'click_month' => false,
             'click_week' => false,
@@ -97,13 +88,13 @@ class Horde_Core_Ui_JsCalendar
     static public function weekdays()
     {
         return array(
-            self::$_coreDict->t("Su"),
-            self::$_coreDict->t("Mo"),
-            self::$_coreDict->t("Tu"),
-            self::$_coreDict->t("We"),
-            self::$_coreDict->t("Th"),
-            self::$_coreDict->t("Fr"),
-            self::$_coreDict->t("Sa")
+            Horde_Core_Translation::t("Su"),
+            Horde_Core_Translation::t("Mo"),
+            Horde_Core_Translation::t("Tu"),
+            Horde_Core_Translation::t("We"),
+            Horde_Core_Translation::t("Th"),
+            Horde_Core_Translation::t("Fr"),
+            Horde_Core_Translation::t("Sa")
         );
     }
 
@@ -115,13 +106,13 @@ class Horde_Core_Ui_JsCalendar
     static public function fullWeekdays()
     {
         return array(
-            self::$_coreDict->t("Sunday"),
-            self::$_coreDict->t("Monday"),
-            self::$_coreDict->t("Tuesday"),
-            self::$_coreDict->t("Wednesday"),
-            self::$_coreDict->t("Thursday"),
-            self::$_coreDict->t("Friday"),
-            self::$_coreDict->t("Saturday"),
+            Horde_Core_Translation::t("Sunday"),
+            Horde_Core_Translation::t("Monday"),
+            Horde_Core_Translation::t("Tuesday"),
+            Horde_Core_Translation::t("Wednesday"),
+            Horde_Core_Translation::t("Thursday"),
+            Horde_Core_Translation::t("Friday"),
+            Horde_Core_Translation::t("Saturday"),
         );
     }
 
@@ -133,18 +124,18 @@ class Horde_Core_Ui_JsCalendar
     static public function months()
     {
         return array(
-            self::$_coreDict->t("January"),
-            self::$_coreDict->t("February"),
-            self::$_coreDict->t("March"),
-            self::$_coreDict->t("April"),
-            self::$_coreDict->t("May"),
-            self::$_coreDict->t("June"),
-            self::$_coreDict->t("July"),
-            self::$_coreDict->t("August"),
-            self::$_coreDict->t("September"),
-            self::$_coreDict->t("October"),
-            self::$_coreDict->t("November"),
-            self::$_coreDict->t("December")
+            Horde_Core_Translation::t("January"),
+            Horde_Core_Translation::t("February"),
+            Horde_Core_Translation::t("March"),
+            Horde_Core_Translation::t("April"),
+            Horde_Core_Translation::t("May"),
+            Horde_Core_Translation::t("June"),
+            Horde_Core_Translation::t("July"),
+            Horde_Core_Translation::t("August"),
+            Horde_Core_Translation::t("September"),
+            Horde_Core_Translation::t("October"),
+            Horde_Core_Translation::t("November"),
+            Horde_Core_Translation::t("December")
         );
     }
 
index 433da33..c79a9a2 100644 (file)
 class Horde_Core_Ui_Pager extends Horde_Core_Ui_Widget
 {
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_coreDict;
-
-    /**
      * Constructor.
      *
      * TODO
@@ -37,8 +30,6 @@ class Horde_Core_Ui_Pager extends Horde_Core_Ui_Widget
 
         parent::__construct($name, $vars, $config);
 
-        $this->_coreDict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../../../../locale');
-
         // @todo Make sure 'url' argument is a Horde_Url object.
         if (!($this->_config['url'] instanceof Horde_Url)) {
             $this->_config['url'] = new Horde_Url($this->_config['url']);
@@ -83,7 +74,7 @@ class Horde_Core_Ui_Pager extends Horde_Core_Ui_Widget
 
             $prev_text = isset($this->_config['previousHTML'])
                 ? $this->_config['previousHTML']
-                : htmlspecialchars($this->_coreDict->t("<Previous"));
+                : htmlspecialchars(Horde_Core_Translation::t("<Previous"));
 
             $html .= Horde::link($link, '', 'prev') . $prev_text . '</a>';
         }
@@ -126,7 +117,7 @@ class Horde_Core_Ui_Pager extends Horde_Core_Ui_Widget
 
             $next_text = isset($this->_config['nextHTML'])
                 ? $this->_config['nextHTML']
-                : htmlspecialchars($this->_coreDict->t("Next>"));
+                : htmlspecialchars(Horde_Core_Translation::t("Next>"));
 
             $html .= ' ' . Horde::link($link, '', 'next') . $next_text . '</a>';
         }
index 724927a..3577b41 100644 (file)
@@ -16,25 +16,6 @@ class Horde_Core_Ui_VarRenderer_Html extends Horde_Core_Ui_VarRenderer
 {
     protected $_onLoadJS = array();
 
-    /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_coreDict;
-
-    /**
-     * Constructs a new renderer.
-     *
-     * @param array $params  The name of the variable which will track this UI
-     *                       widget's state.
-     */
-    public function __construct($params = array())
-    {
-        parent::__construct($params);
-        $this->_coreDict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../../../../../locale');
-    }
-
     protected function _renderVarInputDefault($form, &$var, &$vars)
     {
         return '<strong>Warning:</strong> Unknown variable type ' .
@@ -218,7 +199,7 @@ class Horde_Core_Ui_VarRenderer_Html extends Horde_Core_Ui_VarRenderer
             $html .= sprintf('<input class="button" name="%s" id="%s" type="submit" value="%s" /> ',
                              '_do_' . $varname,
                              '_do_' . $varname,
-                             $this->_coreDict->t("Upload"));
+                             Horde_Core_Translation::t("Upload"));
         }
 
         if (!empty($image['img'])) {
@@ -239,29 +220,29 @@ class Horde_Core_Ui_VarRenderer_Html extends Horde_Core_Ui_VarRenderer
             }
 
             /* Reset. */
-            $html .= Horde::link('#', $this->_coreDict->t("Reset"), '', '', 'showImage(\'' . $img . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/refresh.png', $this->_coreDict->t("Reset")) . '</a>';
+            $html .= Horde::link('#', Horde_Core_Translation::t("Reset"), '', '', 'showImage(\'' . $img . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/refresh.png', Horde_Core_Translation::t("Reset")) . '</a>';
 
             /* Rotate 270. */
-            $html .= Horde::link('#', $this->_coreDict->t("Rotate Left"), '', '', 'showImage(\'' . $img->copy()->add(array('a' => 'rotate', 'v' => '270')) . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/rotate-270.png', $this->_coreDict->t("Rotate Left")) . '</a>';
+            $html .= Horde::link('#', Horde_Core_Translation::t("Rotate Left"), '', '', 'showImage(\'' . $img->copy()->add(array('a' => 'rotate', 'v' => '270')) . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/rotate-270.png', Horde_Core_Translation::t("Rotate Left")) . '</a>';
 
             /* Rotate 180. */
-            $html .= Horde::link('#', $this->_coreDict->t("Rotate 180"), '', '', 'showImage(\'' . $img->copy()->add(array('a' => 'rotate', 'v' => '180')) . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/rotate-180.png', $this->_coreDict->t("Rotate 180")) . '</a>';
+            $html .= Horde::link('#', Horde_Core_Translation::t("Rotate 180"), '', '', 'showImage(\'' . $img->copy()->add(array('a' => 'rotate', 'v' => '180')) . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/rotate-180.png', Horde_Core_Translation::t("Rotate 180")) . '</a>';
 
             /* Rotate 90. */
-            $html .= Horde::link('#', $this->_coreDict->t("Rotate Right"), '', '', 'showImage(\'' . $img->copy()->add(array('a' => 'rotate', 'v' => '90')) . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/rotate-90.png', $this->_coreDict->t("Rotate Right")) . '</a>';
+            $html .= Horde::link('#', Horde_Core_Translation::t("Rotate Right"), '', '', 'showImage(\'' . $img->copy()->add(array('a' => 'rotate', 'v' => '90')) . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/rotate-90.png', Horde_Core_Translation::t("Rotate Right")) . '</a>';
 
             /* Flip image. */
-            $html .= Horde::link('#', $this->_coreDict->t("Flip"), '', '', 'showImage(\'' . $img->copy()->add('a', 'flip') . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/flip.png', $this->_coreDict->t("Flip")) . '</a>';
+            $html .= Horde::link('#', Horde_Core_Translation::t("Flip"), '', '', 'showImage(\'' . $img->copy()->add('a', 'flip') . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/flip.png', Horde_Core_Translation::t("Flip")) . '</a>';
 
             /* Mirror image. */
-            $html .= Horde::link('#', $this->_coreDict->t("Mirror"), '', '', 'showImage(\'' . $img->copy()->add('a', 'mirror') . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/mirror.png', $this->_coreDict->t("Mirror")) . '</a>';
+            $html .= Horde::link('#', Horde_Core_Translation::t("Mirror"), '', '', 'showImage(\'' . $img->copy()->add('a', 'mirror') . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/mirror.png', Horde_Core_Translation::t("Mirror")) . '</a>';
 
             /* Apply grayscale. */
-            $html .= Horde::link('#', $this->_coreDict->t("Grayscale"), '', '', 'showImage(\'' . $img->copy()->add('a', 'grayscale') . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/grayscale.png', $this->_coreDict->t("Grayscale")) . '</a>';
+            $html .= Horde::link('#', Horde_Core_Translation::t("Grayscale"), '', '', 'showImage(\'' . $img->copy()->add('a', 'grayscale') . '\', \'_p_' . $varname . '\', true);') . Horde::img('image/grayscale.png', Horde_Core_Translation::t("Grayscale")) . '</a>';
 
             /* Resize width. */
             $html .= sprintf('%s<input type="text" size="4" onchange="src=getResizeSrc(\'%s\', \'%s\');showImage(src, \'_p_%s\', true);" %s />',
-                   $this->_coreDict->t("w:"),
+                   Horde_Core_Translation::t("w:"),
                    $img->copy()->add('a', 'resize'),
                    $varname,
                    $varname,
@@ -269,14 +250,14 @@ class Horde_Core_Ui_VarRenderer_Html extends Horde_Core_Ui_VarRenderer
 
             /* Resize height. */
             $html .= sprintf('%s<input type="text" size="4" onchange="src=getResizeSrc(\'%s\', \'%s\');showImage(src, \'_p_%s\', true);" %s />',
-                   $this->_coreDict->t("h:"),
+                   Horde_Core_Translation::t("h:"),
                    $img->copy()->add('a', 'resize'),
                    $varname,
                    $varname,
                    $this->_genID('_h_' . $varname));
 
             /* Apply fixed ratio resize. */
-            $html .= Horde::link('#', $this->_coreDict->t("Fix ratio"), '', '', 'src=getResizeSrc(\'' . $img->copy()->add('a', 'resize') . '\', \'' . $varname . '\', \'1\');showImage(src, \'_p_' . $varname . '\', true);') . Horde::img('ratio.png', $this->_coreDict->t("Fix ratio")) . '</a>';
+            $html .= Horde::link('#', Horde_Core_Translation::t("Fix ratio"), '', '', 'src=getResizeSrc(\'' . $img->copy()->add('a', 'resize') . '\', \'' . $varname . '\', \'1\');showImage(src, \'_p_' . $varname . '\', true);') . Horde::img('ratio.png', Horde_Core_Translation::t("Fix ratio")) . '</a>';
 
             /* Keep also original if it has been requested. */
             if ($var->type->getProperty('show_keeporig')) {
@@ -284,7 +265,7 @@ class Horde_Core_Ui_VarRenderer_Html extends Horde_Core_Ui_VarRenderer
                                  $varname . '[keep_orig]',
                                  $varname . '[keep_orig]',
                                  !empty($image['keep_orig']) ? ' checked="checked"' : '',
-                                 $this->_coreDict->t("Keep original?"));
+                                 Horde_Core_Translation::t("Keep original?"));
             }
 
             /* The preview image element. */
@@ -336,7 +317,7 @@ class Horde_Core_Ui_VarRenderer_Html extends Horde_Core_Ui_VarRenderer
                     'Horde_Html_Helper.iconlist' => $icon_list
                 ));
 
-                $html .= Horde::link('#', $this->_coreDict->t("Emoticons"), '', '', 'Horde_Html_Helper.open(\'emoticons\', \'' . $var->getVarName() . '\'); return false;') . Horde::img('emoticons/smile.png', $this->_coreDict->t("Emoticons"), 'id="' . $imgId . '"') . '</a>';
+                $html .= Horde::link('#', Horde_Core_Translation::t("Emoticons"), '', '', 'Horde_Html_Helper.open(\'emoticons\', \'' . $var->getVarName() . '\'); return false;') . Horde::img('emoticons/smile.png', Horde_Core_Translation::t("Emoticons"), 'id="' . $imgId . '"') . '</a>';
             }
             $html .= '</td></tr><tr><td><div ' . $this->_genID('htmlhelper_' . $var->getVarName()) . ' class="control"></div></td></tr></table>' . "\n";
         }
@@ -416,7 +397,7 @@ class Horde_Core_Ui_VarRenderer_Html extends Horde_Core_Ui_VarRenderer
         $time = $var->type->getTimeParts($var->getValue($vars));
 
         /* Output hours. */
-        $hours = array('' => $this->_coreDict->t("hh"));
+        $hours = array('' => Horde_Core_Translation::t("hh"));
         for ($i = 0; $i <= 23; $i++) {
             $hours[$i] = $i;
         }
@@ -427,7 +408,7 @@ class Horde_Core_Ui_VarRenderer_Html extends Horde_Core_Ui_VarRenderer
                         $this->selectOptions($hours, ($time['hour'] === '') ? '' : $time['hour']));
 
         /* Output minutes. */
-        $minutes = array('' => $this->_coreDict->t("mm"));
+        $minutes = array('' => Horde_Core_Translation::t("mm"));
         for ($i = 0; $i <= 59; $i++) {
             $m = sprintf('%02d', $i);
             $minutes[$m] = $m;
@@ -444,7 +425,7 @@ class Horde_Core_Ui_VarRenderer_Html extends Horde_Core_Ui_VarRenderer
         }
 
         /* Output seconds. */
-        $seconds = array('' => $this->_coreDict->t("ss"));
+        $seconds = array('' => Horde_Core_Translation::t("ss"));
         for ($i = 0; $i <= 59; $i++) {
             $s = sprintf('%02d', $i);
             $seconds[$s] = $s;
@@ -459,20 +440,20 @@ class Horde_Core_Ui_VarRenderer_Html extends Horde_Core_Ui_VarRenderer
     protected function _renderVarInput_monthyear($form, &$var, &$vars)
     {
         $dates = array();
-        $dates['month'] = array('' => $this->_coreDict->t("MM"),
-                                1 => $this->_coreDict->t("January"),
-                                2 => $this->_coreDict->t("February"),
-                                3 => $this->_coreDict->t("March"),
-                                4 => $this->_coreDict->t("April"),
-                                5 => $this->_coreDict->t("May"),
-                                6 => $this->_coreDict->t("June"),
-                                7 => $this->_coreDict->t("July"),
-                                8 => $this->_coreDict->t("August"),
-                                9 => $this->_coreDict->t("September"),
-                                10 => $this->_coreDict->t("October"),
-                                11 => $this->_coreDict->t("November"),
-                                12 => $this->_coreDict->t("December"));
-        $dates['year'] = array('' => $this->_coreDict->t("YYYY"));
+        $dates['month'] = array('' => Horde_Core_Translation::t("MM"),
+                                1 => Horde_Core_Translation::t("January"),
+                                2 => Horde_Core_Translation::t("February"),
+                                3 => Horde_Core_Translation::t("March"),
+                                4 => Horde_Core_Translation::t("April"),
+                                5 => Horde_Core_Translation::t("May"),
+                                6 => Horde_Core_Translation::t("June"),
+                                7 => Horde_Core_Translation::t("July"),
+                                8 => Horde_Core_Translation::t("August"),
+                                9 => Horde_Core_Translation::t("September"),
+                                10 => Horde_Core_Translation::t("October"),
+                                11 => Horde_Core_Translation::t("November"),
+                                12 => Horde_Core_Translation::t("December"));
+        $dates['year'] = array('' => Horde_Core_Translation::t("YYYY"));
         if ($var->type->getProperty('start_year') > $var->type->getProperty('end_year')) {
             for ($i = $var->type->getProperty('start_year'); $i >= $var->type->getProperty('end_year'); $i--) {
                 $dates['year'][$i] = $i;
@@ -497,24 +478,24 @@ class Horde_Core_Ui_VarRenderer_Html extends Horde_Core_Ui_VarRenderer
     protected function _renderVarInput_monthdayyear($form, &$var, &$vars)
     {
         $dates = array();
-        $dates['month'] = array(''   => $this->_coreDict->t("MM"),
-                                '1'  => $this->_coreDict->t("January"),
-                                '2'  => $this->_coreDict->t("February"),
-                                '3'  => $this->_coreDict->t("March"),
-                                '4'  => $this->_coreDict->t("April"),
-                                '5'  => $this->_coreDict->t("May"),
-                                '6'  => $this->_coreDict->t("June"),
-                                '7'  => $this->_coreDict->t("July"),
-                                '8'  => $this->_coreDict->t("August"),
-                                '9'  => $this->_coreDict->t("September"),
-                                '10' => $this->_coreDict->t("October"),
-                                '11' => $this->_coreDict->t("November"),
-                                '12' => $this->_coreDict->t("December"));
-        $dates['day'] = array('' => $this->_coreDict->t("DD"));
+        $dates['month'] = array(''   => Horde_Core_Translation::t("MM"),
+                                '1'  => Horde_Core_Translation::t("January"),
+                                '2'  => Horde_Core_Translation::t("February"),
+                                '3'  => Horde_Core_Translation::t("March"),
+                                '4'  => Horde_Core_Translation::t("April"),
+                                '5'  => Horde_Core_Translation::t("May"),
+                                '6'  => Horde_Core_Translation::t("June"),
+                                '7'  => Horde_Core_Translation::t("July"),
+                                '8'  => Horde_Core_Translation::t("August"),
+                                '9'  => Horde_Core_Translation::t("September"),
+                                '10' => Horde_Core_Translation::t("October"),
+                                '11' => Horde_Core_Translation::t("November"),
+                                '12' => Horde_Core_Translation::t("December"));
+        $dates['day'] = array('' => Horde_Core_Translation::t("DD"));
         for ($i = 1; $i <= 31; $i++) {
             $dates['day'][$i] = $i;
         }
-        $dates['year'] = array('' => $this->_coreDict->t("YYYY"));
+        $dates['year'] = array('' => Horde_Core_Translation::t("YYYY"));
         if ($var->type->getProperty('start_year') > $var->type->getProperty('end_year')) {
             for ($i = $var->type->getProperty('start_year'); $i >= $var->type->getProperty('end_year'); $i--) {
                 $dates['year'][$i] = $i;
@@ -543,7 +524,7 @@ class Horde_Core_Ui_VarRenderer_Html extends Horde_Core_Ui_VarRenderer
             $GLOBALS['browser']->hasFeature('javascript')) {
             Horde_Core_Ui_JsCalendar::init();
             $imgId = $this->_genID($var->getVarName(), false) . 'goto';
-            $html .= Horde::link('#', $this->_coreDict->t("Select a date"), '', '', 'Horde_Calendar.open(\'' . $imgId . '\', null)') . Horde::img('calendar.png', $this->_coreDict->t("Calendar"), 'id="' . $imgId . '"') . "</a>\n";
+            $html .= Horde::link('#', Horde_Core_Translation::t("Select a date"), '', '', 'Horde_Calendar.open(\'' . $imgId . '\', null)') . Horde::img('calendar.png', Horde_Core_Translation::t("Calendar"), 'id="' . $imgId . '"') . "</a>\n";
         }
 
         return $html;
@@ -569,7 +550,7 @@ class Horde_Core_Ui_VarRenderer_Html extends Horde_Core_Ui_VarRenderer
         $value = @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset);
         $html = '<ul class="sound-list">';
         if (!$var->isRequired()) {
-            $html .= '<li><label><input type="radio" id="' . $varname . '" name="' . $varname . '" value=""' . (!$value ? ' checked="checked"' : '') . ' /> ' . $this->_coreDict->t("No Sound") . '</label></li>';
+            $html .= '<li><label><input type="radio" id="' . $varname . '" name="' . $varname . '" value=""' . (!$value ? ' checked="checked"' : '') . ' /> ' . Horde_Core_Translation::t("No Sound") . '</label></li>';
         }
         foreach ($var->type->getSounds() as $sound) {
             $sound = @htmlspecialchars($sound, ENT_QUOTES, $this->_charset);
@@ -599,9 +580,9 @@ class Horde_Core_Ui_VarRenderer_Html extends Horde_Core_Ui_VarRenderer
         if ($browser->hasFeature('javascript')) {
             Horde::addScriptFile('colorpicker.js', 'horde');
             $html .= '<td>'
-                . Horde::link('#', $this->_coreDict->t("Color Picker"), '', '',
+                . Horde::link('#', Horde_Core_Translation::t("Color Picker"), '', '',
                               'new ColorPicker({ color: \'' . htmlspecialchars($color) . '\', offsetParent: Event.element(event), update: [[\'' . $varname . '\', \'value\'], [\'' . $varname . '\', \'background\']] }); return false;')
-                . Horde::img('colorpicker.png', $this->_coreDict->t("Color Picker"), 'height="16"') . '</a></td>';
+                . Horde::img('colorpicker.png', Horde_Core_Translation::t("Color Picker"), 'height="16"') . '</a></td>';
         }
         return $html . '</tr></table>';
     }
@@ -622,8 +603,8 @@ class Horde_Core_Ui_VarRenderer_Html extends Horde_Core_Ui_VarRenderer
             '[list]" onchange="' . $instance . '.deselectHeader();" ' .
             $this->_genID($varname . '[list]') . '>' .
             $var->type->getOptions($var->getValue($vars)) . '</select><div class="leftFloat">' .
-            Horde::link('#', $this->_coreDict->t("Move up"), '', '', $instance . '.moveColumnUp(); return false;') . Horde::img('nav/up.png', $this->_coreDict->t("Move up")) . '</a><br />' .
-            Horde::link('#', $this->_coreDict->t("Move up"), '', '', $instance . '.moveColumnDown(); return false;') . Horde::img('nav/down.png', $this->_coreDict->t("Move down")) . '</a></div>' .
+            Horde::link('#', Horde_Core_Translation::t("Move up"), '', '', $instance . '.moveColumnUp(); return false;') . Horde::img('nav/up.png', Horde_Core_Translation::t("Move up")) . '</a><br />' .
+            Horde::link('#', Horde_Core_Translation::t("Move up"), '', '', $instance . '.moveColumnDown(); return false;') . Horde::img('nav/down.png', Horde_Core_Translation::t("Move down")) . '</a></div>' .
             '<script type="text/javascript">' . "\n" .
             sprintf('%1$s = new Horde_Form_Sorter(\'%1$s\', \'%2$s\', \'%3$s\');' . "\n",
                     $instance, $varname, $var->type->getHeader()) .
@@ -651,10 +632,10 @@ class Horde_Core_Ui_VarRenderer_Html extends Horde_Core_Ui_VarRenderer
             $var->type->getOptions(0, $form->getName(), $var->getVarName()) .
             '</select></td><td>' .
             '<a href="#" onclick="Horde_Form_Assign.move(\'' . $form->getName() . '\', \'' . $var->getVarName() . '\', 0); return false;">' .
-            Horde::img('rhand.png', $this->_coreDict->t("Add")) .
+            Horde::img('rhand.png', Horde_Core_Translation::t("Add")) .
             '</a><br /><a href="#" onclick="Horde_Form_Assign.move(\'' .
             $form->getName() . '\', \'' . $var->getVarName() . '\', 1); return false;">' .
-            Horde::img('lhand.png', $this->_coreDict->t("Remove")) .
+            Horde::img('lhand.png', Horde_Core_Translation::t("Remove")) .
             '</a></td><td>' .
             sprintf('<select name="%s__right" multiple="multiple" size="%d" style="width:%s"%s>',
                     $name, $size, $width,
@@ -748,7 +729,7 @@ class Horde_Core_Ui_VarRenderer_Html extends Horde_Core_Ui_VarRenderer
                        @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset),
                        $this->_getActionScripts($form, $var),
                        $this->_multiSelectOptions($values, $selected)) .
-            "<br />\n" . $this->_coreDict->t("To select multiple items, hold down the Control (PC) or Command (Mac) key while clicking.") . "\n";
+            "<br />\n" . Horde_Core_Translation::t("To select multiple items, hold down the Control (PC) or Command (Mac) key while clicking.") . "\n";
     }
 
     protected function _renderVarInput_keyval_multienum($form, &$var, &$vars)
@@ -775,9 +756,9 @@ class Horde_Core_Ui_VarRenderer_Html extends Horde_Core_Ui_VarRenderer
             $form_name = $form->getName();
             $var_name = $var->getVarName() . '[]';
             $function_name = 'select'  . $form_name . $var->getVarName();
-            $enable = $this->_coreDict->t("Select all");
-            $disable = $this->_coreDict->t("Select none");
-            $invert = $this->_coreDict->t("Invert selection");
+            $enable = Horde_Core_Translation::t("Select all");
+            $disable = Horde_Core_Translation::t("Select none");
+            $invert = Horde_Core_Translation::t("Invert selection");
             $html .= <<<EOT
 <script type="text/javascript">
 function $function_name()
@@ -847,7 +828,7 @@ EOT;
                 $html .= sprintf('<select %s name="%s[n][r]"><option value="">%s</option>%s</select><br />',
                        $this->_genID($varname . '[n][r]'),
                        $varname,
-                       $this->_coreDict->t("-- select --"),
+                       Horde_Core_Translation::t("-- select --"),
                        $this->selectOptions($new_input, $var_array['n']['r']));
             } elseif ($new_input == true) {
                 $html .= sprintf('<input %s type="text" name="%s[n][r]" value="%s" />',
@@ -969,7 +950,7 @@ EOT;
         }
 
         if ($GLOBALS['browser']->hasFeature('javascript')) {
-            $html .= Horde::link($GLOBALS['registry']->get('webroot', 'horde') . '/services/obrowser/', $this->_coreDict->t("Select an object"), '', '_blank', 'obrowserWindow = ' . Horde::popupJs($GLOBALS['registry']->get('webroot', 'horde') . '/services/obrowser/', array('urlencode' => true)) . 'obrowserWindowName = obrowserWindow.name; return false;') . Horde::img('tree/leaf.png', $this->_coreDict->t("Object")) . "</a>\n";
+            $html .= Horde::link($GLOBALS['registry']->get('webroot', 'horde') . '/services/obrowser/', Horde_Core_Translation::t("Select an object"), '', '_blank', 'obrowserWindow = ' . Horde::popupJs($GLOBALS['registry']->get('webroot', 'horde') . '/services/obrowser/', array('urlencode' => true)) . 'obrowserWindowName = obrowserWindow.name; return false;') . Horde::img('tree/leaf.png', Horde_Core_Translation::t("Object")) . "</a>\n";
         }
 
         return $html;
@@ -988,7 +969,7 @@ EOT;
                        $varname,
                        strlen($var->type->getText()),
                        @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset)) .
-            '<br />' . $this->_coreDict->t("Enter the letters below:") . '<br />' .
+            '<br />' . Horde_Core_Translation::t("Enter the letters below:") . '<br />' .
             $this->_renderVarDisplay_figlet($form, $var, $vars);
     }
 
@@ -1000,7 +981,7 @@ EOT;
                        $varname,
                        strlen($var->type->getText()),
                        @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset)) .
-            '<br />' . $this->_coreDict->t("Enter the letters below:") . '<br />' .
+            '<br />' . Horde_Core_Translation::t("Enter the letters below:") . '<br />' .
             $this->_renderVarDisplay_captcha($form, $var, $vars);
     }
 
@@ -1093,7 +1074,7 @@ EOT;
 
     protected function _renderVarDisplay_boolean($form, &$var, &$vars)
     {
-        return $var->getValue($vars) ? $this->_coreDict->t("Yes") : $this->_coreDict->t("No");
+        return $var->getValue($vars) ? Horde_Core_Translation::t("Yes") : Horde_Core_Translation::t("No");
     }
 
     protected function _renderVarDisplay_enum($form, &$var, &$vars)
@@ -1101,7 +1082,7 @@ EOT;
         $values = $var->getValues();
         $value = $var->getValue($vars);
         if (count($values) == 0) {
-            return $this->_coreDict->t("No values");
+            return Horde_Core_Translation::t("No values");
         } elseif (isset($values[$value]) && $value != '') {
             return @htmlspecialchars($values[$value], ENT_QUOTES, $this->_charset);
         }
@@ -1111,7 +1092,7 @@ EOT;
     {
         $values = $var->getValues();
         if (count($values) == 0) {
-            return $this->_coreDict->t("No values");
+            return Horde_Core_Translation::t("No values");
         } elseif (isset($values[$var->getValue($vars)])) {
             return @htmlspecialchars($values[$var->getValue($vars)], ENT_QUOTES, $this->_charset);
         }
@@ -1122,7 +1103,7 @@ EOT;
         $values = $var->getValues();
         $on = $var->getValue($vars);
         if (!count($values) || !count($on)) {
-            return $this->_coreDict->t("No values");
+            return Horde_Core_Translation::t("No values");
         } else {
             $display = array();
             foreach ($values as $value => $name) {
@@ -1139,7 +1120,7 @@ EOT;
         $values = $var->getValues();
         $on = $var->getValue($vars);
         if (!count($values) || !count($on)) {
-            return $this->_coreDict->t("No values");
+            return Horde_Core_Translation::t("No values");
         } else {
             $display = array();
             foreach ($values as $value => $name) {
@@ -1188,7 +1169,7 @@ EOT;
 
         if ($number && $registry->hasMethod('telephony/dial')) {
             $url = $registry->call('telephony/dial', array($number));
-            $label = sprintf($this->_coreDict->t("Dial %s"), $number);
+            $label = sprintf(Horde_Core_Translation::t("Dial %s"), $number);
             $html .= ' ' . Horde::link($url, $label) . Horde::img('phone.png', $label) . '</a>';
         }
 
@@ -1204,7 +1185,7 @@ EOT;
         $number = $var->getValue($vars);
         if ($number && $registry->hasMethod('sms/compose')) {
             $url = $registry->link('sms/compose', array('to' => $number));
-            $html .= ' ' . Horde::link($url, $this->_coreDict->t("Send SMS")) . Horde::img('mobile.png', $this->_coreDict->t("Send SMS")) . '</a>';
+            $html .= ' ' . Horde::link($url, Horde_Core_Translation::t("Send SMS")) . Horde::img('mobile.png', Horde_Core_Translation::t("Send SMS")) . '</a>';
         }
 
         return $html;
@@ -1228,14 +1209,14 @@ EOT;
                 /* Multimap.co.uk generated map */
                 $mapurl = 'http://www.multimap.com/map/browse.cgi?pc='
                     . urlencode($info['zip']);
-                $desc = $this->_coreDict->t("Multimap UK map");
+                $desc = Horde_Core_Translation::t("Multimap UK map");
                 $icon = 'map.png';
                 break;
 
             case 'au':
                 /* Whereis.com.au generated map */
                 $mapurl = 'http://www.whereis.com.au/whereis/mapping/geocodeAddress.do?';
-                $desc = $this->_coreDict->t("Whereis Australia map");
+                $desc = Horde_Core_Translation::t("Whereis Australia map");
                 $icon = 'map.png';
                 /* See if it's the street number & name. */
                 if (isset($info['streetNumber']) &&
@@ -1259,7 +1240,7 @@ EOT;
                 /* American/Canadian address style. */
                 /* Mapquest generated map */
                 $mapurl = 'http://www.mapquest.com/maps/map.adp?size=big&zoom=7';
-                $desc = $this->_coreDict->t("MapQuest map");
+                $desc = Horde_Core_Translation::t("MapQuest map");
                 $icon = 'map.png';
                 if (!empty($info['street'])) {
                     $mapurl .= '&address=' . urlencode($info['street']);
@@ -1279,7 +1260,7 @@ EOT;
 
                 /* Yahoo! generated map. */
                 $mapurl2 = 'http://us.rd.yahoo.com/maps/home/submit_a/*-http://maps.yahoo.com/maps?srchtype=a&getmap=Get+Map&';
-                $desc2 = $this->_coreDict->t("Yahoo! map");
+                $desc2 = Horde_Core_Translation::t("Yahoo! map");
                 $icon2 = 'map.png';
                 if (!empty($info['street'])) {
                     $mapurl2 .= '&addr=' . urlencode($info['street']);
@@ -1308,7 +1289,7 @@ EOT;
                 $google_icon = 'map_eu.png';
                 /* Mapquest generated map. */
                 $mapurl2 = 'http://www.mapquest.com/maps/map.adp?country=' . Horde_String::upper($info['country']);
-                $desc2 = $this->_coreDict->t("MapQuest map");
+                $desc2 = Horde_Core_Translation::t("MapQuest map");
                 $icon2 = 'map_eu.png';
                 if (!empty($info['street'])) {
                     $mapurl2 .= '&address=' . urlencode($info['street']);
@@ -1333,7 +1314,7 @@ EOT;
 
         /* Google generated map. */
         if ($address) {
-            $html .= '&nbsp;' . Horde::link(Horde::externalUrl('http://maps.google.com/maps?q=' . urlencode(preg_replace('/\r?\n/', ',', $address)) . '&hl=en'), $this->_coreDict->t("Google Maps"), null, '_blank') . Horde::img($google_icon, $this->_coreDict->t("Google Maps")) . '</a>';
+            $html .= '&nbsp;' . Horde::link(Horde::externalUrl('http://maps.google.com/maps?q=' . urlencode(preg_replace('/\r?\n/', ',', $address)) . '&hl=en'), Horde_Core_Translation::t("Google Maps"), null, '_blank') . Horde::img($google_icon, Horde_Core_Translation::t("Google Maps")) . '</a>';
         }
 
         return $html;
@@ -1527,7 +1508,7 @@ EOT;
                     if ($GLOBALS['registry']->hasMethod('files/getViewLink')) {
                         $filename = basename($filename);
                         $url = $GLOBALS['registry']->call('files/getViewLink', array($dir, $filename));
-                        $filename = Horde::link($url, $this->_coreDict->t("Preview"), null, 'form_file_view') . @htmlspecialchars(Horde_Util::realPath($dir . '/' . $filename), ENT_QUOTES, $this->_charset) . '</a>';
+                        $filename = Horde::link($url, Horde_Core_Translation::t("Preview"), null, 'form_file_view') . @htmlspecialchars(Horde_Util::realPath($dir . '/' . $filename), ENT_QUOTES, $this->_charset) . '</a>';
                     } else {
                         if (!empty($dir) && ($dir != '.')) {
                             $filename = $dir . '/' . $filename;
index 1f2160e..9afd1c9 100644 (file)
@@ -213,10 +213,9 @@ class Horde_Help
             return '';
         }
 
-        $dict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../../locale');
         $url = Horde::getServiceLink('help', $module)->add('topic', $topic);
-        return $url->link(array('title' => $dict->t("Help"), 'class' => 'helplink', 'target' => 'hordehelpwin', 'onclick' => Horde::popupJs($url, array('urlencode' => true)) . 'return false;'))
-            . Horde::img('help.png', $dict->t("Help")) . '</a>';
+        return $url->link(array('title' => Horde_Core_Translation::t("Help"), 'class' => 'helplink', 'target' => 'hordehelpwin', 'onclick' => Horde::popupJs($url, array('urlencode' => true)) . 'return false;'))
+            . Horde::img('help.png', Horde_Core_Translation::t("Help")) . '</a>';
     }
 
 
index b2fe55d..e2de2ed 100644 (file)
@@ -41,13 +41,6 @@ class Horde_Menu
     protected $_mask;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_coreDict;
-
-    /**
      * Constructor
      */
     public function __construct($mask = self::MASK_ALL)
@@ -57,8 +50,6 @@ class Horde_Menu
 
         /* Location of the menufile. */
         $this->_menufile = $GLOBALS['registry']->get('fileroot') . '/config/menu.php';
-
-        $this->_coreDict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../../locale');
     }
 
     /**
@@ -179,14 +170,14 @@ class Horde_Menu
         if (($this->_mask & self::MASK_PREFS) &&
             $this->showService('prefs') &&
             ($url = Horde::getServiceLink('prefs', $app))) {
-            $this->add($url, $this->_coreDict->t("_Preferences"), 'prefs.png');
+            $this->add($url, Horde_Core_Translation::t("_Preferences"), 'prefs.png');
         }
 
         /* Add problem link. */
         if (($this->_mask & self::MASK_PROBLEM) &&
             $this->showService('problem') &&
             ($problem_link = Horde::getServiceLink('problem', $app))) {
-            $this->add($problem_link, $this->_coreDict->t("Problem"), 'problem.png');
+            $this->add($problem_link, Horde_Core_Translation::t("Problem"), 'problem.png');
         }
 
         /* Add help link. */
@@ -194,7 +185,7 @@ class Horde_Menu
             $this->showService('help') &&
             ($help_link = Horde::getServiceLink('help', $app))) {
             Horde::
-            $this->add($help_link, $this->_coreDict->t("Help"), 'help_index.png', null, 'help', Horde::popupJs($help_link, array('urlencode' => true)) . 'return false;', 'helplink');
+            $this->add($help_link, Horde_Core_Translation::t("Help"), 'help_index.png', null, 'help', Horde::popupJs($help_link, array('urlencode' => true)) . 'return false;', 'helplink');
         }
 
         /* Login/Logout. */
@@ -210,12 +201,12 @@ class Horde_Menu
             if ($registry->getAuth()) {
                 if ((!$prefs->getValue('show_sidebar') || $this->showService('logout')) &&
                     ($logout_link = Horde::getServiceLink('logout', $app))) {
-                    $this->add($logout_link, $this->_coreDict->t("_Log out"), 'logout.png', null, $auth_target, null, '__noselection');
+                    $this->add($logout_link, Horde_Core_Translation::t("_Log out"), 'logout.png', null, $auth_target, null, '__noselection');
                 }
             } else {
                 if ($this->showService('login') &&
                     ($login_link = Horde::getServiceLink('login', $app))) {
-                    $this->add($login_link->add('url', Horde::selfUrl(true, true, true)), $this->_coreDict->t("_Log in"), 'login.png', null, $auth_target, null, '__noselection');
+                    $this->add($login_link->add('url', Horde::selfUrl(true, true, true)), Horde_Core_Translation::t("_Log in"), 'login.png', null, $auth_target, null, '__noselection');
                 }
             }
         }
index 9da47e4..fc5d349 100644 (file)
@@ -64,13 +64,6 @@ class Horde_Registry
     protected $_apis = array();
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_coreDict;
-
-    /**
      * Hash storing information on each registry-aware application.
      *
      * @var array
@@ -395,14 +388,13 @@ class Horde_Registry
 
         /* Initialize the localization routines and variables. */
         $this->setLanguageEnvironment(null, 'horde');
-        $this->_coreDict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../../locale');
 
         $this->_regmtime = max(filemtime(HORDE_BASE . '/config/registry.php'),
                                filemtime(HORDE_BASE . '/config/registry.d'));
 
         /* Stop system if Horde is inactive. */
         if ($this->applications['horde']['status'] == 'inactive') {
-            throw new Horde_Exception($this->_coreDict->t("This system is currently deactivated."));
+            throw new Horde_Exception(Horde_Core_Translation::t("This system is currently deactivated."));
         }
 
         /* Initialize notification object. Always attach status listener by
@@ -1049,7 +1041,7 @@ class Horde_Registry
         }
 
         if (!isset($this->applications[$app])) {
-            throw new Horde_Exception(sprintf($this->_coreDict->t("\"%s\" is not configured in the Horde Registry."), $app));
+            throw new Horde_Exception(sprintf(Horde_Core_Translation::t("\"%s\" is not configured in the Horde Registry."), $app));
         }
 
         return str_replace('%application%', $this->applications[$app]['fileroot'], $path);
@@ -1147,7 +1139,7 @@ class Horde_Registry
                 }
 
                 Horde::logMessage(sprintf('%s does not have READ permission for %s', $this->getAuth() ? 'User ' . $this->getAuth() : 'Guest user', $app), 'DEBUG');
-                throw new Horde_Exception(sprintf($this->_coreDict->t('%s is not authorized for %s.'), $this->getAuth() ? 'User ' . $this->getAuth() : 'Guest user', $this->applications[$app]['name']), self::PERMISSION_DENIED);
+                throw new Horde_Exception(sprintf(Horde_Core_Translation::t('%s is not authorized for %s.'), $this->getAuth() ? 'User ' . $this->getAuth() : 'Guest user', $this->applications[$app]['name']), self::PERMISSION_DENIED);
             }
         }
 
@@ -1382,7 +1374,7 @@ class Horde_Registry
         }
 
         return ($parameter == 'name')
-            ? $this->_coreDict->t($pval)
+            ? Horde_Core_Translation::t($pval)
             : $pval;
     }
 
@@ -1501,7 +1493,7 @@ class Horde_Registry
             return $this->applications[$app]['webroot'] . '/' . (isset($this->applications[$app]['initial_page']) ? $this->applications[$app]['initial_page'] : '');
         }
 
-        throw new Horde_Exception(sprintf($this->_coreDict->t("\"%s\" is not configured in the Horde Registry."), $app));
+        throw new Horde_Exception(sprintf(Horde_Core_Translation::t("\"%s\" is not configured in the Horde Registry."), $app));
     }
 
     /**
@@ -1715,7 +1707,7 @@ class Horde_Registry
     {
         if (Horde_Cli::runningFromCLI()) {
             $cli = new Horde_Cli();
-            $cli->fatal($this->_coreDict->t("You are not authenticated."));
+            $cli->fatal(Horde_Core_Translation::t("You are not authenticated."));
         }
 
         if (is_null($e)) {
index 58a20c3..9684fd8 100644 (file)
@@ -30,21 +30,6 @@ class Horde_Script_Files
     protected $_included = array();
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_coreDict;
-
-    /**
-     * Constructor.
-     */
-    public function __construct()
-    {
-        $this->_coreDict = new Horde_Translation_Gettext('Horde_Core', dirname(__FILE__) . '/../../../locale');
-    }
-
-    /**
      * Adds the javascript code to the output (if output has already started)
      * or to the list of script files to include.
      *
@@ -125,7 +110,7 @@ class Horde_Script_Files
         // Add localized string for popup.js
         if (($file == 'popup.js') && ($app == 'horde')) {
             Horde::addInlineJsVars(array(
-                'Horde.popup_block_text' => $this->_coreDict->t("A popup window could not be opened. Your browser may be blocking popups.")
+                'Horde.popup_block_text' => Horde_Core_Translation::t("A popup window could not be opened. Your browser may be blocking popups.")
             ), 'dom');
         }
 
index 61a5a22..d6ec677 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.9.0" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Core</name>
  <channel>pear.horde.org</channel>
  <summary>Horde Core Framework libraries</summary>
@@ -23,8 +23,8 @@ Application Framework.</description>
   <email>slusarz@horde.org</email>
   <active>yes</active>
  </developer>
- <date>2010-10-04</date>
- <time>14:21:49</time>
+ <date>2010-10-22</date>
+ <time>19:03:05</time>
  <version>
   <release>0.1.0</release>
   <api>0.1.0</api>
@@ -34,26 +34,27 @@ Application Framework.</description>
   <api>beta</api>
  </stability>
  <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
- <notes> * Add Horde_Session.
- * Add Horde::addInlineJsVars().
- * Remove Horde::nocacheUrl() and Horde::url() (Ticket #9160).
- * Absorb horde/Ui package.
- * Absorb horde/Ajax package.
- * Import application auth driver from horde/Auth.
- * Import signup code from horde/Auth.
- * Import Horde backend driver from horde/LoginTasks.
- * Import perms UI handling class from horde/Perms.
- * Import prefs UI handling class from horde/Prefs.
- * Convert from PEAR Log to Horde_Log for logging.
- * Add Horde_Themes:: class.
- * Add Horde::nocacheUrl().
- * Remove dependency on Horde_DOM package.
- * Added Horde_Registry_Api:: and Horde_Registry_Application:: classes.
- * Moved Horde_Exception to Exception package.
- * Renamed Menu:: as Horde_Menu::.
- * Renamed Help:: as Horde_Help::.
- * Removed Text::/Horde_Text::.
- * Converted Horde to Horde 4 coding conventions.
+ <notes>
+* Add Horde_Session.
+* Add Horde::addInlineJsVars().
+* Remove Horde::nocacheUrl() and Horde::url() (Ticket #9160).
+* Absorb horde/Ui package.
+* Absorb horde/Ajax package.
+* Import application auth driver from horde/Auth.
+* Import signup code from horde/Auth.
+* Import Horde backend driver from horde/LoginTasks.
+* Import perms UI handling class from horde/Perms.
+* Import prefs UI handling class from horde/Prefs.
+* Convert from PEAR Log to Horde_Log for logging.
+* Add Horde_Themes:: class.
+* Add Horde::nocacheUrl().
+* Remove dependency on Horde_DOM package.
+* Added Horde_Registry_Api:: and Horde_Registry_Application:: classes.
+* Moved Horde_Exception to Exception package.
+* Renamed Menu:: as Horde_Menu::.
+* Renamed Help:: as Horde_Help::.
+* Removed Text::/Horde_Text::.
+* Converted Horde to Horde 4 coding conventions.
  </notes>
  <contents>
   <dir baseinstalldir="/" name="/">
@@ -118,6 +119,7 @@ Application Framework.</description>
        <file name="Ajax.php" role="php" />
        <file name="Alarm.php" role="php" />
        <file name="Auth.php" role="php" />
+       <file name="AuthSignup.php" role="php" />
        <file name="Browser.php" role="php" />
        <file name="Cache.php" role="php" />
        <file name="Crypt.php" role="php" />
@@ -186,7 +188,7 @@ Application Framework.</description>
       <dir name="Prefs">
        <dir name="Storage">
         <file name="Session.php" role="php" />
-       </dir> <!-- /lib/Horde/Core/Prefs/Cache -->
+       </dir> <!-- /lib/Horde/Core/Prefs/Storage -->
        <dir name="Ui">
         <file name="Widgets.php" role="php" />
        </dir> <!-- /lib/Horde/Core/Prefs/Ui -->
@@ -224,6 +226,9 @@ Application Framework.</description>
       <file name="Browser.php" role="php" />
       <file name="Prefs.php" role="php" />
       <file name="Sidebar.php" role="php" />
+      <file name="Translation.php" role="php">
+       <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+      </file>
      </dir> <!-- /lib/Horde/Core -->
      <dir name="Exception">
       <file name="HookNotSet.php" role="php" />
@@ -251,6 +256,254 @@ Application Framework.</description>
     </dir> <!-- /lib/Horde -->
     <file name="Horde.php" role="php" />
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.mo" role="data" />
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Core.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Core.pot" role="data" />
+   </dir> <!-- /locale -->
    <dir name="test">
     <dir name="Horde">
      <dir name="Core">
@@ -261,6 +514,10 @@ Application Framework.</description>
       <file name="AllTests.php" role="test" />
       <file name="Autoload.php" role="test" />
       <file name="phpunit.xml" role="test" />
+      <file name="url.diff" role="test" />
+      <file name="url.exp" role="test" />
+      <file name="url.log" role="test" />
+      <file name="url.out" role="test" />
       <file name="url.phpt" role="test" />
      </dir> <!-- /test/Horde/Core -->
     </dir> <!-- /test/Horde -->
@@ -316,6 +573,10 @@ Application Framework.</description>
     <channel>pear.horde.org</channel>
    </package>
    <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
+   <package>
     <name>Url</name>
     <channel>pear.horde.org</channel>
    </package>
@@ -412,6 +673,7 @@ Application Framework.</description>
    <install as="Horde/Core/Browser.php" name="lib/Horde/Core/Browser.php" />
    <install as="Horde/Core/Prefs.php" name="lib/Horde/Core/Prefs.php" />
    <install as="Horde/Core/Sidebar.php" name="lib/Horde/Core/Sidebar.php" />
+   <install as="Horde/Core/Translation.php" name="lib/Horde/Core/Translation.php" />
    <install as="Horde/Core/Ajax/Application.php" name="lib/Horde/Core/Ajax/Application.php" />
    <install as="Horde/Core/Ajax/Imple.php" name="lib/Horde/Core/Ajax/Imple.php" />
    <install as="Horde/Core/Ajax/Imple/AutoCompleter.php" name="lib/Horde/Core/Ajax/Imple/AutoCompleter.php" />
@@ -435,6 +697,7 @@ Application Framework.</description>
    <install as="Horde/Core/Factory/Ajax.php" name="lib/Horde/Core/Factory/Ajax.php" />
    <install as="Horde/Core/Factory/Alarm.php" name="lib/Horde/Core/Factory/Alarm.php" />
    <install as="Horde/Core/Factory/Auth.php" name="lib/Horde/Core/Factory/Auth.php" />
+   <install as="Horde/Core/Factory/AuthSignup.php" name="lib/Horde/Core/Factory/AuthSignup.php" />
    <install as="Horde/Core/Factory/Browser.php" name="lib/Horde/Core/Factory/Browser.php" />
    <install as="Horde/Core/Factory/Cache.php" name="lib/Horde/Core/Factory/Cache.php" />
    <install as="Horde/Core/Factory/Crypt.php" name="lib/Horde/Core/Factory/Crypt.php" />
@@ -446,8 +709,8 @@ Application Framework.</description>
    <install as="Horde/Core/Factory/Editor.php" name="lib/Horde/Core/Factory/Editor.php" />
    <install as="Horde/Core/Factory/Facebook.php" name="lib/Horde/Core/Factory/Facebook.php" />
    <install as="Horde/Core/Factory/Group.php" name="lib/Horde/Core/Factory/Group.php" />
-   <install as="Horde/Core/Factory/HttpClient.php" name="lib/Horde/Core/Factory/HttpClient.php" />
    <install as="Horde/Core/Factory/History.php" name="lib/Horde/Core/Factory/History.php" />
+   <install as="Horde/Core/Factory/HttpClient.php" name="lib/Horde/Core/Factory/HttpClient.php" />
    <install as="Horde/Core/Factory/Identity.php" name="lib/Horde/Core/Factory/Identity.php" />
    <install as="Horde/Core/Factory/Imple.php" name="lib/Horde/Core/Factory/Imple.php" />
    <install as="Horde/Core/Factory/KolabServer.php" name="lib/Horde/Core/Factory/KolabServer.php" />
@@ -479,13 +742,13 @@ Application Framework.</description>
    <install as="Horde/Core/LoginTasks/Backend/Horde.php" name="lib/Horde/Core/LoginTasks/Backend/Horde.php" />
    <install as="Horde/Core/Mime/Viewer/Syntaxhighlighter.php" name="lib/Horde/Core/Mime/Viewer/Syntaxhighlighter.php" />
    <install as="Horde/Core/Mime/Viewer/Vcard.php" name="lib/Horde/Core/Mime/Viewer/Vcard.php" />
-   <install as="Horde/Core/Notification/Storage/Session.php" name="lib/Horde/Core/Notification/Storage/Session.php" />
    <install as="Horde/Core/Notification/Hordelog.php" name="lib/Horde/Core/Notification/Hordelog.php" />
    <install as="Horde/Core/Notification/Status.php" name="lib/Horde/Core/Notification/Status.php" />
+   <install as="Horde/Core/Notification/Storage/Session.php" name="lib/Horde/Core/Notification/Storage/Session.php" />
    <install as="Horde/Core/Perms/Ui.php" name="lib/Horde/Core/Perms/Ui.php" />
    <install as="Horde/Core/Prefs/Identity.php" name="lib/Horde/Core/Prefs/Identity.php" />
-   <install as="Horde/Core/Prefs/Storage/Session.php" name="lib/Horde/Core/Prefs/Storage/Session.php" />
    <install as="Horde/Core/Prefs/Ui.php" name="lib/Horde/Core/Prefs/Ui.php" />
+   <install as="Horde/Core/Prefs/Storage/Session.php" name="lib/Horde/Core/Prefs/Storage/Session.php" />
    <install as="Horde/Core/Prefs/Ui/Widgets.php" name="lib/Horde/Core/Prefs/Ui/Widgets.php" />
    <install as="Horde/Core/Text/Filter/Bbcode.php" name="lib/Horde/Core/Text/Filter/Bbcode.php" />
    <install as="Horde/Core/Text/Filter/Emails.php" name="lib/Horde/Core/Text/Filter/Emails.php" />
@@ -513,9 +776,87 @@ Application Framework.</description>
    <install as="Horde/Themes/Element.php" name="lib/Horde/Themes/Element.php" />
    <install as="Horde/Themes/Image.php" name="lib/Horde/Themes/Image.php" />
    <install as="Horde/Themes/Sound.php" name="lib/Horde/Themes/Sound.php" />
+   <install as="locale/Horde_Core.pot" name="locale/Horde_Core.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Core.po" name="locale/ar/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Core.po" name="locale/bg/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Core.po" name="locale/bs/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Core.po" name="locale/ca/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Core.mo" name="locale/cs/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Core.po" name="locale/cs/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Core.mo" name="locale/da/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Core.po" name="locale/da/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Core.mo" name="locale/de/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Core.po" name="locale/de/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Core.mo" name="locale/el/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Core.po" name="locale/el/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Core.mo" name="locale/en/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Core.po" name="locale/en/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Core.mo" name="locale/es/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Core.po" name="locale/es/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Core.mo" name="locale/et/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Core.po" name="locale/et/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Core.po" name="locale/eu/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Core.po" name="locale/fa/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Core.mo" name="locale/fi/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Core.po" name="locale/fi/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Core.mo" name="locale/fr/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Core.po" name="locale/fr/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Core.po" name="locale/gl/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Core.mo" name="locale/he/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Core.po" name="locale/he/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Core.mo" name="locale/hr/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Core.po" name="locale/hr/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Core.mo" name="locale/hu/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Core.po" name="locale/hu/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Core.po" name="locale/id/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Core.po" name="locale/is/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Core.mo" name="locale/it/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Core.po" name="locale/it/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Core.mo" name="locale/ja/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Core.po" name="locale/ja/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Core.po" name="locale/km/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Core.mo" name="locale/ko/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Core.po" name="locale/ko/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Core.mo" name="locale/lt/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Core.po" name="locale/lt/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Core.mo" name="locale/lv/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Core.po" name="locale/lv/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Core.po" name="locale/mk/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Core.mo" name="locale/nb/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Core.po" name="locale/nb/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Core.mo" name="locale/nl/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Core.po" name="locale/nl/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Core.mo" name="locale/nn/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Core.po" name="locale/nn/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Core.mo" name="locale/pl/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Core.po" name="locale/pl/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Core.mo" name="locale/pt/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Core.po" name="locale/pt/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Core.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Core.po" name="locale/pt_BR/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Core.mo" name="locale/ro/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Core.po" name="locale/ro/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Core.mo" name="locale/ru/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Core.po" name="locale/ru/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Core.mo" name="locale/sk/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Core.po" name="locale/sk/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Core.mo" name="locale/sl/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Core.po" name="locale/sl/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Core.mo" name="locale/sv/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Core.po" name="locale/sv/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Core.mo" name="locale/tr/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Core.po" name="locale/tr/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Core.mo" name="locale/uk/LC_MESSAGES/Horde_Core.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Core.po" name="locale/uk/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Core.po" name="locale/zh_CN/LC_MESSAGES/Horde_Core.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Core.po" name="locale/zh_TW/LC_MESSAGES/Horde_Core.po" />
    <install as="Horde/Core/AllTests.php" name="test/Horde/Core/AllTests.php" />
    <install as="Horde/Core/Autoload.php" name="test/Horde/Core/Autoload.php" />
    <install as="Horde/Core/phpunit.xml" name="test/Horde/Core/phpunit.xml" />
+   <install as="Horde/Core/url.diff" name="test/Horde/Core/url.diff" />
+   <install as="Horde/Core/url.exp" name="test/Horde/Core/url.exp" />
+   <install as="Horde/Core/url.log" name="test/Horde/Core/url.log" />
+   <install as="Horde/Core/url.out" name="test/Horde/Core/url.out" />
    <install as="Horde/Core/url.phpt" name="test/Horde/Core/url.phpt" />
    <install as="Horde/Core/Factory/KolabServerTest.php" name="test/Horde/Core/Factory/KolabServerTest.php" />
    <install as="Horde/Core/Factory/KolabSessionTest.php" name="test/Horde/Core/Factory/KolabSessionTest.php" />
@@ -562,28 +903,29 @@ Initial packaging
     <release>beta</release>
     <api>beta</api>
    </stability>
-   <date>2010-10-04</date>
+   <date>2010-10-22</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
    <notes>
+* Add Horde_Session.
 * Add Horde::addInlineJsVars().
- * Remove Horde::nocacheUrl() and Horde::url() (Ticket #9160).
- * Absorb horde/Ui package.
- * Absorb horde/Ajax package.
- * Import application auth driver from horde/Auth.
- * Import signup code from horde/Auth.
- * Import Horde backend driver from horde/LoginTasks.
- * Import perms UI handling class from horde/Perms.
- * Import prefs UI handling class from horde/Prefs.
- * Convert from PEAR Log to Horde_Log for logging.
- * Add Horde_Themes:: class.
- * Add Horde::nocacheUrl().
- * Remove dependency on Horde_DOM package.
- * Added Horde_Registry_Api:: and Horde_Registry_Application:: classes.
- * Moved Horde_Exception to Exception package.
- * Renamed Menu:: as Horde_Menu::.
- * Renamed Help:: as Horde_Help::.
- * Removed Text::/Horde_Text::.
- * Converted Horde to Horde 4 coding conventions.
+* Remove Horde::nocacheUrl() and Horde::url() (Ticket #9160).
+* Absorb horde/Ui package.
+* Absorb horde/Ajax package.
+* Import application auth driver from horde/Auth.
+* Import signup code from horde/Auth.
+* Import Horde backend driver from horde/LoginTasks.
+* Import perms UI handling class from horde/Perms.
+* Import prefs UI handling class from horde/Prefs.
+* Convert from PEAR Log to Horde_Log for logging.
+* Add Horde_Themes:: class.
+* Add Horde::nocacheUrl().
+* Remove dependency on Horde_DOM package.
+* Added Horde_Registry_Api:: and Horde_Registry_Application:: classes.
+* Moved Horde_Exception to Exception package.
+* Renamed Menu:: as Horde_Menu::.
+* Renamed Help:: as Horde_Help::.
+* Removed Text::/Horde_Text::.
+* Converted Horde to Horde 4 coding conventions.
    </notes>
   </release>
  </changelog>
index bd7f742..eff6710 100644 (file)
@@ -30,13 +30,6 @@ class Horde_Crypt
     protected $_tempdir;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Attempts to return a concrete Horde_Crypt instance based on $driver.
      *
      * @param string $driver  Either a driver name, or the full class name to
@@ -77,19 +70,11 @@ class Horde_Crypt
      *                                          charset. DEFAULT: NONE
      *                       - 'temp': (string) [REQUIRED] Location of
      *                                          temporary directory.
-     *                       - 'translation': (object) A translation handler
-     *                                        implementing Horde_Translation.
      *
      * @throws InvalidArgumentException
      */
     public function __construct(array $params = array())
     {
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Crypt', dirname(__FILE__) . '/../../locale');
-        }
-
         if (empty($params['temp'])) {
             throw new InvalidArgumentException('A temporary directory must be provided.');
         }
index c2b29c3..0be4a18 100644 (file)
@@ -222,9 +222,9 @@ class Horde_Crypt_Pgp extends Horde_Crypt
 
         /* If either key is empty, something went wrong. */
         if (empty($public_key) || empty($secret_key)) {
-            $msg = $this->_dict->t("Public/Private keypair not generated successfully.");
+            $msg = Horde_Crypt_Translation::t("Public/Private keypair not generated successfully.");
             if (!empty($result->stderr)) {
-                $msg .= ' ' . $this->_dict->t("Returned error message:") . ' ' . $result->stderr;
+                $msg .= ' ' . Horde_Crypt_Translation::t("Returned error message:") . ' ' . $result->stderr;
             }
             throw new Horde_Crypt_Exception($msg);
         }
@@ -421,10 +421,10 @@ class Horde_Crypt_Pgp extends Horde_Crypt
         if (!empty($packet_info['signature'])) {
             /* Making the property names the same width for all
              * localizations .*/
-            $leftrow = array($this->_dict->t("Name"), $this->_dict->t("Key Type"), $this->_dict->t("Key Creation"),
-                             $this->_dict->t("Expiration Date"), $this->_dict->t("Key Length"),
-                             $this->_dict->t("Comment"), $this->_dict->t("E-Mail"), $this->_dict->t("Hash-Algorithm"),
-                             $this->_dict->t("Key ID"), $this->_dict->t("Key Fingerprint"));
+            $leftrow = array(Horde_Crypt_Translation::t("Name"), Horde_Crypt_Translation::t("Key Type"), Horde_Crypt_Translation::t("Key Creation"),
+                             Horde_Crypt_Translation::t("Expiration Date"), Horde_Crypt_Translation::t("Key Length"),
+                             Horde_Crypt_Translation::t("Comment"), Horde_Crypt_Translation::t("E-Mail"), Horde_Crypt_Translation::t("Hash-Algorithm"),
+                             Horde_Crypt_Translation::t("Key ID"), Horde_Crypt_Translation::t("Key Fingerprint"));
             $leftwidth = array_map('strlen', $leftrow);
             $maxwidth  = max($leftwidth) + 2;
             array_walk($leftrow, array($this, '_pgpPrettyKeyFormatter'), $maxwidth);
@@ -444,15 +444,15 @@ class Horde_Crypt_Pgp extends Horde_Crypt
                 $fingerprint = isset($fingerprints[$key_info['keyid']]) ? $fingerprints[$key_info['keyid']] : null;
 
                 $msg .= $leftrow[0] . (isset($key_info['name']) ? stripcslashes($key_info['name']) : '') . "\n"
-                    . $leftrow[1] . (($key_info['key_type'] == 'public_key') ? $this->_dict->t("Public Key") : $this->_dict->t("Private Key")) . "\n"
+                    . $leftrow[1] . (($key_info['key_type'] == 'public_key') ? Horde_Crypt_Translation::t("Public Key") : Horde_Crypt_Translation::t("Private Key")) . "\n"
                     . $leftrow[2] . strftime("%D", $key_info['key_created']) . "\n"
-                    . $leftrow[3] . (empty($key_info['key_expires']) ? '[' . $this->_dict->t("Never") . ']' : strftime("%D", $key_info['key_expires'])) . "\n"
+                    . $leftrow[3] . (empty($key_info['key_expires']) ? '[' . Horde_Crypt_Translation::t("Never") . ']' : strftime("%D", $key_info['key_expires'])) . "\n"
                     . $leftrow[4] . $key_info['key_size'] . " Bytes\n"
-                    . $leftrow[5] . (empty($key_info['comment']) ? '[' . $this->_dict->t("None") . ']' : $key_info['comment']) . "\n"
-                    . $leftrow[6] . (empty($key_info['email']) ? '[' . $this->_dict->t("None") . ']' : $key_info['email']) . "\n"
-                    . $leftrow[7] . (empty($key_info['micalg']) ? '[' . $this->_dict->t("Unknown") . ']' : $key_info['micalg']) . "\n"
-                    . $leftrow[8] . (empty($key_info['keyid']) ? '[' . $this->_dict->t("Unknown") . ']' : $key_info['keyid']) . "\n"
-                    . $leftrow[9] . (empty($fingerprint) ? '[' . $this->_dict->t("Unknown") . ']' : $fingerprint) . "\n\n";
+                    . $leftrow[5] . (empty($key_info['comment']) ? '[' . Horde_Crypt_Translation::t("None") . ']' : $key_info['comment']) . "\n"
+                    . $leftrow[6] . (empty($key_info['email']) ? '[' . Horde_Crypt_Translation::t("None") . ']' : $key_info['email']) . "\n"
+                    . $leftrow[7] . (empty($key_info['micalg']) ? '[' . Horde_Crypt_Translation::t("Unknown") . ']' : $key_info['micalg']) . "\n"
+                    . $leftrow[8] . (empty($key_info['keyid']) ? '[' . Horde_Crypt_Translation::t("Unknown") . ']' : $key_info['keyid']) . "\n"
+                    . $leftrow[9] . (empty($fingerprint) ? '[' . Horde_Crypt_Translation::t("Unknown") . ']' : $fingerprint) . "\n\n";
             }
         }
 
@@ -656,7 +656,7 @@ class Horde_Crypt_Pgp extends Horde_Crypt
         /* Get e-mail address of public key. */
         $key_info = $this->pgpPacketInformation($public_key);
         if (!isset($key_info['signature']['id1']['email'])) {
-            throw new Horde_Crypt_Exception($this->_dict->t("Could not determine the recipient's e-mail address."));
+            throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("Could not determine the recipient's e-mail address."));
         }
 
         /* Encrypt a test message. */
@@ -756,7 +756,7 @@ class Horde_Crypt_Pgp extends Horde_Crypt
             return substr($start, 0, $length);
         }
 
-        throw new Horde_Crypt_Exception($this->_dict->t("Could not obtain public key from the keyserver."));
+        throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("Could not obtain public key from the keyserver."));
     }
 
     /**
@@ -779,7 +779,7 @@ class Horde_Crypt_Pgp extends Horde_Crypt
         try {
             $this->getPublicKeyserver($info['keyid'], $server, $timeout);
         } catch (Horde_Crypt_Exception $e) {
-            throw new Horde_Crypt_Exception($this->_dict->t("Key already exists on the public keyserver."));
+            throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("Key already exists on the public keyserver."));
         }
 
         /* Connect to the public keyserver. _connectKeyserver() */
@@ -845,7 +845,7 @@ class Horde_Crypt_Pgp extends Horde_Crypt
             }
         }
 
-        throw new Horde_Crypt_Exception($this->_dict->t("Could not obtain public key from the keyserver."));
+        throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("Could not obtain public key from the keyserver."));
     }
 
     /**
@@ -936,7 +936,7 @@ class Horde_Crypt_Pgp extends Horde_Crypt
         } while (++$connRefuse < self::KEYSERVER_REFUSE);
 
         if ($errno == 0) {
-            throw new Horde_Crypt_Exception($this->_dict->t("Connection refused to the public keyserver."));
+            throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("Connection refused to the public keyserver."));
         } else {
             $charset = 'UTF-8';
             $lang_charset = setlocale(LC_ALL, 0);
@@ -947,7 +947,7 @@ class Horde_Crypt_Pgp extends Horde_Crypt
                     $charset = $lang_charset[1];
                 }
             }
-            throw new Horde_Crypt_Exception(sprintf($this->_dict->t("Connection refused to the public keyserver. Reason: %s (%s)"), Horde_String::convertCharset($errstr, $charset, 'UTF-8'), $errno));
+            throw new Horde_Crypt_Exception(sprintf(Horde_Crypt_Translation::t("Connection refused to the public keyserver. Reason: %s (%s)"), Horde_String::convertCharset($errstr, $charset, 'UTF-8'), $errno));
         }
     }
 
@@ -1129,7 +1129,7 @@ class Horde_Crypt_Pgp extends Horde_Crypt
         $result = $this->_callGpg($cmdline, 'w', empty($params['symmetric']) ? null : $params['passphrase'], true, true);
         if (empty($result->output)) {
             $error = preg_replace('/\n.*/', '', $result->stderr);
-            throw new Horde_Crypt_Exception($this->_dict->t("Could not PGP encrypt message: ") . $error);
+            throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("Could not PGP encrypt message: ") . $error);
         }
 
         return $result->output;
@@ -1161,7 +1161,7 @@ class Horde_Crypt_Pgp extends Horde_Crypt
         if (!isset($params['pubkey']) ||
             !isset($params['privkey']) ||
             !isset($params['passphrase'])) {
-            throw new Horde_Crypt_Exception($this->_dict->t("A public PGP key, private PGP key, and passphrase are required to sign a message."));
+            throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("A public PGP key, private PGP key, and passphrase are required to sign a message."));
         }
 
         /* Create temp files for input. */
@@ -1198,7 +1198,7 @@ class Horde_Crypt_Pgp extends Horde_Crypt
         $result = $this->_callGpg($cmdline, 'w', $params['passphrase'], true, true);
         if (empty($result->output)) {
             $error = preg_replace('/\n.*/', '', $result->stderr);
-            throw new Horde_Crypt_Exception($this->_dict->t("Could not PGP sign message: ") . $error);
+            throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("Could not PGP sign message: ") . $error);
         }
 
         return $result->output;
@@ -1237,7 +1237,7 @@ class Horde_Crypt_Pgp extends Horde_Crypt
 
         /* Check for required parameters. */
         if (!isset($params['passphrase']) && empty($params['no_passphrase'])) {
-            throw new Horde_Crypt_Exception($this->_dict->t("A passphrase is required to decrypt a message."));
+            throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("A passphrase is required to decrypt a message."));
         }
 
         /* Create temp files. */
@@ -1273,7 +1273,7 @@ class Horde_Crypt_Pgp extends Horde_Crypt
         }
         if (empty($result->output)) {
             $error = preg_replace('/\n.*/', '', $result->stderr);
-            throw new Horde_Crypt_Exception($this->_dict->t("Could not decrypt PGP data: ") . $error);
+            throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("Could not decrypt PGP data: ") . $error);
         }
 
         /* Create the return object. */
@@ -1304,11 +1304,11 @@ class Horde_Crypt_Pgp extends Horde_Crypt
     {
         /* Check for required parameters. */
         if (!isset($params['pubkey'])) {
-            throw new Horde_Crypt_Exception($this->_dict->t("A public PGP key is required to verify a signed message."));
+            throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("A public PGP key is required to verify a signed message."));
         }
         if (($params['type'] === 'detached-signature') &&
             !isset($params['signature'])) {
-            throw new Horde_Crypt_Exception($this->_dict->t("The detached PGP signature block is required to verify the signed message."));
+            throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("The detached PGP signature block is required to verify the signed message."));
         }
 
         $good_sig_flag = 0;
@@ -1403,7 +1403,7 @@ class Horde_Crypt_Pgp extends Horde_Crypt
         $pgp_sign->setType('application/pgp-signature');
         $pgp_sign->setCharset($this->_params['email_charset']);
         $pgp_sign->setDisposition('inline');
-        $pgp_sign->setDescription(Horde_String::convertCharset($this->_dict->t("PGP Digital Signature"), 'UTF-8', $this->_params['email_charset']));
+        $pgp_sign->setDescription(Horde_String::convertCharset(Horde_Crypt_Translation::t("PGP Digital Signature"), 'UTF-8', $this->_params['email_charset']));
         $pgp_sign->setContents($msg_sign, array('encoding' => '7bit'));
 
         /* Get the algorithim information from the signature. Since we are
@@ -1447,7 +1447,7 @@ class Horde_Crypt_Pgp extends Horde_Crypt
         $part->setType('multipart/encrypted');
         $part->setCharset($this->_params['email_charset']);
         $part->setContentTypeParameter('protocol', 'application/pgp-encrypted');
-        $part->setDescription(Horde_String::convertCharset($this->_dict->t("PGP Encrypted Data"), 'UTF-8', $this->_params['email_charset']));
+        $part->setDescription(Horde_String::convertCharset(Horde_Crypt_Translation::t("PGP Encrypted Data"), 'UTF-8', $this->_params['email_charset']));
         $part->setContents("This message is in MIME format and has been PGP encrypted.\n");
 
         $part1 = new Horde_Mime_Part();
@@ -1490,7 +1490,7 @@ class Horde_Crypt_Pgp extends Horde_Crypt
         $part->setContents("This message is in MIME format and has been PGP signed and encrypted.\n");
 
         $part->setCharset($this->_params['email_charset']);
-        $part->setDescription(Horde_String::convertCharset($this->_dict->t("PGP Signed/Encrypted Data"), 'UTF-8', $this->_params['email_charset']));
+        $part->setDescription(Horde_String::convertCharset(Horde_Crypt_Translation::t("PGP Signed/Encrypted Data"), 'UTF-8', $this->_params['email_charset']));
 
         return $part;
     }
@@ -1508,7 +1508,7 @@ class Horde_Crypt_Pgp extends Horde_Crypt
         $part = new Horde_Mime_Part();
         $part->setType('application/pgp-keys');
         $part->setCharset($this->_params['email_charset']);
-        $part->setDescription(Horde_String::convertCharset($this->_dict->t("PGP Public Key"), 'UTF-8', $this->_params['email_charset']));
+        $part->setDescription(Horde_String::convertCharset(Horde_Crypt_Translation::t("PGP Public Key"), 'UTF-8', $this->_params['email_charset']));
         $part->setContents($key, array('encoding' => '7bit'));
 
         return $part;
@@ -1581,7 +1581,7 @@ class Horde_Crypt_Pgp extends Horde_Crypt
                     }
                 }
             } else {
-                throw new Horde_Crypt_Exception($this->_dict->t("Error while talking to pgp binary."));
+                throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("Error while talking to pgp binary."));
             }
         } elseif ($mode == 'r') {
             if ($fp = popen($cmdline, 'r')) {
@@ -1589,7 +1589,7 @@ class Horde_Crypt_Pgp extends Horde_Crypt
                     $data->stdout .= fgets($fp, 1024);
                 }
             } else {
-                throw new Horde_Crypt_Exception($this->_dict->t("Error while talking to pgp binary."));
+                throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("Error while talking to pgp binary."));
             }
         }
         pclose($fp);
@@ -1641,7 +1641,7 @@ class Horde_Crypt_Pgp extends Horde_Crypt
 
         /* If the key is empty, something went wrong. */
         if (empty($results->output)) {
-            throw new Horde_Crypt_Exception($this->_dict->t("Revocation key not generated successfully."));
+            throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("Revocation key not generated successfully."));
         }
 
         return $results->output;
index d5234f0..caf5acc 100644 (file)
@@ -186,11 +186,11 @@ class Horde_Crypt_Smime extends Horde_Crypt
         $result = openssl_pkcs7_verify($input, PKCS7_NOVERIFY, $output);
 
         if ($result === true) {
-            throw new Horde_Crypt_Exception($this->_dict->t("Message Verified Successfully but the signer's certificate could not be verified."));
+            throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("Message Verified Successfully but the signer's certificate could not be verified."));
         } elseif ($result == -1) {
-            throw new Horde_Crypt_Exception($this->_dict->t("Verification failed - an unknown error has occurred."));
+            throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("Verification failed - an unknown error has occurred."));
         } else {
-            throw new Horde_Crypt_Exception($this->_dict->t("Verification failed - this message may have been tampered with."));
+            throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("Verification failed - this message may have been tampered with."));
         }
 
         $ob->cert = file_get_contents($output);
@@ -228,7 +228,7 @@ class Horde_Crypt_Smime extends Horde_Crypt
             return $ret;
         }
 
-        throw new Horde_Crypt_Exception($this->_dict->t("OpenSSL error: Could not extract data from signed S/MIME part."));
+        throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("OpenSSL error: Could not extract data from signed S/MIME part."));
     }
 
     /**
@@ -249,7 +249,7 @@ class Horde_Crypt_Smime extends Horde_Crypt
         $mime_message = Horde_Mime_Part::parseMessage($message, array('forcemime' => true));
 
         $smime_sign = $mime_message->getPart('2');
-        $smime_sign->setDescription($this->_dict->t("S/MIME Cryptographic Signature"));
+        $smime_sign->setDescription(Horde_Crypt_Translation::t("S/MIME Cryptographic Signature"));
         $smime_sign->setTransferEncoding('base64', array('send' => true));
 
         $smime_part = new Horde_Mime_Part();
@@ -280,7 +280,7 @@ class Horde_Crypt_Smime extends Horde_Crypt
 
         $msg = new Horde_Mime_Part();
         $msg->setCharset($this->_params['email_charset']);
-        $msg->setDescription(Horde_String::convertCharset($this->_dict->t("S/MIME Encrypted Message"), 'UTF-8', $this->_params['email_charset']));
+        $msg->setDescription(Horde_String::convertCharset(Horde_Crypt_Translation::t("S/MIME Encrypted Message"), 'UTF-8', $this->_params['email_charset']));
         $msg->setDisposition('inline');
         $msg->setType('application/pkcs7-mime');
         $msg->setContentTypeParameter('smime-type', 'enveloped-data');
@@ -308,7 +308,7 @@ class Horde_Crypt_Smime extends Horde_Crypt
     {
         /* Check for required parameters. */
         if (!isset($params['pubkey'])) {
-            throw new Horde_Crypt_Exception($this->_dict->t("A public S/MIME key is required to encrypt a message."));
+            throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("A public S/MIME key is required to encrypt a message."));
         }
 
         /* Create temp files for input/output. */
@@ -327,7 +327,7 @@ class Horde_Crypt_Smime extends Horde_Crypt
             }
         }
 
-        throw new Horde_Crypt_Exception($this->_dict->t("Could not S/MIME encrypt message."));
+        throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("Could not S/MIME encrypt message."));
     }
 
     /**
@@ -357,7 +357,7 @@ class Horde_Crypt_Smime extends Horde_Crypt
         if (!isset($params['pubkey']) ||
             !isset($params['privkey']) ||
             !array_key_exists('passphrase', $params)) {
-            throw new Horde_Crypt_Exception($this->_dict->t("A public S/MIME key, private S/MIME key, and passphrase are required to sign a message."));
+            throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("A public S/MIME key, private S/MIME key, and passphrase are required to sign a message."));
         }
 
         /* Create temp files for input/output/certificates. */
@@ -388,7 +388,7 @@ class Horde_Crypt_Smime extends Horde_Crypt
         }
 
         if (!$res) {
-            throw new Horde_Crypt_Exception($this->_dict->t("Could not S/MIME sign message."));
+            throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("Could not S/MIME sign message."));
         }
 
         $data = file_get_contents($output);
@@ -419,7 +419,7 @@ class Horde_Crypt_Smime extends Horde_Crypt
         if (!isset($params['pubkey']) ||
             !isset($params['privkey']) ||
             !array_key_exists('passphrase', $params)) {
-            throw new Horde_Crypt_Exception($this->_dict->t("A public S/MIME key, private S/MIME key, and passphrase are required to decrypt a message."));
+            throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("A public S/MIME key, private S/MIME key, and passphrase are required to decrypt a message."));
         }
 
         /* Create temp files for input/output. */
@@ -437,7 +437,7 @@ class Horde_Crypt_Smime extends Horde_Crypt
             return file_get_contents($output);
         }
 
-        throw new Horde_Crypt_Exception($this->_dict->t("Could not decrypt S/MIME data."));
+        throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("Could not decrypt S/MIME data."));
     }
 
     /**
@@ -471,45 +471,45 @@ class Horde_Crypt_Smime extends Horde_Crypt
     {
         /* Common Fields */
         $fieldnames = array(
-            'Email' => $this->_dict->t("Email Address"),
-            'CommonName' => $this->_dict->t("Common Name"),
-            'Organisation' => $this->_dict->t("Organisation"),
-            'OrganisationalUnit' => $this->_dict->t("Organisational Unit"),
-            'Country' => $this->_dict->t("Country"),
-            'StateOrProvince' => $this->_dict->t("State or Province"),
-            'Location' => $this->_dict->t("Location"),
-            'StreetAddress' => $this->_dict->t("Street Address"),
-            'TelephoneNumber' => $this->_dict->t("Telephone Number"),
-            'Surname' => $this->_dict->t("Surname"),
-            'GivenName' => $this->_dict->t("Given Name")
+            'Email' => Horde_Crypt_Translation::t("Email Address"),
+            'CommonName' => Horde_Crypt_Translation::t("Common Name"),
+            'Organisation' => Horde_Crypt_Translation::t("Organisation"),
+            'OrganisationalUnit' => Horde_Crypt_Translation::t("Organisational Unit"),
+            'Country' => Horde_Crypt_Translation::t("Country"),
+            'StateOrProvince' => Horde_Crypt_Translation::t("State or Province"),
+            'Location' => Horde_Crypt_Translation::t("Location"),
+            'StreetAddress' => Horde_Crypt_Translation::t("Street Address"),
+            'TelephoneNumber' => Horde_Crypt_Translation::t("Telephone Number"),
+            'Surname' => Horde_Crypt_Translation::t("Surname"),
+            'GivenName' => Horde_Crypt_Translation::t("Given Name")
         );
 
         /* Netscape Extensions */
         $fieldnames += array(
-            'netscape-cert-type' => $this->_dict->t("Netscape certificate type"),
-            'netscape-base-url' => $this->_dict->t("Netscape Base URL"),
-            'netscape-revocation-url' => $this->_dict->t("Netscape Revocation URL"),
-            'netscape-ca-revocation-url' => $this->_dict->t("Netscape CA Revocation URL"),
-            'netscape-cert-renewal-url' => $this->_dict->t("Netscape Renewal URL"),
-            'netscape-ca-policy-url' => $this->_dict->t("Netscape CA policy URL"),
-            'netscape-ssl-server-name' => $this->_dict->t("Netscape SSL server name"),
-            'netscape-comment' => $this->_dict->t("Netscape certificate comment")
+            'netscape-cert-type' => Horde_Crypt_Translation::t("Netscape certificate type"),
+            'netscape-base-url' => Horde_Crypt_Translation::t("Netscape Base URL"),
+            'netscape-revocation-url' => Horde_Crypt_Translation::t("Netscape Revocation URL"),
+            'netscape-ca-revocation-url' => Horde_Crypt_Translation::t("Netscape CA Revocation URL"),
+            'netscape-cert-renewal-url' => Horde_Crypt_Translation::t("Netscape Renewal URL"),
+            'netscape-ca-policy-url' => Horde_Crypt_Translation::t("Netscape CA policy URL"),
+            'netscape-ssl-server-name' => Horde_Crypt_Translation::t("Netscape SSL server name"),
+            'netscape-comment' => Horde_Crypt_Translation::t("Netscape certificate comment")
         );
 
         /* X590v3 Extensions */
         $fieldnames += array(
-            'id-ce-extKeyUsage' => $this->_dict->t("X509v3 Extended Key Usage"),
-            'id-ce-basicConstraints' => $this->_dict->t("X509v3 Basic Constraints"),
-            'id-ce-subjectAltName' => $this->_dict->t("X509v3 Subject Alternative Name"),
-            'id-ce-subjectKeyIdentifier' => $this->_dict->t("X509v3 Subject Key Identifier"),
-            'id-ce-certificatePolicies' => $this->_dict->t("Certificate Policies"),
-            'id-ce-CRLDistributionPoints' => $this->_dict->t("CRL Distribution Points"),
-            'id-ce-keyUsage' => $this->_dict->t("Key Usage")
+            'id-ce-extKeyUsage' => Horde_Crypt_Translation::t("X509v3 Extended Key Usage"),
+            'id-ce-basicConstraints' => Horde_Crypt_Translation::t("X509v3 Basic Constraints"),
+            'id-ce-subjectAltName' => Horde_Crypt_Translation::t("X509v3 Subject Alternative Name"),
+            'id-ce-subjectKeyIdentifier' => Horde_Crypt_Translation::t("X509v3 Subject Key Identifier"),
+            'id-ce-certificatePolicies' => Horde_Crypt_Translation::t("Certificate Policies"),
+            'id-ce-CRLDistributionPoints' => Horde_Crypt_Translation::t("CRL Distribution Points"),
+            'id-ce-keyUsage' => Horde_Crypt_Translation::t("Key Usage")
         );
 
         $cert_details = $this->parseCert($cert);
         if (!is_array($cert_details)) {
-            return '<pre class="fixed">' . $this->_dict->t("Unable to extract certificate details") . '</pre>';
+            return '<pre class="fixed">' . Horde_Crypt_Translation::t("Unable to extract certificate details") . '</pre>';
         }
         $certificate = $cert_details['certificate'];
 
@@ -517,7 +517,7 @@ class Horde_Crypt_Smime extends Horde_Crypt
 
         /* Subject (a/k/a Certificate Owner) */
         if (isset($certificate['subject'])) {
-            $text .= "<strong>" . $this->_dict->t("Certificate Owner") . ":</strong>\n";
+            $text .= "<strong>" . Horde_Crypt_Translation::t("Certificate Owner") . ":</strong>\n";
 
             foreach ($certificate['subject'] as $key => $value) {
                 if (isset($fieldnames[$key])) {
@@ -531,7 +531,7 @@ class Horde_Crypt_Smime extends Horde_Crypt
 
         /* Issuer */
         if (isset($certificate['issuer'])) {
-            $text .= "<strong>" . $this->_dict->t("Issuer") . ":</strong>\n";
+            $text .= "<strong>" . Horde_Crypt_Translation::t("Issuer") . ":</strong>\n";
 
             foreach ($certificate['issuer'] as $key => $value) {
                 if (isset($fieldnames[$key])) {
@@ -544,14 +544,14 @@ class Horde_Crypt_Smime extends Horde_Crypt
         }
 
         /* Dates  */
-        $text .= "<strong>" . $this->_dict->t("Validity") . ":</strong>\n";
-        $text .= sprintf("&nbsp;&nbsp;%s: %s\n", $this->_dict->t("Not Before"), strftime("%x %X", $certificate['validity']['notbefore']));
-        $text .= sprintf("&nbsp;&nbsp;%s: %s\n", $this->_dict->t("Not After"), strftime("%x %X", $certificate['validity']['notafter']));
+        $text .= "<strong>" . Horde_Crypt_Translation::t("Validity") . ":</strong>\n";
+        $text .= sprintf("&nbsp;&nbsp;%s: %s\n", Horde_Crypt_Translation::t("Not Before"), strftime("%x %X", $certificate['validity']['notbefore']));
+        $text .= sprintf("&nbsp;&nbsp;%s: %s\n", Horde_Crypt_Translation::t("Not After"), strftime("%x %X", $certificate['validity']['notafter']));
         $text .= "\n";
 
         /* Certificate Owner - Public Key Info */
-        $text .= "<strong>" . $this->_dict->t("Public Key Info") . ":</strong>\n";
-        $text .= sprintf("&nbsp;&nbsp;%s: %s\n", $this->_dict->t("Public Key Algorithm"), $certificate['subjectPublicKeyInfo']['algorithm']);
+        $text .= "<strong>" . Horde_Crypt_Translation::t("Public Key Info") . ":</strong>\n";
+        $text .= sprintf("&nbsp;&nbsp;%s: %s\n", Horde_Crypt_Translation::t("Public Key Algorithm"), $certificate['subjectPublicKeyInfo']['algorithm']);
         if ($certificate['subjectPublicKeyInfo']['algorithm'] == 'rsaEncryption') {
             if (Horde_Util::extensionExists('bcmath')) {
                 $modulus = $certificate['subjectPublicKeyInfo']['subjectPublicKey']['modulus'];
@@ -569,7 +569,7 @@ class Horde_Crypt_Smime extends Horde_Crypt
                     str_pad($modulus_hex, 256, '0', STR_PAD_RIGHT);
                 }
 
-                $text .= "&nbsp;&nbsp;" . sprintf($this->_dict->t("RSA Public Key (%d bit)"), strlen($modulus_hex) * 4) . ":\n";
+                $text .= "&nbsp;&nbsp;" . sprintf(Horde_Crypt_Translation::t("RSA Public Key (%d bit)"), strlen($modulus_hex) * 4) . ":\n";
 
                 $modulus_str = '';
 
@@ -580,20 +580,20 @@ class Horde_Crypt_Smime extends Horde_Crypt
                     $modulus_str .= substr($modulus_hex, $i, 2) . ':';
                 }
 
-                $text .= sprintf("&nbsp;&nbsp;&nbsp;&nbsp;%s: %s\n", $this->_dict->t("Modulus"), $modulus_str);
+                $text .= sprintf("&nbsp;&nbsp;&nbsp;&nbsp;%s: %s\n", Horde_Crypt_Translation::t("Modulus"), $modulus_str);
             }
 
-            $text .= sprintf("&nbsp;&nbsp;&nbsp;&nbsp;%s: %s\n", $this->_dict->t("Exponent"), $certificate['subjectPublicKeyInfo']['subjectPublicKey']['publicExponent']);
+            $text .= sprintf("&nbsp;&nbsp;&nbsp;&nbsp;%s: %s\n", Horde_Crypt_Translation::t("Exponent"), $certificate['subjectPublicKeyInfo']['subjectPublicKey']['publicExponent']);
         }
         $text .= "\n";
 
         /* X509v3 extensions */
         if (isset($certificate['extensions'])) {
-            $text .= "<strong>" . $this->_dict->t("X509v3 extensions") . ":</strong>\n";
+            $text .= "<strong>" . Horde_Crypt_Translation::t("X509v3 extensions") . ":</strong>\n";
 
             foreach ($certificate['extensions'] as $key => $value) {
                 if (is_array($value)) {
-                    $value = $this->_dict->t("Unsupported Extension");
+                    $value = Horde_Crypt_Translation::t("Unsupported Extension");
                 }
                 if (isset($fieldnames[$key])) {
                     $text .= sprintf("&nbsp;&nbsp;%s:\n&nbsp;&nbsp;&nbsp;&nbsp;%s\n", $fieldnames[$key], wordwrap($value, 40, "\n&nbsp;&nbsp;&nbsp;&nbsp;"));
@@ -606,20 +606,20 @@ class Horde_Crypt_Smime extends Horde_Crypt
         }
 
         /* Certificate Details */
-        $text .= "<strong>" . $this->_dict->t("Certificate Details") . ":</strong>\n";
-        $text .= sprintf("&nbsp;&nbsp;%s: %d\n", $this->_dict->t("Version"), $certificate['version']);
-        $text .= sprintf("&nbsp;&nbsp;%s: %d\n", $this->_dict->t("Serial Number"), $certificate['serialNumber']);
+        $text .= "<strong>" . Horde_Crypt_Translation::t("Certificate Details") . ":</strong>\n";
+        $text .= sprintf("&nbsp;&nbsp;%s: %d\n", Horde_Crypt_Translation::t("Version"), $certificate['version']);
+        $text .= sprintf("&nbsp;&nbsp;%s: %d\n", Horde_Crypt_Translation::t("Serial Number"), $certificate['serialNumber']);
 
         foreach ($cert_details['fingerprints'] as $hash => $fingerprint) {
-            $label = sprintf($this->_dict->t("%s Fingerprint"), Horde_String::upper($hash));
+            $label = sprintf(Horde_Crypt_Translation::t("%s Fingerprint"), Horde_String::upper($hash));
             $fingerprint_str = '';
             for ($i = 0, $f_len = strlen($fingerprint); $i < $f_len; $i += 2) {
                 $fingerprint_str .= substr($fingerprint, $i, 2) . ':';
             }
             $text .= sprintf("&nbsp;&nbsp;%s:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%s\n", $label, $fingerprint_str);
         }
-        $text .= sprintf("&nbsp;&nbsp;%s: %s\n", $this->_dict->t("Signature Algorithm"), $cert_details['signatureAlgorithm']);
-        $text .= sprintf("&nbsp;&nbsp;%s:", $this->_dict->t("Signature"));
+        $text .= sprintf("&nbsp;&nbsp;%s: %s\n", Horde_Crypt_Translation::t("Signature Algorithm"), $cert_details['signatureAlgorithm']);
+        $text .= sprintf("&nbsp;&nbsp;%s:", Horde_Crypt_Translation::t("Signature"));
 
         $sig_str = '';
         for ($i = 0, $s_len = strlen($cert_details['signature']); $i < $s_len; ++$i) {
@@ -841,13 +841,13 @@ class Horde_Crypt_Smime extends Horde_Crypt
                     }
                     $cert_details['certificate']['extensions'][$oid] = $newVal;
                 } else {
-                    $cert_details['certificate']['extensions'][$oid] = $this->_dict->t("Unsupported Extension");
+                    $cert_details['certificate']['extensions'][$oid] = Horde_Crypt_Translation::t("Unsupported Extension");
                 }
                 break;
 
             case 'id-ce-basicConstraints':
             case 'default':
-                $cert_details['certificate']['extensions'][$oid] = $this->_dict->t("Unsupported Extension");
+                $cert_details['certificate']['extensions'][$oid] = Horde_Crypt_Translation::t("Unsupported Extension");
                 break;
             }
         }
@@ -1132,7 +1132,7 @@ class Horde_Crypt_Smime extends Horde_Crypt
      */
     protected function _decryptSignature($text, $params)
     {
-        throw new Horde_Crypt_Exception('_decryptSignature() ' . $this->_dict->t("not yet implemented"));
+        throw new Horde_Crypt_Exception('_decryptSignature() ' . Horde_Crypt_Translation::t("not yet implemented"));
     }
 
     /**
@@ -1143,7 +1143,7 @@ class Horde_Crypt_Smime extends Horde_Crypt
     public function checkForOpenSSL()
     {
         if (!Horde_Util::extensionExists('openssl')) {
-            throw new Horde_Crypt_Exception($this->_dict->t("The openssl module is required for the Horde_Crypt_Smime:: class."));
+            throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("The openssl module is required for the Horde_Crypt_Smime:: class."));
         }
     }
 
@@ -1214,7 +1214,7 @@ class Horde_Crypt_Smime extends Horde_Crypt
         $this->checkForOpenSSL();
 
         if (!isset($params['sslpath'])) {
-            throw new Horde_Crypt_Exception($this->_dict->t("No path to the OpenSSL binary provided. The OpenSSL binary is necessary to work with PKCS 12 data."));
+            throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("No path to the OpenSSL binary provided. The OpenSSL binary is necessary to work with PKCS 12 data."));
         }
         $sslpath = escapeshellcmd($params['sslpath']);
 
@@ -1248,12 +1248,12 @@ class Horde_Crypt_Smime extends Horde_Crypt
             }
             pclose($fd);
         } else {
-            throw new Horde_Crypt_Exception($this->_dict->t("Error while talking to smime binary."));
+            throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("Error while talking to smime binary."));
         }
 
         $ob->private = trim(file_get_contents($output));
         if (empty($ob->private)) {
-            throw new Horde_Crypt_Exception($this->_dict->t("Password incorrect"));
+            throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("Password incorrect"));
         }
 
         /* Extract the client public key next. */
@@ -1266,7 +1266,7 @@ class Horde_Crypt_Smime extends Horde_Crypt
             fwrite($fd, $params['password'] . "\n");
             pclose($fd);
         } else {
-            throw new Horde_Crypt_Exception($this->_dict->t("Error while talking to smime binary."));
+            throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("Error while talking to smime binary."));
         }
 
         $ob->public = trim(file_get_contents($output));
@@ -1281,7 +1281,7 @@ class Horde_Crypt_Smime extends Horde_Crypt
             fwrite($fd, $params['password'] . "\n");
             pclose($fd);
         } else {
-            throw new Horde_Crypt_Exception($this->_dict->t("Error while talking to smime binary."));
+            throw new Horde_Crypt_Exception(Horde_Crypt_Translation::t("Error while talking to smime binary."));
         }
 
         $ob->certs = trim(file_get_contents($output));
diff --git a/framework/Crypt/lib/Horde/Crypt/Translation.php b/framework/Crypt/lib/Horde/Crypt/Translation.php
new file mode 100644 (file)
index 0000000..4718ed7
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Crypt
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Crypt_Translation is the translation wrapper class for Horde_Crypt.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Crypt
+ */
+class Horde_Crypt_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Crypt';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Crypt/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Crypt';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Crypt/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index 5d13bbb..cc2e488 100644 (file)
@@ -1,20 +1,17 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.4.9" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
-http://pear.php.net/dtd/tasks-1.0.xsd
-http://pear.php.net/dtd/package-2.0
-http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Crypt</name>
  <channel>pear.horde.org</channel>
  <summary>Horde Cryptography API</summary>
- <description>The Horde_Crypt:: class provides an API for various cryptographic systems
- </description>
+ <description>The Horde_Crypt:: class provides an API for various cryptographic systems</description>
  <lead>
   <name>Michael Slusarz</name>
   <user>slusarz</user>
   <email>slusarz@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2008-11-16</date>
+ <date>2010-10-22</date>
+ <time>19:03:01</time>
  <version>
   <release>0.1.0</release>
   <api>0.1.0</api>
@@ -24,25 +21,292 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <api>alpha</api>
  </stability>
  <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
- <notes>* Add Horde_Crypt_Exception::.
+ <notes>
+* Add Horde_Crypt_Exception::.
  * Better error handling for gnupg and openssl command line binaries.
- * Initial Horde 4 package.</notes>
+ * Initial Horde 4 package.
+ </notes>
  <contents>
-  <dir name="/">
+  <dir baseinstalldir="/" name="/">
    <dir name="lib">
     <dir name="Horde">
      <dir name="Crypt">
       <file name="Exception.php" role="php" />
       <file name="Pgp.php" role="php" />
       <file name="Smime.php" role="php" />
+      <file name="Translation.php" role="php">
+       <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+      </file>
      </dir> <!-- /lib/Horde/Crypt -->
      <file name="Crypt.php" role="php" />
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Crypt.mo" role="data" />
+      <file name="Horde_Crypt.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Crypt.pot" role="data" />
+   </dir> <!-- /locale -->
    <dir name="test">
     <dir name="Horde">
      <dir name="Crypt">
       <dir name="fixtures">
+       <file name="bug_6601.asc" role="test" />
        <file name="clear.txt" role="test" />
        <file name="pgp_encrypted.txt" role="test" />
        <file name="pgp_encrypted_symmetric.txt" role="test" />
@@ -53,21 +317,92 @@ http://pear.php.net/dtd/package-2.0.xsd">
        <file name="pgp_signed2.txt" role="test" />
        <file name="smime_subjectAltName.pem" role="test" />
       </dir> <!-- /test/Horde/Crypt/fixtures -->
+      <file name="bug_6601.diff" role="test" />
+      <file name="bug_6601.exp" role="test" />
+      <file name="bug_6601.log" role="test" />
+      <file name="bug_6601.out" role="test" />
+      <file name="bug_6601.phpt" role="test" />
       <file name="pgp.inc" role="test" />
+      <file name="pgp_decrypt.diff" role="test" />
+      <file name="pgp_decrypt.exp" role="test" />
+      <file name="pgp_decrypt.log" role="test" />
+      <file name="pgp_decrypt.out" role="test" />
       <file name="pgp_decrypt.phpt" role="test" />
+      <file name="pgp_decrypt_symmetric.diff" role="test" />
+      <file name="pgp_decrypt_symmetric.exp" role="test" />
+      <file name="pgp_decrypt_symmetric.log" role="test" />
+      <file name="pgp_decrypt_symmetric.out" role="test" />
       <file name="pgp_decrypt_symmetric.phpt" role="test" />
+      <file name="pgp_encrypt.diff" role="test" />
+      <file name="pgp_encrypt.exp" role="test" />
+      <file name="pgp_encrypt.log" role="test" />
+      <file name="pgp_encrypt.out" role="test" />
       <file name="pgp_encrypt.phpt" role="test" />
+      <file name="pgp_encryptedSymmetrically.diff" role="test" />
+      <file name="pgp_encryptedSymmetrically.exp" role="test" />
+      <file name="pgp_encryptedSymmetrically.log" role="test" />
+      <file name="pgp_encryptedSymmetrically.out" role="test" />
+      <file name="pgp_encryptedSymmetrically.phpt" role="test" />
+      <file name="pgp_encrypt_symmetric.diff" role="test" />
+      <file name="pgp_encrypt_symmetric.exp" role="test" />
+      <file name="pgp_encrypt_symmetric.log" role="test" />
+      <file name="pgp_encrypt_symmetric.out" role="test" />
       <file name="pgp_encrypt_symmetric.phpt" role="test" />
+      <file name="pgp_generateRevocation.diff" role="test" />
+      <file name="pgp_generateRevocation.exp" role="test" />
+      <file name="pgp_generateRevocation.log" role="test" />
+      <file name="pgp_generateRevocation.out" role="test" />
+      <file name="pgp_generateRevocation.phpt" role="test" />
+      <file name="pgp_getSignersKeyID.diff" role="test" />
+      <file name="pgp_getSignersKeyID.exp" role="test" />
+      <file name="pgp_getSignersKeyID.log" role="test" />
+      <file name="pgp_getSignersKeyID.out" role="test" />
       <file name="pgp_getSignersKeyID.phpt" role="test" />
+      <file name="pgp_parsePGPData.diff" role="test" />
+      <file name="pgp_parsePGPData.exp" role="test" />
+      <file name="pgp_parsePGPData.log" role="test" />
+      <file name="pgp_parsePGPData.out" role="test" />
       <file name="pgp_parsePGPData.phpt" role="test" />
+      <file name="pgp_pgpPacketInformation.diff" role="test" />
+      <file name="pgp_pgpPacketInformation.exp" role="test" />
+      <file name="pgp_pgpPacketInformation.log" role="test" />
+      <file name="pgp_pgpPacketInformation.out" role="test" />
       <file name="pgp_pgpPacketInformation.phpt" role="test" />
+      <file name="pgp_pgpPacketSignature.diff" role="test" />
+      <file name="pgp_pgpPacketSignature.exp" role="test" />
+      <file name="pgp_pgpPacketSignature.log" role="test" />
+      <file name="pgp_pgpPacketSignature.out" role="test" />
       <file name="pgp_pgpPacketSignature.phpt" role="test" />
+      <file name="pgp_pgpPacketSignatureByUidIndex.diff" role="test" />
+      <file name="pgp_pgpPacketSignatureByUidIndex.exp" role="test" />
+      <file name="pgp_pgpPacketSignatureByUidIndex.log" role="test" />
+      <file name="pgp_pgpPacketSignatureByUidIndex.out" role="test" />
       <file name="pgp_pgpPacketSignatureByUidIndex.phpt" role="test" />
+      <file name="pgp_pgpPrettyKey.diff" role="test" />
+      <file name="pgp_pgpPrettyKey.exp" role="test" />
+      <file name="pgp_pgpPrettyKey.log" role="test" />
+      <file name="pgp_pgpPrettyKey.out" role="test" />
       <file name="pgp_pgpPrettyKey.phpt" role="test" />
+      <file name="pgp_publicKeyMIMEPart.diff" role="test" />
+      <file name="pgp_publicKeyMIMEPart.exp" role="test" />
+      <file name="pgp_publicKeyMIMEPart.log" role="test" />
+      <file name="pgp_publicKeyMIMEPart.out" role="test" />
       <file name="pgp_publicKeyMIMEPart.phpt" role="test" />
+      <file name="pgp_sign.diff" role="test" />
+      <file name="pgp_sign.exp" role="test" />
+      <file name="pgp_sign.log" role="test" />
+      <file name="pgp_sign.out" role="test" />
       <file name="pgp_sign.phpt" role="test" />
       <file name="pgp_skipif.inc" role="test" />
+      <file name="pgp_verify.diff" role="test" />
+      <file name="pgp_verify.exp" role="test" />
+      <file name="pgp_verify.log" role="test" />
+      <file name="pgp_verify.out" role="test" />
       <file name="pgp_verify.phpt" role="test" />
+      <file name="pgp_verifyPassphrase.diff" role="test" />
+      <file name="pgp_verifyPassphrase.exp" role="test" />
+      <file name="pgp_verifyPassphrase.log" role="test" />
+      <file name="pgp_verifyPassphrase.out" role="test" />
       <file name="pgp_verifyPassphrase.phpt" role="test" />
       <file name="smime.inc" role="test" />
       <file name="smime_skipif.inc" role="test" />
@@ -94,27 +429,229 @@ http://pear.php.net/dtd/package-2.0.xsd">
     <channel>pear.horde.org</channel>
    </package>
    <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
+   <package>
     <name>Util</name>
     <channel>pear.horde.org</channel>
    </package>
   </required>
-  <optional>
-   <extension>
-    <name>gettext</name>
-   </extension>
-  </optional>
  </dependencies>
  <phprelease>
   <filelist>
-   <install name="lib/Horde/Crypt/Exception.php" as="Horde/Crypt/Exception.php" />
-   <install name="lib/Horde/Crypt/Pgp.php" as="Horde/Crypt/Pgp.php" />
-   <install name="lib/Horde/Crypt/Smime.php" as="Horde/Crypt/Smime.php" />
-   <install name="lib/Horde/Crypt.php" as="Horde/Crypt.php" />
+   <install as="Horde/Crypt.php" name="lib/Horde/Crypt.php" />
+   <install as="Horde/Crypt/Exception.php" name="lib/Horde/Crypt/Exception.php" />
+   <install as="Horde/Crypt/Pgp.php" name="lib/Horde/Crypt/Pgp.php" />
+   <install as="Horde/Crypt/Smime.php" name="lib/Horde/Crypt/Smime.php" />
+   <install as="Horde/Crypt/Translation.php" name="lib/Horde/Crypt/Translation.php" />
+   <install as="locale/Horde_Crypt.pot" name="locale/Horde_Crypt.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Crypt.mo" name="locale/ar/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Crypt.po" name="locale/ar/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Crypt.mo" name="locale/bg/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Crypt.po" name="locale/bg/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Crypt.mo" name="locale/bs/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Crypt.po" name="locale/bs/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Crypt.mo" name="locale/ca/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Crypt.po" name="locale/ca/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Crypt.mo" name="locale/cs/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Crypt.po" name="locale/cs/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Crypt.mo" name="locale/da/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Crypt.po" name="locale/da/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Crypt.mo" name="locale/de/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Crypt.po" name="locale/de/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Crypt.mo" name="locale/el/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Crypt.po" name="locale/el/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Crypt.mo" name="locale/en/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Crypt.po" name="locale/en/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Crypt.mo" name="locale/es/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Crypt.po" name="locale/es/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Crypt.mo" name="locale/et/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Crypt.po" name="locale/et/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Crypt.mo" name="locale/eu/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Crypt.po" name="locale/eu/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Crypt.mo" name="locale/fa/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Crypt.po" name="locale/fa/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Crypt.mo" name="locale/fi/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Crypt.po" name="locale/fi/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Crypt.mo" name="locale/fr/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Crypt.po" name="locale/fr/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Crypt.mo" name="locale/gl/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Crypt.po" name="locale/gl/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Crypt.mo" name="locale/he/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Crypt.po" name="locale/he/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Crypt.mo" name="locale/hr/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Crypt.po" name="locale/hr/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Crypt.mo" name="locale/hu/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Crypt.po" name="locale/hu/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Crypt.mo" name="locale/id/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Crypt.po" name="locale/id/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Crypt.mo" name="locale/is/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Crypt.po" name="locale/is/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Crypt.mo" name="locale/it/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Crypt.po" name="locale/it/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Crypt.mo" name="locale/ja/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Crypt.po" name="locale/ja/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Crypt.mo" name="locale/km/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Crypt.po" name="locale/km/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Crypt.mo" name="locale/ko/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Crypt.po" name="locale/ko/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Crypt.mo" name="locale/lt/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Crypt.po" name="locale/lt/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Crypt.mo" name="locale/lv/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Crypt.po" name="locale/lv/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Crypt.mo" name="locale/mk/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Crypt.po" name="locale/mk/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Crypt.mo" name="locale/nb/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Crypt.po" name="locale/nb/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Crypt.mo" name="locale/nl/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Crypt.po" name="locale/nl/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Crypt.mo" name="locale/nn/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Crypt.po" name="locale/nn/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Crypt.mo" name="locale/pl/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Crypt.po" name="locale/pl/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Crypt.mo" name="locale/pt/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Crypt.po" name="locale/pt/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Crypt.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Crypt.po" name="locale/pt_BR/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Crypt.mo" name="locale/ro/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Crypt.po" name="locale/ro/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Crypt.mo" name="locale/ru/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Crypt.po" name="locale/ru/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Crypt.mo" name="locale/sk/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Crypt.po" name="locale/sk/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Crypt.mo" name="locale/sl/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Crypt.po" name="locale/sl/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Crypt.mo" name="locale/sv/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Crypt.po" name="locale/sv/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Crypt.mo" name="locale/tr/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Crypt.po" name="locale/tr/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Crypt.mo" name="locale/uk/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Crypt.po" name="locale/uk/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Crypt.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Crypt.po" name="locale/zh_CN/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Crypt.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Crypt.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Crypt.po" name="locale/zh_TW/LC_MESSAGES/Horde_Crypt.po" />
+   <install as="Horde/Crypt/bug_6601.diff" name="test/Horde/Crypt/bug_6601.diff" />
+   <install as="Horde/Crypt/bug_6601.exp" name="test/Horde/Crypt/bug_6601.exp" />
+   <install as="Horde/Crypt/bug_6601.log" name="test/Horde/Crypt/bug_6601.log" />
+   <install as="Horde/Crypt/bug_6601.out" name="test/Horde/Crypt/bug_6601.out" />
+   <install as="Horde/Crypt/bug_6601.phpt" name="test/Horde/Crypt/bug_6601.phpt" />
+   <install as="Horde/Crypt/pgp.inc" name="test/Horde/Crypt/pgp.inc" />
+   <install as="Horde/Crypt/pgp_decrypt.diff" name="test/Horde/Crypt/pgp_decrypt.diff" />
+   <install as="Horde/Crypt/pgp_decrypt.exp" name="test/Horde/Crypt/pgp_decrypt.exp" />
+   <install as="Horde/Crypt/pgp_decrypt.log" name="test/Horde/Crypt/pgp_decrypt.log" />
+   <install as="Horde/Crypt/pgp_decrypt.out" name="test/Horde/Crypt/pgp_decrypt.out" />
+   <install as="Horde/Crypt/pgp_decrypt.phpt" name="test/Horde/Crypt/pgp_decrypt.phpt" />
+   <install as="Horde/Crypt/pgp_decrypt_symmetric.diff" name="test/Horde/Crypt/pgp_decrypt_symmetric.diff" />
+   <install as="Horde/Crypt/pgp_decrypt_symmetric.exp" name="test/Horde/Crypt/pgp_decrypt_symmetric.exp" />
+   <install as="Horde/Crypt/pgp_decrypt_symmetric.log" name="test/Horde/Crypt/pgp_decrypt_symmetric.log" />
+   <install as="Horde/Crypt/pgp_decrypt_symmetric.out" name="test/Horde/Crypt/pgp_decrypt_symmetric.out" />
+   <install as="Horde/Crypt/pgp_decrypt_symmetric.phpt" name="test/Horde/Crypt/pgp_decrypt_symmetric.phpt" />
+   <install as="Horde/Crypt/pgp_encrypt.diff" name="test/Horde/Crypt/pgp_encrypt.diff" />
+   <install as="Horde/Crypt/pgp_encrypt.exp" name="test/Horde/Crypt/pgp_encrypt.exp" />
+   <install as="Horde/Crypt/pgp_encrypt.log" name="test/Horde/Crypt/pgp_encrypt.log" />
+   <install as="Horde/Crypt/pgp_encrypt.out" name="test/Horde/Crypt/pgp_encrypt.out" />
+   <install as="Horde/Crypt/pgp_encrypt.phpt" name="test/Horde/Crypt/pgp_encrypt.phpt" />
+   <install as="Horde/Crypt/pgp_encryptedSymmetrically.diff" name="test/Horde/Crypt/pgp_encryptedSymmetrically.diff" />
+   <install as="Horde/Crypt/pgp_encryptedSymmetrically.exp" name="test/Horde/Crypt/pgp_encryptedSymmetrically.exp" />
+   <install as="Horde/Crypt/pgp_encryptedSymmetrically.log" name="test/Horde/Crypt/pgp_encryptedSymmetrically.log" />
+   <install as="Horde/Crypt/pgp_encryptedSymmetrically.out" name="test/Horde/Crypt/pgp_encryptedSymmetrically.out" />
+   <install as="Horde/Crypt/pgp_encryptedSymmetrically.phpt" name="test/Horde/Crypt/pgp_encryptedSymmetrically.phpt" />
+   <install as="Horde/Crypt/pgp_encrypt_symmetric.diff" name="test/Horde/Crypt/pgp_encrypt_symmetric.diff" />
+   <install as="Horde/Crypt/pgp_encrypt_symmetric.exp" name="test/Horde/Crypt/pgp_encrypt_symmetric.exp" />
+   <install as="Horde/Crypt/pgp_encrypt_symmetric.log" name="test/Horde/Crypt/pgp_encrypt_symmetric.log" />
+   <install as="Horde/Crypt/pgp_encrypt_symmetric.out" name="test/Horde/Crypt/pgp_encrypt_symmetric.out" />
+   <install as="Horde/Crypt/pgp_encrypt_symmetric.phpt" name="test/Horde/Crypt/pgp_encrypt_symmetric.phpt" />
+   <install as="Horde/Crypt/pgp_generateRevocation.diff" name="test/Horde/Crypt/pgp_generateRevocation.diff" />
+   <install as="Horde/Crypt/pgp_generateRevocation.exp" name="test/Horde/Crypt/pgp_generateRevocation.exp" />
+   <install as="Horde/Crypt/pgp_generateRevocation.log" name="test/Horde/Crypt/pgp_generateRevocation.log" />
+   <install as="Horde/Crypt/pgp_generateRevocation.out" name="test/Horde/Crypt/pgp_generateRevocation.out" />
+   <install as="Horde/Crypt/pgp_generateRevocation.phpt" name="test/Horde/Crypt/pgp_generateRevocation.phpt" />
+   <install as="Horde/Crypt/pgp_getSignersKeyID.diff" name="test/Horde/Crypt/pgp_getSignersKeyID.diff" />
+   <install as="Horde/Crypt/pgp_getSignersKeyID.exp" name="test/Horde/Crypt/pgp_getSignersKeyID.exp" />
+   <install as="Horde/Crypt/pgp_getSignersKeyID.log" name="test/Horde/Crypt/pgp_getSignersKeyID.log" />
+   <install as="Horde/Crypt/pgp_getSignersKeyID.out" name="test/Horde/Crypt/pgp_getSignersKeyID.out" />
+   <install as="Horde/Crypt/pgp_getSignersKeyID.phpt" name="test/Horde/Crypt/pgp_getSignersKeyID.phpt" />
+   <install as="Horde/Crypt/pgp_parsePGPData.diff" name="test/Horde/Crypt/pgp_parsePGPData.diff" />
+   <install as="Horde/Crypt/pgp_parsePGPData.exp" name="test/Horde/Crypt/pgp_parsePGPData.exp" />
+   <install as="Horde/Crypt/pgp_parsePGPData.log" name="test/Horde/Crypt/pgp_parsePGPData.log" />
+   <install as="Horde/Crypt/pgp_parsePGPData.out" name="test/Horde/Crypt/pgp_parsePGPData.out" />
+   <install as="Horde/Crypt/pgp_parsePGPData.phpt" name="test/Horde/Crypt/pgp_parsePGPData.phpt" />
+   <install as="Horde/Crypt/pgp_pgpPacketInformation.diff" name="test/Horde/Crypt/pgp_pgpPacketInformation.diff" />
+   <install as="Horde/Crypt/pgp_pgpPacketInformation.exp" name="test/Horde/Crypt/pgp_pgpPacketInformation.exp" />
+   <install as="Horde/Crypt/pgp_pgpPacketInformation.log" name="test/Horde/Crypt/pgp_pgpPacketInformation.log" />
+   <install as="Horde/Crypt/pgp_pgpPacketInformation.out" name="test/Horde/Crypt/pgp_pgpPacketInformation.out" />
+   <install as="Horde/Crypt/pgp_pgpPacketInformation.phpt" name="test/Horde/Crypt/pgp_pgpPacketInformation.phpt" />
+   <install as="Horde/Crypt/pgp_pgpPacketSignature.diff" name="test/Horde/Crypt/pgp_pgpPacketSignature.diff" />
+   <install as="Horde/Crypt/pgp_pgpPacketSignature.exp" name="test/Horde/Crypt/pgp_pgpPacketSignature.exp" />
+   <install as="Horde/Crypt/pgp_pgpPacketSignature.log" name="test/Horde/Crypt/pgp_pgpPacketSignature.log" />
+   <install as="Horde/Crypt/pgp_pgpPacketSignature.out" name="test/Horde/Crypt/pgp_pgpPacketSignature.out" />
+   <install as="Horde/Crypt/pgp_pgpPacketSignature.phpt" name="test/Horde/Crypt/pgp_pgpPacketSignature.phpt" />
+   <install as="Horde/Crypt/pgp_pgpPacketSignatureByUidIndex.diff" name="test/Horde/Crypt/pgp_pgpPacketSignatureByUidIndex.diff" />
+   <install as="Horde/Crypt/pgp_pgpPacketSignatureByUidIndex.exp" name="test/Horde/Crypt/pgp_pgpPacketSignatureByUidIndex.exp" />
+   <install as="Horde/Crypt/pgp_pgpPacketSignatureByUidIndex.log" name="test/Horde/Crypt/pgp_pgpPacketSignatureByUidIndex.log" />
+   <install as="Horde/Crypt/pgp_pgpPacketSignatureByUidIndex.out" name="test/Horde/Crypt/pgp_pgpPacketSignatureByUidIndex.out" />
+   <install as="Horde/Crypt/pgp_pgpPacketSignatureByUidIndex.phpt" name="test/Horde/Crypt/pgp_pgpPacketSignatureByUidIndex.phpt" />
+   <install as="Horde/Crypt/pgp_pgpPrettyKey.diff" name="test/Horde/Crypt/pgp_pgpPrettyKey.diff" />
+   <install as="Horde/Crypt/pgp_pgpPrettyKey.exp" name="test/Horde/Crypt/pgp_pgpPrettyKey.exp" />
+   <install as="Horde/Crypt/pgp_pgpPrettyKey.log" name="test/Horde/Crypt/pgp_pgpPrettyKey.log" />
+   <install as="Horde/Crypt/pgp_pgpPrettyKey.out" name="test/Horde/Crypt/pgp_pgpPrettyKey.out" />
+   <install as="Horde/Crypt/pgp_pgpPrettyKey.phpt" name="test/Horde/Crypt/pgp_pgpPrettyKey.phpt" />
+   <install as="Horde/Crypt/pgp_publicKeyMIMEPart.diff" name="test/Horde/Crypt/pgp_publicKeyMIMEPart.diff" />
+   <install as="Horde/Crypt/pgp_publicKeyMIMEPart.exp" name="test/Horde/Crypt/pgp_publicKeyMIMEPart.exp" />
+   <install as="Horde/Crypt/pgp_publicKeyMIMEPart.log" name="test/Horde/Crypt/pgp_publicKeyMIMEPart.log" />
+   <install as="Horde/Crypt/pgp_publicKeyMIMEPart.out" name="test/Horde/Crypt/pgp_publicKeyMIMEPart.out" />
+   <install as="Horde/Crypt/pgp_publicKeyMIMEPart.phpt" name="test/Horde/Crypt/pgp_publicKeyMIMEPart.phpt" />
+   <install as="Horde/Crypt/pgp_sign.diff" name="test/Horde/Crypt/pgp_sign.diff" />
+   <install as="Horde/Crypt/pgp_sign.exp" name="test/Horde/Crypt/pgp_sign.exp" />
+   <install as="Horde/Crypt/pgp_sign.log" name="test/Horde/Crypt/pgp_sign.log" />
+   <install as="Horde/Crypt/pgp_sign.out" name="test/Horde/Crypt/pgp_sign.out" />
+   <install as="Horde/Crypt/pgp_sign.phpt" name="test/Horde/Crypt/pgp_sign.phpt" />
+   <install as="Horde/Crypt/pgp_skipif.inc" name="test/Horde/Crypt/pgp_skipif.inc" />
+   <install as="Horde/Crypt/pgp_verify.diff" name="test/Horde/Crypt/pgp_verify.diff" />
+   <install as="Horde/Crypt/pgp_verify.exp" name="test/Horde/Crypt/pgp_verify.exp" />
+   <install as="Horde/Crypt/pgp_verify.log" name="test/Horde/Crypt/pgp_verify.log" />
+   <install as="Horde/Crypt/pgp_verify.out" name="test/Horde/Crypt/pgp_verify.out" />
+   <install as="Horde/Crypt/pgp_verify.phpt" name="test/Horde/Crypt/pgp_verify.phpt" />
+   <install as="Horde/Crypt/pgp_verifyPassphrase.diff" name="test/Horde/Crypt/pgp_verifyPassphrase.diff" />
+   <install as="Horde/Crypt/pgp_verifyPassphrase.exp" name="test/Horde/Crypt/pgp_verifyPassphrase.exp" />
+   <install as="Horde/Crypt/pgp_verifyPassphrase.log" name="test/Horde/Crypt/pgp_verifyPassphrase.log" />
+   <install as="Horde/Crypt/pgp_verifyPassphrase.out" name="test/Horde/Crypt/pgp_verifyPassphrase.out" />
+   <install as="Horde/Crypt/pgp_verifyPassphrase.phpt" name="test/Horde/Crypt/pgp_verifyPassphrase.phpt" />
+   <install as="Horde/Crypt/smime.inc" name="test/Horde/Crypt/smime.inc" />
+   <install as="Horde/Crypt/smime_skipif.inc" name="test/Horde/Crypt/smime_skipif.inc" />
+   <install as="Horde/Crypt/smime_subjectAltName.phpt" name="test/Horde/Crypt/smime_subjectAltName.phpt" />
+   <install as="Horde/Crypt/fixtures/bug_6601.asc" name="test/Horde/Crypt/fixtures/bug_6601.asc" />
+   <install as="Horde/Crypt/fixtures/clear.txt" name="test/Horde/Crypt/fixtures/clear.txt" />
+   <install as="Horde/Crypt/fixtures/pgp_encrypted.txt" name="test/Horde/Crypt/fixtures/pgp_encrypted.txt" />
+   <install as="Horde/Crypt/fixtures/pgp_encrypted_symmetric.txt" name="test/Horde/Crypt/fixtures/pgp_encrypted_symmetric.txt" />
+   <install as="Horde/Crypt/fixtures/pgp_private.asc" name="test/Horde/Crypt/fixtures/pgp_private.asc" />
+   <install as="Horde/Crypt/fixtures/pgp_public.asc" name="test/Horde/Crypt/fixtures/pgp_public.asc" />
+   <install as="Horde/Crypt/fixtures/pgp_signature.txt" name="test/Horde/Crypt/fixtures/pgp_signature.txt" />
+   <install as="Horde/Crypt/fixtures/pgp_signed.txt" name="test/Horde/Crypt/fixtures/pgp_signed.txt" />
+   <install as="Horde/Crypt/fixtures/pgp_signed2.txt" name="test/Horde/Crypt/fixtures/pgp_signed2.txt" />
+   <install as="Horde/Crypt/fixtures/smime_subjectAltName.pem" name="test/Horde/Crypt/fixtures/smime_subjectAltName.pem" />
   </filelist>
  </phprelease>
  <changelog>
   <release>
    <version>
+    <release>0.0.1</release>
+    <api>0.0.1</api>
+   </version>
+   <stability>
+    <release>alpha</release>
+    <api>alpha</api>
+   </stability>
+   <date>2003-07-03</date>
+   <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
+   <notes>
+Initial release as a PEAR package
+   </notes>
+  </release>
+  <release>
+   <version>
     <release>0.0.2</release>
     <api>0.0.2</api>
    </version>
@@ -124,23 +661,27 @@ http://pear.php.net/dtd/package-2.0.xsd">
    </stability>
    <date>2006-05-08</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>* Converted to package.xml 2.0 for pear.horde.org
+   <notes>
+* Converted to package.xml 2.0 for pear.horde.org
 * Added support for email addresses in subjectAltName of S/MIME certs (Bug #5986)
 * Improved support for PGP fingerprints (Bug #6363)
    </notes>
   </release>
   <release>
    <version>
-    <release>0.0.1</release>
-    <api>0.0.1</api>
+    <release>0.1.0</release>
+    <api>0.1.0</api>
    </version>
    <stability>
     <release>alpha</release>
     <api>alpha</api>
    </stability>
-   <date>2003-07-03</date>
+   <date>2010-10-22</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Initial release as a PEAR package
+   <notes>
+* Add Horde_Crypt_Exception::.
+ * Better error handling for gnupg and openssl command line binaries.
+ * Initial Horde 4 package.
    </notes>
   </release>
  </changelog>
index 3aa34f3..b58c6fc 100644 (file)
@@ -36,20 +36,12 @@ abstract class Horde_Data_Base
     protected $_contentType = 'text/plain';
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * File extension.
      *
      * @var string
      */
     protected $_extension = '';
 
-
     /**
      * Variables object.
      *
@@ -76,8 +68,6 @@ abstract class Horde_Data_Base
      * OPTIONAL:
      * ---------
      * cleanup - (callback) A callback to call at cleanup time.
-     * translation - (object) A translation handler implementing
-     *               Horde_Translation.
      * vars - (Horde_Variables) Form data.
      * </pre>
      *
@@ -97,10 +87,6 @@ abstract class Horde_Data_Base
         $this->_vars = isset($params['vars'])
             ? $params['vars']
             : Horde_Variables::getDefaultVariables();
-
-        $this->_dict = isset($params['translation'])
-            ? $params['translation']
-            : new Horde_Translation_Gettext('Horde_Data', dirname(__FILE__) . '/../../../locale');
     }
 
     /**
@@ -287,7 +273,7 @@ abstract class Horde_Data_Base
                 throw new Horde_Data_Exception($e);
             }
             if ($_FILES['import_file']['size'] <= 0) {
-                throw new Horde_Data_Exception($this->_dict->t("The file contained no data."));
+                throw new Horde_Data_Exception(Horde_Data_Translation::t("The file contained no data."));
             }
             $_SESSION['import_data']['format'] = $this->_vars->import_format;
             break;
diff --git a/framework/Data/lib/Horde/Data/Translation.php b/framework/Data/lib/Horde/Data/Translation.php
new file mode 100644 (file)
index 0000000..1d90a4d
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Data
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Data_Translation is the translation wrapper class for Horde_Data.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Data
+ */
+class Horde_Data_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Data';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Data/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Data';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Data/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index 00521f6..fb2b3f8 100644 (file)
@@ -200,7 +200,7 @@ class Horde_Data_Tsv extends Horde_Data_Base
             /* Move uploaded file so that we can read it again in the next step
                after the user gave some format details. */
             try {
-                $this->_browser->wasFileUploaded('import_file', $this->_dict->t("TSV file"));
+                $this->_browser->wasFileUploaded('import_file', Horde_Data_Translation::t("TSV file"));
             } catch (Horde_Browser_Exception $e) {
                 throw new Horde_Data_Exception($e);
             }
index 21a7f9a..93b7100 100644 (file)
@@ -1,8 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.4.9" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
-http://pear.php.net/dtd/tasks-1.0.xsd
-http://pear.php.net/dtd/package-2.0
-http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Data</name>
  <channel>pear.horde.org</channel>
  <summary>Horde Data API</summary>
@@ -12,8 +9,7 @@ http://pear.php.net/dtd/package-2.0.xsd">
 * iCalendar
 * vCard
 * vNote
-* vTodo
- </description>
+* vTodo</description>
  <lead>
   <name>Jan Schneider</name>
   <user>jan</user>
@@ -26,7 +22,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <email>chuck@horde.org</email>
   <active>yes</active>
  </developer>
- <date>2010-05-12</date>
+ <date>2010-10-22</date>
+ <time>19:02:59</time>
  <version>
   <release>0.1.0</release>
   <api>0.1.0</api>
@@ -36,10 +33,24 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <api>beta</api>
  </stability>
  <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
- <notes>* Initial Horde 4 package.
+ <notes>
+* Initial Horde 4 package.
  </notes>
  <contents>
-  <dir name="/">
+  <dir baseinstalldir="/" name="/">
+   <dir name="docs">
+    <dir name="examples">
+     <file name="Eudora.txt" role="data" />
+     <file name="Gmail.csv" role="data" />
+     <file name="KMail.csv" role="data" />
+     <file name="Outlook.csv" role="data" />
+     <file name="Palm.csv" role="data" />
+     <file name="Thunderbird.csv" role="data" />
+     <file name="WAB-selectable.csv" role="data" />
+     <file name="WAB.csv" role="data" />
+     <file name="Yahoo.csv" role="data" />
+    </dir> <!-- /docs/examples -->
+   </dir> <!-- /docs -->
    <dir name="lib">
     <dir name="Horde">
      <dir name="Data">
@@ -49,6 +60,9 @@ http://pear.php.net/dtd/package-2.0.xsd">
       <file name="Icalendar.php" role="php" />
       <file name="Imc.php" role="php" />
       <file name="Outlookcsv.php" role="php" />
+      <file name="Translation.php" role="php">
+       <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+      </file>
       <file name="Tsv.php" role="php" />
       <file name="Vcard.php" role="php" />
       <file name="Vnote.php" role="php" />
@@ -57,6 +71,267 @@ http://pear.php.net/dtd/package-2.0.xsd">
      <file name="Data.php" role="php" />
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Data.mo" role="data" />
+      <file name="Horde_Data.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Data.pot" role="data" />
+   </dir> <!-- /locale -->
    <dir name="test">
     <dir name="Horde">
      <dir name="Data">
@@ -66,6 +341,13 @@ http://pear.php.net/dtd/package-2.0.xsd">
      </dir> <!-- /test/Horde/Data -->
     </dir> <!-- /test/Horde -->
    </dir> <!-- /test -->
+   <dir name="tests">
+    <file name="csv_importFile_01.diff" role="data" />
+    <file name="csv_importFile_01.exp" role="data" />
+    <file name="csv_importFile_01.log" role="data" />
+    <file name="csv_importFile_01.out" role="data" />
+    <file name="csv_importFile_01.php" role="php" />
+   </dir> <!-- /tests -->
   </dir> <!-- / -->
  </contents>
  <dependencies>
@@ -97,6 +379,10 @@ http://pear.php.net/dtd/package-2.0.xsd">
     <channel>pear.horde.org</channel>
    </package>
    <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
+   <package>
     <name>Util</name>
     <channel>pear.horde.org</channel>
    </package>
@@ -104,33 +390,124 @@ http://pear.php.net/dtd/package-2.0.xsd">
  </dependencies>
  <phprelease>
   <filelist>
-   <install name="lib/Horde/Data/Base.php" as="Horde/Data/Base.php" />
-   <install name="lib/Horde/Data/Csv.php" as="Horde/Data/Csv.php" />
-   <install name="lib/Horde/Data/Exception.php" as="Horde/Data/Exception.php" />
-   <install name="lib/Horde/Data/Icalendar.php" as="Horde/Data/Icalendar.php" />
-   <install name="lib/Horde/Data/Imc.php" as="Horde/Data/Imc.php" />
-   <install name="lib/Horde/Data/Outlookcsv.php" as="Horde/Data/Outlookcsv.php" />
-   <install name="lib/Horde/Data/Tsv.php" as="Horde/Data/Tsv.php" />
-   <install name="lib/Horde/Data/Vcard.php" as="Horde/Data/Vcard.php" />
-   <install name="lib/Horde/Data/Vnote.php" as="Horde/Data/Vnote.php" />
-   <install name="lib/Horde/Data/Vtodo.php" as="Horde/Data/Vtodo.php" />
-   <install name="lib/Horde/Data.php" as="Horde/Data.php" />
+   <install as="Horde/Data.php" name="lib/Horde/Data.php" />
+   <install as="Horde/Data/Base.php" name="lib/Horde/Data/Base.php" />
+   <install as="Horde/Data/Csv.php" name="lib/Horde/Data/Csv.php" />
+   <install as="Horde/Data/Exception.php" name="lib/Horde/Data/Exception.php" />
+   <install as="Horde/Data/Icalendar.php" name="lib/Horde/Data/Icalendar.php" />
+   <install as="Horde/Data/Imc.php" name="lib/Horde/Data/Imc.php" />
+   <install as="Horde/Data/Outlookcsv.php" name="lib/Horde/Data/Outlookcsv.php" />
+   <install as="Horde/Data/Translation.php" name="lib/Horde/Data/Translation.php" />
+   <install as="Horde/Data/Tsv.php" name="lib/Horde/Data/Tsv.php" />
+   <install as="Horde/Data/Vcard.php" name="lib/Horde/Data/Vcard.php" />
+   <install as="Horde/Data/Vnote.php" name="lib/Horde/Data/Vnote.php" />
+   <install as="Horde/Data/Vtodo.php" name="lib/Horde/Data/Vtodo.php" />
+   <install as="locale/Horde_Data.pot" name="locale/Horde_Data.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Data.mo" name="locale/ar/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Data.po" name="locale/ar/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Data.mo" name="locale/bg/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Data.po" name="locale/bg/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Data.mo" name="locale/bs/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Data.po" name="locale/bs/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Data.mo" name="locale/ca/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Data.po" name="locale/ca/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Data.mo" name="locale/cs/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Data.po" name="locale/cs/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Data.mo" name="locale/da/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Data.po" name="locale/da/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Data.mo" name="locale/de/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Data.po" name="locale/de/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Data.mo" name="locale/el/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Data.po" name="locale/el/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Data.mo" name="locale/en/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Data.po" name="locale/en/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Data.mo" name="locale/es/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Data.po" name="locale/es/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Data.mo" name="locale/et/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Data.po" name="locale/et/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Data.mo" name="locale/eu/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Data.po" name="locale/eu/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Data.mo" name="locale/fa/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Data.po" name="locale/fa/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Data.mo" name="locale/fi/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Data.po" name="locale/fi/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Data.mo" name="locale/fr/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Data.po" name="locale/fr/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Data.mo" name="locale/gl/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Data.po" name="locale/gl/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Data.mo" name="locale/he/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Data.po" name="locale/he/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Data.mo" name="locale/hr/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Data.po" name="locale/hr/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Data.mo" name="locale/hu/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Data.po" name="locale/hu/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Data.mo" name="locale/id/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Data.po" name="locale/id/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Data.mo" name="locale/is/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Data.po" name="locale/is/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Data.mo" name="locale/it/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Data.po" name="locale/it/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Data.mo" name="locale/ja/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Data.po" name="locale/ja/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Data.mo" name="locale/km/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Data.po" name="locale/km/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Data.mo" name="locale/ko/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Data.po" name="locale/ko/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Data.mo" name="locale/lt/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Data.po" name="locale/lt/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Data.mo" name="locale/lv/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Data.po" name="locale/lv/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Data.mo" name="locale/mk/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Data.po" name="locale/mk/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Data.mo" name="locale/nb/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Data.po" name="locale/nb/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Data.mo" name="locale/nl/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Data.po" name="locale/nl/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Data.mo" name="locale/nn/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Data.po" name="locale/nn/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Data.mo" name="locale/pl/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Data.po" name="locale/pl/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Data.mo" name="locale/pt/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Data.po" name="locale/pt/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Data.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Data.po" name="locale/pt_BR/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Data.mo" name="locale/ro/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Data.po" name="locale/ro/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Data.mo" name="locale/ru/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Data.po" name="locale/ru/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Data.mo" name="locale/sk/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Data.po" name="locale/sk/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Data.mo" name="locale/sl/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Data.po" name="locale/sl/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Data.mo" name="locale/sv/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Data.po" name="locale/sv/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Data.mo" name="locale/tr/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Data.po" name="locale/tr/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Data.mo" name="locale/uk/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Data.po" name="locale/uk/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Data.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Data.po" name="locale/zh_CN/LC_MESSAGES/Horde_Data.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Data.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Data.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Data.po" name="locale/zh_TW/LC_MESSAGES/Horde_Data.po" />
+   <install as="Horde/Data/csv_importFile_01.phpt" name="test/Horde/Data/csv_importFile_01.phpt" />
+   <install as="Horde/Data/simple_dos.csv" name="test/Horde/Data/simple_dos.csv" />
+   <install as="Horde/Data/simple_unix.csv" name="test/Horde/Data/simple_unix.csv" />
   </filelist>
  </phprelease>
  <changelog>
   <release>
-   <date>2006-05-08</date>
-   <time>21:12:22</time>
    <version>
-    <release>0.0.3</release>
-    <api>0.0.3</api>
+    <release>0.0.1</release>
+    <api>0.0.1</api>
    </version>
    <stability>
-    <release>beta</release>
-    <api>beta</api>
+    <release>alpha</release>
+    <api>alpha</api>
    </stability>
+   <date>2003-07-03</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Converted to package.xml 2.0 for pear.horde.org
+   <notes>
+Initial release as a PEAR package
    </notes>
   </release>
   <release>
@@ -144,21 +521,39 @@ http://pear.php.net/dtd/package-2.0.xsd">
    </stability>
    <date>2004-04-21</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Bugfixes, much better vCard support
+   <notes>
+Bugfixes, much better vCard support
    </notes>
   </release>
   <release>
+   <date>2006-05-08</date>
+   <time>21:12:22</time>
    <version>
-    <release>0.0.1</release>
-    <api>0.0.1</api>
+    <release>0.0.3</release>
+    <api>0.0.3</api>
    </version>
    <stability>
-    <release>alpha</release>
-    <api>alpha</api>
+    <release>beta</release>
+    <api>beta</api>
    </stability>
-   <date>2003-07-03</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Initial release as a PEAR package
+   <notes>
+Converted to package.xml 2.0 for pear.horde.org
+   </notes>
+  </release>
+  <release>
+   <version>
+    <release>0.1.0</release>
+    <api>0.1.0</api>
+   </version>
+   <stability>
+    <release>beta</release>
+    <api>beta</api>
+   </stability>
+   <date>2010-10-22</date>
+   <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
+   <notes>
+* Initial Horde 4 package.
    </notes>
   </release>
  </changelog>
index 5daa0f4..c8f2939 100644 (file)
@@ -205,21 +205,17 @@ class Horde_Date_Recurrence
      *
      * @return string  Human readable recurring type.
      */
-    public function getRecurName($dict = null)
+    public function getRecurName()
     {
-        if (!$dict) {
-            $dict = new Horde_Translation_Gettext('Horde_Date', dirname(__FILE__) . '/../../../locale');
-        }
-
         switch ($this->getRecurType()) {
-        case self::RECUR_NONE: return $dict->t("No recurrence");
-        case self::RECUR_DAILY: return $dict->t("Daily");
-        case self::RECUR_WEEKLY: return $dict->t("Weekly");
+        case self::RECUR_NONE: return Horde_Date_Translation::t("No recurrence");
+        case self::RECUR_DAILY: return Horde_Date_Translation::t("Daily");
+        case self::RECUR_WEEKLY: return Horde_Date_Translation::t("Weekly");
         case self::RECUR_MONTHLY_DATE:
-        case self::RECUR_MONTHLY_WEEKDAY: return $dict->t("Monthly");
+        case self::RECUR_MONTHLY_WEEKDAY: return Horde_Date_Translation::t("Monthly");
         case self::RECUR_YEARLY_DATE:
         case self::RECUR_YEARLY_DAY:
-        case self::RECUR_YEARLY_WEEKDAY: return $dict->t("Yearly");
+        case self::RECUR_YEARLY_WEEKDAY: return Horde_Date_Translation::t("Yearly");
         }
     }
 
diff --git a/framework/Date/lib/Horde/Date/Translation.php b/framework/Date/lib/Horde/Date/Translation.php
new file mode 100644 (file)
index 0000000..5bbf66b
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Date
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Date_Translation is the translation wrapper class for Horde_Date.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Date
+ */
+class Horde_Date_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Date';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Date/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Date';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Date/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index bfa2b5a..991a4ed 100644 (file)
@@ -70,45 +70,39 @@ class Horde_Date_Utils
      *                                 more then 1 day old.
      * @param string $time_format      Format to display time if timestamp is 1
      *                                 day old.
-     * @param Horde_Translation $dict  A translation handler implementing
-     *                                 Horde_Translation.
      *
      * @return string  The relative time (i.e. 2 minutes ago)
      */
     public static function relativeDateTime($timestamp, $date_format = '%x',
-                                            $time_format = '%X', $dict = null)
+                                            $time_format = '%X')
     {
-        if (!$dict) {
-            $dict = new Horde_Translation_Gettext('Horde_Date', dirname(__FILE__) . '/../../../locale');
-        }
-
         $delta = time() - $timestamp;
         if ($delta < 60) {
-            return sprintf($dict->ngettext("%d second ago", "%d seconds ago", $delta), $delta);
+            return sprintf(Horde_Date_Translation::ngettext("%d second ago", "%d seconds ago", $delta), $delta);
         }
         $delta = round($delta / 60);
         if ($delta < 60) {
-            return sprintf($dict->ngettext("%d minute ago", "%d minutes ago", $delta), $delta);
+            return sprintf(Horde_Date_Translation::ngettext("%d minute ago", "%d minutes ago", $delta), $delta);
         }
 
         $delta = round($delta / 60);
         if ($delta < 24) {
-            return sprintf($dict->ngettext("%d hour ago", "%d hours ago", $delta), $delta);
+            return sprintf(Horde_Date_Translation::ngettext("%d hour ago", "%d hours ago", $delta), $delta);
         }
 
         if ($delta > 24 && $delta < 48) {
             $date = new Horde_Date($timestamp);
-            return sprintf($dict->t("yesterday at %s"), $date->strftime($time_format));
+            return sprintf(Horde_Date_Translation::t("yesterday at %s"), $date->strftime($time_format));
         }
 
         $delta = round($delta / 24);
         if ($delta < 7) {
-            return sprintf($dict->t("%d days ago"), $delta);
+            return sprintf(Horde_Date_Translation::t("%d days ago"), $delta);
         }
 
         if (round($delta / 7) < 5) {
             $delta = round($delta / 7);
-            return sprintf($dict->ngettext("%d week ago", "%d weeks ago", $delta), $delta);
+            return sprintf(Horde_Date_Translation::ngettext("%d week ago", "%d weeks ago", $delta), $delta);
         }
 
         // Default to the user specified date format.
index 51d281a..e314aa8 100644 (file)
@@ -1,13 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.4.9" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
-http://pear.php.net/dtd/tasks-1.0.xsd
-http://pear.php.net/dtd/package-2.0
-http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Date</name>
  <channel>pear.horde.org</channel>
  <summary>Horde Date package</summary>
- <description>Package for creating and manipulating dates.
- </description>
+ <description>Package for creating and manipulating dates.</description>
  <lead>
   <name>Chuck Hagenbuch</name>
   <user>chuck</user>
@@ -20,7 +16,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <email>jan@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2009-05-29</date>
+ <date>2010-10-22</date>
+ <time>19:03:09</time>
  <version>
   <release>0.3.0</release>
   <api>0.3.0</api>
@@ -30,10 +27,12 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <api>beta</api>
  </stability>
  <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
- <notes>* Add Horde_Date_Repeater
-* Add Horde_Date_Span</notes>
+ <notes>
+* Add Horde_Date_Repeater
+* Add Horde_Date_Span
+ </notes>
  <contents>
-  <dir name="/">
+  <dir baseinstalldir="/" name="/">
    <dir name="lib">
     <dir name="Horde">
      <dir name="Date">
@@ -58,11 +57,287 @@ http://pear.php.net/dtd/package-2.0.xsd">
       <file name="Recurrence.php" role="php" />
       <file name="Repeater.php" role="php" />
       <file name="Span.php" role="php" />
+      <file name="Translation.php" role="php">
+       <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+      </file>
       <file name="Utils.php" role="php" />
      </dir> <!-- /lib/Horde/Date -->
      <file name="Date.php" role="php" />
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.mo" role="data" />
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Date.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Date.pot" role="data" />
+   </dir> <!-- /locale -->
+   <dir name="test">
+    <dir name="Horde">
+     <dir name="Date">
+      <dir name="fixtures">
+       <file name="bug2813.ics" role="test" />
+      </dir> <!-- /test/Horde/Date/fixtures -->
+      <dir name="Repeater">
+       <file name="DayNameTest.php" role="test" />
+       <file name="DayTest.php" role="test" />
+       <file name="HourTest.php" role="test" />
+       <file name="MonthNameTest.php" role="test" />
+       <file name="MonthTest.php" role="test" />
+       <file name="TimeTest.php" role="test" />
+       <file name="WeekendTest.php" role="test" />
+       <file name="WeekTest.php" role="test" />
+       <file name="YearTest.php" role="test" />
+      </dir> <!-- /test/Horde/Date/Repeater -->
+      <file name="AllTests.php" role="test" />
+      <file name="DateTest.php" role="test" />
+      <file name="RecurrenceTest.php" role="test" />
+      <file name="SpanTest.php" role="test" />
+      <file name="UtilsTest.php" role="test" />
+     </dir> <!-- /test/Horde/Date -->
+    </dir> <!-- /test/Horde -->
+   </dir> <!-- /test -->
   </dir> <!-- / -->
  </contents>
  <dependencies>
@@ -77,6 +352,10 @@ http://pear.php.net/dtd/package-2.0.xsd">
     <name>Nls</name>
     <channel>pear.horde.org</channel>
    </package>
+   <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
   </required>
   <optional>
    <package>
@@ -91,27 +370,135 @@ http://pear.php.net/dtd/package-2.0.xsd">
  </dependencies>
  <phprelease>
   <filelist>
-   <install name="lib/Horde/Date.php" as="Horde/Date.php" />
-   <install name="lib/Horde/Date/Recurrence.php" as="Horde/Date/Recurrence.php" />
-   <install name="lib/Horde/Date/Repeater.php" as="Horde/Date/Repeater.php" />
-   <install name="lib/Horde/Date/Repeater/Day.php" as="Horde/Date/Repeater/Day.php" />
-   <install name="lib/Horde/Date/Repeater/DayName.php" as="Horde/Date/Repeater/DayName.php" />
-   <install name="lib/Horde/Date/Repeater/DayPortion.php" as="Horde/Date/Repeater/DayPortion.php" />
-   <install name="lib/Horde/Date/Repeater/Exception.php" as="Horde/Date/Repeater/Exception.php" />
-   <install name="lib/Horde/Date/Repeater/Fortnight.php" as="Horde/Date/Repeater/Fortnight.php" />
-   <install name="lib/Horde/Date/Repeater/Hour.php" as="Horde/Date/Repeater/Hour.php" />
-   <install name="lib/Horde/Date/Repeater/Minute.php" as="Horde/Date/Repeater/Minute.php" />
-   <install name="lib/Horde/Date/Repeater/Month.php" as="Horde/Date/Repeater/Month.php" />
-   <install name="lib/Horde/Date/Repeater/MonthName.php" as="Horde/Date/Repeater/MonthName.php" />
-   <install name="lib/Horde/Date/Repeater/Season.php" as="Horde/Date/Repeater/Season.php" />
-   <install name="lib/Horde/Date/Repeater/SeasonName.php" as="Horde/Date/Repeater/SeasonName.php" />
-   <install name="lib/Horde/Date/Repeater/Second.php" as="Horde/Date/Repeater/Second.php" />
-   <install name="lib/Horde/Date/Repeater/Time.php" as="Horde/Date/Repeater/Time.php" />
-   <install name="lib/Horde/Date/Repeater/Week.php" as="Horde/Date/Repeater/Week.php" />
-   <install name="lib/Horde/Date/Repeater/Weekend.php" as="Horde/Date/Repeater/Weekend.php" />
-   <install name="lib/Horde/Date/Repeater/Year.php" as="Horde/Date/Repeater/Year.php" />
-   <install name="lib/Horde/Date/Span.php" as="Horde/Date/Span.php" />
-   <install name="lib/Horde/Date/Utils.php" as="Horde/Date/Utils.php" />
+   <install as="Horde/Date.php" name="lib/Horde/Date.php" />
+   <install as="Horde/Date/Recurrence.php" name="lib/Horde/Date/Recurrence.php" />
+   <install as="Horde/Date/Repeater.php" name="lib/Horde/Date/Repeater.php" />
+   <install as="Horde/Date/Span.php" name="lib/Horde/Date/Span.php" />
+   <install as="Horde/Date/Translation.php" name="lib/Horde/Date/Translation.php" />
+   <install as="Horde/Date/Utils.php" name="lib/Horde/Date/Utils.php" />
+   <install as="Horde/Date/Repeater/Day.php" name="lib/Horde/Date/Repeater/Day.php" />
+   <install as="Horde/Date/Repeater/DayName.php" name="lib/Horde/Date/Repeater/DayName.php" />
+   <install as="Horde/Date/Repeater/DayPortion.php" name="lib/Horde/Date/Repeater/DayPortion.php" />
+   <install as="Horde/Date/Repeater/Exception.php" name="lib/Horde/Date/Repeater/Exception.php" />
+   <install as="Horde/Date/Repeater/Fortnight.php" name="lib/Horde/Date/Repeater/Fortnight.php" />
+   <install as="Horde/Date/Repeater/Hour.php" name="lib/Horde/Date/Repeater/Hour.php" />
+   <install as="Horde/Date/Repeater/Minute.php" name="lib/Horde/Date/Repeater/Minute.php" />
+   <install as="Horde/Date/Repeater/Month.php" name="lib/Horde/Date/Repeater/Month.php" />
+   <install as="Horde/Date/Repeater/MonthName.php" name="lib/Horde/Date/Repeater/MonthName.php" />
+   <install as="Horde/Date/Repeater/Season.php" name="lib/Horde/Date/Repeater/Season.php" />
+   <install as="Horde/Date/Repeater/SeasonName.php" name="lib/Horde/Date/Repeater/SeasonName.php" />
+   <install as="Horde/Date/Repeater/Second.php" name="lib/Horde/Date/Repeater/Second.php" />
+   <install as="Horde/Date/Repeater/Time.php" name="lib/Horde/Date/Repeater/Time.php" />
+   <install as="Horde/Date/Repeater/Week.php" name="lib/Horde/Date/Repeater/Week.php" />
+   <install as="Horde/Date/Repeater/Weekend.php" name="lib/Horde/Date/Repeater/Weekend.php" />
+   <install as="Horde/Date/Repeater/Year.php" name="lib/Horde/Date/Repeater/Year.php" />
+   <install as="locale/Horde_Date.pot" name="locale/Horde_Date.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Date.po" name="locale/ar/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Date.po" name="locale/bg/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Date.po" name="locale/bs/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Date.po" name="locale/ca/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Date.mo" name="locale/cs/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Date.po" name="locale/cs/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Date.mo" name="locale/da/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Date.po" name="locale/da/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Date.mo" name="locale/de/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Date.po" name="locale/de/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Date.mo" name="locale/el/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Date.po" name="locale/el/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Date.mo" name="locale/en/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Date.po" name="locale/en/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Date.mo" name="locale/es/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Date.po" name="locale/es/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Date.mo" name="locale/et/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Date.po" name="locale/et/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Date.po" name="locale/eu/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Date.po" name="locale/fa/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Date.mo" name="locale/fi/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Date.po" name="locale/fi/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Date.mo" name="locale/fr/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Date.po" name="locale/fr/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Date.po" name="locale/gl/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Date.mo" name="locale/he/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Date.po" name="locale/he/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Date.mo" name="locale/hr/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Date.po" name="locale/hr/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Date.mo" name="locale/hu/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Date.po" name="locale/hu/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Date.po" name="locale/id/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Date.po" name="locale/is/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Date.mo" name="locale/it/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Date.po" name="locale/it/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Date.mo" name="locale/ja/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Date.po" name="locale/ja/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Date.po" name="locale/km/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Date.mo" name="locale/ko/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Date.po" name="locale/ko/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Date.mo" name="locale/lt/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Date.po" name="locale/lt/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Date.mo" name="locale/lv/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Date.po" name="locale/lv/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Date.po" name="locale/mk/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Date.mo" name="locale/nb/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Date.po" name="locale/nb/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Date.mo" name="locale/nl/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Date.po" name="locale/nl/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Date.mo" name="locale/nn/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Date.po" name="locale/nn/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Date.mo" name="locale/pl/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Date.po" name="locale/pl/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Date.mo" name="locale/pt/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Date.po" name="locale/pt/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Date.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Date.po" name="locale/pt_BR/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Date.mo" name="locale/ro/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Date.po" name="locale/ro/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Date.mo" name="locale/ru/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Date.po" name="locale/ru/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Date.mo" name="locale/sk/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Date.po" name="locale/sk/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Date.mo" name="locale/sl/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Date.po" name="locale/sl/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Date.mo" name="locale/sv/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Date.po" name="locale/sv/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Date.mo" name="locale/tr/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Date.po" name="locale/tr/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Date.mo" name="locale/uk/LC_MESSAGES/Horde_Date.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Date.po" name="locale/uk/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Date.po" name="locale/zh_CN/LC_MESSAGES/Horde_Date.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Date.po" name="locale/zh_TW/LC_MESSAGES/Horde_Date.po" />
+   <install as="Horde/Date/AllTests.php" name="test/Horde/Date/AllTests.php" />
+   <install as="Horde/Date/DateTest.php" name="test/Horde/Date/DateTest.php" />
+   <install as="Horde/Date/RecurrenceTest.php" name="test/Horde/Date/RecurrenceTest.php" />
+   <install as="Horde/Date/SpanTest.php" name="test/Horde/Date/SpanTest.php" />
+   <install as="Horde/Date/UtilsTest.php" name="test/Horde/Date/UtilsTest.php" />
+   <install as="Horde/Date/fixtures/bug2813.ics" name="test/Horde/Date/fixtures/bug2813.ics" />
+   <install as="Horde/Date/Repeater/DayNameTest.php" name="test/Horde/Date/Repeater/DayNameTest.php" />
+   <install as="Horde/Date/Repeater/DayTest.php" name="test/Horde/Date/Repeater/DayTest.php" />
+   <install as="Horde/Date/Repeater/HourTest.php" name="test/Horde/Date/Repeater/HourTest.php" />
+   <install as="Horde/Date/Repeater/MonthNameTest.php" name="test/Horde/Date/Repeater/MonthNameTest.php" />
+   <install as="Horde/Date/Repeater/MonthTest.php" name="test/Horde/Date/Repeater/MonthTest.php" />
+   <install as="Horde/Date/Repeater/TimeTest.php" name="test/Horde/Date/Repeater/TimeTest.php" />
+   <install as="Horde/Date/Repeater/WeekendTest.php" name="test/Horde/Date/Repeater/WeekendTest.php" />
+   <install as="Horde/Date/Repeater/WeekTest.php" name="test/Horde/Date/Repeater/WeekTest.php" />
+   <install as="Horde/Date/Repeater/YearTest.php" name="test/Horde/Date/Repeater/YearTest.php" />
   </filelist>
  </phprelease>
+ <changelog>
+  <release>
+   <version>
+    <release>0.3.0</release>
+    <api>0.3.0</api>
+   </version>
+   <stability>
+    <release>beta</release>
+    <api>beta</api>
+   </stability>
+   <date>2010-10-22</date>
+   <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
+   <notes>
+* Add Horde_Date_Repeater
+* Add Horde_Date_Span
+   </notes>
+  </release>
+ </changelog>
 </package>
index 6629ea0..3d213b0 100644 (file)
@@ -20,16 +20,11 @@ class Horde_Exception_NotFound extends Horde_Exception
      * @param mixed $message           The exception message, a PEAR_Error
      *                                 object, or an Exception object.
      * @param integer $code            A numeric error code.
-     * @param Horde_Translation $dict  A translation handler implementing
-     *                                 Horde_Translation.
      */
-    public function __construct($message = null, $code = null, $dict = null)
+    public function __construct($message = null, $code = null)
     {
         if (is_null($message)) {
-            if (!$dict) {
-                $dict = new Horde_Translation_Gettext('Horde_Exception', dirname(__FILE__) . '/../../../locale');
-            }
-            $message = $dict->t("Not Found");
+            $message = Horde_Exception_Translation::t("Not Found");
         }
         parent::__construct($message, $code);
     }
index a50795b..8808ad7 100644 (file)
@@ -20,16 +20,11 @@ class Horde_Exception_PermissionDenied extends Horde_Exception
      * @param mixed $message           The exception message, a PEAR_Error
      *                                 object, or an Exception object.
      * @param integer $code            A numeric error code.
-     * @param Horde_Translation $dict  A translation handler implementing
-     *                                 Horde_Translation.
      */
-  public function __construct($message = null, $code = null, $dict = null)
+    public function __construct($message = null, $code = null)
     {
         if (is_null($message)) {
-            if (!$dict) {
-                $dict = new Horde_Translation_Gettext('Horde_Exception', dirname(__FILE__) . '/../../../locale');
-            }
-            $message = $dict->t("Permission Denied");
+            $message = Horde_Exception_Translation::t("Permission Denied");
         }
         parent::__construct($message, $code);
     }
diff --git a/framework/Exception/lib/Horde/Exception/Translation.php b/framework/Exception/lib/Horde/Exception/Translation.php
new file mode 100644 (file)
index 0000000..a5e58f7
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Exception
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Exception_Translation is the translation wrapper class for Horde_Exception.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Exception
+ */
+class Horde_Exception_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Exception';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Exception/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Exception';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Exception/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index be3f1b9..9cab2c3 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.9.0" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Exception</name>
  <channel>pear.horde.org</channel>
  <summary>Horde Exception Handler</summary>
@@ -22,8 +22,8 @@
   <email>slusarz@horde.org</email>
   <active>yes</active>
  </developer>
- <date>2010-02-11</date>
- <time>12:39:16</time>
+ <date>2010-10-22</date>
+ <time>19:03:02</time>
  <version>
   <release>0.1.0</release>
   <api>0.1.0</api>
       <file name="NotFound.php" role="php" />
       <file name="PermissionDenied.php" role="php" />
       <file name="Prior.php" role="php" />
+      <file name="Translation.php" role="php">
+       <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+      </file>
      </dir> <!-- /lib/Horde/Exception -->
      <file name="Exception.php" role="php" />
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Exception.mo" role="data" />
+      <file name="Horde_Exception.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Exception.pot" role="data" />
+   </dir> <!-- /locale -->
    <dir name="test">
     <dir name="Horde">
      <dir name="Exception">
    <pearinstaller>
     <min>1.5.4</min>
    </pearinstaller>
+   <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
   </required>
   <optional>
    <package>
    <install as="Horde/Exception/NotFound.php" name="lib/Horde/Exception/NotFound.php" />
    <install as="Horde/Exception/PermissionDenied.php" name="lib/Horde/Exception/PermissionDenied.php" />
    <install as="Horde/Exception/Prior.php" name="lib/Horde/Exception/Prior.php" />
+   <install as="Horde/Exception/Translation.php" name="lib/Horde/Exception/Translation.php" />
+   <install as="locale/Horde_Exception.pot" name="locale/Horde_Exception.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Exception.mo" name="locale/ar/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Exception.po" name="locale/ar/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Exception.mo" name="locale/bg/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Exception.po" name="locale/bg/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Exception.mo" name="locale/bs/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Exception.po" name="locale/bs/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Exception.mo" name="locale/ca/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Exception.po" name="locale/ca/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Exception.mo" name="locale/cs/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Exception.po" name="locale/cs/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Exception.mo" name="locale/da/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Exception.po" name="locale/da/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Exception.mo" name="locale/de/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Exception.po" name="locale/de/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Exception.mo" name="locale/el/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Exception.po" name="locale/el/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Exception.mo" name="locale/en/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Exception.po" name="locale/en/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Exception.mo" name="locale/es/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Exception.po" name="locale/es/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Exception.mo" name="locale/et/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Exception.po" name="locale/et/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Exception.mo" name="locale/eu/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Exception.po" name="locale/eu/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Exception.mo" name="locale/fa/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Exception.po" name="locale/fa/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Exception.mo" name="locale/fi/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Exception.po" name="locale/fi/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Exception.mo" name="locale/fr/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Exception.po" name="locale/fr/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Exception.mo" name="locale/gl/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Exception.po" name="locale/gl/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Exception.mo" name="locale/he/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Exception.po" name="locale/he/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Exception.mo" name="locale/hr/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Exception.po" name="locale/hr/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Exception.mo" name="locale/hu/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Exception.po" name="locale/hu/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Exception.mo" name="locale/id/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Exception.po" name="locale/id/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Exception.mo" name="locale/is/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Exception.po" name="locale/is/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Exception.mo" name="locale/it/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Exception.po" name="locale/it/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Exception.mo" name="locale/ja/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Exception.po" name="locale/ja/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Exception.mo" name="locale/km/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Exception.po" name="locale/km/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Exception.mo" name="locale/ko/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Exception.po" name="locale/ko/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Exception.mo" name="locale/lt/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Exception.po" name="locale/lt/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Exception.mo" name="locale/lv/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Exception.po" name="locale/lv/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Exception.mo" name="locale/mk/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Exception.po" name="locale/mk/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Exception.mo" name="locale/nb/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Exception.po" name="locale/nb/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Exception.mo" name="locale/nl/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Exception.po" name="locale/nl/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Exception.mo" name="locale/nn/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Exception.po" name="locale/nn/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Exception.mo" name="locale/pl/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Exception.po" name="locale/pl/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Exception.mo" name="locale/pt/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Exception.po" name="locale/pt/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Exception.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Exception.po" name="locale/pt_BR/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Exception.mo" name="locale/ro/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Exception.po" name="locale/ro/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Exception.mo" name="locale/ru/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Exception.po" name="locale/ru/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Exception.mo" name="locale/sk/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Exception.po" name="locale/sk/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Exception.mo" name="locale/sl/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Exception.po" name="locale/sl/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Exception.mo" name="locale/sv/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Exception.po" name="locale/sv/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Exception.mo" name="locale/tr/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Exception.po" name="locale/tr/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Exception.mo" name="locale/uk/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Exception.po" name="locale/uk/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Exception.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Exception.po" name="locale/zh_CN/LC_MESSAGES/Horde_Exception.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Exception.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Exception.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Exception.po" name="locale/zh_TW/LC_MESSAGES/Horde_Exception.po" />
    <install as="Horde/Exception/AllTests.php" name="test/Horde/Exception/AllTests.php" />
    <install as="Horde/Exception/ExceptionTest.php" name="test/Horde/Exception/ExceptionTest.php" />
    <install as="Horde/Exception/phpunit.xml" name="test/Horde/Exception/phpunit.xml" />
     <release>beta</release>
     <api>beta</api>
    </stability>
-   <date>2010-02-11</date>
+   <date>2010-10-22</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
    <notes>
 * Initial package.
index 7202861..b680f67 100644 (file)
@@ -194,12 +194,11 @@ class Horde_File_Csv
             }
         }
 
-        $dict = new Horde_Translation_Gettext('Horde_File_Csv', dirname(__FILE__) . '/../../../locale');
         if (count($fields) < $conf['fields']) {
-            self::warning(sprintf($dict->t("Wrong number of fields in line %d. Expected %d, found %d."), self::_line(), $conf['fields'], count($fields)));
+            self::warning(sprintf(Horde_File_Csv_Translation::t("Wrong number of fields in line %d. Expected %d, found %d."), self::_line(), $conf['fields'], count($fields)));
             $fields = array_merge($fields, array_fill(0, $conf['fields'] - count($fields), ''));
         } elseif (count($fields) > $conf['fields']) {
-            self::warning(sprintf($dict->t("More fields found in line %d than the expected %d."), self::_line(), $conf['fields']));
+            self::warning(sprintf(Horde_File_Csv_Translation::t("More fields found in line %d than the expected %d."), self::_line(), $conf['fields']));
             array_splice($fields, $conf['fields']);
         }
 
diff --git a/framework/File_Csv/lib/Horde/File/Csv/Translation.php b/framework/File_Csv/lib/Horde/File/Csv/Translation.php
new file mode 100644 (file)
index 0000000..f62abe1
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package File_Csv
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_File_Csv_Translation is the translation wrapper class for Horde_File_Csv.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package File_Csv
+ */
+class Horde_File_Csv_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_File_Csv';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../../locale' : '@data_dir@/File_Csv/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_File_Csv';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../../locale' : '@data_dir@/File_Csv/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index 6abe60b..6227640 100644 (file)
@@ -1,21 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.4.9" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
-http://pear.php.net/dtd/tasks-1.0.xsd
-http://pear.php.net/dtd/package-2.0
-http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>File_Csv</name>
  <channel>pear.horde.org</channel>
  <summary>Reads and writes CSV files</summary>
  <description>This package allows reading and creating of CSV data and files. It
-is a fork of the File_CSV class of PEAR&apos;s File package.
- </description>
+is a fork of the File_CSV class of PEAR&apos;s File package.</description>
  <lead>
   <name>Jan Schneider</name>
   <user>jan</user>
   <email>jan@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2010-02-03</date>
+ <date>2010-10-22</date>
+ <time>19:03:02</time>
  <version>
   <release>0.2.0</release>
   <api>0.2.0</api>
@@ -25,28 +22,365 @@ is a fork of the File_CSV class of PEAR&apos;s File package.
   <api>beta</api>
  </stability>
  <license uri="http://www.php.net/license">PHP</license>
- <notes>* Initial Horde 4 Package
+ <notes>
+* Initial Horde 4 Package
  </notes>
  <contents>
-  <dir name="/">
+  <dir baseinstalldir="/" name="/">
    <dir name="lib">
     <dir name="Horde">
      <dir name="File">
       <dir name="Csv">
        <file name="Exception.php" role="php" />
+       <file name="Translation.php" role="php">
+        <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+       </file>
       </dir> <!-- /lib/Horde/File/Csv -->
       <file name="Csv.php" role="php" />
      </dir> <!-- /lib/Horde/File -->
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_File_Csv.mo" role="data" />
+      <file name="Horde_File_Csv.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_File_Csv.pot" role="data" />
+   </dir> <!-- /locale -->
    <dir name="test">
     <dir name="Horde">
      <dir name="Csv">
+      <file name="001.csv" role="test" />
+      <file name="001.diff" role="test" />
+      <file name="001.exp" role="test" />
+      <file name="001.log" role="test" />
+      <file name="001.out" role="test" />
+      <file name="001.phpt" role="test" />
+      <file name="002.csv" role="test" />
+      <file name="002.diff" role="test" />
+      <file name="002.exp" role="test" />
+      <file name="002.log" role="test" />
+      <file name="002.out" role="test" />
+      <file name="002.phpt" role="test" />
+      <file name="003.csv" role="test" />
+      <file name="003.diff" role="test" />
+      <file name="003.exp" role="test" />
+      <file name="003.log" role="test" />
+      <file name="003.out" role="test" />
+      <file name="003.phpt" role="test" />
+      <file name="004.csv" role="test" />
+      <file name="004.diff" role="test" />
+      <file name="004.exp" role="test" />
+      <file name="004.log" role="test" />
+      <file name="004.out" role="test" />
+      <file name="004.phpt" role="test" />
+      <file name="005.csv" role="test" />
+      <file name="005.diff" role="test" />
+      <file name="005.exp" role="test" />
+      <file name="005.log" role="test" />
+      <file name="005.out" role="test" />
+      <file name="005.phpt" role="test" />
       <file name="bug_3839.csv" role="test" />
+      <file name="bug_3839.diff" role="test" />
+      <file name="bug_3839.exp" role="test" />
+      <file name="bug_3839.log" role="test" />
+      <file name="bug_3839.out" role="test" />
       <file name="bug_3839.phpt" role="test" />
+      <file name="bug_4025.csv" role="test" />
+      <file name="bug_4025.diff" role="test" />
+      <file name="bug_4025.exp" role="test" />
+      <file name="bug_4025.log" role="test" />
+      <file name="bug_4025.out" role="test" />
+      <file name="bug_4025.phpt" role="test" />
+      <file name="bug_6311.csv" role="test" />
+      <file name="bug_6311.diff" role="test" />
+      <file name="bug_6311.exp" role="test" />
+      <file name="bug_6311.log" role="test" />
+      <file name="bug_6311.out" role="test" />
+      <file name="bug_6311.phpt" role="test" />
+      <file name="bug_6370.csv" role="test" />
+      <file name="bug_6370.diff" role="test" />
+      <file name="bug_6370.exp" role="test" />
+      <file name="bug_6370.log" role="test" />
+      <file name="bug_6370.out" role="test" />
+      <file name="bug_6370.phpt" role="test" />
+      <file name="bug_6372.csv" role="test" />
+      <file name="bug_6372.diff" role="test" />
+      <file name="bug_6372.exp" role="test" />
+      <file name="bug_6372.log" role="test" />
+      <file name="bug_6372.out" role="test" />
+      <file name="bug_6372.phpt" role="test" />
+      <file name="columns.diff" role="test" />
+      <file name="columns.exp" role="test" />
+      <file name="columns.log" role="test" />
+      <file name="columns.out" role="test" />
       <file name="columns.phpt" role="test" />
       <file name="columns1.csv" role="test" />
+      <file name="columns2.csv" role="test" />
       <file name="common.php" role="test" />
+      <file name="linebreak.diff" role="test" />
+      <file name="linebreak.exp" role="test" />
+      <file name="linebreak.log" role="test" />
+      <file name="linebreak.out" role="test" />
+      <file name="linebreak.phpt" role="test" />
+      <file name="multiline.diff" role="test" />
+      <file name="multiline.exp" role="test" />
+      <file name="multiline.log" role="test" />
+      <file name="multiline.out" role="test" />
       <file name="multiline.phpt" role="test" />
       <file name="multiline1.csv" role="test" />
       <file name="notrailing_crlf.csv" role="test" />
@@ -56,6 +390,10 @@ is a fork of the File_CSV class of PEAR&apos;s File package.
       <file name="quote3.csv" role="test" />
       <file name="quote4.csv" role="test" />
       <file name="quote5.csv" role="test" />
+      <file name="quotes.diff" role="test" />
+      <file name="quotes.exp" role="test" />
+      <file name="quotes.log" role="test" />
+      <file name="quotes.out" role="test" />
       <file name="quotes.phpt" role="test" />
       <file name="simple_cr.csv" role="test" />
       <file name="simple_crlf.csv" role="test" />
@@ -77,6 +415,10 @@ is a fork of the File_CSV class of PEAR&apos;s File package.
     <name>PEAR</name>
     <channel>pear.php.net</channel>
    </package>
+   <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
    <extension>
     <name>pcre</name>
    </extension>
@@ -84,12 +426,209 @@ is a fork of the File_CSV class of PEAR&apos;s File package.
  </dependencies>
  <phprelease>
   <filelist>
-   <install name="lib/Horde/File/Csv/Exception.php" as="Horde/File/Csv/Exception.php" />
-   <install name="lib/Horde/File/Csv.php" as="Horde/File/Csv.php" />
+   <install as="Horde/File/Csv.php" name="lib/Horde/File/Csv.php" />
+   <install as="Horde/File/Csv/Exception.php" name="lib/Horde/File/Csv/Exception.php" />
+   <install as="Horde/File/Csv/Translation.php" name="lib/Horde/File/Csv/Translation.php" />
+   <install as="locale/Horde_File_Csv.pot" name="locale/Horde_File_Csv.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_File_Csv.mo" name="locale/ar/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_File_Csv.po" name="locale/ar/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_File_Csv.mo" name="locale/bg/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_File_Csv.po" name="locale/bg/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_File_Csv.mo" name="locale/bs/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_File_Csv.po" name="locale/bs/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_File_Csv.mo" name="locale/ca/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_File_Csv.po" name="locale/ca/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_File_Csv.mo" name="locale/cs/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_File_Csv.po" name="locale/cs/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_File_Csv.mo" name="locale/da/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_File_Csv.po" name="locale/da/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_File_Csv.mo" name="locale/de/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_File_Csv.po" name="locale/de/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_File_Csv.mo" name="locale/el/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_File_Csv.po" name="locale/el/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_File_Csv.mo" name="locale/en/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_File_Csv.po" name="locale/en/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_File_Csv.mo" name="locale/es/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_File_Csv.po" name="locale/es/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_File_Csv.mo" name="locale/et/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_File_Csv.po" name="locale/et/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_File_Csv.mo" name="locale/eu/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_File_Csv.po" name="locale/eu/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_File_Csv.mo" name="locale/fa/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_File_Csv.po" name="locale/fa/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_File_Csv.mo" name="locale/fi/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_File_Csv.po" name="locale/fi/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_File_Csv.mo" name="locale/fr/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_File_Csv.po" name="locale/fr/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_File_Csv.mo" name="locale/gl/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_File_Csv.po" name="locale/gl/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_File_Csv.mo" name="locale/he/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_File_Csv.po" name="locale/he/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_File_Csv.mo" name="locale/hr/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_File_Csv.po" name="locale/hr/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_File_Csv.mo" name="locale/hu/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_File_Csv.po" name="locale/hu/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_File_Csv.mo" name="locale/id/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_File_Csv.po" name="locale/id/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_File_Csv.mo" name="locale/is/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_File_Csv.po" name="locale/is/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_File_Csv.mo" name="locale/it/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_File_Csv.po" name="locale/it/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_File_Csv.mo" name="locale/ja/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_File_Csv.po" name="locale/ja/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_File_Csv.mo" name="locale/km/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_File_Csv.po" name="locale/km/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_File_Csv.mo" name="locale/ko/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_File_Csv.po" name="locale/ko/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_File_Csv.mo" name="locale/lt/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_File_Csv.po" name="locale/lt/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_File_Csv.mo" name="locale/lv/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_File_Csv.po" name="locale/lv/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_File_Csv.mo" name="locale/mk/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_File_Csv.po" name="locale/mk/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_File_Csv.mo" name="locale/nb/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_File_Csv.po" name="locale/nb/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_File_Csv.mo" name="locale/nl/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_File_Csv.po" name="locale/nl/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_File_Csv.mo" name="locale/nn/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_File_Csv.po" name="locale/nn/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_File_Csv.mo" name="locale/pl/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_File_Csv.po" name="locale/pl/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_File_Csv.mo" name="locale/pt/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_File_Csv.po" name="locale/pt/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_File_Csv.mo" name="locale/pt_BR/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_File_Csv.po" name="locale/pt_BR/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_File_Csv.mo" name="locale/ro/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_File_Csv.po" name="locale/ro/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_File_Csv.mo" name="locale/ru/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_File_Csv.po" name="locale/ru/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_File_Csv.mo" name="locale/sk/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_File_Csv.po" name="locale/sk/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_File_Csv.mo" name="locale/sl/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_File_Csv.po" name="locale/sl/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_File_Csv.mo" name="locale/sv/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_File_Csv.po" name="locale/sv/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_File_Csv.mo" name="locale/tr/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_File_Csv.po" name="locale/tr/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_File_Csv.mo" name="locale/uk/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_File_Csv.po" name="locale/uk/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_File_Csv.mo" name="locale/zh_CN/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_File_Csv.po" name="locale/zh_CN/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_File_Csv.mo" name="locale/zh_TW/LC_MESSAGES/Horde_File_Csv.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_File_Csv.po" name="locale/zh_TW/LC_MESSAGES/Horde_File_Csv.po" />
+   <install as="Horde/Csv/001.csv" name="test/Horde/Csv/001.csv" />
+   <install as="Horde/Csv/001.diff" name="test/Horde/Csv/001.diff" />
+   <install as="Horde/Csv/001.exp" name="test/Horde/Csv/001.exp" />
+   <install as="Horde/Csv/001.log" name="test/Horde/Csv/001.log" />
+   <install as="Horde/Csv/001.out" name="test/Horde/Csv/001.out" />
+   <install as="Horde/Csv/001.phpt" name="test/Horde/Csv/001.phpt" />
+   <install as="Horde/Csv/002.csv" name="test/Horde/Csv/002.csv" />
+   <install as="Horde/Csv/002.diff" name="test/Horde/Csv/002.diff" />
+   <install as="Horde/Csv/002.exp" name="test/Horde/Csv/002.exp" />
+   <install as="Horde/Csv/002.log" name="test/Horde/Csv/002.log" />
+   <install as="Horde/Csv/002.out" name="test/Horde/Csv/002.out" />
+   <install as="Horde/Csv/002.phpt" name="test/Horde/Csv/002.phpt" />
+   <install as="Horde/Csv/003.csv" name="test/Horde/Csv/003.csv" />
+   <install as="Horde/Csv/003.diff" name="test/Horde/Csv/003.diff" />
+   <install as="Horde/Csv/003.exp" name="test/Horde/Csv/003.exp" />
+   <install as="Horde/Csv/003.log" name="test/Horde/Csv/003.log" />
+   <install as="Horde/Csv/003.out" name="test/Horde/Csv/003.out" />
+   <install as="Horde/Csv/003.phpt" name="test/Horde/Csv/003.phpt" />
+   <install as="Horde/Csv/004.csv" name="test/Horde/Csv/004.csv" />
+   <install as="Horde/Csv/004.diff" name="test/Horde/Csv/004.diff" />
+   <install as="Horde/Csv/004.exp" name="test/Horde/Csv/004.exp" />
+   <install as="Horde/Csv/004.log" name="test/Horde/Csv/004.log" />
+   <install as="Horde/Csv/004.out" name="test/Horde/Csv/004.out" />
+   <install as="Horde/Csv/004.phpt" name="test/Horde/Csv/004.phpt" />
+   <install as="Horde/Csv/005.csv" name="test/Horde/Csv/005.csv" />
+   <install as="Horde/Csv/005.diff" name="test/Horde/Csv/005.diff" />
+   <install as="Horde/Csv/005.exp" name="test/Horde/Csv/005.exp" />
+   <install as="Horde/Csv/005.log" name="test/Horde/Csv/005.log" />
+   <install as="Horde/Csv/005.out" name="test/Horde/Csv/005.out" />
+   <install as="Horde/Csv/005.phpt" name="test/Horde/Csv/005.phpt" />
+   <install as="Horde/Csv/bug_3839.csv" name="test/Horde/Csv/bug_3839.csv" />
+   <install as="Horde/Csv/bug_3839.diff" name="test/Horde/Csv/bug_3839.diff" />
+   <install as="Horde/Csv/bug_3839.exp" name="test/Horde/Csv/bug_3839.exp" />
+   <install as="Horde/Csv/bug_3839.log" name="test/Horde/Csv/bug_3839.log" />
+   <install as="Horde/Csv/bug_3839.out" name="test/Horde/Csv/bug_3839.out" />
+   <install as="Horde/Csv/bug_3839.phpt" name="test/Horde/Csv/bug_3839.phpt" />
+   <install as="Horde/Csv/bug_4025.csv" name="test/Horde/Csv/bug_4025.csv" />
+   <install as="Horde/Csv/bug_4025.diff" name="test/Horde/Csv/bug_4025.diff" />
+   <install as="Horde/Csv/bug_4025.exp" name="test/Horde/Csv/bug_4025.exp" />
+   <install as="Horde/Csv/bug_4025.log" name="test/Horde/Csv/bug_4025.log" />
+   <install as="Horde/Csv/bug_4025.out" name="test/Horde/Csv/bug_4025.out" />
+   <install as="Horde/Csv/bug_4025.phpt" name="test/Horde/Csv/bug_4025.phpt" />
+   <install as="Horde/Csv/bug_6311.csv" name="test/Horde/Csv/bug_6311.csv" />
+   <install as="Horde/Csv/bug_6311.diff" name="test/Horde/Csv/bug_6311.diff" />
+   <install as="Horde/Csv/bug_6311.exp" name="test/Horde/Csv/bug_6311.exp" />
+   <install as="Horde/Csv/bug_6311.log" name="test/Horde/Csv/bug_6311.log" />
+   <install as="Horde/Csv/bug_6311.out" name="test/Horde/Csv/bug_6311.out" />
+   <install as="Horde/Csv/bug_6311.phpt" name="test/Horde/Csv/bug_6311.phpt" />
+   <install as="Horde/Csv/bug_6370.csv" name="test/Horde/Csv/bug_6370.csv" />
+   <install as="Horde/Csv/bug_6370.diff" name="test/Horde/Csv/bug_6370.diff" />
+   <install as="Horde/Csv/bug_6370.exp" name="test/Horde/Csv/bug_6370.exp" />
+   <install as="Horde/Csv/bug_6370.log" name="test/Horde/Csv/bug_6370.log" />
+   <install as="Horde/Csv/bug_6370.out" name="test/Horde/Csv/bug_6370.out" />
+   <install as="Horde/Csv/bug_6370.phpt" name="test/Horde/Csv/bug_6370.phpt" />
+   <install as="Horde/Csv/bug_6372.csv" name="test/Horde/Csv/bug_6372.csv" />
+   <install as="Horde/Csv/bug_6372.diff" name="test/Horde/Csv/bug_6372.diff" />
+   <install as="Horde/Csv/bug_6372.exp" name="test/Horde/Csv/bug_6372.exp" />
+   <install as="Horde/Csv/bug_6372.log" name="test/Horde/Csv/bug_6372.log" />
+   <install as="Horde/Csv/bug_6372.out" name="test/Horde/Csv/bug_6372.out" />
+   <install as="Horde/Csv/bug_6372.phpt" name="test/Horde/Csv/bug_6372.phpt" />
+   <install as="Horde/Csv/columns.diff" name="test/Horde/Csv/columns.diff" />
+   <install as="Horde/Csv/columns.exp" name="test/Horde/Csv/columns.exp" />
+   <install as="Horde/Csv/columns.log" name="test/Horde/Csv/columns.log" />
+   <install as="Horde/Csv/columns.out" name="test/Horde/Csv/columns.out" />
+   <install as="Horde/Csv/columns.phpt" name="test/Horde/Csv/columns.phpt" />
+   <install as="Horde/Csv/columns1.csv" name="test/Horde/Csv/columns1.csv" />
+   <install as="Horde/Csv/columns2.csv" name="test/Horde/Csv/columns2.csv" />
+   <install as="Horde/Csv/common.php" name="test/Horde/Csv/common.php" />
+   <install as="Horde/Csv/linebreak.diff" name="test/Horde/Csv/linebreak.diff" />
+   <install as="Horde/Csv/linebreak.exp" name="test/Horde/Csv/linebreak.exp" />
+   <install as="Horde/Csv/linebreak.log" name="test/Horde/Csv/linebreak.log" />
+   <install as="Horde/Csv/linebreak.out" name="test/Horde/Csv/linebreak.out" />
+   <install as="Horde/Csv/linebreak.phpt" name="test/Horde/Csv/linebreak.phpt" />
+   <install as="Horde/Csv/multiline.diff" name="test/Horde/Csv/multiline.diff" />
+   <install as="Horde/Csv/multiline.exp" name="test/Horde/Csv/multiline.exp" />
+   <install as="Horde/Csv/multiline.log" name="test/Horde/Csv/multiline.log" />
+   <install as="Horde/Csv/multiline.out" name="test/Horde/Csv/multiline.out" />
+   <install as="Horde/Csv/multiline.phpt" name="test/Horde/Csv/multiline.phpt" />
+   <install as="Horde/Csv/multiline1.csv" name="test/Horde/Csv/multiline1.csv" />
+   <install as="Horde/Csv/notrailing_crlf.csv" name="test/Horde/Csv/notrailing_crlf.csv" />
+   <install as="Horde/Csv/notrailing_lf.csv" name="test/Horde/Csv/notrailing_lf.csv" />
+   <install as="Horde/Csv/quote1.csv" name="test/Horde/Csv/quote1.csv" />
+   <install as="Horde/Csv/quote2.csv" name="test/Horde/Csv/quote2.csv" />
+   <install as="Horde/Csv/quote3.csv" name="test/Horde/Csv/quote3.csv" />
+   <install as="Horde/Csv/quote4.csv" name="test/Horde/Csv/quote4.csv" />
+   <install as="Horde/Csv/quote5.csv" name="test/Horde/Csv/quote5.csv" />
+   <install as="Horde/Csv/quotes.diff" name="test/Horde/Csv/quotes.diff" />
+   <install as="Horde/Csv/quotes.exp" name="test/Horde/Csv/quotes.exp" />
+   <install as="Horde/Csv/quotes.log" name="test/Horde/Csv/quotes.log" />
+   <install as="Horde/Csv/quotes.out" name="test/Horde/Csv/quotes.out" />
+   <install as="Horde/Csv/quotes.phpt" name="test/Horde/Csv/quotes.phpt" />
+   <install as="Horde/Csv/simple_cr.csv" name="test/Horde/Csv/simple_cr.csv" />
+   <install as="Horde/Csv/simple_crlf.csv" name="test/Horde/Csv/simple_crlf.csv" />
+   <install as="Horde/Csv/simple_lf.csv" name="test/Horde/Csv/simple_lf.csv" />
   </filelist>
  </phprelease>
  <changelog>
   <release>
+   <version>
+    <release>0.1.0</release>
+    <api>0.1.0</api>
+   </version>
+   <stability>
+    <release>beta</release>
+    <api>beta</api>
+   </stability>
+   <date>2004-01-01</date>
+   <license uri="http://www.php.net/license">PHP</license>
+   <notes>
+First release.
+   </notes>
+  </release>
+  <release>
    <date>2006-05-08</date>
    <time>21:32:31</time>
    <version>
@@ -102,22 +641,23 @@ is a fork of the File_CSV class of PEAR&apos;s File package.
    </stability>
    <license uri="http://www.php.net/license">PHP</license>
    <notes>
-   * Converted to package.xml 2.0 for pear.horde.org
-   * Close Horde bug #6372 (ritaselsky@gmail.com)
+* Converted to package.xml 2.0 for pear.horde.org
+* Close Horde bug #6372 (ritaselsky@gmail.com)
    </notes>
   </release>
   <release>
    <version>
-    <release>0.1.0</release>
-    <api>0.1.0</api>
+    <release>0.2.0</release>
+    <api>0.2.0</api>
    </version>
    <stability>
     <release>beta</release>
     <api>beta</api>
    </stability>
-   <date>2004-01-01</date>
+   <date>2010-10-22</date>
    <license uri="http://www.php.net/license">PHP</license>
-   <notes>First release.
+   <notes>
+* Initial Horde 4 Package
    </notes>
   </release>
  </changelog>
index 51f2b0a..1ae3153 100644 (file)
@@ -39,13 +39,6 @@ class Horde_Form {
     protected $_enctype = null;
     public $_help = false;
 
-    /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
     function Horde_Form(&$vars, $title = '', $name = null, $params = array())
     {
         if (empty($name)) {
@@ -55,13 +48,6 @@ class Horde_Form {
         $this->_vars = &$vars;
         $this->_title = $title;
         $this->_name = $name;
-
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Form', dirname(__FILE__) . '/locale');
-        }
-
     }
 
     function __construct($vars, $title = '', $name = null)
@@ -361,14 +347,14 @@ class Horde_Form {
     {
         if ($submit === true || is_null($submit) || empty($submit)) {
             /* Default to 'Submit'. */
-            $submit = array($this->_dict->t("Submit"));
+            $submit = array(Horde_Form_Translation::t("Submit"));
         } elseif (!is_array($submit)) {
             /* Default to array if not passed. */
             $submit = array($submit);
         }
         /* Only if $reset is strictly true insert default 'Reset'. */
         if ($reset === true) {
-            $reset = $this->_dict->t("Reset");
+            $reset = Horde_Form_Translation::t("Reset");
         }
 
         $this->_submit = $submit;
@@ -629,10 +615,10 @@ class Horde_Form {
             $tokenSource = $GLOBALS['injector']->getInstance('Horde_Token');
             $passedToken = $vars->get($this->_name . '_formToken');
             if (!empty($passedToken) && !$tokenSource->verify($passedToken)) {
-                $this->_errors['_formToken'] = $this->_dict->t("This form has already been processed.");
+                $this->_errors['_formToken'] = Horde_Form_Translation::t("This form has already been processed.");
             }
             if (!$GLOBALS['session']['horde:form_secrets/' . $passedToken]) {
-                $this->_errors['_formSecret'] = $this->_dict->t("Required secret is invalid - potentially malicious request.");
+                $this->_errors['_formSecret'] = Horde_Form_Translation::t("Required secret is invalid - potentially malicious request.");
             }
         }
 
index bff228e..4153cfe 100644 (file)
@@ -41,13 +41,6 @@ class Horde_Form_Renderer {
     var $_attrColumnWidth = '15%';
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Construct a new Horde_Form_Renderer::.
      *
      * @param array $params  This is a hash of renderer-specific parameters.
@@ -55,17 +48,9 @@ class Horde_Form_Renderer {
      *                       - 'varrenderer_driver': specifies the driver
      *                         parameter to Horde_Core_Ui_VarRenderer::factory().
      *                       - 'encode_title': @see $_encodeTitle
-     *                       - 'translation': A translation handler
-     *                                        implementing Horde_Translation.
      */
     function Horde_Form_Renderer($params = array())
     {
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Form', dirname(__FILE__) . '/../locale');
-        }
-
         global $registry;
         if (isset($registry) && is_a($registry, 'Registry')) {
             /* Registry available, so use a pretty image. */
@@ -323,10 +308,10 @@ try {
     function submit($submit = null, $reset = false)
     {
         if (is_null($submit) || empty($submit)) {
-            $submit = $this->_dict->t("Submit");
+            $submit = Horde_Form_Translation::t("Submit");
         }
         if ($reset === true) {
-            $reset = $this->_dict->t("Reset");
+            $reset = Horde_Form_Translation::t("Reset");
         }
         $this->_renderSubmit($submit, $reset);
     }
@@ -341,7 +326,7 @@ try {
             $this->_sectionHeader($name, $extra);
         }
         if ($this->_requiredLegend) {
-            echo '<span class="form-error">' . $this->_requiredMarker . '</span> = ' . $this->_dict->t("Required Field");
+            echo '<span class="form-error">' . $this->_requiredMarker . '</span> = ' . Horde_Form_Translation::t("Required Field");
         }
     }
 
diff --git a/framework/Form/Form/Translation.php b/framework/Form/Form/Translation.php
new file mode 100644 (file)
index 0000000..47dbe86
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Form
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Form_Translation is the translation wrapper class for Horde_Form.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Form
+ */
+class Horde_Form_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Form';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../locale' : '@data_dir@/Form/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Form';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../locale' : '@data_dir@/Form/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index a92f83d..4782799 100644 (file)
@@ -7,29 +7,6 @@
  */
 class Horde_Form_Type
 {
-    /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
-     * Constructor.
-     *
-     * @param array $params  Hash with configuration data. Possible values:
-     *                       - 'translation': A translation handler
-     *                                        implementing Horde_Translation.
-     */
-    public function __construct($params = array())
-    {
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Form', dirname(__FILE__) . '/../locale');
-        }
-    }
-
     function getProperty($property)
     {
         $prop = '_' . $property;
@@ -95,7 +72,7 @@ class Horde_Form_Type_spacer extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Spacer"));
+        return array('name' => Horde_Form_Translation::t("Spacer"));
     }
 
 }
@@ -112,7 +89,7 @@ class Horde_Form_Type_header extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Header"));
+        return array('name' => Horde_Form_Translation::t("Header"));
     }
 
 }
@@ -129,7 +106,7 @@ class Horde_Form_Type_description extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Description"));
+        return array('name' => Horde_Form_Translation::t("Description"));
     }
 
 }
@@ -149,7 +126,7 @@ class Horde_Form_Type_html extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("HTML"));
+        return array('name' => Horde_Form_Translation::t("HTML"));
     }
 
 }
@@ -166,7 +143,7 @@ class Horde_Form_Type_number extends Horde_Form_Type {
     function isValid(&$var, &$vars, $value, &$message)
     {
         if ($var->isRequired() && empty($value) && ((string)(double)$value !== $value)) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Form_Translation::t("This field is required.");
             return false;
         } elseif (empty($value)) {
             return true;
@@ -177,7 +154,7 @@ class Horde_Form_Type_number extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("This field must be a valid number.");
+        $message = Horde_Form_Translation::t("This field must be a valid number.");
         return false;
     }
 
@@ -233,7 +210,7 @@ class Horde_Form_Type_number extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Number"));
+        return array('name' => Horde_Form_Translation::t("Number"));
     }
 
 }
@@ -243,7 +220,7 @@ class Horde_Form_Type_int extends Horde_Form_Type {
     function isValid(&$var, &$vars, $value, &$message)
     {
         if ($var->isRequired() && empty($value) && ((string)(int)$value !== $value)) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Form_Translation::t("This field is required.");
             return false;
         }
 
@@ -251,7 +228,7 @@ class Horde_Form_Type_int extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("This field may only contain integers.");
+        $message = Horde_Form_Translation::t("This field may only contain integers.");
         return false;
     }
 
@@ -260,7 +237,7 @@ class Horde_Form_Type_int extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Integer"));
+        return array('name' => Horde_Form_Translation::t("Integer"));
     }
 
 }
@@ -270,7 +247,7 @@ class Horde_Form_Type_octal extends Horde_Form_Type {
     function isValid(&$var, &$vars, $value, &$message)
     {
         if ($var->isRequired() && empty($value) && ((string)(int)$value !== $value)) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Form_Translation::t("This field is required.");
             return false;
         }
 
@@ -278,7 +255,7 @@ class Horde_Form_Type_octal extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("This field may only contain octal values.");
+        $message = Horde_Form_Translation::t("This field may only contain octal values.");
         return false;
     }
 
@@ -287,7 +264,7 @@ class Horde_Form_Type_octal extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Octal"));
+        return array('name' => Horde_Form_Translation::t("Octal"));
     }
 
 }
@@ -297,7 +274,7 @@ class Horde_Form_Type_intlist extends Horde_Form_Type {
     function isValid(&$var, &$vars, $value, &$message)
     {
         if (empty($value) && $var->isRequired()) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Form_Translation::t("This field is required.");
             return false;
         }
 
@@ -305,7 +282,7 @@ class Horde_Form_Type_intlist extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("This field must be a comma or space separated list of integers");
+        $message = Horde_Form_Translation::t("This field must be a comma or space separated list of integers");
         return false;
     }
 
@@ -314,7 +291,7 @@ class Horde_Form_Type_intlist extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Integer list"));
+        return array('name' => Horde_Form_Translation::t("Integer list"));
     }
 
 }
@@ -357,18 +334,18 @@ class Horde_Form_Type_text extends Horde_Form_Type {
 
         if (!empty($this->_maxlength) && Horde_String::length($value) > $this->_maxlength) {
             $valid = false;
-            $message = sprintf($this->_dict->t("Value is over the maximum length of %d."), $this->_maxlength);
+            $message = sprintf(Horde_Form_Translation::t("Value is over the maximum length of %d."), $this->_maxlength);
         } elseif ($var->isRequired() && empty($this->_regex)) {
             $valid = strlen(trim($value)) > 0;
 
             if (!$valid) {
-                $message = $this->_dict->t("This field is required.");
+                $message = Horde_Form_Translation::t("This field is required.");
             }
         } elseif (!empty($this->_regex)) {
             $valid = preg_match($this->_regex, $value);
 
             if (!$valid) {
-                $message = $this->_dict->t("You must enter a valid value.");
+                $message = Horde_Form_Translation::t("You must enter a valid value.");
             }
         }
 
@@ -391,13 +368,13 @@ class Horde_Form_Type_text extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Text"),
+            'name' => Horde_Form_Translation::t("Text"),
             'params' => array(
-                'regex'     => array('label' => $this->_dict->t("Regex"),
+                'regex'     => array('label' => Horde_Form_Translation::t("Regex"),
                                      'type'  => 'text'),
-                'size'      => array('label' => $this->_dict->t("Size"),
+                'size'      => array('label' => Horde_Form_Translation::t("Size"),
                                      'type'  => 'int'),
-                'maxlength' => array('label' => $this->_dict->t("Maximum length"),
+                'maxlength' => array('label' => Horde_Form_Translation::t("Maximum length"),
                                      'type'  => 'int')));
     }
 
@@ -411,13 +388,13 @@ class Horde_Form_Type_stringlist extends Horde_Form_Type_text {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("String list"),
+            'name' => Horde_Form_Translation::t("String list"),
             'params' => array(
-                'regex'     => array('label' => $this->_dict->t("Regex"),
+                'regex'     => array('label' => Horde_Form_Translation::t("Regex"),
                                      'type'  => 'text'),
-                'size'      => array('label' => $this->_dict->t("Size"),
+                'size'      => array('label' => Horde_Form_Translation::t("Size"),
                                      'type'  => 'int'),
-                'maxlength' => array('label' => $this->_dict->t("Maximum length"),
+                'maxlength' => array('label' => Horde_Form_Translation::t("Maximum length"),
                                      'type'  => 'int')),
         );
     }
@@ -437,13 +414,13 @@ class Horde_Form_Type_stringarray extends Horde_Form_Type_stringlist {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("String list returning an array"),
+            'name' => Horde_Form_Translation::t("String list returning an array"),
             'params' => array(
-                'regex'     => array('label' => $this->_dict->t("Regex"),
+                'regex'     => array('label' => Horde_Form_Translation::t("Regex"),
                                      'type'  => 'text'),
-                'size'      => array('label' => $this->_dict->t("Size"),
+                'size'      => array('label' => Horde_Form_Translation::t("Size"),
                                      'type'  => 'int'),
-                'maxlength' => array('label' => $this->_dict->t("Maximum length"),
+                'maxlength' => array('label' => Horde_Form_Translation::t("Maximum length"),
                                      'type'  => 'int')),
         );
     }
@@ -456,11 +433,11 @@ class Horde_Form_Type_phone extends Horde_Form_Type {
     {
         if (!strlen(trim($value))) {
             if ($var->isRequired()) {
-                $message = $this->_dict->t("This field is required.");
+                $message = Horde_Form_Translation::t("This field is required.");
                 return false;
             }
         } elseif (!preg_match('/^\+?[\d()\-\/. ]*$/', $value)) {
-            $message = $this->_dict->t("You must enter a valid phone number, digits only with an optional '+' for the international dialing prefix.");
+            $message = Horde_Form_Translation::t("You must enter a valid phone number, digits only with an optional '+' for the international dialing prefix.");
             return false;
         }
 
@@ -472,7 +449,7 @@ class Horde_Form_Type_phone extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Phone number"));
+        return array('name' => Horde_Form_Translation::t("Phone number"));
     }
 
 }
@@ -484,7 +461,7 @@ class Horde_Form_Type_cellphone extends Horde_Form_Type_phone {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Mobile phone number"));
+        return array('name' => Horde_Form_Translation::t("Mobile phone number"));
     }
 
 }
@@ -510,11 +487,11 @@ class Horde_Form_Type_ipaddress extends Horde_Form_Type_text {
             }
 
             if (!$valid) {
-                $message = $this->_dict->t("Please enter a valid IP address.");
+                $message = Horde_Form_Translation::t("Please enter a valid IP address.");
             }
         } elseif ($var->isRequired()) {
             $valid = false;
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Form_Translation::t("This field is required.");
         }
 
         return $valid;
@@ -525,7 +502,7 @@ class Horde_Form_Type_ipaddress extends Horde_Form_Type_text {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("IP address"));
+        return array('name' => Horde_Form_Translation::t("IP address"));
     }
 
 }
@@ -540,11 +517,11 @@ class Horde_Form_Type_ip6address extends Horde_Form_Type_text {
             $valid = @inet_pton($value);
 
             if ($valid === false) {
-                $message = $this->_dict->t("Please enter a valid IP address.");
+                $message = Horde_Form_Translation::t("Please enter a valid IP address.");
             }
         } elseif ($var->isRequired()) {
             $valid = false;
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Form_Translation::t("This field is required.");
         }
 
         return true;
@@ -555,7 +532,7 @@ class Horde_Form_Type_ip6address extends Horde_Form_Type_text {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("IPv6 address"));
+        return array('name' => Horde_Form_Translation::t("IPv6 address"));
     }
 
 }
@@ -608,13 +585,13 @@ class Horde_Form_Type_longtext extends Horde_Form_Type_text {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Long text"),
+            'name' => Horde_Form_Translation::t("Long text"),
             'params' => array(
-                'rows'   => array('label' => $this->_dict->t("Number of rows"),
+                'rows'   => array('label' => Horde_Form_Translation::t("Number of rows"),
                                   'type'  => 'int'),
-                'cols'   => array('label' => $this->_dict->t("Number of columns"),
+                'cols'   => array('label' => Horde_Form_Translation::t("Number of columns"),
                                   'type'  => 'int'),
-                'helper' => array('label' => $this->_dict->t("Helpers"),
+                'helper' => array('label' => Horde_Form_Translation::t("Helpers"),
                                   'type'  => 'stringarray')));
     }
 
@@ -638,11 +615,11 @@ class Horde_Form_Type_countedtext extends Horde_Form_Type_longtext {
 
         if ($var->isRequired() && $length <= 0) {
             $valid = false;
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Form_Translation::t("This field is required.");
         } elseif ($length > $this->_chars) {
             $valid = false;
-            $message = sprintf($this->_dict->ngettext("There are too many characters in this field. You have entered %d character; ", "There are too many characters in this field. You have entered %d characters; ", $length), $length)
-                . sprintf($this->_dict->t("you must enter less than %d."), $this->_chars);
+            $message = sprintf(Horde_Form_Translation::ngettext("There are too many characters in this field. You have entered %d character; ", "There are too many characters in this field. You have entered %d characters; ", $length), $length)
+                . sprintf(Horde_Form_Translation::t("you must enter less than %d."), $this->_chars);
         }
 
         return $valid;
@@ -659,13 +636,13 @@ class Horde_Form_Type_countedtext extends Horde_Form_Type_longtext {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Counted text"),
+            'name' => Horde_Form_Translation::t("Counted text"),
             'params' => array(
-                'rows'  => array('label' => $this->_dict->t("Number of rows"),
+                'rows'  => array('label' => Horde_Form_Translation::t("Number of rows"),
                                  'type'  => 'int'),
-                'cols'  => array('label' => $this->_dict->t("Number of columns"),
+                'cols'  => array('label' => Horde_Form_Translation::t("Number of columns"),
                                  'type'  => 'int'),
-                'chars' => array('label' => $this->_dict->t("Number of characters"),
+                'chars' => array('label' => Horde_Form_Translation::t("Number of characters"),
                                  'type'  => 'int')));
     }
 
@@ -770,11 +747,11 @@ class Horde_Form_Type_address extends Horde_Form_Type_longtext {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Address"),
+            'name' => Horde_Form_Translation::t("Address"),
             'params' => array(
-                'rows' => array('label' => $this->_dict->t("Number of rows"),
+                'rows' => array('label' => Horde_Form_Translation::t("Number of rows"),
                                 'type'  => 'int'),
-                'cols' => array('label' => $this->_dict->t("Number of columns"),
+                'cols' => array('label' => Horde_Form_Translation::t("Number of columns"),
                                 'type'  => 'int')));
     }
 
@@ -792,7 +769,7 @@ class Horde_Form_Type_addresslink extends Horde_Form_Type_address {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Address Link"));
+        return array('name' => Horde_Form_Translation::t("Address Link"));
     }
 
 }
@@ -836,15 +813,15 @@ class Horde_Form_Type_pgp extends Horde_Form_Type_longtext {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("PGP Key"),
+            'name' => Horde_Form_Translation::t("PGP Key"),
             'params' => array(
-                'gpg'      => array('label' => $this->_dict->t("Path to the GnuPG binary"),
+                'gpg'      => array('label' => Horde_Form_Translation::t("Path to the GnuPG binary"),
                                     'type'  => 'string'),
-                'temp_dir' => array('label' => $this->_dict->t("A temporary directory"),
+                'temp_dir' => array('label' => Horde_Form_Translation::t("A temporary directory"),
                                     'type'  => 'string'),
-                'rows'     => array('label' => $this->_dict->t("Number of rows"),
+                'rows'     => array('label' => Horde_Form_Translation::t("Number of rows"),
                                     'type'  => 'int'),
-                'cols'     => array('label' => $this->_dict->t("Number of columns"),
+                'cols'     => array('label' => Horde_Form_Translation::t("Number of columns"),
                                     'type'  => 'int')));
     }
 
@@ -881,13 +858,13 @@ class Horde_Form_Type_smime extends Horde_Form_Type_longtext {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("S/MIME Key"),
+            'name' => Horde_Form_Translation::t("S/MIME Key"),
             'params' => array(
-                'temp_dir' => array('label' => $this->_dict->t("A temporary directory"),
+                'temp_dir' => array('label' => Horde_Form_Translation::t("A temporary directory"),
                                     'type'  => 'string'),
-                'rows'     => array('label' => $this->_dict->t("Number of rows"),
+                'rows'     => array('label' => Horde_Form_Translation::t("Number of rows"),
                                     'type'  => 'int'),
-                'cols'     => array('label' => $this->_dict->t("Number of columns"),
+                'cols'     => array('label' => Horde_Form_Translation::t("Number of columns"),
                                     'type'  => 'int')));
     }
 
@@ -906,9 +883,9 @@ class Horde_Form_Type_country extends Horde_Form_Type_enum {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Country drop down list"),
+            'name' => Horde_Form_Translation::t("Country drop down list"),
             'params' => array(
-                'prompt' => array('label' => $this->_dict->t("Prompt text"),
+                'prompt' => array('label' => Horde_Form_Translation::t("Prompt text"),
                                   'type'  => 'text')));
     }
 
@@ -949,7 +926,7 @@ class Horde_Form_Type_file extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("File upload"));
+        return array('name' => Horde_Form_Translation::t("File upload"));
     }
 
 }
@@ -1038,7 +1015,7 @@ class Horde_Form_Type_image extends Horde_Form_Type {
             if (($this->_uploaded->getCode() == UPLOAD_ERR_NO_FILE) &&
                 empty($field['hash'])) {
                 /* Nothing uploaded and no older upload. */
-                $message = $this->_dict->t("This field is required.");
+                $message = Horde_Form_Translation::t("This field is required.");
                 return false;
             } elseif (!empty($field['hash'])) {
                 if ($this->_img && isset($this->_img['error'])) {
@@ -1053,11 +1030,11 @@ class Horde_Form_Type_image extends Horde_Form_Type {
                 return false;
             }
         } elseif (empty($this->_img['img']['size'])) {
-            $message = $this->_dict->t("The image file size could not be determined or it was 0 bytes. The upload may have been interrupted.");
+            $message = Horde_Form_Translation::t("The image file size could not be determined or it was 0 bytes. The upload may have been interrupted.");
             return false;
         } elseif ($this->_max_filesize &&
                   $this->_img['img']['size'] > $this->_max_filesize) {
-            $message = sprintf($this->_dict->t("The image file was larger than the maximum allowed size (%d bytes)."), $this->_max_filesize);
+            $message = sprintf(Horde_Form_Translation::t("The image file was larger than the maximum allowed size (%d bytes)."), $this->_max_filesize);
             return false;
         }
 
@@ -1289,13 +1266,13 @@ class Horde_Form_Type_image extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Image upload"),
+            'name' => Horde_Form_Translation::t("Image upload"),
             'params' => array(
-                'show_upload'   => array('label' => $this->_dict->t("Show upload?"),
+                'show_upload'   => array('label' => Horde_Form_Translation::t("Show upload?"),
                                          'type'  => 'boolean'),
-                'show_keeporig' => array('label' => $this->_dict->t("Show option to keep original?"),
+                'show_keeporig' => array('label' => Horde_Form_Translation::t("Show option to keep original?"),
                                          'type'  => 'boolean'),
-                'max_filesize'  => array('label' => $this->_dict->t("Maximum file size in bytes"),
+                'max_filesize'  => array('label' => Horde_Form_Translation::t("Maximum file size in bytes"),
                                          'type'  => 'int')));
     }
 
@@ -1318,7 +1295,7 @@ class Horde_Form_Type_boolean extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("True or false"));
+        return array('name' => Horde_Form_Translation::t("True or false"));
     }
 
 }
@@ -1349,25 +1326,25 @@ class Horde_Form_Type_link extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Link"),
+            'name' => Horde_Form_Translation::t("Link"),
             'params' => array(
                 'url' => array(
-                    'label' => $this->_dict->t("Link URL"),
+                    'label' => Horde_Form_Translation::t("Link URL"),
                     'type' => 'text'),
                 'text' => array(
-                    'label' => $this->_dict->t("Link text"),
+                    'label' => Horde_Form_Translation::t("Link text"),
                     'type' => 'text'),
                 'target' => array(
-                    'label' => $this->_dict->t("Link target"),
+                    'label' => Horde_Form_Translation::t("Link target"),
                     'type' => 'text'),
                 'onclick' => array(
-                    'label' => $this->_dict->t("Onclick event"),
+                    'label' => Horde_Form_Translation::t("Onclick event"),
                     'type' => 'text'),
                 'title' => array(
-                    'label' => $this->_dict->t("Link title attribute"),
+                    'label' => Horde_Form_Translation::t("Link title attribute"),
                     'type' => 'text'),
                 'accesskey' => array(
-                    'label' => $this->_dict->t("Link access key"),
+                    'label' => Horde_Form_Translation::t("Link access key"),
                     'type' => 'text')));
     }
 
@@ -1446,7 +1423,7 @@ class Horde_Form_Type_email extends Horde_Form_Type {
 
         // Check for too many.
         if (!$this->_allow_multi && count($emails) > 1) {
-            $message = $this->_dict->t("Only one email address is allowed.");
+            $message = Horde_Form_Translation::t("Only one email address is allowed.");
             return false;
         }
 
@@ -1457,7 +1434,7 @@ class Horde_Form_Type_email extends Horde_Form_Type {
                 continue;
             }
             if (!$this->validateEmailAddress($email)) {
-                $message = sprintf($this->_dict->t("\"%s\" is not a valid email address."), $email);
+                $message = sprintf(Horde_Form_Translation::t("\"%s\" is not a valid email address."), $email);
                 return false;
             }
             ++$nonEmpty;
@@ -1465,9 +1442,9 @@ class Horde_Form_Type_email extends Horde_Form_Type {
 
         if (!$nonEmpty && $var->isRequired()) {
             if ($this->_allow_multi) {
-                $message = $this->_dict->t("You must enter at least one email address.");
+                $message = Horde_Form_Translation::t("You must enter at least one email address.");
             } else {
-                $message = $this->_dict->t("You must enter an email address.");
+                $message = Horde_Form_Translation::t("You must enter an email address.");
             }
             return false;
         }
@@ -1614,22 +1591,22 @@ class Horde_Form_Type_email extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Email"),
+            'name' => Horde_Form_Translation::t("Email"),
             'params' => array(
                 'allow_multi' => array(
-                    'label' => $this->_dict->t("Allow multiple addresses?"),
+                    'label' => Horde_Form_Translation::t("Allow multiple addresses?"),
                     'type'  => 'boolean'),
                 'strip_domain' => array(
-                    'label' => $this->_dict->t("Protect address from spammers?"),
+                    'label' => Horde_Form_Translation::t("Protect address from spammers?"),
                     'type' => 'boolean'),
                 'link_compose' => array(
-                    'label' => $this->_dict->t("Link the email address to the compose page when displaying?"),
+                    'label' => Horde_Form_Translation::t("Link the email address to the compose page when displaying?"),
                     'type' => 'boolean'),
                 'link_name' => array(
-                    'label' => $this->_dict->t("The name to use when linking to the compose page"),
+                    'label' => Horde_Form_Translation::t("The name to use when linking to the compose page"),
                     'type' => 'text'),
                 'delimiters' => array(
-                    'label' => $this->_dict->t("Character to split multiple addresses with"),
+                    'label' => Horde_Form_Translation::t("Character to split multiple addresses with"),
                     'type' => 'text'),
             ),
         );
@@ -2067,9 +2044,9 @@ class Horde_Form_Type_matrix extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Field matrix"),
+            'name' => Horde_Form_Translation::t("Field matrix"),
             'params' => array(
-                'cols' => array('label' => $this->_dict->t("Column titles"),
+                'cols' => array('label' => Horde_Form_Translation::t("Column titles"),
                                 'type'  => 'stringarray')));
     }
 
@@ -2080,12 +2057,12 @@ class Horde_Form_Type_emailConfirm extends Horde_Form_Type {
     function isValid(&$var, &$vars, $value, &$message)
     {
         if ($var->isRequired() && empty($value['original'])) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Form_Translation::t("This field is required.");
             return false;
         }
 
         if ($value['original'] != $value['confirm']) {
-            $message = $this->_dict->t("Email addresses must match.");
+            $message = Horde_Form_Translation::t("Email addresses must match.");
             return false;
         } else {
             try {
@@ -2095,11 +2072,11 @@ class Horde_Form_Type_emailConfirm extends Horde_Form_Type {
                 return false;
             }
             if (count($parsed_email) > 1) {
-                $message = $this->_dict->t("Only one email address allowed.");
+                $message = Horde_Form_Translation::t("Only one email address allowed.");
                 return false;
             }
             if (empty($parsed_email[0]->mailbox)) {
-                $message = $this->_dict->t("You did not enter a valid email address.");
+                $message = Horde_Form_Translation::t("You did not enter a valid email address.");
                 return false;
             }
         }
@@ -2112,7 +2089,7 @@ class Horde_Form_Type_emailConfirm extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Email with confirmation"));
+        return array('name' => Horde_Form_Translation::t("Email with confirmation"));
     }
 
 }
@@ -2127,7 +2104,7 @@ class Horde_Form_Type_password extends Horde_Form_Type {
             $valid = strlen(trim($value)) > 0;
 
             if (!$valid) {
-                $message = $this->_dict->t("This field is required.");
+                $message = Horde_Form_Translation::t("This field is required.");
             }
         }
 
@@ -2139,7 +2116,7 @@ class Horde_Form_Type_password extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Password"));
+        return array('name' => Horde_Form_Translation::t("Password"));
     }
 
 }
@@ -2149,12 +2126,12 @@ class Horde_Form_Type_passwordconfirm extends Horde_Form_Type {
     function isValid(&$var, &$vars, $value, &$message)
     {
         if ($var->isRequired() && empty($value['original'])) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Form_Translation::t("This field is required.");
             return false;
         }
 
         if ($value['original'] != $value['confirm']) {
-            $message = $this->_dict->t("Passwords must match.");
+            $message = Horde_Form_Translation::t("Passwords must match.");
             return false;
         }
 
@@ -2172,7 +2149,7 @@ class Horde_Form_Type_passwordconfirm extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Password with confirmation"));
+        return array('name' => Horde_Form_Translation::t("Password with confirmation"));
     }
 
 }
@@ -2187,7 +2164,7 @@ class Horde_Form_Type_enum extends Horde_Form_Type {
         $this->setValues($values);
 
         if ($prompt === true) {
-            $this->_prompt = $this->_dict->t("-- select --");
+            $this->_prompt = Horde_Form_Translation::t("-- select --");
         } else {
             $this->_prompt = $prompt;
         }
@@ -2196,7 +2173,7 @@ class Horde_Form_Type_enum extends Horde_Form_Type {
     function isValid(&$var, &$vars, $value, &$message)
     {
         if ($var->isRequired() && $value == '' && !isset($this->_values[$value])) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Form_Translation::t("This field is required.");
             return false;
         }
 
@@ -2205,7 +2182,7 @@ class Horde_Form_Type_enum extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("Invalid data submitted.");
+        $message = Horde_Form_Translation::t("Invalid data submitted.");
         return false;
     }
 
@@ -2230,11 +2207,11 @@ class Horde_Form_Type_enum extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Drop down list"),
+            'name' => Horde_Form_Translation::t("Drop down list"),
             'params' => array(
-                'values' => array('label' => $this->_dict->t("Values to select from"),
+                'values' => array('label' => Horde_Form_Translation::t("Values to select from"),
                                   'type'  => 'stringarray'),
-                'prompt' => array('label' => $this->_dict->t("Prompt text"),
+                'prompt' => array('label' => Horde_Form_Translation::t("Prompt text"),
                                   'type'  => 'text')));
     }
 
@@ -2250,7 +2227,7 @@ class Horde_Form_Type_mlenum extends Horde_Form_Type {
         $this->_values = &$values;
 
         if ($prompts === true) {
-            $this->_prompts = array($this->_dict->t("-- select --"), $this->_dict->t("-- select --"));
+            $this->_prompts = array(Horde_Form_Translation::t("-- select --"), Horde_Form_Translation::t("-- select --"));
         } elseif (!is_array($prompts)) {
             $this->_prompts = array($prompts, $prompts);
         } else {
@@ -2271,7 +2248,7 @@ class Horde_Form_Type_mlenum extends Horde_Form_Type {
     function isValid(&$var, &$vars, $value, &$message)
     {
         if ($var->isRequired() && (empty($value['1']) || empty($value['2']))) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Form_Translation::t("This field is required.");
             return false;
         }
 
@@ -2280,7 +2257,7 @@ class Horde_Form_Type_mlenum extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("Invalid data submitted.");
+        $message = Horde_Form_Translation::t("Invalid data submitted.");
         return false;
     }
 
@@ -2306,11 +2283,11 @@ class Horde_Form_Type_mlenum extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Multi-level drop down lists"),
+            'name' => Horde_Form_Translation::t("Multi-level drop down lists"),
             'params' => array(
-                'values' => array('label' => $this->_dict->t("Values to select from"),
+                'values' => array('label' => Horde_Form_Translation::t("Values to select from"),
                                   'type'  => 'stringarray'),
-                'prompt' => array('label' => $this->_dict->t("Prompt text"),
+                'prompt' => array('label' => Horde_Form_Translation::t("Prompt text"),
                                   'type'  => 'text')));
     }
 
@@ -2342,7 +2319,7 @@ class Horde_Form_Type_multienum extends Horde_Form_Type_enum {
 
         if (empty($value) && ((string)(int)$value !== $value)) {
             if ($var->isRequired()) {
-                $message = $this->_dict->t("This field is required.");
+                $message = Horde_Form_Translation::t("This field is required.");
                 return false;
             } else {
                 return true;
@@ -2353,7 +2330,7 @@ class Horde_Form_Type_multienum extends Horde_Form_Type_enum {
             return true;
         }
 
-        $message = $this->_dict->t("Invalid data submitted.");
+        $message = Horde_Form_Translation::t("Invalid data submitted.");
         return false;
     }
 
@@ -2363,11 +2340,11 @@ class Horde_Form_Type_multienum extends Horde_Form_Type_enum {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Multiple selection"),
+            'name' => Horde_Form_Translation::t("Multiple selection"),
             'params' => array(
-                'values' => array('label' => $this->_dict->t("Values"),
+                'values' => array('label' => Horde_Form_Translation::t("Values"),
                                   'type'  => 'stringarray'),
-                'size'   => array('label' => $this->_dict->t("Size"),
+                'size'   => array('label' => Horde_Form_Translation::t("Size"),
                                   'type'  => 'int'))
         );
     }
@@ -2398,9 +2375,9 @@ class Horde_Form_Type_radio extends Horde_Form_Type_enum {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Radio selection"),
+            'name' => Horde_Form_Translation::t("Radio selection"),
             'params' => array(
-                'values' => array('label' => $this->_dict->t("Values"),
+                'values' => array('label' => Horde_Form_Translation::t("Values"),
                                   'type'  => 'stringarray')));
     }
 
@@ -2432,7 +2409,7 @@ class Horde_Form_Type_set extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("Invalid data submitted.");
+        $message = Horde_Form_Translation::t("Invalid data submitted.");
         return false;
     }
 
@@ -2447,9 +2424,9 @@ class Horde_Form_Type_set extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Set"),
+            'name' => Horde_Form_Translation::t("Set"),
             'params' => array(
-                'values' => array('label' => $this->_dict->t("Values"),
+                'values' => array('label' => Horde_Form_Translation::t("Values"),
                                   'type'  => 'stringarray')));
     }
 
@@ -2472,7 +2449,7 @@ class Horde_Form_Type_date extends Horde_Form_Type {
             $valid = strlen(trim($value)) > 0;
 
             if (!$valid) {
-                $message = sprintf($this->_dict->t("%s is required"), $var->getHumanName());
+                $message = sprintf(Horde_Form_Translation::t("%s is required"), $var->getHumanName());
             }
         }
 
@@ -2517,15 +2494,15 @@ class Horde_Form_Type_date extends Horde_Form_Type {
                                                    date('j'), date('n'),
                                                    date('Y'));
         if ($ago < -1) {
-            return sprintf($this->_dict->t(" (%s days ago)"), $diffdays);
+            return sprintf(Horde_Form_Translation::t(" (%s days ago)"), $diffdays);
         } elseif ($ago == -1) {
-            return $this->_dict->t(" (yesterday)");
+            return Horde_Form_Translation::t(" (yesterday)");
         } elseif ($ago == 0) {
-            return $this->_dict->t(" (today)");
+            return Horde_Form_Translation::t(" (today)");
         } elseif ($ago == 1) {
-            return $this->_dict->t(" (tomorrow)");
+            return Horde_Form_Translation::t(" (tomorrow)");
         } else {
-            return sprintf($this->_dict->t(" (in %s days)"), $diffdays);
+            return sprintf(Horde_Form_Translation::t(" (in %s days)"), $diffdays);
         }
     }
 
@@ -2546,7 +2523,7 @@ class Horde_Form_Type_date extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Date"));
+        return array('name' => Horde_Form_Translation::t("Date"));
     }
 
 }
@@ -2556,7 +2533,7 @@ class Horde_Form_Type_time extends Horde_Form_Type {
     function isValid(&$var, &$vars, $value, &$message)
     {
         if ($var->isRequired() && empty($value) && ((string)(double)$value !== $value)) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Form_Translation::t("This field is required.");
             return false;
         }
 
@@ -2564,7 +2541,7 @@ class Horde_Form_Type_time extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("This field may only contain numbers and the colon.");
+        $message = Horde_Form_Translation::t("This field may only contain numbers and the colon.");
         return false;
     }
 
@@ -2573,7 +2550,7 @@ class Horde_Form_Type_time extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Time"));
+        return array('name' => Horde_Form_Translation::t("Time"));
     }
 
 }
@@ -2595,10 +2572,10 @@ class Horde_Form_Type_hourminutesecond extends Horde_Form_Type {
         }
 
         if (!$this->emptyTimeArray($time) && !$this->checktime($time['hour'], $time['minute'], $time['second'])) {
-            $message = $this->_dict->t("Please enter a valid time.");
+            $message = Horde_Form_Translation::t("Please enter a valid time.");
             return false;
         } elseif ($this->emptyTimeArray($time) && $var->isRequired()) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Form_Translation::t("This field is required.");
             return false;
         }
 
@@ -2683,9 +2660,9 @@ class Horde_Form_Type_hourminutesecond extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Time selection"),
+            'name' => Horde_Form_Translation::t("Time selection"),
             'params' => array(
-                'seconds' => array('label' => $this->_dict->t("Show seconds?"),
+                'seconds' => array('label' => Horde_Form_Translation::t("Show seconds?"),
                                    'type'  => 'boolean')));
     }
 
@@ -2717,7 +2694,7 @@ class Horde_Form_Type_monthyear extends Horde_Form_Type {
 
         if (!$vars->get($this->getMonthVar($var)) ||
             !$vars->get($this->getYearVar($var))) {
-            $message = $this->_dict->t("Please enter a month and a year.");
+            $message = Horde_Form_Translation::t("Please enter a month and a year.");
             return false;
         }
 
@@ -2739,11 +2716,11 @@ class Horde_Form_Type_monthyear extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Month and year"),
+        return array('name' => Horde_Form_Translation::t("Month and year"),
                      'params' => array(
-                         'start_year' => array('label' => $this->_dict->t("Start year"),
+                         'start_year' => array('label' => Horde_Form_Translation::t("Start year"),
                                                'type'  => 'int'),
-                         'end_year'   => array('label' => $this->_dict->t("End year"),
+                         'end_year'   => array('label' => Horde_Form_Translation::t("End year"),
                                                'type'  => 'int')));
     }
 
@@ -2792,15 +2769,15 @@ class Horde_Form_Type_monthdayyear extends Horde_Form_Type {
         $empty = $this->emptyDateArray($date);
 
         if ($empty == 1 && $var->isRequired()) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Form_Translation::t("This field is required.");
             return false;
         } elseif ($empty == 0 && !checkdate($date['month'],
                                             $date['day'],
                                             $date['year'])) {
-            $message = $this->_dict->t("Please enter a valid date, check the number of days in the month.");
+            $message = Horde_Form_Translation::t("Please enter a valid date, check the number of days in the month.");
             return false;
         } elseif ($empty == -1) {
-            $message = $this->_dict->t("Select all date components.");
+            $message = Horde_Form_Translation::t("Select all date components.");
             return false;
         }
 
@@ -2955,17 +2932,17 @@ class Horde_Form_Type_monthdayyear extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Date selection"),
+            'name' => Horde_Form_Translation::t("Date selection"),
             'params' => array(
-                'start_year' => array('label' => $this->_dict->t("Start year"),
+                'start_year' => array('label' => Horde_Form_Translation::t("Start year"),
                                       'type'  => 'int'),
-                'end_year'   => array('label' => $this->_dict->t("End year"),
+                'end_year'   => array('label' => Horde_Form_Translation::t("End year"),
                                       'type'  => 'int'),
-                'picker'     => array('label' => $this->_dict->t("Show picker?"),
+                'picker'     => array('label' => Horde_Form_Translation::t("Show picker?"),
                                       'type'  => 'boolean'),
-                'format_in'  => array('label' => $this->_dict->t("Storage format"),
+                'format_in'  => array('label' => Horde_Form_Translation::t("Storage format"),
                                       'type'  => 'text'),
-                'format_out' => array('label' => $this->_dict->t("Display format"),
+                'format_out' => array('label' => Horde_Form_Translation::t("Display format"),
                                       'type'  => 'text')));
     }
 
@@ -3023,9 +3000,9 @@ class Horde_Form_Type_datetime extends Horde_Form_Type {
 
             $valid = $mdy_valid && $hms_valid;
             if ($mdy_valid && !$hms_valid) {
-                $message = $this->_dict->t("You must choose a time.");
+                $message = Horde_Form_Translation::t("You must choose a time.");
             } elseif ($hms_valid && !$mdy_valid) {
-                $message = $this->_dict->t("You must choose a date.");
+                $message = Horde_Form_Translation::t("You must choose a date.");
             }
         }
 
@@ -3118,19 +3095,19 @@ class Horde_Form_Type_datetime extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Date and time selection"),
+            'name' => Horde_Form_Translation::t("Date and time selection"),
             'params' => array(
-                'start_year' => array('label' => $this->_dict->t("Start year"),
+                'start_year' => array('label' => Horde_Form_Translation::t("Start year"),
                                       'type'  => 'int'),
-                'end_year'   => array('label' => $this->_dict->t("End year"),
+                'end_year'   => array('label' => Horde_Form_Translation::t("End year"),
                                       'type'  => 'int'),
-                'picker'     => array('label' => $this->_dict->t("Show picker?"),
+                'picker'     => array('label' => Horde_Form_Translation::t("Show picker?"),
                                       'type'  => 'boolean'),
-                'format_in'  => array('label' => $this->_dict->t("Storage format"),
+                'format_in'  => array('label' => Horde_Form_Translation::t("Storage format"),
                                       'type'  => 'text'),
-                'format_out' => array('label' => $this->_dict->t("Display format"),
+                'format_out' => array('label' => Horde_Form_Translation::t("Display format"),
                                       'type'  => 'text'),
-                'seconds'    => array('label' => $this->_dict->t("Show seconds?"),
+                'seconds'    => array('label' => Horde_Form_Translation::t("Show seconds?"),
                                       'type'  => 'boolean')));
     }
 
@@ -3141,7 +3118,7 @@ class Horde_Form_Type_colorpicker extends Horde_Form_Type {
     function isValid(&$var, &$vars, $value, &$message)
     {
         if ($var->isRequired() && empty($value)) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Form_Translation::t("This field is required.");
             return false;
         }
 
@@ -3149,7 +3126,7 @@ class Horde_Form_Type_colorpicker extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("This field must contain a color code in the RGB Hex format, for example '#1234af'.");
+        $message = Horde_Form_Translation::t("This field must contain a color code in the RGB Hex format, for example '#1234af'.");
         return false;
     }
 
@@ -3158,7 +3135,7 @@ class Horde_Form_Type_colorpicker extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Colour selection"));
+        return array('name' => Horde_Form_Translation::t("Colour selection"));
     }
 
 }
@@ -3180,7 +3157,7 @@ class Horde_Form_Type_sound extends Horde_Form_Type {
     function isValid(&$var, &$vars, $value, &$message)
     {
         if ($var->isRequired() && empty($value)) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Form_Translation::t("This field is required.");
             return false;
         }
 
@@ -3188,7 +3165,7 @@ class Horde_Form_Type_sound extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("Please choose a sound.");
+        $message = Horde_Form_Translation::t("Please choose a sound.");
         return false;
     }
 
@@ -3197,7 +3174,7 @@ class Horde_Form_Type_sound extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Sound selection"));
+        return array('name' => Horde_Form_Translation::t("Sound selection"));
     }
 
 }
@@ -3276,13 +3253,13 @@ class Horde_Form_Type_sorter extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Sort order selection"),
+            'name' => Horde_Form_Translation::t("Sort order selection"),
             'params' => array(
-                'values' => array('label' => $this->_dict->t("Values"),
+                'values' => array('label' => Horde_Form_Translation::t("Values"),
                                   'type'  => 'stringarray'),
-                'size'   => array('label' => $this->_dict->t("Size"),
+                'size'   => array('label' => Horde_Form_Translation::t("Size"),
                                   'type'  => 'int'),
-                'header' => array('label' => $this->_dict->t("Header"),
+                'header' => array('label' => Horde_Form_Translation::t("Header"),
                                   'type'  => 'text')));
     }
 
@@ -3323,7 +3300,7 @@ class Horde_Form_Type_selectfiles extends Horde_Form_Type {
     {
         $this->_selectid = $selectid;
         if (is_null($link_text)) {
-            $link_text = $this->_dict->t("Select Files");
+            $link_text = Horde_Form_Translation::t("Select Files");
         }
         $this->_link_text = $link_text;
         $this->_link_style = $link_style;
@@ -3344,15 +3321,15 @@ class Horde_Form_Type_selectfiles extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("File selection"),
+            'name' => Horde_Form_Translation::t("File selection"),
             'params' => array(
-                'selectid'   => array('label' => $this->_dict->t("Id"),
+                'selectid'   => array('label' => Horde_Form_Translation::t("Id"),
                                       'type' => 'text'),
-                'link_text'  => array('label' => $this->_dict->t("Link text"),
+                'link_text'  => array('label' => Horde_Form_Translation::t("Link text"),
                                       'type' => 'text'),
-                'link_style' => array('label' => $this->_dict->t("Link style"),
+                'link_style' => array('label' => Horde_Form_Translation::t("Link style"),
                                       'type' => 'text'),
-                'icon'       => array('label' => $this->_dict->t("Show icon?"),
+                'icon'       => array('label' => Horde_Form_Translation::t("Show icon?"),
                                       'type' => 'boolean')));
     }
 
@@ -3470,19 +3447,19 @@ class Horde_Form_Type_assign extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Assignment columns"),
+            'name' => Horde_Form_Translation::t("Assignment columns"),
             'params' => array(
-                'leftValues'  => array('label' => $this->_dict->t("Left values"),
+                'leftValues'  => array('label' => Horde_Form_Translation::t("Left values"),
                                        'type'  => 'stringarray'),
-                'rightValues' => array('label' => $this->_dict->t("Right values"),
+                'rightValues' => array('label' => Horde_Form_Translation::t("Right values"),
                                        'type'  => 'stringarray'),
-                'leftHeader'  => array('label' => $this->_dict->t("Left header"),
+                'leftHeader'  => array('label' => Horde_Form_Translation::t("Left header"),
                                        'type'  => 'text'),
-                'rightHeader' => array('label' => $this->_dict->t("Right header"),
+                'rightHeader' => array('label' => Horde_Form_Translation::t("Right header"),
                                        'type'  => 'text'),
-                'size'        => array('label' => $this->_dict->t("Size"),
+                'size'        => array('label' => Horde_Form_Translation::t("Size"),
                                        'type'  => 'int'),
-                'width'       => array('label' => $this->_dict->t("Width in CSS units"),
+                'width'       => array('label' => Horde_Form_Translation::t("Width in CSS units"),
                                        'type'  => 'text')));
     }
 
@@ -3493,7 +3470,7 @@ class Horde_Form_Type_creditcard extends Horde_Form_Type {
     function isValid(&$var, &$vars, $value, &$message)
     {
         if (empty($value) && $var->isRequired()) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Form_Translation::t("This field is required.");
             return false;
         }
 
@@ -3501,7 +3478,7 @@ class Horde_Form_Type_creditcard extends Horde_Form_Type {
             /* getCardType() will also verify the checksum. */
             $type = $this->getCardType($value);
             if ($type === false || $type == 'unknown') {
-                $message = $this->_dict->t("This does not seem to be a valid card number.");
+                $message = Horde_Form_Translation::t("This does not seem to be a valid card number.");
                 return false;
             }
         }
@@ -3585,7 +3562,7 @@ class Horde_Form_Type_creditcard extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Credit card number"));
+        return array('name' => Horde_Form_Translation::t("Credit card number"));
     }
 
 }
@@ -3602,7 +3579,7 @@ class Horde_Form_Type_obrowser extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Relationship browser"));
+        return array('name' => Horde_Form_Translation::t("Relationship browser"));
     }
 
 }
@@ -3638,13 +3615,13 @@ class Horde_Form_Type_dblookup extends Horde_Form_Type_enum {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Database lookup"),
+            'name' => Horde_Form_Translation::t("Database lookup"),
             'params' => array(
-                'dsn' => array('label' => $this->_dict->t("DSN (see http://pear.php.net/manual/en/package.database.db.intro-dsn.php)"),
+                'dsn' => array('label' => Horde_Form_Translation::t("DSN (see http://pear.php.net/manual/en/package.database.db.intro-dsn.php)"),
                                'type'  => 'text'),
-                'sql' => array('label' => $this->_dict->t("SQL statement for value lookups"),
+                'sql' => array('label' => Horde_Form_Translation::t("SQL statement for value lookups"),
                                'type'  => 'text'),
-                'prompt' => array('label' => $this->_dict->t("Prompt text"),
+                'prompt' => array('label' => Horde_Form_Translation::t("Prompt text"),
                                   'type'  => 'text'))
             );
     }
@@ -3665,12 +3642,12 @@ class Horde_Form_Type_figlet extends Horde_Form_Type {
     function isValid(&$var, &$vars, $value, &$message)
     {
         if (empty($value) && $var->isRequired()) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Form_Translation::t("This field is required.");
             return false;
         }
 
         if (Horde_String::lower($value) != Horde_String::lower($this->_text)) {
-            $message = $this->_dict->t("The text you entered did not match the text on the screen.");
+            $message = Horde_Form_Translation::t("The text you entered did not match the text on the screen.");
             return false;
         }
 
@@ -3693,11 +3670,11 @@ class Horde_Form_Type_figlet extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Figlet CAPTCHA"),
+            'name' => Horde_Form_Translation::t("Figlet CAPTCHA"),
             'params' => array(
-                'text' => array('label' => $this->_dict->t("Text"),
+                'text' => array('label' => Horde_Form_Translation::t("Text"),
                                 'type'  => 'text'),
-                'font' => array('label' => $this->_dict->t("Figlet font"),
+                'font' => array('label' => Horde_Form_Translation::t("Figlet font"),
                                 'type'  => 'text'))
             );
     }
@@ -3712,11 +3689,11 @@ class Horde_Form_Type_captcha extends Horde_Form_Type_figlet {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Image CAPTCHA"),
+            'name' => Horde_Form_Translation::t("Image CAPTCHA"),
             'params' => array(
-                'text' => array('label' => $this->_dict->t("Text"),
+                'text' => array('label' => Horde_Form_Translation::t("Text"),
                                 'type'  => 'text'),
-                'font' => array('label' => $this->_dict->t("Font"),
+                'font' => array('label' => Horde_Form_Translation::t("Font"),
                                 'type'  => 'text'))
             );
     }
@@ -3742,13 +3719,13 @@ class Horde_Form_Type_category extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Category"));
+        return array('name' => Horde_Form_Translation::t("Category"));
     }
 
     function isValid(&$var, &$vars, $value, &$message)
     {
         if (empty($value) && $var->isRequired()) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Form_Translation::t("This field is required.");
             return false;
         }
 
index 5b7ce3e..4799503 100644 (file)
@@ -31,7 +31,7 @@ class Horde_Form_Type_tableset extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("Invalid data submitted.");
+        $message = Horde_Form_Translation::t("Invalid data submitted.");
         return false;
     }
 
@@ -51,11 +51,11 @@ class Horde_Form_Type_tableset extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Table Set"),
+            'name' => Horde_Form_Translation::t("Table Set"),
             'params' => array(
-                'values' => array('label' => $this->_dict->t("Values"),
+                'values' => array('label' => Horde_Form_Translation::t("Values"),
                                   'type'  => 'stringlist'),
-                'header' => array('label' => $this->_dict->t("Headers"),
+                'header' => array('label' => Horde_Form_Translation::t("Headers"),
                                   'type'  => 'stringlist')),
             );
     }
index 9872f8d..71a3949 100644 (file)
@@ -114,13 +114,6 @@ class Horde_Form_Variable {
     var $_options = array();
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Variable constructor.
      *
      * @param string $humanName      A short description of the variable's
@@ -131,13 +124,9 @@ class Horde_Form_Variable {
      * @param boolean $readonly      Whether this is a readonly variable.
      * @param string $description    A long description of the variable's
      *                               purpose, special instructions, etc.
-     * @param array $params  Hash with configuration data. Possible values:
-     *                       - 'translation': A translation handler
-     *                                        implementing Horde_Translation.
      */
     function Horde_Form_Variable($humanName, $varName, &$type, $required,
-                                 $readonly = false, $description = null,
-                                 $params = array())
+                                 $readonly = false, $description = null)
     {
         $this->humanName   = $humanName;
         $this->varName     = $varName;
@@ -146,12 +135,6 @@ class Horde_Form_Variable {
         $this->readonly    = $readonly;
         $this->description = $description;
         $this->_arrayVal   = (strpos($varName, '[]') !== false);
-
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Form', dirname(__FILE__) . '/../locale');
-        }
     }
 
     /**
@@ -468,7 +451,7 @@ class Horde_Form_Variable {
             $vals = $this->getValue($vars);
             if (!is_array($vals)) {
                 if ($this->required) {
-                    $message = $this->_dict->t("This field is required.");
+                    $message = Horde_Form_Translation::t("This field is required.");
                     return false;
                 } else {
                     return true;
@@ -476,7 +459,7 @@ class Horde_Form_Variable {
             }
             foreach ($vals as $i => $value) {
                 if ($value === null && $this->required) {
-                    $message = $this->_dict->t("This field is required.");
+                    $message = Horde_Form_Translation::t("This field is required.");
                     return false;
                 } else {
                     if (!$this->type->isValid($this, $vars, $value, $message)) {
index 276594c..543895d 100644 (file)
@@ -1,21 +1,17 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.4.9" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
-http://pear.php.net/dtd/tasks-1.0.xsd
-http://pear.php.net/dtd/package-2.0
-http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Form</name>
  <channel>pear.horde.org</channel>
  <summary>Horde Form API</summary>
- <description>The Horde_Form:: package provides form rendering, validation, and other functionality for the Horde Application Framework.
- </description>
+ <description>The Horde_Form:: package provides form rendering, validation, and other functionality for the Horde Application Framework.</description>
  <lead>
   <name>Chuck Hagenbuch</name>
   <user>chuck</user>
   <email>chuck@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2006-05-08</date>
- <time>21:43:34</time>
+ <date>2010-10-22</date>
+ <time>19:03:05</time>
  <version>
   <release>0.0.2</release>
   <api>0.0.2</api>
@@ -25,31 +21,287 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <api>alpha</api>
  </stability>
  <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
- <notes>Converted to package.xml 2.0 for pear.horde.org
+ <notes>
+Converted to package.xml 2.0 for pear.horde.org
  </notes>
  <contents>
-  <dir name="/">
+  <dir baseinstalldir="/Horde" name="/">
    <dir name="Form">
     <dir name="Action">
-     <file baseinstalldir="/Horde" name="ConditionalEnable.php" role="php" />
-     <file baseinstalldir="/Horde" name="ConditionalSetValue.php" role="php" />
-     <file baseinstalldir="/Horde" name="conditional_enable.php" role="php" />
-     <file baseinstalldir="/Horde" name="conditional_setvalue.php" role="php" />
-     <file baseinstalldir="/Horde" name="reload.php" role="php" />
-     <file baseinstalldir="/Horde" name="setcursorpos.php" role="php" />
-     <file baseinstalldir="/Horde" name="submit.php" role="php" />
-     <file baseinstalldir="/Horde" name="sum_fields.php" role="php" />
-     <file baseinstalldir="/Horde" name="updatefield.php" role="php" />
-    </dir> <!-- //Form/Action -->
+     <file name="ConditionalEnable.php" role="php" />
+     <file name="ConditionalSetValue.php" role="php" />
+     <file name="conditional_enable.php" role="php" />
+     <file name="conditional_setvalue.php" role="php" />
+     <file name="reload.php" role="php" />
+     <file name="setcursorpos.php" role="php" />
+     <file name="submit.php" role="php" />
+     <file name="sum_fields.php" role="php" />
+     <file name="updatefield.php" role="php" />
+    </dir> <!-- /Form/Action -->
     <dir name="Type">
-     <file baseinstalldir="/Horde" name="tableset.php" role="php" />
-    </dir> <!-- //Form/Type -->
-    <file baseinstalldir="/Horde" name="Action.php" role="php" />
-    <file baseinstalldir="/Horde" name="Renderer.php" role="php" />
-    <file baseinstalldir="/Horde" name="Type.php" role="php" />
-    <file baseinstalldir="/Horde" name="Variable.php" role="php" />
-   </dir> <!-- //Form -->
-   <file baseinstalldir="/Horde" name="Form.php" role="php" />
+     <file name="tableset.php" role="php" />
+    </dir> <!-- /Form/Type -->
+    <file name="Action.php" role="php" />
+    <file name="Renderer.php" role="php" />
+    <file name="Translation.php" role="php">
+      <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+    </file>
+    <file name="Type.php" role="php" />
+    <file name="Variable.php" role="php" />
+   </dir> <!-- /Form -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.mo" role="data" />
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Form.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Form.pot" role="data" />
+   </dir> <!-- /locale -->
+   <dir name="tests">
+    <file name="Horde_Form_Type_address.phpt" role="data" />
+    <file name="Horde_Form_Type_email.phpt" role="data" />
+   </dir> <!-- /tests -->
+   <file name="Form.php" role="php" />
   </dir> <!-- / -->
  </contents>
  <dependencies>
@@ -69,17 +321,93 @@ http://pear.php.net/dtd/package-2.0.xsd">
     <channel>pear.horde.org</channel>
    </package>
    <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
+   <package>
     <name>Util</name>
     <channel>pear.horde.org</channel>
    </package>
   </required>
-  <optional>
-   <extension>
-    <name>gettext</name>
-   </extension>
-  </optional>
  </dependencies>
- <phprelease />
+ <phprelease>
+  <filelist>
+   <install as="locale/Horde_Form.pot" name="locale/Horde_Form.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Form.po" name="locale/ar/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Form.po" name="locale/bg/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Form.po" name="locale/bs/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Form.po" name="locale/ca/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Form.mo" name="locale/cs/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Form.po" name="locale/cs/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Form.mo" name="locale/da/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Form.po" name="locale/da/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Form.mo" name="locale/de/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Form.po" name="locale/de/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Form.mo" name="locale/el/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Form.po" name="locale/el/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Form.mo" name="locale/en/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Form.po" name="locale/en/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Form.mo" name="locale/es/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Form.po" name="locale/es/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Form.mo" name="locale/et/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Form.po" name="locale/et/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Form.po" name="locale/eu/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Form.po" name="locale/fa/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Form.mo" name="locale/fi/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Form.po" name="locale/fi/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Form.mo" name="locale/fr/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Form.po" name="locale/fr/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Form.po" name="locale/gl/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Form.mo" name="locale/he/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Form.po" name="locale/he/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Form.mo" name="locale/hr/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Form.po" name="locale/hr/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Form.mo" name="locale/hu/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Form.po" name="locale/hu/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Form.po" name="locale/id/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Form.po" name="locale/is/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Form.mo" name="locale/it/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Form.po" name="locale/it/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Form.mo" name="locale/ja/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Form.po" name="locale/ja/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Form.po" name="locale/km/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Form.mo" name="locale/ko/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Form.po" name="locale/ko/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Form.mo" name="locale/lt/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Form.po" name="locale/lt/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Form.mo" name="locale/lv/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Form.po" name="locale/lv/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Form.po" name="locale/mk/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Form.mo" name="locale/nb/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Form.po" name="locale/nb/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Form.mo" name="locale/nl/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Form.po" name="locale/nl/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Form.mo" name="locale/nn/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Form.po" name="locale/nn/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Form.mo" name="locale/pl/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Form.po" name="locale/pl/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Form.mo" name="locale/pt/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Form.po" name="locale/pt/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Form.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Form.po" name="locale/pt_BR/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Form.mo" name="locale/ro/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Form.po" name="locale/ro/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Form.mo" name="locale/ru/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Form.po" name="locale/ru/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Form.mo" name="locale/sk/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Form.po" name="locale/sk/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Form.mo" name="locale/sl/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Form.po" name="locale/sl/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Form.mo" name="locale/sv/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Form.po" name="locale/sv/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Form.mo" name="locale/tr/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Form.po" name="locale/tr/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Form.mo" name="locale/uk/LC_MESSAGES/Horde_Form.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Form.po" name="locale/uk/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Form.po" name="locale/zh_CN/LC_MESSAGES/Horde_Form.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Form.po" name="locale/zh_TW/LC_MESSAGES/Horde_Form.po" />
+  </filelist>
+ </phprelease>
  <changelog>
   <release>
    <version>
@@ -92,7 +420,23 @@ http://pear.php.net/dtd/package-2.0.xsd">
    </stability>
    <date>2003-07-03</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Initial release as a PEAR package
+   <notes>
+Initial release as a PEAR package
+   </notes>
+  </release>
+  <release>
+   <version>
+    <release>0.0.2</release>
+    <api>0.0.2</api>
+   </version>
+   <stability>
+    <release>alpha</release>
+    <api>alpha</api>
+   </stability>
+   <date>2010-10-22</date>
+   <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
+   <notes>
+Converted to package.xml 2.0 for pear.horde.org
    </notes>
   </release>
  </changelog>
diff --git a/framework/Icalendar/lib/Horde/Icalendar/Translation.php b/framework/Icalendar/lib/Horde/Icalendar/Translation.php
new file mode 100644 (file)
index 0000000..e9e2078
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Icalendar
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Icalendar_Translation is the translation wrapper class for Horde_Icalendar.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Icalendar
+ */
+class Horde_Icalendar_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Icalendar';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Icalendar/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Icalendar';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Icalendar/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index d0d4ef9..5d88308 100644 (file)
@@ -118,8 +118,7 @@ class Horde_Icalendar_Vevent extends Horde_Icalendar
         try {
             $organizer = $this->getAttribute('ORGANIZER', true);
         } catch (Horde_Icalendar_Exception $e) {
-            $dict = new Horde_Translation_Gettext('Horde_Icalendar', dirname(__FILE__) . '/../../../locale');
-            return $this->_dict->t("An unknown person");
+            return Horde_Icalendar_Translation::t("An unknown person");
         }
 
         if (isset($organizer[0]['CN'])) {
index 5c16941..60d8ee8 100644 (file)
@@ -16,8 +16,8 @@
   <email>jan@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2010-10-19</date>
- <time>01:30:55</time>
+ <date>2010-10-22</date>
+ <time>19:03:06</time>
  <version>
   <release>0.2.0</release>
   <api>0.2.0</api>
@@ -50,6 +50,9 @@
       <file name="Daylight.php" role="php" />
       <file name="Exception.php" role="php" />
       <file name="Standard.php" role="php" />
+      <file name="Translation.php" role="php">
+       <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+      </file>
       <file name="Valarm.php" role="php" />
       <file name="Vcard.php" role="php" />
       <file name="Vevent.php" role="php" />
     <channel>pear.horde.org</channel>
    </package>
    <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
+   <package>
     <name>Util</name>
     <channel>pear.horde.org</channel>
    </package>
    <install as="Horde/Icalendar/Daylight.php" name="lib/Horde/Icalendar/Daylight.php" />
    <install as="Horde/Icalendar/Exception.php" name="lib/Horde/Icalendar/Exception.php" />
    <install as="Horde/Icalendar/Standard.php" name="lib/Horde/Icalendar/Standard.php" />
+   <install as="Horde/Icalendar/Translation.php" name="lib/Horde/Icalendar/Translation.php" />
    <install as="Horde/Icalendar/Valarm.php" name="lib/Horde/Icalendar/Valarm.php" />
    <install as="Horde/Icalendar/Vcard.php" name="lib/Horde/Icalendar/Vcard.php" />
    <install as="Horde/Icalendar/Vevent.php" name="lib/Horde/Icalendar/Vevent.php" />
    <install as="Horde/Icalendar/Vnote.php" name="lib/Horde/Icalendar/Vnote.php" />
    <install as="Horde/Icalendar/Vtimezone.php" name="lib/Horde/Icalendar/Vtimezone.php" />
    <install as="Horde/Icalendar/Vtodo.php" name="lib/Horde/Icalendar/Vtodo.php" />
+   <install as="locale/Horde_Icalendar.pot" name="locale/Horde_Icalendar.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Icalendar.mo" name="locale/ar/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Icalendar.po" name="locale/ar/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Icalendar.mo" name="locale/bg/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Icalendar.po" name="locale/bg/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Icalendar.mo" name="locale/bs/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Icalendar.po" name="locale/bs/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Icalendar.mo" name="locale/ca/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Icalendar.po" name="locale/ca/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Icalendar.mo" name="locale/cs/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Icalendar.po" name="locale/cs/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Icalendar.mo" name="locale/da/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Icalendar.po" name="locale/da/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Icalendar.mo" name="locale/de/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Icalendar.po" name="locale/de/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Icalendar.mo" name="locale/el/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Icalendar.po" name="locale/el/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Icalendar.mo" name="locale/en/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Icalendar.po" name="locale/en/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Icalendar.mo" name="locale/es/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Icalendar.po" name="locale/es/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Icalendar.mo" name="locale/et/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Icalendar.po" name="locale/et/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Icalendar.mo" name="locale/eu/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Icalendar.po" name="locale/eu/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Icalendar.mo" name="locale/fa/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Icalendar.po" name="locale/fa/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Icalendar.mo" name="locale/fi/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Icalendar.po" name="locale/fi/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Icalendar.mo" name="locale/fr/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Icalendar.po" name="locale/fr/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Icalendar.mo" name="locale/gl/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Icalendar.po" name="locale/gl/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Icalendar.mo" name="locale/he/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Icalendar.po" name="locale/he/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Icalendar.mo" name="locale/hr/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Icalendar.po" name="locale/hr/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Icalendar.mo" name="locale/hu/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Icalendar.po" name="locale/hu/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Icalendar.mo" name="locale/id/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Icalendar.po" name="locale/id/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Icalendar.mo" name="locale/is/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Icalendar.po" name="locale/is/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Icalendar.mo" name="locale/it/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Icalendar.po" name="locale/it/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Icalendar.mo" name="locale/ja/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Icalendar.po" name="locale/ja/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Icalendar.mo" name="locale/km/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Icalendar.po" name="locale/km/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Icalendar.mo" name="locale/ko/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Icalendar.po" name="locale/ko/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Icalendar.mo" name="locale/lt/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Icalendar.po" name="locale/lt/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Icalendar.mo" name="locale/lv/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Icalendar.po" name="locale/lv/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Icalendar.mo" name="locale/mk/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Icalendar.po" name="locale/mk/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Icalendar.mo" name="locale/nb/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Icalendar.po" name="locale/nb/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Icalendar.mo" name="locale/nl/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Icalendar.po" name="locale/nl/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Icalendar.mo" name="locale/nn/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Icalendar.po" name="locale/nn/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Icalendar.mo" name="locale/pl/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Icalendar.po" name="locale/pl/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Icalendar.mo" name="locale/pt/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Icalendar.po" name="locale/pt/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Icalendar.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Icalendar.po" name="locale/pt_BR/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Icalendar.mo" name="locale/ro/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Icalendar.po" name="locale/ro/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Icalendar.mo" name="locale/ru/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Icalendar.po" name="locale/ru/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Icalendar.mo" name="locale/sk/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Icalendar.po" name="locale/sk/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Icalendar.mo" name="locale/sl/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Icalendar.po" name="locale/sl/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Icalendar.mo" name="locale/sv/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Icalendar.po" name="locale/sv/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Icalendar.mo" name="locale/tr/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Icalendar.po" name="locale/tr/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Icalendar.mo" name="locale/uk/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Icalendar.po" name="locale/uk/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Icalendar.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Icalendar.po" name="locale/zh_CN/LC_MESSAGES/Horde_Icalendar.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Icalendar.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Icalendar.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Icalendar.po" name="locale/zh_TW/LC_MESSAGES/Horde_Icalendar.po" />
    <install as="Horde/Icalendar/bug_7423.phpt" name="test/Horde/Icalendar/bug_7423.phpt" />
    <install as="Horde/Icalendar/charset1.phpt" name="test/Horde/Icalendar/charset1.phpt" />
    <install as="Horde/Icalendar/common.php" name="test/Horde/Icalendar/common.php" />
@@ -549,7 +644,7 @@ Lots of improvements, bugfixes and support for more fields and members of the iC
     <release>beta</release>
     <api>beta</api>
    </stability>
-   <date>2010-10-19</date>
+   <date>2010-10-22</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
    <notes>
 * Initial Horde 4 package.
index 995977d..831879e 100644 (file)
@@ -62,79 +62,72 @@ class Horde_Image_Exif
      *
      * @TODO: This should probably be extended by the subclass?
      *
-     * @param Horde_Translation $dict  A translation handler implementing
-     *                                 Horde_Translation.
-     *
      * @return array
      */
-    static public function getCategories($dict = null)
+    static public function getCategories()
     {
-        if (!$dict) {
-            $dict = new Horde_Translation_Gettext('Horde_Image', dirname(__FILE__) . '/../../../locale');
-        }
-
         return array(
             'IPTC' => array(
-                'Keywords' => array('description' => $dict->t("Image keywords"), 'type' => 'array'),
-                'ObjectName' => array('description' => $dict->t("Image Title"), 'type' => 'text'),
-                'By-line' => array('description' => $dict->t("By"), 'type' => 'text'),
-                'CopyrightNotice' => array('description' => $dict->t("Copyright"), 'type' => 'text'),
-                'Caption-Abstract' => array('description' => $dict->t("Caption"), 'type' => 'text'),
+                'Keywords' => array('description' => Horde_Image_Translation::t("Image keywords"), 'type' => 'array'),
+                'ObjectName' => array('description' => Horde_Image_Translation::t("Image Title"), 'type' => 'text'),
+                'By-line' => array('description' => Horde_Image_Translation::t("By"), 'type' => 'text'),
+                'CopyrightNotice' => array('description' => Horde_Image_Translation::t("Copyright"), 'type' => 'text'),
+                'Caption-Abstract' => array('description' => Horde_Image_Translation::t("Caption"), 'type' => 'text'),
             ),
 
             'XMP' => array(
-                'Creator' => array('description' => $dict->t("Image Creator"), 'type' => 'text'),
-                'Rights' => array('description' => $dict->t("Rights"), 'type' => 'text'),
-                'UsageTerms' => array('description' => $dict->t("Usage Terms"), 'type' => 'type'),
+                'Creator' => array('description' => Horde_Image_Translation::t("Image Creator"), 'type' => 'text'),
+                'Rights' => array('description' => Horde_Image_Translation::t("Rights"), 'type' => 'text'),
+                'UsageTerms' => array('description' => Horde_Image_Translation::t("Usage Terms"), 'type' => 'type'),
             ),
 
             'EXIF' => array(
-                'DateTime' => array('description' => $dict->t("Date Photo Modified"), 'type' => 'date'),
-                'DateTimeOriginal' => array('description' => $dict->t("Date Photo Taken"), 'type' => 'date'),
-                'DateTimeDigitized' => array('description' => $dict->t("Date Photo Digitized"), 'type' => 'date'),
-                'GPSLatitude' => array('description' => $dict->t("Latitude"), 'type' => 'gps'),
-                'GPSLongitude' => array('description' => $dict->t("Longitude"), 'type' => 'gps'),
-                'Make' => array('description' => $dict->t("Camera Make"), 'type' => 'text'),
-                'Model' => array('description' => $dict->t("Camera Model"), 'type' => 'text'),
-                'Software' => array('description' => $dict->t("Software Version"), 'type' => 'text'),
-                'ImageType' => array('description' => $dict->t("Photo Type"), 'type' => 'text'),
-                'ImageDescription' => array('description' => $dict->t("Photo Description"), 'type' => 'text'),
-                'FileSize' => array('description' => $dict->t("File Size"), 'type' => 'number'),
-                'ExifImageWidth' => array('description' => $dict->t("Width"), 'type' => 'number'),
-                'ExifImageLength' => array('description' => $dict->t("Height"), 'type' => 'number'),
-                'XResolution' => array('description' => $dict->t("X Resolution"), 'type' => 'number'),
-                'YResolution' => array('description' => $dict->t("Y Resolution"), 'type' => 'number'),
-                'ResolutionUnit' => array('description' => $dict->t("Resolution Unit"), 'type' => 'text'),
-                'ShutterSpeedValue' => array('description' => $dict->t("Shutter Speed"), 'type' => 'number'),
-                'ExposureTime' => array('description' => $dict->t("Exposure"), 'type' => 'number'),
-                'FocalLength' => array('description' => $dict->t("Focal Length"), 'type' => 'number'),
-                'FocalLengthIn35mmFilm' => array('description' => $dict->t("Focal Length (35mm equiv)"), 'type' => 'number'),
-                'ApertureValue' => array('description' => $dict->t("Aperture"), 'type' => 'number'),
-                'FNumber' => array('description' => $dict->t("F-Number"), 'type' => 'number'),
-                'ISOSpeedRatings' => array('description' => $dict->t("ISO Setting"), 'type' => 'number'),
-                'ExposureBiasValue' => array('description' => $dict->t("Exposure Bias"), 'type' => 'number'),
-                'ExposureMode' => array('description' => $dict->t("Exposure Mode"), 'type' => 'number'),
-                'ExposureProgram' => array('description' => $dict->t("Exposure Program"), 'type' => 'number'),
-                'MeteringMode' => array('description' => $dict->t("Metering Mode"), 'type' => 'number'),
-                'Flash' => array('description' => $dict->t("Flash Setting"), 'type' => 'number'),
-                'UserComment' => array('description' => $dict->t("User Comment"), 'type' => 'text'),
-                'ColorSpace' => array('description' => $dict->t("Color Space"), 'type' => 'number'),
-                'SensingMethod' => array('description' => $dict->t("Sensing Method"), 'type' => 'number'),
-                'WhiteBalance' => array('description' => $dict->t("White Balance"), 'type' => 'number'),
-                'Orientation' => array('description' => $dict->t("Camera Orientation"), 'type' => 'number'),
-                'Copyright' => array('description' => $dict->t("Copyright"), 'type' => 'text'),
-                'Artist' => array('description' => $dict->t("Artist"), 'type' => 'text'),
-                'LightSource' => array('description' => $dict->t("Light source"), 'type' => 'number'),
-                'ImageStabalization' => array('description' => $dict->t("Image Stabilization"), 'type' => 'text'),
-                'SceneCaptureType' => array('description' => $dict->t("Scene Type"), 'type' => 'number'),
+                'DateTime' => array('description' => Horde_Image_Translation::t("Date Photo Modified"), 'type' => 'date'),
+                'DateTimeOriginal' => array('description' => Horde_Image_Translation::t("Date Photo Taken"), 'type' => 'date'),
+                'DateTimeDigitized' => array('description' => Horde_Image_Translation::t("Date Photo Digitized"), 'type' => 'date'),
+                'GPSLatitude' => array('description' => Horde_Image_Translation::t("Latitude"), 'type' => 'gps'),
+                'GPSLongitude' => array('description' => Horde_Image_Translation::t("Longitude"), 'type' => 'gps'),
+                'Make' => array('description' => Horde_Image_Translation::t("Camera Make"), 'type' => 'text'),
+                'Model' => array('description' => Horde_Image_Translation::t("Camera Model"), 'type' => 'text'),
+                'Software' => array('description' => Horde_Image_Translation::t("Software Version"), 'type' => 'text'),
+                'ImageType' => array('description' => Horde_Image_Translation::t("Photo Type"), 'type' => 'text'),
+                'ImageDescription' => array('description' => Horde_Image_Translation::t("Photo Description"), 'type' => 'text'),
+                'FileSize' => array('description' => Horde_Image_Translation::t("File Size"), 'type' => 'number'),
+                'ExifImageWidth' => array('description' => Horde_Image_Translation::t("Width"), 'type' => 'number'),
+                'ExifImageLength' => array('description' => Horde_Image_Translation::t("Height"), 'type' => 'number'),
+                'XResolution' => array('description' => Horde_Image_Translation::t("X Resolution"), 'type' => 'number'),
+                'YResolution' => array('description' => Horde_Image_Translation::t("Y Resolution"), 'type' => 'number'),
+                'ResolutionUnit' => array('description' => Horde_Image_Translation::t("Resolution Unit"), 'type' => 'text'),
+                'ShutterSpeedValue' => array('description' => Horde_Image_Translation::t("Shutter Speed"), 'type' => 'number'),
+                'ExposureTime' => array('description' => Horde_Image_Translation::t("Exposure"), 'type' => 'number'),
+                'FocalLength' => array('description' => Horde_Image_Translation::t("Focal Length"), 'type' => 'number'),
+                'FocalLengthIn35mmFilm' => array('description' => Horde_Image_Translation::t("Focal Length (35mm equiv)"), 'type' => 'number'),
+                'ApertureValue' => array('description' => Horde_Image_Translation::t("Aperture"), 'type' => 'number'),
+                'FNumber' => array('description' => Horde_Image_Translation::t("F-Number"), 'type' => 'number'),
+                'ISOSpeedRatings' => array('description' => Horde_Image_Translation::t("ISO Setting"), 'type' => 'number'),
+                'ExposureBiasValue' => array('description' => Horde_Image_Translation::t("Exposure Bias"), 'type' => 'number'),
+                'ExposureMode' => array('description' => Horde_Image_Translation::t("Exposure Mode"), 'type' => 'number'),
+                'ExposureProgram' => array('description' => Horde_Image_Translation::t("Exposure Program"), 'type' => 'number'),
+                'MeteringMode' => array('description' => Horde_Image_Translation::t("Metering Mode"), 'type' => 'number'),
+                'Flash' => array('description' => Horde_Image_Translation::t("Flash Setting"), 'type' => 'number'),
+                'UserComment' => array('description' => Horde_Image_Translation::t("User Comment"), 'type' => 'text'),
+                'ColorSpace' => array('description' => Horde_Image_Translation::t("Color Space"), 'type' => 'number'),
+                'SensingMethod' => array('description' => Horde_Image_Translation::t("Sensing Method"), 'type' => 'number'),
+                'WhiteBalance' => array('description' => Horde_Image_Translation::t("White Balance"), 'type' => 'number'),
+                'Orientation' => array('description' => Horde_Image_Translation::t("Camera Orientation"), 'type' => 'number'),
+                'Copyright' => array('description' => Horde_Image_Translation::t("Copyright"), 'type' => 'text'),
+                'Artist' => array('description' => Horde_Image_Translation::t("Artist"), 'type' => 'text'),
+                'LightSource' => array('description' => Horde_Image_Translation::t("Light source"), 'type' => 'number'),
+                'ImageStabalization' => array('description' => Horde_Image_Translation::t("Image Stabilization"), 'type' => 'text'),
+                'SceneCaptureType' => array('description' => Horde_Image_Translation::t("Scene Type"), 'type' => 'number'),
 
             ),
 
             'COMPOSITE' => array(
-                'LensID' => array('description' => $dict->t("Lens"), 'type' => 'text'),
-                'Aperture' => array('description' => $dict->t("Aperture"), 'type' => 'text'),
-                'DOF' => array('description' => $dict->t("Depth of Field"), 'type' => 'text'),
-                'FOV' => array('description' => $dict->t("Field of View"), 'type' => 'text')
+                'LensID' => array('description' => Horde_Image_Translation::t("Lens"), 'type' => 'text'),
+                'Aperture' => array('description' => Horde_Image_Translation::t("Aperture"), 'type' => 'text'),
+                'DOF' => array('description' => Horde_Image_Translation::t("Depth of Field"), 'type' => 'text'),
+                'FOV' => array('description' => Horde_Image_Translation::t("Field of View"), 'type' => 'text')
             )
         );
     }
@@ -177,20 +170,19 @@ class Horde_Image_Exif
      */
     static protected function _formatExposure($data)
     {
-        $dict = new Horde_Translation_Gettext('Horde_Image', dirname(__FILE__) . '/../../../locale');
         if ($data > 0) {
             if ($data > 1) {
-                return sprintf($dict->t("%d sec"), round($data, 2));
+                return sprintf(Horde_Image_Translation::t("%d sec"), round($data, 2));
             } else {
                 $n = $d = 0;
                 self::_convertToFraction($data, $n, $d);
                 if ($n <> 1) {
-                    return sprintf($dict->t("%4f sec"), $n / $d);
+                    return sprintf(Horde_Image_Translation::t("%4f sec"), $n / $d);
                 }
-                return sprintf($dict->t("%s / %s sec"), $n, $d);
+                return sprintf(Horde_Image_Translation::t("%s / %s sec"), $n, $d);
             }
         } else {
-            return $dict->t("Bulb");
+            return Horde_Image_Translation::t("Bulb");
         }
     }
 
@@ -251,67 +243,66 @@ class Horde_Image_Exif
      */
     static public function getHumanReadable($field, $data)
     {
-        $dict = new Horde_Translation_Gettext('Horde_Image', dirname(__FILE__) . '/../../../locale');
         switch ($field) {
         case 'ExposureMode':
             switch ($data) {
-            case 0: return $dict->t("Auto exposure");
-            case 1: return $dict->t("Manual exposure");
-            case 2: return $dict->t("Auto bracket");
-            default: return $dict->t("Unknown");
+            case 0: return Horde_Image_Translation::t("Auto exposure");
+            case 1: return Horde_Image_Translation::t("Manual exposure");
+            case 2: return Horde_Image_Translation::t("Auto bracket");
+            default: return Horde_Image_Translation::t("Unknown");
             }
 
         case 'ExposureProgram':
             switch ($data) {
-            case 1: return $dict->t("Manual");
-            case 2: return $dict->t("Normal Program");
-            case 3: return $dict->t("Aperture Priority");
-            case 4: return $dict->t("Shutter Priority");
-            case 5: return $dict->t("Creative");
-            case 6: return $dict->t("Action");
-            case 7: return $dict->t("Portrait");
-            case 8: return $dict->t("Landscape");
-            default: return $dict->t("Unknown");
+            case 1: return Horde_Image_Translation::t("Manual");
+            case 2: return Horde_Image_Translation::t("Normal Program");
+            case 3: return Horde_Image_Translation::t("Aperture Priority");
+            case 4: return Horde_Image_Translation::t("Shutter Priority");
+            case 5: return Horde_Image_Translation::t("Creative");
+            case 6: return Horde_Image_Translation::t("Action");
+            case 7: return Horde_Image_Translation::t("Portrait");
+            case 8: return Horde_Image_Translation::t("Landscape");
+            default: return Horde_Image_Translation::t("Unknown");
             }
 
         case 'XResolution':
         case 'YResolution':
             if (strpos($data, '/') !== false) {
                 list($n, $d) = explode('/', $data, 2);
-                return sprintf($dict->t("%d dots per unit"), $n);
+                return sprintf(Horde_Image_Translation::t("%d dots per unit"), $n);
             }
-            return sprintf($dict->t("%d per unit"), $data);
+            return sprintf(Horde_Image_Translation::t("%d per unit"), $data);
 
         case 'ResolutionUnit':
             switch ($data) {
-            case 1: return $dict->t("Pixels");
-            case 2: return $dict->t("Inch");
-            case 3: return $dict->t("Centimeter");
-            default: return $dict->t("Unknown");
+            case 1: return Horde_Image_Translation::t("Pixels");
+            case 2: return Horde_Image_Translation::t("Inch");
+            case 3: return Horde_Image_Translation::t("Centimeter");
+            default: return Horde_Image_Translation::t("Unknown");
             }
 
         case 'ExifImageWidth':
         case 'ExifImageLength':
-            return sprintf($dict->t("%d pixels"), $data);
+            return sprintf(Horde_Image_Translation::t("%d pixels"), $data);
 
         case 'Orientation':
             switch ($data) {
             case 1:
-                return sprintf($dict->t("Normal (O deg)"));
+                return sprintf(Horde_Image_Translation::t("Normal (O deg)"));
             case 2:
-                return sprintf($dict->t("Mirrored"));
+                return sprintf(Horde_Image_Translation::t("Mirrored"));
             case 3:
-                return sprintf($dict->t("Upsidedown"));
+                return sprintf(Horde_Image_Translation::t("Upsidedown"));
             case 4:
-                return sprintf($dict->t("Upsidedown Mirrored"));
+                return sprintf(Horde_Image_Translation::t("Upsidedown Mirrored"));
             case 5:
-                return sprintf($dict->t("90 deg CW Mirrored"));
+                return sprintf(Horde_Image_Translation::t("90 deg CW Mirrored"));
             case 6:
-                return sprintf($dict->t("90 deg CCW"));
+                return sprintf(Horde_Image_Translation::t("90 deg CCW"));
             case 7:
-                return sprintf($dict->t("90 deg CCW Mirrored"));
+                return sprintf(Horde_Image_Translation::t("90 deg CCW Mirrored"));
             case 8:
-                return sprintf($dict->t("90 deg CW"));
+                return sprintf(Horde_Image_Translation::t("90 deg CW"));
             }
             break;
 
@@ -360,9 +351,9 @@ class Horde_Image_Exif
                 if ($d == 0) {
                     return;
                 }
-                return sprintf($dict->t("%d mm"), round($n / $d));
+                return sprintf(Horde_Image_Translation::t("%d mm"), round($n / $d));
             }
-            return sprintf($dict->t("%d mm"), $data);
+            return sprintf(Horde_Image_Translation::t("%d mm"), $data);
 
         case 'FNumber':
             if (strpos($data, '/') !== false) {
@@ -384,48 +375,48 @@ class Horde_Image_Exif
 
         case 'MeteringMode':
             switch ($data) {
-            case 0: return $dict->t("Unknown");
-            case 1: return $dict->t("Average");
-            case 2: return $dict->t("Center Weighted Average");
-            case 3: return $dict->t("Spot");
-            case 4: return $dict->t("Multi-Spot");
-            case 5: return $dict->t("Multi-Segment");
-            case 6: return $dict->t("Partial");
-            case 255: return $dict->t("Other");
-            default: return sprintf($dict->t("Unknown: %s"), $data);
+            case 0: return Horde_Image_Translation::t("Unknown");
+            case 1: return Horde_Image_Translation::t("Average");
+            case 2: return Horde_Image_Translation::t("Center Weighted Average");
+            case 3: return Horde_Image_Translation::t("Spot");
+            case 4: return Horde_Image_Translation::t("Multi-Spot");
+            case 5: return Horde_Image_Translation::t("Multi-Segment");
+            case 6: return Horde_Image_Translation::t("Partial");
+            case 255: return Horde_Image_Translation::t("Other");
+            default: return sprintf(Horde_Image_Translation::t("Unknown: %s"), $data);
             }
             break;
 
         case 'LightSource':
             switch ($data) {;
-            case 1: return $dict->t("Daylight");
-            case 2: return $dict->t("Fluorescent");
-            case 3: return $dict->t("Tungsten");
-            case 4: return $dict->t("Flash");
-            case 9: return $dict->t("Fine weather");
-            case 10: return $dict->t("Cloudy weather");
-            case 11: return $dict->t("Shade");
-            case 12: return $dict->t("Daylight fluorescent");
-            case 13: return $dict->t("Day white fluorescent");
-            case 14: return $dict->t("Cool white fluorescent");
-            case 15: return $dict->t("White fluorescent");
-            case 17: return $dict->t("Standard light A");
-            case 18: return $dict->t("Standard light B");
-            case 19: return $dict->t("Standard light C");
+            case 1: return Horde_Image_Translation::t("Daylight");
+            case 2: return Horde_Image_Translation::t("Fluorescent");
+            case 3: return Horde_Image_Translation::t("Tungsten");
+            case 4: return Horde_Image_Translation::t("Flash");
+            case 9: return Horde_Image_Translation::t("Fine weather");
+            case 10: return Horde_Image_Translation::t("Cloudy weather");
+            case 11: return Horde_Image_Translation::t("Shade");
+            case 12: return Horde_Image_Translation::t("Daylight fluorescent");
+            case 13: return Horde_Image_Translation::t("Day white fluorescent");
+            case 14: return Horde_Image_Translation::t("Cool white fluorescent");
+            case 15: return Horde_Image_Translation::t("White fluorescent");
+            case 17: return Horde_Image_Translation::t("Standard light A");
+            case 18: return Horde_Image_Translation::t("Standard light B");
+            case 19: return Horde_Image_Translation::t("Standard light C");
             case 20: return 'D55';
             case 21: return 'D65';
             case 22: return 'D75';
             case 23: return 'D50';
-            case 24: return $dict->t("ISO studio tungsten");
-            case 255: return $dict->t("other light source");
-            default: return $dict->t("Unknown");
+            case 24: return Horde_Image_Translation::t("ISO studio tungsten");
+            case 255: return Horde_Image_Translation::t("other light source");
+            default: return Horde_Image_Translation::t("Unknown");
             }
 
         case 'WhiteBalance':
             switch ($data) {
-            case 0: return $dict->t("Auto");
-            case 1: return $dict->t("Manual");
-            default: $dict->t("Unknown");
+            case 0: return Horde_Image_Translation::t("Auto");
+            case 1: return Horde_Image_Translation::t("Manual");
+            default: Horde_Image_Translation::t("Unknown");
             }
             break;
 
@@ -434,28 +425,28 @@ class Horde_Image_Exif
 
         case 'Flash':
             switch ($data) {
-            case 0: return $dict->t("No Flash");
-            case 1: return $dict->t("Flash");
-            case 5: return $dict->t("Flash, strobe return light not detected");
-            case 7: return $dict->t("Flash, strobe return light detected");
-            case 9: return $dict->t("Compulsory Flash");
-            case 13: return $dict->t("Compulsory Flash, Return light not detected");
-            case 15: return $dict->t("Compulsory Flash, Return light detected");
-            case 16: return $dict->t("No Flash");
-            case 24: return $dict->t("No Flash");
-            case 25: return $dict->t("Flash, Auto-Mode");
-            case 29: return $dict->t("Flash, Auto-Mode, Return light not detected");
-            case 31: return $dict->t("Flash, Auto-Mode, Return light detected");
-            case 32: return $dict->t("No Flash");
-            case 65: return $dict->t("Red Eye");
-            case 69: return $dict->t("Red Eye, Return light not detected");
-            case 71: return $dict->t("Red Eye, Return light detected");
-            case 73: return $dict->t("Red Eye, Compulsory Flash");
-            case 77: return $dict->t("Red Eye, Compulsory Flash, Return light not detected");
-            case 79: return $dict->t("Red Eye, Compulsory Flash, Return light detected");
-            case 89: return $dict->t("Red Eye, Auto-Mode");
-            case 93: return $dict->t("Red Eye, Auto-Mode, Return light not detected");
-            case 95: return $dict->t("Red Eye, Auto-Mode, Return light detected");
+            case 0: return Horde_Image_Translation::t("No Flash");
+            case 1: return Horde_Image_Translation::t("Flash");
+            case 5: return Horde_Image_Translation::t("Flash, strobe return light not detected");
+            case 7: return Horde_Image_Translation::t("Flash, strobe return light detected");
+            case 9: return Horde_Image_Translation::t("Compulsory Flash");
+            case 13: return Horde_Image_Translation::t("Compulsory Flash, Return light not detected");
+            case 15: return Horde_Image_Translation::t("Compulsory Flash, Return light detected");
+            case 16: return Horde_Image_Translation::t("No Flash");
+            case 24: return Horde_Image_Translation::t("No Flash");
+            case 25: return Horde_Image_Translation::t("Flash, Auto-Mode");
+            case 29: return Horde_Image_Translation::t("Flash, Auto-Mode, Return light not detected");
+            case 31: return Horde_Image_Translation::t("Flash, Auto-Mode, Return light detected");
+            case 32: return Horde_Image_Translation::t("No Flash");
+            case 65: return Horde_Image_Translation::t("Red Eye");
+            case 69: return Horde_Image_Translation::t("Red Eye, Return light not detected");
+            case 71: return Horde_Image_Translation::t("Red Eye, Return light detected");
+            case 73: return Horde_Image_Translation::t("Red Eye, Compulsory Flash");
+            case 77: return Horde_Image_Translation::t("Red Eye, Compulsory Flash, Return light not detected");
+            case 79: return Horde_Image_Translation::t("Red Eye, Compulsory Flash, Return light detected");
+            case 89: return Horde_Image_Translation::t("Red Eye, Auto-Mode");
+            case 93: return Horde_Image_Translation::t("Red Eye, Auto-Mode, Return light not detected");
+            case 95: return Horde_Image_Translation::t("Red Eye, Auto-Mode, Return light detected");
             }
             break;
 
@@ -469,29 +460,29 @@ class Horde_Image_Exif
 
         case 'SensingMethod':
             switch ($data) {
-            case 1: return $dict->t("Not defined");
-            case 2: return $dict->t("One Chip Color Area Sensor");
-            case 3: return $dict->t("Two Chip Color Area Sensor");
-            case 4: return $dict->t("Three Chip Color Area Sensor");
-            case 5: return $dict->t("Color Sequential Area Sensor");
-            case 7: return $dict->t("Trilinear Sensor");
-            case 8: return $dict->t("Color Sequential Linear Sensor");
-            default: return $dict->t("Unknown");
+            case 1: return Horde_Image_Translation::t("Not defined");
+            case 2: return Horde_Image_Translation::t("One Chip Color Area Sensor");
+            case 3: return Horde_Image_Translation::t("Two Chip Color Area Sensor");
+            case 4: return Horde_Image_Translation::t("Three Chip Color Area Sensor");
+            case 5: return Horde_Image_Translation::t("Color Sequential Area Sensor");
+            case 7: return Horde_Image_Translation::t("Trilinear Sensor");
+            case 8: return Horde_Image_Translation::t("Color Sequential Linear Sensor");
+            default: return Horde_Image_Translation::t("Unknown");
             }
 
         case 'ColorSpace':
             switch ($data) {
-            case 1: return $dict->t("sRGB");
-            default: return $dict->t("Uncalibrated");
+            case 1: return Horde_Image_Translation::t("sRGB");
+            default: return Horde_Image_Translation::t("Uncalibrated");
             }
 
         case 'SceneCaptureType':
             switch ($data) {
-            case 0: return $dict->t("Standard");
-            case 1: return $dict->t("Landscape");
-            case 2: return $dict->t("Portrait");
-            case 3: return $dict->t("Night Scene");
-            default: return $dict->t("Unknown");
+            case 0: return Horde_Image_Translation::t("Standard");
+            case 1: return Horde_Image_Translation::t("Landscape");
+            case 2: return Horde_Image_Translation::t("Portrait");
+            case 3: return Horde_Image_Translation::t("Night Scene");
+            default: return Horde_Image_Translation::t("Unknown");
             }
 
         case 'DateTime':
index daab1f1..6198026 100644 (file)
@@ -26,13 +26,6 @@ abstract class Horde_Image_Exif_Base
     protected $_logger;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      *
      * @param $params
      */
@@ -42,12 +35,6 @@ abstract class Horde_Image_Exif_Base
             $this->_logger = $params['logger'];
             unset($params['logger']);
         }
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-            unset($params['translation']);
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Image', dirname(__FILE__) . '/../../../../locale');
-        }
         $this->_params = $params;
     }
 
index 811cc85..bf4e8e0 100644 (file)
@@ -50,7 +50,7 @@ class Horde_Image_Exif_Bundled extends Horde_Image_Exif_Base
         // if the path was invalid, this error will catch it
         if (!$in || !$seek) {
             $result['Errors'] = 1;
-            $result['Error'][$result['Errors']] = $this->_dict->t("The file could not be opened.");
+            $result['Error'][$result['Errors']] = Horde_Image_Translation::t("The file could not be opened.");
             return $result;
         }
 
@@ -229,7 +229,7 @@ class Horde_Image_Exif_Bundled extends Horde_Image_Exif_Base
         $v = fseek($in, $globalOffset + $ExitOffset);
         if ($v == -1) {
             $result['Errors'] = $result['Errors'] + 1;
-            $result['Error'][$result['Errors']] = $this->_dict->t("Couldnt Find SubIFD");
+            $result['Error'][$result['Errors']] = Horde_Image_Translation::t("Couldnt Find SubIFD");
         }
 
         //===========================================================
@@ -248,7 +248,7 @@ class Horde_Image_Exif_Bundled extends Horde_Image_Exif_Base
             }
         } else {
             $result['Errors'] = $result['Errors'] + 1;
-            $result['Error'][$result['Errors']] = $this->_dict->t("Illegal size for SubIFD");
+            $result['Error'][$result['Errors']] = Horde_Image_Translation::t("Illegal size for SubIFD");
         }
 
         // Add the 35mm equivalent focal length:
@@ -266,7 +266,7 @@ class Horde_Image_Exif_Bundled extends Horde_Image_Exif_Base
         $v = fseek($in, $globalOffset + $result['IFD1Offset']);
         if ($v == -1) {
             $result['Errors'] = $result['Errors'] + 1;
-            $result['Error'][$result['Errors']] = $this->_dict->t("Couldnt Find IFD1");
+            $result['Error'][$result['Errors']] = Horde_Image_Translation::t("Couldnt Find IFD1");
         }
 
         //===========================================================
@@ -285,7 +285,7 @@ class Horde_Image_Exif_Bundled extends Horde_Image_Exif_Base
             }
         } else {
             $result['Errors'] = $result['Errors'] + 1;
-            $result['Error'][$result['Errors']] = $this->_dict->t("Illegal size for IFD1");
+            $result['Error'][$result['Errors']] = Horde_Image_Translation::t("Illegal size for IFD1");
         }
 
         // include the thumbnail raw data...
@@ -312,7 +312,7 @@ class Horde_Image_Exif_Bundled extends Horde_Image_Exif_Base
         $v = fseek($in, $globalOffset + $result['SubIFD']['ExifInteroperabilityOffset']);
         if ($v == -1) {
             $result['Errors'] = $result['Errors'] + 1;
-            $result['Error'][$result['Errors']] = $this->_dict->t("Couldnt Find InteroperabilityIFD");
+            $result['Error'][$result['Errors']] = Horde_Image_Translation::t("Couldnt Find InteroperabilityIFD");
         }
 
         //===========================================================
@@ -331,7 +331,7 @@ class Horde_Image_Exif_Bundled extends Horde_Image_Exif_Base
             }
         } else {
             $result['Errors'] = $result['Errors'] + 1;
-            $result['Error'][$result['Errors']] = $this->_dict->t("Illegal size for InteroperabilityIFD");
+            $result['Error'][$result['Errors']] = Horde_Image_Translation::t("Illegal size for InteroperabilityIFD");
         }
 
         fclose($in);
@@ -410,22 +410,22 @@ class Horde_Image_Exif_Bundled extends Horde_Image_Exif_Base
             $make = Horde_String::lower($result['IFD0']['Make']);
             $parser = null;
             if (strpos($make, 'nikon') !== false) {
-                $parser = new Horde_Image_Exif_Parser_Nikon($this->_dict);
+                $parser = new Horde_Image_Exif_Parser_Nikon();
                 $result[$ifd_name]['KnownMaker'] = 1;
             } elseif (strpos($make, 'olympus') !== false) {
-                $parser = new Horde_Image_Exif_Parser_Olympus($this->_dict);
+                $parser = new Horde_Image_Exif_Parser_Olympus();
                 $result[$ifd_name]['KnownMaker'] = 1;
             } elseif (strpos($make, 'canon') !== false) {
-                $parser = new Horde_Image_Exif_Parser_Canon($this->_dict);
+                $parser = new Horde_Image_Exif_Parser_Canon();
                 $result[$ifd_name]['KnownMaker'] = 1;
             } elseif (strpos($make, 'fujifilm') !== false) {
-                $parser = new Horde_Image_Exif_Parser_Fujifilm($this->_dict);
+                $parser = new Horde_Image_Exif_Parser_Fujifilm();
                 $result[$ifd_name]['KnownMaker'] = 1;
             } elseif (strpos($make, 'sanyo') !== false) {
-                $parser = new Horde_Image_Exif_Parser_Sanyo($this->_dict);
+                $parser = new Horde_Image_Exif_Parser_Sanyo();
                 $result[$ifd_name]['KnownMaker'] = 1;
             } elseif (strpos($make, 'panasonic') !== false) {
-                $parser = new Horde_Image_Exif_Parser_Panasonic($this->_dict);
+                $parser = new Horde_Image_Exif_Parser_Panasonic();
                 $result[$ifd_name]['KnownMaker'] = 1;
             } else {
                 $result[$ifd_name]['KnownMaker'] = 0;
@@ -438,7 +438,7 @@ class Horde_Image_Exif_Bundled extends Horde_Image_Exif_Base
         case 'GPSInfoOffset':
             $formated_data = $this->_formatData($type, $tag, $intel, $data);
             $result[$ifd_name]['GPSInfo'] = $formated_data;
-            $parser = new Horde_Image_Exif_Parser_Gps($this->_dict);
+            $parser = new Horde_Image_Exif_Parser_Gps();
             $parser->parse($data, $result, $formated_data, $seek, $globalOffset);
             break;
 
@@ -797,7 +797,7 @@ class Horde_Image_Exif_Bundled extends Horde_Image_Exif_Base
         case 'UNDEFINED':
             // ExifVersion,FlashPixVersion,InteroperabilityVersion
             if ($tag == '9000' || $tag == 'a000' || $tag == '0002') {
-                $data = sprintf($this->_dict->t("version %d"), $data / 100);
+                $data = sprintf(Horde_Image_Translation::t("version %d"), $data / 100);
             }
             break;
 
index 71ec729..5296626 100644 (file)
@@ -6,28 +6,6 @@
 class Horde_Image_Exif_Parser_Base
 {
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
-     * Constructor.
-     *
-     * @param Horde_Translation $dict  A translation handler implementing
-     *                                 Horde_Translation.
-     */
-    public function __construct($dict = null)
-    {
-        if ($dict) {
-            $this->_dict = $dict;
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Image', dirname(__FILE__) . '/../../../../../locale');
-        }
-    }
-
-    /**
      *
      * @param $type
      * @param $size
index 1e3a96e..dcf424b 100644 (file)
@@ -42,7 +42,7 @@ class Horde_Image_Exif_Parser_Canon extends Horde_Image_Exif_Parser_Base
         case '0009': $tag = 'OwnerName'; break;
         case '000c': $tag = 'CameraSerialNumber'; break;
         case '000f': $tag = 'CustomFunctions'; break;
-        default:     $tag = sprintf($this->_dict->t("Unknown: (%s)"), $tag); break;
+        default:     $tag = sprintf(Horde_Image_Translation::t("Unknown: (%s)"), $tag); break;
         }
 
         return $tag;
@@ -102,57 +102,57 @@ class Horde_Image_Exif_Parser_Canon extends Horde_Image_Exif_Parser_Base
                 $result['Macro'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                 $place += 4;//1
                 switch($result['Macro']) {
-                case 1: $result['Macro'] = $this->_dict->t("Macro"); break;
-                case 2: $result['Macro'] = $this->_dict->t("Normal"); break;
-                default: $result['Macro'] = $this->_dict->t("Unknown");
+                case 1: $result['Macro'] = Horde_Image_Translation::t("Macro"); break;
+                case 2: $result['Macro'] = Horde_Image_Translation::t("Normal"); break;
+                default: $result['Macro'] = Horde_Image_Translation::t("Unknown");
                 }
                 $result['SelfTimer'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                 $place += 4;//2
                 switch($result['SelfTimer']) {
-                case 0: $result['SelfTimer'] = $this->_dict->t("Off"); break;
-                default: $result['SelfTimer'] .= $this->_dict->t("/10s");
+                case 0: $result['SelfTimer'] = Horde_Image_Translation::t("Off"); break;
+                default: $result['SelfTimer'] .= Horde_Image_Translation::t("/10s");
                 }
                 $result['Quality'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                 $place += 4;//3
                 switch($result['Quality']) {
-                case 2: $result['Quality'] = $this->_dict->t("Normal"); break;
-                case 3: $result['Quality'] = $this->_dict->t("Fine"); break;
-                case 5: $result['Quality'] = $this->_dict->t("Superfine"); break;
-                default: $result['Quality'] = $this->_dict->t("Unknown");
+                case 2: $result['Quality'] = Horde_Image_Translation::t("Normal"); break;
+                case 3: $result['Quality'] = Horde_Image_Translation::t("Fine"); break;
+                case 5: $result['Quality'] = Horde_Image_Translation::t("Superfine"); break;
+                default: $result['Quality'] = Horde_Image_Translation::t("Unknown");
                 }
                 $result['Flash'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                 $place += 4;//4
                 switch($result['Flash']) {
-                case 0: $result['Flash'] = $this->_dict->t("Off"); break;
-                case 1: $result['Flash'] = $this->_dict->t("Auto"); break;
-                case 2: $result['Flash'] = $this->_dict->t("On"); break;
-                case 3: $result['Flash'] = $this->_dict->t("Red Eye Reduction"); break;
-                case 4: $result['Flash'] = $this->_dict->t("Slow Synchro"); break;
-                case 5: $result['Flash'] = $this->_dict->t("Auto + Red Eye Reduction"); break;
-                case 6: $result['Flash'] = $this->_dict->t("On + Red Eye Reduction"); break;
-                case 16: $result['Flash'] = $this->_dict->t("External Flash"); break;
-                default: $result['Flash'] = $this->_dict->t("Unknown");
+                case 0: $result['Flash'] = Horde_Image_Translation::t("Off"); break;
+                case 1: $result['Flash'] = Horde_Image_Translation::t("Auto"); break;
+                case 2: $result['Flash'] = Horde_Image_Translation::t("On"); break;
+                case 3: $result['Flash'] = Horde_Image_Translation::t("Red Eye Reduction"); break;
+                case 4: $result['Flash'] = Horde_Image_Translation::t("Slow Synchro"); break;
+                case 5: $result['Flash'] = Horde_Image_Translation::t("Auto + Red Eye Reduction"); break;
+                case 6: $result['Flash'] = Horde_Image_Translation::t("On + Red Eye Reduction"); break;
+                case 16: $result['Flash'] = Horde_Image_Translation::t("External Flash"); break;
+                default: $result['Flash'] = Horde_Image_Translation::t("Unknown");
                 }
                 $result['DriveMode'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                 $place += 4;//5
                 switch($result['DriveMode']) {
-                case 0: $result['DriveMode'] = $this->_dict->t("Single/Timer"); break;
-                case 1: $result['DriveMode'] = $this->_dict->t("Continuous"); break;
-                default: $result['DriveMode'] = $this->_dict->t("Unknown");
+                case 0: $result['DriveMode'] = Horde_Image_Translation::t("Single/Timer"); break;
+                case 1: $result['DriveMode'] = Horde_Image_Translation::t("Continuous"); break;
+                default: $result['DriveMode'] = Horde_Image_Translation::t("Unknown");
                 }
                 $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                 $place += 4;//6
                 $result['FocusMode'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                 $place += 4;//7
                 switch($result['FocusMode']) {
-                case 0: $result['FocusMode'] = $this->_dict->t("One-Shot"); break;
-                case 1: $result['FocusMode'] = $this->_dict->t("AI Servo"); break;
-                case 2: $result['FocusMode'] = $this->_dict->t("AI Focus"); break;
-                case 3: $result['FocusMode'] = $this->_dict->t("Manual Focus"); break;
-                case 4: $result['FocusMode'] = $this->_dict->t("Single"); break;
-                case 5: $result['FocusMode'] = $this->_dict->t("Continuous"); break;
-                case 6: $result['FocusMode'] = $this->_dict->t("Manual Focus"); break;
-                default: $result['FocusMode'] = $this->_dict->t("Unknown");
+                case 0: $result['FocusMode'] = Horde_Image_Translation::t("One-Shot"); break;
+                case 1: $result['FocusMode'] = Horde_Image_Translation::t("AI Servo"); break;
+                case 2: $result['FocusMode'] = Horde_Image_Translation::t("AI Focus"); break;
+                case 3: $result['FocusMode'] = Horde_Image_Translation::t("Manual Focus"); break;
+                case 4: $result['FocusMode'] = Horde_Image_Translation::t("Single"); break;
+                case 5: $result['FocusMode'] = Horde_Image_Translation::t("Continuous"); break;
+                case 6: $result['FocusMode'] = Horde_Image_Translation::t("Manual Focus"); break;
+                default: $result['FocusMode'] = Horde_Image_Translation::t("Unknown");
                 }
                 $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                 $place += 4;//8
@@ -161,60 +161,60 @@ class Horde_Image_Exif_Parser_Canon extends Horde_Image_Exif_Parser_Base
                 $result['ImageSize'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                 $place += 4;//10
                 switch($result['ImageSize']) {
-                case 0: $result['ImageSize'] = $this->_dict->t("Large"); break;
-                case 1: $result['ImageSize'] = $this->_dict->t("Medium"); break;
-                case 2: $result['ImageSize'] = $this->_dict->t("Small"); break;
-                default: $result['ImageSize'] = $this->_dict->t("Unknown");
+                case 0: $result['ImageSize'] = Horde_Image_Translation::t("Large"); break;
+                case 1: $result['ImageSize'] = Horde_Image_Translation::t("Medium"); break;
+                case 2: $result['ImageSize'] = Horde_Image_Translation::t("Small"); break;
+                default: $result['ImageSize'] = Horde_Image_Translation::t("Unknown");
                 }
                 $result['EasyShooting'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                 $place += 4;//11
                 switch($result['EasyShooting']) {
-                case 0: $result['EasyShooting'] = $this->_dict->t("Full Auto"); break;
-                case 1: $result['EasyShooting'] = $this->_dict->t("Manual"); break;
-                case 2: $result['EasyShooting'] = $this->_dict->t("Landscape"); break;
-                case 3: $result['EasyShooting'] = $this->_dict->t("Fast Shutter"); break;
-                case 4: $result['EasyShooting'] = $this->_dict->t("Slow Shutter"); break;
-                case 5: $result['EasyShooting'] = $this->_dict->t("Night"); break;
-                case 6: $result['EasyShooting'] = $this->_dict->t("Black & White"); break;
-                case 7: $result['EasyShooting'] = $this->_dict->t("Sepia"); break;
-                case 8: $result['EasyShooting'] = $this->_dict->t("Portrait"); break;
-                case 9: $result['EasyShooting'] = $this->_dict->t("Sport"); break;
-                case 10: $result['EasyShooting'] = $this->_dict->t("Macro/Close-Up"); break;
-                case 11: $result['EasyShooting'] = $this->_dict->t("Pan Focus"); break;
-                default: $result['EasyShooting'] = $this->_dict->t("Unknown");
+                case 0: $result['EasyShooting'] = Horde_Image_Translation::t("Full Auto"); break;
+                case 1: $result['EasyShooting'] = Horde_Image_Translation::t("Manual"); break;
+                case 2: $result['EasyShooting'] = Horde_Image_Translation::t("Landscape"); break;
+                case 3: $result['EasyShooting'] = Horde_Image_Translation::t("Fast Shutter"); break;
+                case 4: $result['EasyShooting'] = Horde_Image_Translation::t("Slow Shutter"); break;
+                case 5: $result['EasyShooting'] = Horde_Image_Translation::t("Night"); break;
+                case 6: $result['EasyShooting'] = Horde_Image_Translation::t("Black & White"); break;
+                case 7: $result['EasyShooting'] = Horde_Image_Translation::t("Sepia"); break;
+                case 8: $result['EasyShooting'] = Horde_Image_Translation::t("Portrait"); break;
+                case 9: $result['EasyShooting'] = Horde_Image_Translation::t("Sport"); break;
+                case 10: $result['EasyShooting'] = Horde_Image_Translation::t("Macro/Close-Up"); break;
+                case 11: $result['EasyShooting'] = Horde_Image_Translation::t("Pan Focus"); break;
+                default: $result['EasyShooting'] = Horde_Image_Translation::t("Unknown");
                 }
                 $result['DigitalZoom'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                 $place += 4;//12
                 switch($result['DigitalZoom']) {
                 case 0:
-                case 65535: $result['DigitalZoom'] = $this->_dict->t("None"); break;
-                case 1: $result['DigitalZoom'] = $this->_dict->t("2x"); break;
-                case 2: $result['DigitalZoom'] = $this->_dict->t("4x"); break;
-                default: $result['DigitalZoom'] = $this->_dict->t("Unknown");
+                case 65535: $result['DigitalZoom'] = Horde_Image_Translation::t("None"); break;
+                case 1: $result['DigitalZoom'] = Horde_Image_Translation::t("2x"); break;
+                case 2: $result['DigitalZoom'] = Horde_Image_Translation::t("4x"); break;
+                default: $result['DigitalZoom'] = Horde_Image_Translation::t("Unknown");
                 }
                 $result['Contrast'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                 $place += 4;//13
                 switch($result['Contrast']) {
-                case 0: $result['Contrast'] = $this->_dict->t("Normal"); break;
-                case 1: $result['Contrast'] = $this->_dict->t("High"); break;
-                case 65535: $result['Contrast'] = $this->_dict->t("Low"); break;
-                default: $result['Contrast'] = $this->_dict->t("Unknown");
+                case 0: $result['Contrast'] = Horde_Image_Translation::t("Normal"); break;
+                case 1: $result['Contrast'] = Horde_Image_Translation::t("High"); break;
+                case 65535: $result['Contrast'] = Horde_Image_Translation::t("Low"); break;
+                default: $result['Contrast'] = Horde_Image_Translation::t("Unknown");
                 }
                 $result['Saturation'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                 $place += 4;//14
                 switch($result['Saturation']) {
-                   case 0: $result['Saturation'] = $this->_dict->t("Normal"); break;
-                    case 1: $result['Saturation'] = $this->_dict->t("High"); break;
-                    case 65535: $result['Saturation'] = $this->_dict->t("Low"); break;
-                    default: $result['Saturation'] = $this->_dict->t("Unknown");
+                   case 0: $result['Saturation'] = Horde_Image_Translation::t("Normal"); break;
+                    case 1: $result['Saturation'] = Horde_Image_Translation::t("High"); break;
+                    case 65535: $result['Saturation'] = Horde_Image_Translation::t("Low"); break;
+                    default: $result['Saturation'] = Horde_Image_Translation::t("Unknown");
                 }
                 $result['Sharpness'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                 $place += 4;//15
                 switch($result['Sharpness']) {
-                case 0: $result['Sharpness'] = $this->_dict->t("Normal"); break;
-                case 1: $result['Sharpness'] = $this->_dict->t("High"); break;
-                case 65535: $result['Sharpness'] = $this->_dict->t("Low"); break;
-                default: $result['Sharpness'] = $this->_dict->t("Unknown");
+                case 0: $result['Sharpness'] = Horde_Image_Translation::t("Normal"); break;
+                case 1: $result['Sharpness'] = Horde_Image_Translation::t("High"); break;
+                case 65535: $result['Sharpness'] = Horde_Image_Translation::t("Low"); break;
+                default: $result['Sharpness'] = Horde_Image_Translation::t("Unknown");
                 }
                 $result['ISO'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                 $place += 4;//16
@@ -226,7 +226,7 @@ class Horde_Image_Exif_Parser_Canon extends Horde_Image_Exif_Parser_Base
                         'Unknown';
                      break;
                 case 15:
-                    $result['ISO'] = $this->_dict->t("Auto");
+                    $result['ISO'] = Horde_Image_Translation::t("Auto");
                     break;
                 case 16:
                     $result['ISO'] = 50;
@@ -241,45 +241,45 @@ class Horde_Image_Exif_Parser_Canon extends Horde_Image_Exif_Parser_Base
                     $result['ISO'] = 400;
                      break;
                 default:
-                    $result['ISO'] = $this->_dict->t("Unknown");
+                    $result['ISO'] = Horde_Image_Translation::t("Unknown");
                 }
                 $result['MeteringMode'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                 $place += 4;//17
                 switch($result['MeteringMode']) {
-                case 3: $result['MeteringMode'] = $this->_dict->t("Evaluative"); break;
-                case 4: $result['MeteringMode'] = $this->_dict->t("Partial"); break;
-                case 5: $result['MeteringMode'] = $this->_dict->t("Center-weighted"); break;
-                default: $result['MeteringMode'] = $this->_dict->t("Unknown");
+                case 3: $result['MeteringMode'] = Horde_Image_Translation::t("Evaluative"); break;
+                case 4: $result['MeteringMode'] = Horde_Image_Translation::t("Partial"); break;
+                case 5: $result['MeteringMode'] = Horde_Image_Translation::t("Center-weighted"); break;
+                default: $result['MeteringMode'] = Horde_Image_Translation::t("Unknown");
                 }
                 $result['FocusType'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                 $place += 4;//18
                 switch($result['FocusType']) {
-                case 0: $result['FocusType'] = $this->_dict->t("Manual"); break;
-                case 1: $result['FocusType'] = $this->_dict->t("Auto"); break;
-                case 3: $result['FocusType'] = $this->_dict->t("Close-up (Macro)"); break;
-                case 8: $result['FocusType'] = $this->_dict->t("Locked (Pan Mode)"); break;
-                default: $result['FocusType'] = $this->_dict->t("Unknown");
+                case 0: $result['FocusType'] = Horde_Image_Translation::t("Manual"); break;
+                case 1: $result['FocusType'] = Horde_Image_Translation::t("Auto"); break;
+                case 3: $result['FocusType'] = Horde_Image_Translation::t("Close-up (Macro)"); break;
+                case 8: $result['FocusType'] = Horde_Image_Translation::t("Locked (Pan Mode)"); break;
+                default: $result['FocusType'] = Horde_Image_Translation::t("Unknown");
                 }
                 $result['AFPointSelected'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                 $place += 4;//19
                 switch($result['AFPointSelected']) {
-                case 12288: $result['AFPointSelected'] = $this->_dict->t("Manual Focus"); break;
-                case 12289: $result['AFPointSelected'] = $this->_dict->t("Auto Selected"); break;
-                case 12290: $result['AFPointSelected'] = $this->_dict->t("Right"); break;
-                case 12291: $result['AFPointSelected'] = $this->_dict->t("Center"); break;
-                case 12292: $result['AFPointSelected'] = $this->_dict->t("Left"); break;
-                default: $result['AFPointSelected'] = $this->_dict->t("Unknown");
+                case 12288: $result['AFPointSelected'] = Horde_Image_Translation::t("Manual Focus"); break;
+                case 12289: $result['AFPointSelected'] = Horde_Image_Translation::t("Auto Selected"); break;
+                case 12290: $result['AFPointSelected'] = Horde_Image_Translation::t("Right"); break;
+                case 12291: $result['AFPointSelected'] = Horde_Image_Translation::t("Center"); break;
+                case 12292: $result['AFPointSelected'] = Horde_Image_Translation::t("Left"); break;
+                default: $result['AFPointSelected'] = Horde_Image_Translation::t("Unknown");
                 }
                 $result['ExposureMode'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                 $place += 4;//20
                 switch($result['ExposureMode']) {
-                case 0: $result['ExposureMode'] = $this->_dict->t("EasyShoot"); break;
-                case 1: $result['ExposureMode'] = $this->_dict->t("Program"); break;
-                case 2: $result['ExposureMode'] = $this->_dict->t("Tv"); break;
-                case 3: $result['ExposureMode'] = $this->_dict->t("Av"); break;
-                case 4: $result['ExposureMode'] = $this->_dict->t("Manual"); break;
-                case 5: $result['ExposureMode'] = $this->_dict->t("Auto-DEP"); break;
-                default: $result['ExposureMode'] = $this->_dict->t("Unknown");
+                case 0: $result['ExposureMode'] = Horde_Image_Translation::t("EasyShoot"); break;
+                case 1: $result['ExposureMode'] = Horde_Image_Translation::t("Program"); break;
+                case 2: $result['ExposureMode'] = Horde_Image_Translation::t("Tv"); break;
+                case 3: $result['ExposureMode'] = Horde_Image_Translation::t("Av"); break;
+                case 4: $result['ExposureMode'] = Horde_Image_Translation::t("Manual"); break;
+                case 5: $result['ExposureMode'] = Horde_Image_Translation::t("Auto-DEP"); break;
+                default: $result['ExposureMode'] = Horde_Image_Translation::t("Unknown");
                 }
                 $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                 $place += 4;//21
@@ -301,27 +301,27 @@ class Horde_Image_Exif_Parser_Canon extends Horde_Image_Exif_Parser_Base
                 $result['FlashActivity'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                 $place += 4;//28
                 switch($result['FlashActivity']) {
-                case 0: $result['FlashActivity'] = $this->_dict->t("Flash Did Not Fire"); break;
-                case 1: $result['FlashActivity'] = $this->_dict->t("Flash Fired"); break;
-                default: $result['FlashActivity'] = $this->_dict->t("Unknown");
+                case 0: $result['FlashActivity'] = Horde_Image_Translation::t("Flash Did Not Fire"); break;
+                case 1: $result['FlashActivity'] = Horde_Image_Translation::t("Flash Fired"); break;
+                default: $result['FlashActivity'] = Horde_Image_Translation::t("Unknown");
                 }
                 $result['FlashDetails'] = str_pad(base_convert(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)), 16, 2), 16, '0', STR_PAD_LEFT);
                 $place += 4;//29
                 $flashDetails = array();
                 if (substr($result['FlashDetails'], 1, 1) == 1) {
-                    $flashDetails[] = $this->_dict->t("External E-TTL");
+                    $flashDetails[] = Horde_Image_Translation::t("External E-TTL");
                 }
                 if (substr($result['FlashDetails'], 2, 1) == 1) {
-                    $flashDetails[] = $this->_dict->t("Internal Flash");
+                    $flashDetails[] = Horde_Image_Translation::t("Internal Flash");
                 }
                 if (substr($result['FlashDetails'], 4, 1) == 1) {
-                    $flashDetails[] = $this->_dict->t("FP sync used");
+                    $flashDetails[] = Horde_Image_Translation::t("FP sync used");
                 }
                 if (substr($result['FlashDetails'], 8, 1) == 1) {
-                    $flashDetails[] = $this->_dict->t("2nd(rear)-curtain sync used");
+                    $flashDetails[] = Horde_Image_Translation::t("2nd(rear)-curtain sync used");
                  }
                 if (substr($result['FlashDetails'], 12, 1) == 1) {
-                    $flashDetails[] = $this->_dict->t("1st curtain sync");
+                    $flashDetails[] = Horde_Image_Translation::t("1st curtain sync");
                 }
                 $result['FlashDetails'] = implode(',', $flashDetails);
                 $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
@@ -332,9 +332,9 @@ class Horde_Image_Exif_Parser_Canon extends Horde_Image_Exif_Parser_Base
                 $place += 4;//32
                 if (strpos(strtoupper($exif['IFD0']['Model']), 'G1') !== false) {
                     switch($anotherFocusMode) {
-                    case 0: $result['FocusMode'] = $this->_dict->t("Single"); break;
-                    case 1: $result['FocusMode'] = $this->_dict->t("Continuous"); break;
-                    default: $result['FocusMode'] = $this->_dict->t("Unknown");
+                    case 0: $result['FocusMode'] = Horde_Image_Translation::t("Single"); break;
+                    case 1: $result['FocusMode'] = Horde_Image_Translation::t("Continuous"); break;
+                    default: $result['FocusMode'] = Horde_Image_Translation::t("Unknown");
                     }
                 }
                 break;
@@ -361,14 +361,14 @@ class Horde_Image_Exif_Parser_Canon extends Horde_Image_Exif_Parser_Base
                 $result['WhiteBalance'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                 $place += 4;//7
                 switch($result['WhiteBalance']) {
-                case 0: $result['WhiteBalance'] = $this->_dict->t("Auto"); break;
-                case 1: $result['WhiteBalance'] = $this->_dict->t("Sunny"); break;
-                case 2: $result['WhiteBalance'] = $this->_dict->t("Cloudy"); break;
-                case 3: $result['WhiteBalance'] = $this->_dict->t("Tungsten"); break;
-                case 4: $result['WhiteBalance'] = $this->_dict->t("Fluorescent"); break;
-                case 5: $result['WhiteBalance'] = $this->_dict->t("Flash"); break;
-                case 6: $result['WhiteBalance'] = $this->_dict->t("Custom"); break;
-                default: $result['WhiteBalance'] = $this->_dict->t("Unknown");
+                case 0: $result['WhiteBalance'] = Horde_Image_Translation::t("Auto"); break;
+                case 1: $result['WhiteBalance'] = Horde_Image_Translation::t("Sunny"); break;
+                case 2: $result['WhiteBalance'] = Horde_Image_Translation::t("Cloudy"); break;
+                case 3: $result['WhiteBalance'] = Horde_Image_Translation::t("Tungsten"); break;
+                case 4: $result['WhiteBalance'] = Horde_Image_Translation::t("Fluorescent"); break;
+                case 5: $result['WhiteBalance'] = Horde_Image_Translation::t("Flash"); break;
+                case 6: $result['WhiteBalance'] = Horde_Image_Translation::t("Custom"); break;
+                default: $result['WhiteBalance'] = Horde_Image_Translation::t("Unknown");
                 }
                 $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                 $place += 4;//8
@@ -386,13 +386,13 @@ class Horde_Image_Exif_Parser_Canon extends Horde_Image_Exif_Parser_Base
                 $place += 4;//14
                 $afPointUsed = array();
                 if ($result['AFPointUsed'] & 0x0001) {
-                    $afPointUsed[] = $this->_dict->t("Right"); //bit 0
+                    $afPointUsed[] = Horde_Image_Translation::t("Right"); //bit 0
                 }
                 if ($result['AFPointUsed'] & 0x0002) {
-                    $afPointUsed[] = $this->_dict->t("Center"); //bit 1
+                    $afPointUsed[] = Horde_Image_Translation::t("Center"); //bit 1
                 }
                 if ($result['AFPointUsed'] & 0x0004) {
-                    $afPointUsed[] = $this->_dict->t("Left"); //bit 2
+                    $afPointUsed[] = Horde_Image_Translation::t("Left"); //bit 2
                 }
                 if ($result['AFPointUsed'] & 0x0800) {
                     $afPointUsed[] = 12; //bit 12
@@ -427,7 +427,7 @@ class Horde_Image_Exif_Parser_Canon extends Horde_Image_Exif_Parser_Base
                 case '0030': $result['FlashBias'] = '1.5 EV'; break;
                 case '0034': $result['FlashBias'] = '1.67 EV'; break;
                 case '0040': $result['FlashBias'] = '2 EV'; break;
-                default: $result['FlashBias'] = $this->_dict->t("Unknown");
+                default: $result['FlashBias'] = Horde_Image_Translation::t("Unknown");
                 }
                 $result['Unknown'] = hexdec(Horde_Image_Exif::intel2Moto(substr($data, $place, 4)));
                 $place += 4;//16
index a6075d3..9cefd4a 100644 (file)
@@ -109,137 +109,137 @@ class Horde_Image_Exif_Parser_Fujifilm extends Horde_Image_Exif_Parser_Base
             case '1001':
                 //Sharpness
                 switch ($data) {
-                case 1:  $data = $this->_dict->t("Soft"); break;
-                case 2:  $data = $this->_dict->t("Soft"); break;
-                case 3:  $data = $this->_dict->t("Normal"); break;
-                case 4:  $data = $this->_dict->t("Hard"); break;
-                case 5:  $data = $this->_dict->t("Hard"); break;
-                default: $data = $this->_dict->t("Unknown") . ': ' . $data; break;
+                case 1:  $data = Horde_Image_Translation::t("Soft"); break;
+                case 2:  $data = Horde_Image_Translation::t("Soft"); break;
+                case 3:  $data = Horde_Image_Translation::t("Normal"); break;
+                case 4:  $data = Horde_Image_Translation::t("Hard"); break;
+                case 5:  $data = Horde_Image_Translation::t("Hard"); break;
+                default: $data = Horde_Image_Translation::t("Unknown") . ': ' . $data; break;
                 }
                 break;
 
             case '1002':
                 //WhiteBalance
                 switch ($data) {
-                case 0:    $data = $this->_dict->t("Auto"); break;
-                case 256:  $data = $this->_dict->t("Daylight"); break;
-                case 512:  $data = $this->_dict->t("Cloudy"); break;
-                case 768:  $data = $this->_dict->t("DaylightColor-fluorescence"); break;
-                case 769:  $data = $this->_dict->t("DaywhiteColor-fluorescence"); break;
-                case 770:  $data = $this->_dict->t("White-fluorescence"); break;
-                case 1024: $data = $this->_dict->t("Incandescense"); break;
-                case 3840: $data = $this->_dict->t("Custom"); break;
-                default:   $data = $this->_dict->t("Unknown") . ': ' . $data; break;
+                case 0:    $data = Horde_Image_Translation::t("Auto"); break;
+                case 256:  $data = Horde_Image_Translation::t("Daylight"); break;
+                case 512:  $data = Horde_Image_Translation::t("Cloudy"); break;
+                case 768:  $data = Horde_Image_Translation::t("DaylightColor-fluorescence"); break;
+                case 769:  $data = Horde_Image_Translation::t("DaywhiteColor-fluorescence"); break;
+                case 770:  $data = Horde_Image_Translation::t("White-fluorescence"); break;
+                case 1024: $data = Horde_Image_Translation::t("Incandescense"); break;
+                case 3840: $data = Horde_Image_Translation::t("Custom"); break;
+                default:   $data = Horde_Image_Translation::t("Unknown") . ': ' . $data; break;
                 }
                 break;
 
             case '1003':
                 //Color
                 switch ($data) {
-                case 0:   $data = $this->_dict->t("Chroma Saturation Normal(STD)"); break;
-                case 256: $data = $this->_dict->t("Chroma Saturation High"); break;
-                case 512: $data = $this->_dict->t("Chroma Saturation Low(ORG)"); break;
-                default:  $data = $this->_dict->t("Unknown: ") . $data; break;
+                case 0:   $data = Horde_Image_Translation::t("Chroma Saturation Normal(STD)"); break;
+                case 256: $data = Horde_Image_Translation::t("Chroma Saturation High"); break;
+                case 512: $data = Horde_Image_Translation::t("Chroma Saturation Low(ORG)"); break;
+                default:  $data = Horde_Image_Translation::t("Unknown: ") . $data; break;
                 }
                 break;
 
             case '1004':
                 //Tone
                 switch ($data) {
-                case 0: $data = $this->_dict->t("Contrast Normal(STD)"); break;
-                case 256: $data = $this->_dict->t("Contrast High(HARD)"); break;
-                case 512: $data = $this->_dict->t("Contrast Low(ORG)"); break;
-                default: $data = $this->_dict->t("Unknown: ") . $data; break;
+                case 0: $data = Horde_Image_Translation::t("Contrast Normal(STD)"); break;
+                case 256: $data = Horde_Image_Translation::t("Contrast High(HARD)"); break;
+                case 512: $data = Horde_Image_Translation::t("Contrast Low(ORG)"); break;
+                default: $data = Horde_Image_Translation::t("Unknown: ") . $data; break;
                 }
                 break;
 
             case '1010':
                 //FlashMode
                 switch ($data) {
-                case 0:  $data = $this->_dict->t("Auto"); break;
-                case 1:  $data = $this->_dict->t("On"); break;
-                case 2:  $data = $this->_dict->t("Off"); break;
-                case 3:  $data = $this->_dict->t("Red-Eye Reduction"); break;
-                default: $data = $this->_dict->t("Unknown: ") . $data; break;
+                case 0:  $data = Horde_Image_Translation::t("Auto"); break;
+                case 1:  $data = Horde_Image_Translation::t("On"); break;
+                case 2:  $data = Horde_Image_Translation::t("Off"); break;
+                case 3:  $data = Horde_Image_Translation::t("Red-Eye Reduction"); break;
+                default: $data = Horde_Image_Translation::t("Unknown: ") . $data; break;
                 }
                 break;
 
             case '1020':
                 //Macro
                 switch ($data) {
-                case 0:  $data = $this->_dict->t("Off"); break;
-                case 1:  $data = $this->_dict->t("On"); break;
-                default: $data = $this->_dict->t("Unknown: ") . $data; break;
+                case 0:  $data = Horde_Image_Translation::t("Off"); break;
+                case 1:  $data = Horde_Image_Translation::t("On"); break;
+                default: $data = Horde_Image_Translation::t("Unknown: ") . $data; break;
                 }
                 break;
 
             case '1021':
                 //FocusMode
                 switch ($data) {
-                case 0:  $data = $this->_dict->t("Auto"); break;
-                case 1:  $data = $this->_dict->t("Manual"); break;
-                default: $data = $this->_dict->t("Unknown: ") . $data; break;
+                case 0:  $data = Horde_Image_Translation::t("Auto"); break;
+                case 1:  $data = Horde_Image_Translation::t("Manual"); break;
+                default: $data = Horde_Image_Translation::t("Unknown: ") . $data; break;
                 }
                 break;
 
             case '1030':
                 //SlowSync
                 switch ($data) {
-                case 0:  $data = $this->_dict->t("Off"); break;
-                case 1:  $data = $this->_dict->t("On"); break;
-                default: $data = $this->_dict->t("Unknown: ") . $data; break;
+                case 0:  $data = Horde_Image_Translation::t("Off"); break;
+                case 1:  $data = Horde_Image_Translation::t("On"); break;
+                default: $data = Horde_Image_Translation::t("Unknown: ") . $data; break;
                 }
                 break;
 
             case '1031':
                 //PictureMode
                 switch ($data) {
-                case 0:  $data = $this->_dict->t("Auto"); break;
-                case 1:  $data = $this->_dict->t("Portrait"); break;
-                case 2:  $data = $this->_dict->t("Landscape"); break;
-                case 4:  $data = $this->_dict->t("Sports"); break;
-                case 5:  $data = $this->_dict->t("Night"); break;
-                case 6:  $data = $this->_dict->t("Program AE"); break;
-                case 256:  $data = $this->_dict->t("Aperture Prority AE"); break;
-                case 512:  $data = $this->_dict->t("Shutter Priority"); break;
-                case 768:  $data = $this->_dict->t("Manual Exposure"); break;
-                default: $data = $this->_dict->t("Unknown: ") . $data; break;
+                case 0:  $data = Horde_Image_Translation::t("Auto"); break;
+                case 1:  $data = Horde_Image_Translation::t("Portrait"); break;
+                case 2:  $data = Horde_Image_Translation::t("Landscape"); break;
+                case 4:  $data = Horde_Image_Translation::t("Sports"); break;
+                case 5:  $data = Horde_Image_Translation::t("Night"); break;
+                case 6:  $data = Horde_Image_Translation::t("Program AE"); break;
+                case 256:  $data = Horde_Image_Translation::t("Aperture Prority AE"); break;
+                case 512:  $data = Horde_Image_Translation::t("Shutter Priority"); break;
+                case 768:  $data = Horde_Image_Translation::t("Manual Exposure"); break;
+                default: $data = Horde_Image_Translation::t("Unknown: ") . $data; break;
                 }
                 break;
 
             case '1100':
                 //ContinuousTakingBracket
                 switch ($data) {
-                case 0:  $data = $this->_dict->t("Off"); break;
-                case 1:  $data = $this->_dict->t("On"); break;
-                default: $data = $this->_dict->t("Unknown: ") . $data; break;
+                case 0:  $data = Horde_Image_Translation::t("Off"); break;
+                case 1:  $data = Horde_Image_Translation::t("On"); break;
+                default: $data = Horde_Image_Translation::t("Unknown: ") . $data; break;
                 }
                 break;
 
             case '1300':
                 //BlurWarning
                 switch ($data) {
-                case 0:  $data = $this->_dict->t("No Warning"); break;
-                case 1:  $data = $this->_dict->t("Warning"); break;
-                default: $data = $this->_dict->t("Unknown: ") . $data; break;
+                case 0:  $data = Horde_Image_Translation::t("No Warning"); break;
+                case 1:  $data = Horde_Image_Translation::t("Warning"); break;
+                default: $data = Horde_Image_Translation::t("Unknown: ") . $data; break;
                 }
                 break;
 
             case '1301':
                 //FocusWarning
                 switch ($data) {
-                case 0:  $data = $this->_dict->t("Auto Focus Good"); break;
-                case 1:  $data = $this->_dict->t("Out of Focus"); break;
-                default: $data = $this->_dict->t("Unknown: ") . $data; break;
+                case 0:  $data = Horde_Image_Translation::t("Auto Focus Good"); break;
+                case 1:  $data = Horde_Image_Translation::t("Out of Focus"); break;
+                default: $data = Horde_Image_Translation::t("Unknown: ") . $data; break;
                 }
                 break;
 
             case '1302':
                 //AEWarning
                 switch ($data) {
-                case 0:  $data = $this->_dict->t("AE Good"); break;
-                case 1:  $data = $this->_dict->t("Over Exposure"); break;
-                default: $data = $this->_dict->t("Unknown: ") . $data; break;
+                case 0:  $data = Horde_Image_Translation::t("AE Good"); break;
+                case 1:  $data = Horde_Image_Translation::t("Over Exposure"); break;
+                default: $data = Horde_Image_Translation::t("Unknown: ") . $data; break;
                 }
                 break;
             }
index 03fd54c..8a403c5 100644 (file)
@@ -148,34 +148,34 @@ class Horde_Image_Exif_Parser_Nikon extends Horde_Image_Exif_Parser_Base
             case '0003':
                 //Quality
                 switch ($data) {
-                case 1:  $data = $this->_dict->t("VGA Basic"); break;
-                case 2:  $data = $this->_dict->t("VGA Normal"); break;
-                case 3:  $data = $this->_dict->t("VGA Fine"); break;
-                case 4:  $data = $this->_dict->t("SXGA Basic"); break;
-                case 5:  $data = $this->_dict->t("SXGA Normal"); break;
-                case 6:  $data = $this->_dict->t("SXGA Fine"); break;
-                default: $data = $this->_dict->t("Unknown") . ': ' . $data; break;
+                case 1:  $data = Horde_Image_Translation::t("VGA Basic"); break;
+                case 2:  $data = Horde_Image_Translation::t("VGA Normal"); break;
+                case 3:  $data = Horde_Image_Translation::t("VGA Fine"); break;
+                case 4:  $data = Horde_Image_Translation::t("SXGA Basic"); break;
+                case 5:  $data = Horde_Image_Translation::t("SXGA Normal"); break;
+                case 6:  $data = Horde_Image_Translation::t("SXGA Fine"); break;
+                default: $data = Horde_Image_Translation::t("Unknown") . ': ' . $data; break;
                 }
                 break;
 
             case '0004':
                 //Color
                 switch ($data) {
-                case 1:  $data = $this->_dict->t("Color"); break;
-                case 2:  $data = $this->_dict->t("Monochrome"); break;
-                default: $data = $this->_dict->t("Unknown") . ': ' . $data; break;
+                case 1:  $data = Horde_Image_Translation::t("Color"); break;
+                case 2:  $data = Horde_Image_Translation::t("Monochrome"); break;
+                default: $data = Horde_Image_Translation::t("Unknown") . ': ' . $data; break;
                 }
                 break;
 
             case '0005':
                 //Image Adjustment
                 switch ($data) {
-                case 0:  $data = $this->_dict->t("Normal"); break;
-                case 1:  $data = $this->_dict->t("Bright+"); break;
-                case 2:  $data = $this->_dict->t("Bright-"); break;
-                case 3:  $data = $this->_dict->t("Contrast+"); break;
-                case 4:  $data = $this->_dict->t("Contrast-"); break;
-                default: $data = $this->_dict->t("Unknown") . ': ' . $data; break;
+                case 0:  $data = Horde_Image_Translation::t("Normal"); break;
+                case 1:  $data = Horde_Image_Translation::t("Bright+"); break;
+                case 2:  $data = Horde_Image_Translation::t("Bright-"); break;
+                case 3:  $data = Horde_Image_Translation::t("Contrast+"); break;
+                case 4:  $data = Horde_Image_Translation::t("Contrast-"); break;
+                default: $data = Horde_Image_Translation::t("Unknown") . ': ' . $data; break;
                 }
                 break;
 
@@ -186,30 +186,30 @@ class Horde_Image_Exif_Parser_Nikon extends Horde_Image_Exif_Parser_Base
                 case 2:  $data = 'ISO-160'; break;
                 case 4:  $data = 'ISO-320'; break;
                 case 5:  $data = 'ISO-100'; break;
-                default: $data = $this->_dict->t("Unknown") . ': ' . $data; break;
+                default: $data = Horde_Image_Translation::t("Unknown") . ': ' . $data; break;
                 }
                 break;
 
             case '0007':
                 //White Balance
                 switch ($data) {
-                case 0:  $data = $this->_dict->t("Auto"); break;
-                case 1:  $data = $this->_dict->t("Preset"); break;
-                case 2:  $data = $this->_dict->t("Daylight"); break;
-                case 3:  $data = $this->_dict->t("Incandescense"); break;
-                case 4:  $data = $this->_dict->t("Flourescence"); break;
-                case 5:  $data = $this->_dict->t("Cloudy"); break;
-                case 6:  $data = $this->_dict->t("SpeedLight"); break;
-                default: $data = $this->_dict->t("Unknown") . ': ' . $data; break;
+                case 0:  $data = Horde_Image_Translation::t("Auto"); break;
+                case 1:  $data = Horde_Image_Translation::t("Preset"); break;
+                case 2:  $data = Horde_Image_Translation::t("Daylight"); break;
+                case 3:  $data = Horde_Image_Translation::t("Incandescense"); break;
+                case 4:  $data = Horde_Image_Translation::t("Flourescence"); break;
+                case 5:  $data = Horde_Image_Translation::t("Cloudy"); break;
+                case 6:  $data = Horde_Image_Translation::t("SpeedLight"); break;
+                default: $data = Horde_Image_Translation::t("Unknown") . ': ' . $data; break;
                 }
                 break;
 
             case '000b':
                 //Converter
                 switch ($data) {
-                case 0:  $data = $this->_dict->t("None"); break;
-                case 1:  $data = $this->_dict->t("Fisheye"); break;
-                default: $data = $this->_dict->t("Unknown") . ': ' . $data; break;
+                case 0:  $data = Horde_Image_Translation::t("None"); break;
+                case 1:  $data = Horde_Image_Translation::t("Fisheye"); break;
+                default: $data = Horde_Image_Translation::t("Unknown") . ': ' . $data; break;
                 }
                 break;
             }
@@ -225,7 +225,7 @@ class Horde_Image_Exif_Parser_Nikon extends Horde_Image_Exif_Parser_Base
                 break;
             case '0088':
                 //AF Focus Position
-                $temp = $this->_dict->t("Center");
+                $temp = Horde_Image_Translation::t("Center");
                 $data = bin2hex($data);
                 $data = str_replace('01', 'Top', $data);
                 $data = str_replace('02', 'Bottom', $data);
@@ -253,12 +253,12 @@ class Horde_Image_Exif_Parser_Nikon extends Horde_Image_Exif_Parser_Base
                 //Lens Type
                 $data = hexdec(substr($data, 0, 2));
                 switch ($data) {
-                case 0:  $data = $this->_dict->t("AF non D"); break;
-                case 1:  $data = $this->_dict->t("Manual"); break;
+                case 0:  $data = Horde_Image_Translation::t("AF non D"); break;
+                case 1:  $data = Horde_Image_Translation::t("Manual"); break;
                 case 2:  $data = 'AF-D or AF-S'; break;
                 case 6:  $data = 'AF-D G'; break;
                 case 10:  $data = 'AF-D VR'; break;
-                default: $data = $this->_dict->t("Unknown") . ': ' . $data; break;
+                default: $data = Horde_Image_Translation::t("Unknown") . ': ' . $data; break;
                 }
                 break;
 
@@ -266,11 +266,11 @@ class Horde_Image_Exif_Parser_Nikon extends Horde_Image_Exif_Parser_Base
                 //Flash type
                 $data = hexdec(substr($data,0,2));
                 switch ($data) {
-                case 0:  $data = $this->_dict->t("Did Not Fire"); break;
-                case 4:  $data = $this->_dict->t("Unknown"); break;
-                case 7:  $data = $this->_dict->t("External"); break;
-                case 9:  $data = $this->_dict->t("On Camera"); break;
-                default: $data = $this->_dict->t("Unknown") . ': ' . $data; break;
+                case 0:  $data = Horde_Image_Translation::t("Did Not Fire"); break;
+                case 4:  $data = Horde_Image_Translation::t("Unknown"); break;
+                case 7:  $data = Horde_Image_Translation::t("External"); break;
+                case 9:  $data = Horde_Image_Translation::t("On Camera"); break;
+                default: $data = Horde_Image_Translation::t("Unknown") . ': ' . $data; break;
                 }
                 break;
             }
index 83bc698..4076a53 100644 (file)
@@ -115,7 +115,7 @@ class Horde_Image_Exif_Parser_Olympus extends Horde_Image_Exif_Parser_Base
                 case 1:  $data = 'SQ'; break;
                 case 2:  $data = 'HQ'; break;
                 case 3:  $data = 'SHQ'; break;
-                default: $data = $this->_dict->t("Unknown") . ': ' . $data; break;
+                default: $data = Horde_Image_Translation::t("Unknown") . ': ' . $data; break;
                 }
                 break;
             case '0202':
@@ -123,7 +123,7 @@ class Horde_Image_Exif_Parser_Olympus extends Horde_Image_Exif_Parser_Base
                 switch ($data) {
                 case 0:  $data = 'Normal'; break;
                 case 1:  $data = 'Macro'; break;
-                default: $data = $this->_dict->t("Unknown") . ': ' . $data; break;
+                default: $data = Horde_Image_Translation::t("Unknown") . ': ' . $data; break;
                 }
                 break;
             }
index a77b9b7..4e41494 100644 (file)
@@ -79,25 +79,25 @@ class Horde_Image_Exif_Parser_Panasonic extends Horde_Image_Exif_Parser_Base
                 //AFMode
                 switch ($data) {
                 case 256:
-                    $data = $this->_dict->t("9-area-focusing");
+                    $data = Horde_Image_Translation::t("9-area-focusing");
                     break;
                 case 16:
-                    $data = $this->_dict->t("1-area-focusing");
+                    $data = Horde_Image_Translation::t("1-area-focusing");
                     break;
                 case 4096:
-                    $data = $this->_dict->t("3-area-focusing (High speed)");
+                    $data = Horde_Image_Translation::t("3-area-focusing (High speed)");
                     break;
                 case 4112:
-                    $data = $this->_dict->t("1-area-focusing (High speed)");
+                    $data = Horde_Image_Translation::t("1-area-focusing (High speed)");
                     break;
                 case 16:
-                    $data = $this->_dict->t("1-area-focusing");
+                    $data = Horde_Image_Translation::t("1-area-focusing");
                     break;
                 case 1:
-                    $data = $this->_dict->t("Spot-focusing");
+                    $data = Horde_Image_Translation::t("Spot-focusing");
                     break;
                 default:
-                    $data = sprintf($this->_dict->t("Unknown (%s)"), $data);
+                    $data = sprintf(Horde_Image_Translation::t("Unknown (%s)"), $data);
                     break;
                 }
             }
@@ -137,19 +137,19 @@ class Horde_Image_Exif_Parser_Panasonic extends Horde_Image_Exif_Parser_Base
                 //Image Quality
                 switch ($data) {
                 case 2:
-                    $data = $this->_dict->t("High");
+                    $data = Horde_Image_Translation::t("High");
                     break;
                 case 3:
-                    $data = $this->_dict->t("Standard");
+                    $data = Horde_Image_Translation::t("Standard");
                     break;
                 case 6:
-                    $data = $this->_dict->t("Very High");
+                    $data = Horde_Image_Translation::t("Very High");
                     break;
                 case 7:
-                    $data = $this->_dict->t("RAW");
+                    $data = Horde_Image_Translation::t("RAW");
                     break;
                 default:
-                    $data = sprintf($this->_dict->t("Unknown (%s)"), $data);
+                    $data = sprintf(Horde_Image_Translation::t("Unknown (%s)"), $data);
                     break;
                 }
                 break;
@@ -158,31 +158,31 @@ class Horde_Image_Exif_Parser_Panasonic extends Horde_Image_Exif_Parser_Base
                 //White Balance
                 switch ($data) {
                 case 1:
-                    $data = $this->_dict->t("Auto");
+                    $data = Horde_Image_Translation::t("Auto");
                     break;
                 case 2:
-                    $data = $this->_dict->t("Daylight");
+                    $data = Horde_Image_Translation::t("Daylight");
                     break;
                 case 3:
-                    $data = $this->_dict->t("Cloudy");
+                    $data = Horde_Image_Translation::t("Cloudy");
                     break;
                 case 4:
-                    $data = $this->_dict->t("Halogen");
+                    $data = Horde_Image_Translation::t("Halogen");
                     break;
                 case 5:
-                    $data = $this->_dict->t("Manual");
+                    $data = Horde_Image_Translation::t("Manual");
                     break;
                 case 8:
-                    $data = $this->_dict->t("Flash");
+                    $data = Horde_Image_Translation::t("Flash");
                     break;
                 case 10:
-                    $data = $this->_dict->t("Black and White");
+                    $data = Horde_Image_Translation::t("Black and White");
                     break;
                 case 11:
-                    $data = $this->_dict->t("Manual");
+                    $data = Horde_Image_Translation::t("Manual");
                     break;
                 default:
-                    $data = sprintf($this->_dict->t("Unknown(%s)"), $data);
+                    $data = sprintf(Horde_Image_Translation::t("Unknown(%s)"), $data);
                     break;
                 }
                 break;
@@ -191,19 +191,19 @@ class Horde_Image_Exif_Parser_Panasonic extends Horde_Image_Exif_Parser_Base
                 //Focus Mode
                 switch ($data) {
                 case 1:
-                    $data = $this->_dict->t("Auto");
+                    $data = Horde_Image_Translation::t("Auto");
                     break;
                 case 2:
-                    $data = $this->_dict->t("Manual");
+                    $data = Horde_Image_Translation::t("Manual");
                     break;
                 case 4:
-                    $data = $this->_dict->t("Auto, Focus button");
+                    $data = Horde_Image_Translation::t("Auto, Focus button");
                     break;
                 case 5:
-                    $data = $this->_dict->t("Auto, Continuous");
+                    $data = Horde_Image_Translation::t("Auto, Continuous");
                     break;
                 default:
-                    $data = sprintf($this->_dict->t("Unknown(%s)"), $data);
+                    $data = sprintf(Horde_Image_Translation::t("Unknown(%s)"), $data);
                     break;
                 }
                 break;
@@ -212,16 +212,16 @@ class Horde_Image_Exif_Parser_Panasonic extends Horde_Image_Exif_Parser_Base
                 //Image Stabilizer
                 switch ($data) {
                 case 2:
-                    $data = $this->_dict->t("Mode 1");
+                    $data = Horde_Image_Translation::t("Mode 1");
                     break;
                 case 3:
-                    $data = $this->_dict->t("Off");
+                    $data = Horde_Image_Translation::t("Off");
                     break;
                 case 4:
-                    $data = $this->_dict->t("Mode 2");
+                    $data = Horde_Image_Translation::t("Mode 2");
                     break;
                 default:
-                    $data = sprintf($this->_dict->t("Unknown(%s)"), $data);
+                    $data = sprintf(Horde_Image_Translation::t("Unknown(%s)"), $data);
                     break;
                 }
                 break;
@@ -230,13 +230,13 @@ class Horde_Image_Exif_Parser_Panasonic extends Horde_Image_Exif_Parser_Base
                 //Macro mode
                 switch ($data) {
                 case 1:
-                    $data = $this->_dict->t("On");
+                    $data = Horde_Image_Translation::t("On");
                     break;
                 case 2:
-                    $data = $this->_dict->t("Off");
+                    $data = Horde_Image_Translation::t("Off");
                     break;
                 default:
-                    $data = sprintf($this->_dict->t("Unknown(%s)"), $data);
+                    $data = sprintf(Horde_Image_Translation::t("Unknown(%s)"), $data);
                     break;
                 }
                 break;
@@ -245,70 +245,70 @@ class Horde_Image_Exif_Parser_Panasonic extends Horde_Image_Exif_Parser_Base
                 //Shooting Mode
                 switch ($data) {
                 case 1:
-                    $data = $this->_dict->t("Normal");
+                    $data = Horde_Image_Translation::t("Normal");
                     break;
                 case 2:
-                    $data = $this->_dict->t("Portrait");
+                    $data = Horde_Image_Translation::t("Portrait");
                     break;
                 case 3:
-                    $data = $this->_dict->t("Scenery");
+                    $data = Horde_Image_Translation::t("Scenery");
                     break;
                 case 4:
-                    $data = $this->_dict->t("Sports");
+                    $data = Horde_Image_Translation::t("Sports");
                     break;
                 case 5:
-                    $data = $this->_dict->t("Night Portrait");
+                    $data = Horde_Image_Translation::t("Night Portrait");
                     break;
                 case 6:
-                    $data = $this->_dict->t("Program");
+                    $data = Horde_Image_Translation::t("Program");
                     break;
                 case 7:
-                    $data = $this->_dict->t("Aperture Priority");
+                    $data = Horde_Image_Translation::t("Aperture Priority");
                     break;
                 case 8:
-                    $data = $this->_dict->t("Shutter Priority");
+                    $data = Horde_Image_Translation::t("Shutter Priority");
                     break;
                 case 9:
-                    $data = $this->_dict->t("Macro");
+                    $data = Horde_Image_Translation::t("Macro");
                     break;
                 case 11:
-                    $data = $this->_dict->t("Manual");
+                    $data = Horde_Image_Translation::t("Manual");
                     break;
                 case 13:
-                    $data = $this->_dict->t("Panning");
+                    $data = Horde_Image_Translation::t("Panning");
                     break;
                 case 14:
-                    $data = $this->_dict->t("Simple");
+                    $data = Horde_Image_Translation::t("Simple");
                     break;
                 case 18:
-                    $data = $this->_dict->t("Fireworks");
+                    $data = Horde_Image_Translation::t("Fireworks");
                     break;
                 case 19:
-                    $data = $this->_dict->t("Party");
+                    $data = Horde_Image_Translation::t("Party");
                     break;
                 case 20:
-                    $data = $this->_dict->t("Snow");
+                    $data = Horde_Image_Translation::t("Snow");
                     break;
                 case 21:
-                    $data = $this->_dict->t("Night Scenery");
+                    $data = Horde_Image_Translation::t("Night Scenery");
                     break;
                 case 22:
-                    $data = $this->_dict->t("Food");
+                    $data = Horde_Image_Translation::t("Food");
                     break;
                 case 23:
-                    $data = $this->_dict->t("Baby");
+                    $data = Horde_Image_Translation::t("Baby");
                     break;
                 case 27:
-                    $data = $this->_dict->t("High Sensitivity");
+                    $data = Horde_Image_Translation::t("High Sensitivity");
                     break;
                 case 29:
-                    $data = $this->_dict->t("Underwater");
+                    $data = Horde_Image_Translation::t("Underwater");
                     break;
                 case 33:
-                    $data = $this->_dict->t("Pet");
+                    $data = Horde_Image_Translation::t("Pet");
                     break;
                 default:
-                    $data = sprintf($this->_dict->t("Unknown(%s)"), $data);
+                    $data = sprintf(Horde_Image_Translation::t("Unknown(%s)"), $data);
                     break;
                 }
                 break;
@@ -317,13 +317,13 @@ class Horde_Image_Exif_Parser_Panasonic extends Horde_Image_Exif_Parser_Base
                 //Audio
                 switch ($data) {
                 case 1:
-                    $data = $this->_dict->t("Yes");
+                    $data = Horde_Image_Translation::t("Yes");
                     break;
                 case 2:
-                    $data = $this->_dict->t("No");
+                    $data = Horde_Image_Translation::t("No");
                     break;
                 default:
-                    $data = sprintf($this->_dict->t("Unknown (%s)"), $data);
+                    $data = sprintf(Horde_Image_Translation::t("Unknown (%s)"), $data);
                     break;
                 }
                 break;
@@ -342,22 +342,22 @@ class Horde_Image_Exif_Parser_Panasonic extends Horde_Image_Exif_Parser_Base
                 //Colour Effect
                 switch ($data) {
                 case 1:
-                    $data = $this->_dict->t("Off");
+                    $data = Horde_Image_Translation::t("Off");
                     break;
                 case 2:
-                    $data = $this->_dict->t("Warm");
+                    $data = Horde_Image_Translation::t("Warm");
                     break;
                 case 3:
-                    $data = $this->_dict->t("Cool");
+                    $data = Horde_Image_Translation::t("Cool");
                     break;
                 case 4:
-                    $data = $this->_dict->t("Black and White");
+                    $data = Horde_Image_Translation::t("Black and White");
                     break;
                 case 5:
-                    $data = $this->_dict->t("Sepia");
+                    $data = Horde_Image_Translation::t("Sepia");
                     break;
                 default:
-                    $data = sprintf($this->_dict->t("Unknown (%s)"), $data);
+                    $data = sprintf(Horde_Image_Translation::t("Unknown (%s)"), $data);
                     break;
                 }
                 break;
@@ -366,16 +366,16 @@ class Horde_Image_Exif_Parser_Panasonic extends Horde_Image_Exif_Parser_Base
                 //Burst Mode
                 switch ($data) {
                 case 0:
-                    $data = $this->_dict->t("Off");
+                    $data = Horde_Image_Translation::t("Off");
                     break;
                 case 1:
-                    $data = $this->_dict->t("Low/High Quality");
+                    $data = Horde_Image_Translation::t("Low/High Quality");
                     break;
                 case 2:
-                    $data = $this->_dict->t("Infinite");
+                    $data = Horde_Image_Translation::t("Infinite");
                     break;
                 default:
-                    $data = sprintf($this->_dict->t("Unknown (%s)"), $data);
+                    $data = sprintf(Horde_Image_Translation::t("Unknown (%s)"), $data);
                     break;
                 }
                 break;
@@ -384,16 +384,16 @@ class Horde_Image_Exif_Parser_Panasonic extends Horde_Image_Exif_Parser_Base
                 //Contrast
                 switch ($data) {
                 case 0:
-                    $data = $this->_dict->t("Standard");
+                    $data = Horde_Image_Translation::t("Standard");
                     break;
                 case 1:
-                    $data = $this->_dict->t("Low");
+                    $data = Horde_Image_Translation::t("Low");
                     break;
                 case 2:
-                    $data = $this->_dict->t("High");
+                    $data = Horde_Image_Translation::t("High");
                     break;
                 default:
-                    $data = sprintf($this->_dict->t("Unknown (%s)"), $data);
+                    $data = sprintf(Horde_Image_Translation::t("Unknown (%s)"), $data);
                     break;
                 }
                 break;
@@ -402,16 +402,16 @@ class Horde_Image_Exif_Parser_Panasonic extends Horde_Image_Exif_Parser_Base
                 //Noise Reduction
                 switch ($data) {
                 case 0:
-                    $data = $this->_dict->t("Standard");
+                    $data = Horde_Image_Translation::t("Standard");
                     break;
                 case 1:
-                    $data = $this->_dict->t("Low");
+                    $data = Horde_Image_Translation::t("Low");
                     break;
                 case 2:
-                    $data = $this->_dict->t("High");
+                    $data = Horde_Image_Translation::t("High");
                     break;
                 default:
-                    $data = sprintf($this->_dict->t("Unknown (%s)"), $data);
+                    $data = sprintf(Horde_Image_Translation::t("Unknown (%s)"), $data);
                     break;
                 }
                 break;
@@ -420,16 +420,16 @@ class Horde_Image_Exif_Parser_Panasonic extends Horde_Image_Exif_Parser_Base
                 //Self Timer
                 switch ($data) {
                 case 1:
-                    $data = $this->_dict->t("Off");
+                    $data = Horde_Image_Translation::t("Off");
                     break;
                 case 2:
-                    $data = $this->_dict->t("10s");
+                    $data = Horde_Image_Translation::t("10s");
                     break;
                 case 3:
-                    $data = $this->_dict->t("2s");
+                    $data = Horde_Image_Translation::t("2s");
                     break;
                 default:
-                    $data = sprintf($this->_dict->t("Unknown (%s)"), $data);
+                    $data = sprintf(Horde_Image_Translation::t("Unknown (%s)"), $data);
                     break;
                 }
                 break;
@@ -438,16 +438,16 @@ class Horde_Image_Exif_Parser_Panasonic extends Horde_Image_Exif_Parser_Base
                 //Rotation
                 switch ($data) {
                 case 1:
-                    $data = $this->_dict->t("Horizontal (normal)");
+                    $data = Horde_Image_Translation::t("Horizontal (normal)");
                     break;
                 case 6:
-                    $data = $this->_dict->t("Rotate 90 CW");
+                    $data = Horde_Image_Translation::t("Rotate 90 CW");
                     break;
                 case 8:
-                    $data = $this->_dict->t("Rotate 270 CW");
+                    $data = Horde_Image_Translation::t("Rotate 270 CW");
                     break;
                 default:
-                    $data = sprintf($this->_dict->t("Unknown (%s)"), $data);
+                    $data = sprintf(Horde_Image_Translation::t("Unknown (%s)"), $data);
                     break;
                 }
                 break;
@@ -456,13 +456,13 @@ class Horde_Image_Exif_Parser_Panasonic extends Horde_Image_Exif_Parser_Base
                 //Color Mode
                 switch ($data) {
                 case 0:
-                    $data = $this->_dict->t("Normal");
+                    $data = Horde_Image_Translation::t("Normal");
                     break;
                 case 1:
-                    $data = $this->_dict->t("Natural");
+                    $data = Horde_Image_Translation::t("Natural");
                     break;
                 default:
-                    $data = sprintf($this->_dict->t("Unknown (%s)"), $data);
+                    $data = sprintf(Horde_Image_Translation::t("Unknown (%s)"), $data);
                     break;
                 }
                 break;
index 350568a..ad04aaa 100644 (file)
@@ -95,15 +95,15 @@ class Horde_Image_Exif_Parser_Sanyo extends Horde_Image_Exif_Parser_Base
             switch ($tag) {
             case '0200':
                 //SpecialMode
-                $data = $data == 0 ? $this->_dict->t("Normal") : $this->_dict->t("Unknown") . ': ' . $data;
+                $data = $data == 0 ? Horde_Image_Translation::t("Normal") : Horde_Image_Translation::t("Unknown") . ': ' . $data;
                 break;
             case '0201':
                 //Quality
-                $data = $data == 2 ? $this->_dict->t("High") : $this->_dict->t("Unknown") . ': ' . $data;
+                $data = $data == 2 ? Horde_Image_Translation::t("High") : Horde_Image_Translation::t("Unknown") . ': ' . $data;
                 break;
             case '0202':
                 //Macro
-                $data = $data == 0 ? $this->_dict->t("Normal") : $this->_dict->t("Unknown") . ': ' . $data;
+                $data = $data == 0 ? Horde_Image_Translation::t("Normal") : Horde_Image_Translation::t("Unknown") . ': ' . $data;
                 break;
             }
             break;
diff --git a/framework/Image/lib/Horde/Image/Translation.php b/framework/Image/lib/Horde/Image/Translation.php
new file mode 100644 (file)
index 0000000..db5ffdd
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Image
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Image_Translation is the translation wrapper class for Horde_Image.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Image
+ */
+class Horde_Image_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Image';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Image/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Image';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Image/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index 456adf0..37ff66f 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.9.0" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Horde_Image</name>
  <channel>pear.horde.org</channel>
  <summary>Horde Image API</summary>
@@ -23,8 +23,8 @@
   <email>mrubinsk@horde.org</email>
   <active>yes</active>
  </developer>
- <date>2010-08-12</date>
- <time>13:15:12</time>
+ <date>2010-10-22</date>
+ <time>19:03:09</time>
  <version>
   <release>0.1.0</release>
   <api>0.1.0</api>
@@ -51,28 +51,28 @@ Initial Horde 4 package
        </dir> <!-- /lib/Horde/Image/Effect/Gd -->
        <dir name="Im">
         <file name="Border.php" role="php" />
+        <file name="CenterCrop.php" role="php" />
         <file name="Composite.php" role="php" />
         <file name="DropShadow.php" role="php" />
+        <file name="LiquidResize.php" role="php" />
         <file name="PhotoStack.php" role="php" />
         <file name="PolaroidImage.php" role="php" />
         <file name="RoundCorners.php" role="php" />
         <file name="TextWatermark.php" role="php" />
         <file name="Unsharpmask.php" role="php" />
-        <file name="LiquidResize.php" role="php" />
-        <file name="CenterCrop.php" role="php" />
        </dir> <!-- /lib/Horde/Image/Effect/Im -->
        <dir name="Imagick">
         <file name="Border.php" role="php" />
+        <file name="CenterCrop.php" role="php" />
         <file name="Composite.php" role="php" />
         <file name="DropShadow.php" role="php" />
+        <file name="LiquidResize.php" role="php" />
         <file name="PhotoStack.php" role="php" />
         <file name="PolaroidImage.php" role="php" />
         <file name="RoundCorners.php" role="php" />
+        <file name="SmartCrop.php" role="php" />
         <file name="TextWatermark.php" role="php" />
         <file name="Unsharpmask.php" role="php" />
-        <file name="LiquidResize.php" role="php" />
-        <file name="SmartCrop.php" role="php" />
-        <file name="CenterCrop.php" role="php" />
        </dir> <!-- /lib/Horde/Image/Effect/Imagick -->
        <file name="Border.php" role="php" />
       </dir> <!-- /lib/Horde/Image/Effect -->
@@ -103,16 +103,281 @@ Initial Horde 4 package
       <file name="rgb.php" role="php" />
       <file name="Svg.php" role="php" />
       <file name="Swf.php" role="php" />
+      <file name="Translation.php" role="php">
+       <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+      </file>
      </dir> <!-- /lib/Horde/Image -->
      <file name="Image.php" role="php" />
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Image.mo" role="data" />
+      <file name="Horde_Image.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Image.pot" role="data" />
+   </dir> <!-- /locale -->
    <dir name="tests">
     <file name="gd.php" role="test" />
     <file name="im.php" role="test" />
     <file name="img1.jpg" role="data" />
     <file name="img2.jpg" role="data" />
     <file name="img3.jpg" role="data" />
+    <file name="img4.jpg" role="data" />
     <file name="runtest.php" role="php" />
     <file name="svg.php" role="test" />
     <file name="swf.php" role="test" />
@@ -129,6 +394,10 @@ Initial Horde 4 package
     <min>1.5.0</min>
    </pearinstaller>
    <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
+   <package>
     <name>Util</name>
     <channel>pear.horde.org</channel>
    </package>
@@ -154,32 +423,33 @@ Initial Horde 4 package
    <install as="Horde/Image/rgb.php" name="lib/Horde/Image/rgb.php" />
    <install as="Horde/Image/Svg.php" name="lib/Horde/Image/Svg.php" />
    <install as="Horde/Image/Swf.php" name="lib/Horde/Image/Swf.php" />
+   <install as="Horde/Image/Translation.php" name="lib/Horde/Image/Translation.php" />
    <install as="Horde/Image/Effect/Border.php" name="lib/Horde/Image/Effect/Border.php" />
    <install as="Horde/Image/Effect/Gd/DropShadow.php" name="lib/Horde/Image/Effect/Gd/DropShadow.php" />
    <install as="Horde/Image/Effect/Gd/RoundCorners.php" name="lib/Horde/Image/Effect/Gd/RoundCorners.php" />
    <install as="Horde/Image/Effect/Gd/TextWatermark.php" name="lib/Horde/Image/Effect/Gd/TextWatermark.php" />
    <install as="Horde/Image/Effect/Gd/Unsharpmask.php" name="lib/Horde/Image/Effect/Gd/Unsharpmask.php" />
    <install as="Horde/Image/Effect/Im/Border.php" name="lib/Horde/Image/Effect/Im/Border.php" />
+   <install as="Horde/Image/Effect/Im/CenterCrop.php" name="lib/Horde/Image/Effect/Im/CenterCrop.php" />
    <install as="Horde/Image/Effect/Im/Composite.php" name="lib/Horde/Image/Effect/Im/Composite.php" />
    <install as="Horde/Image/Effect/Im/DropShadow.php" name="lib/Horde/Image/Effect/Im/DropShadow.php" />
+   <install as="Horde/Image/Effect/Im/LiquidResize.php" name="lib/Horde/Image/Effect/Im/LiquidResize.php" />
    <install as="Horde/Image/Effect/Im/PhotoStack.php" name="lib/Horde/Image/Effect/Im/PhotoStack.php" />
    <install as="Horde/Image/Effect/Im/PolaroidImage.php" name="lib/Horde/Image/Effect/Im/PolaroidImage.php" />
    <install as="Horde/Image/Effect/Im/RoundCorners.php" name="lib/Horde/Image/Effect/Im/RoundCorners.php" />
    <install as="Horde/Image/Effect/Im/TextWatermark.php" name="lib/Horde/Image/Effect/Im/TextWatermark.php" />
    <install as="Horde/Image/Effect/Im/Unsharpmask.php" name="lib/Horde/Image/Effect/Im/Unsharpmask.php" />
-   <install as="Horde/Image/Effect/Im/LiquidResize.php" name="lib/Horde/Image/Effect/Im/LiquidResize.php" />
-   <install as="Horde/Image/Effect/Im/CenterCrop.php" name="lib/Horde/Image/Effect/Im/CenterCrop.php" />
    <install as="Horde/Image/Effect/Imagick/Border.php" name="lib/Horde/Image/Effect/Imagick/Border.php" />
+   <install as="Horde/Image/Effect/Imagick/CenterCrop.php" name="lib/Horde/Image/Effect/Imagick/CenterCrop.php" />
    <install as="Horde/Image/Effect/Imagick/Composite.php" name="lib/Horde/Image/Effect/Imagick/Composite.php" />
    <install as="Horde/Image/Effect/Imagick/DropShadow.php" name="lib/Horde/Image/Effect/Imagick/DropShadow.php" />
+   <install as="Horde/Image/Effect/Imagick/LiquidResize.php" name="lib/Horde/Image/Effect/Imagick/LiquidResize.php" />
    <install as="Horde/Image/Effect/Imagick/PhotoStack.php" name="lib/Horde/Image/Effect/Imagick/PhotoStack.php" />
    <install as="Horde/Image/Effect/Imagick/PolaroidImage.php" name="lib/Horde/Image/Effect/Imagick/PolaroidImage.php" />
    <install as="Horde/Image/Effect/Imagick/RoundCorners.php" name="lib/Horde/Image/Effect/Imagick/RoundCorners.php" />
+   <install as="Horde/Image/Effect/Imagick/SmartCrop.php" name="lib/Horde/Image/Effect/Imagick/SmartCrop.php" />
    <install as="Horde/Image/Effect/Imagick/TextWatermark.php" name="lib/Horde/Image/Effect/Imagick/TextWatermark.php" />
    <install as="Horde/Image/Effect/Imagick/Unsharpmask.php" name="lib/Horde/Image/Effect/Imagick/Unsharpmask.php" />
-   <install as="Horde/Image/Effect/Imagick/LiquidResize.php" name="lib/Horde/Image/Effect/Imagick/LiquidResize.php" />
-   <install as="Horde/Image/Effect/Imagick/SmartCrop.php" name="lib/Horde/Image/Effect/Imagick/SmartCrop.php" />
-   <install as="Horde/Image/Effect/Imagick/CenterCrop.php" name="lib/Horde/Image/Effect/Imagick/CenterCrop.php" />
    <install as="Horde/Image/Exif/Base.php" name="lib/Horde/Image/Exif/Base.php" />
    <install as="Horde/Image/Exif/Bundled.php" name="lib/Horde/Image/Exif/Bundled.php" />
    <install as="Horde/Image/Exif/Exiftool.php" name="lib/Horde/Image/Exif/Exiftool.php" />
@@ -192,6 +462,93 @@ Initial Horde 4 package
    <install as="Horde/Image/Exif/Parser/Olympus.php" name="lib/Horde/Image/Exif/Parser/Olympus.php" />
    <install as="Horde/Image/Exif/Parser/Panasonic.php" name="lib/Horde/Image/Exif/Parser/Panasonic.php" />
    <install as="Horde/Image/Exif/Parser/Sanyo.php" name="lib/Horde/Image/Exif/Parser/Sanyo.php" />
+   <install as="locale/Horde_Image.pot" name="locale/Horde_Image.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Image.mo" name="locale/ar/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Image.po" name="locale/ar/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Image.mo" name="locale/bg/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Image.po" name="locale/bg/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Image.mo" name="locale/bs/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Image.po" name="locale/bs/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Image.mo" name="locale/ca/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Image.po" name="locale/ca/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Image.mo" name="locale/cs/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Image.po" name="locale/cs/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Image.mo" name="locale/da/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Image.po" name="locale/da/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Image.mo" name="locale/de/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Image.po" name="locale/de/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Image.mo" name="locale/el/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Image.po" name="locale/el/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Image.mo" name="locale/en/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Image.po" name="locale/en/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Image.mo" name="locale/es/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Image.po" name="locale/es/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Image.mo" name="locale/et/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Image.po" name="locale/et/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Image.mo" name="locale/eu/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Image.po" name="locale/eu/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Image.mo" name="locale/fa/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Image.po" name="locale/fa/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Image.mo" name="locale/fi/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Image.po" name="locale/fi/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Image.mo" name="locale/fr/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Image.po" name="locale/fr/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Image.mo" name="locale/gl/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Image.po" name="locale/gl/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Image.mo" name="locale/he/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Image.po" name="locale/he/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Image.mo" name="locale/hr/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Image.po" name="locale/hr/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Image.mo" name="locale/hu/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Image.po" name="locale/hu/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Image.mo" name="locale/id/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Image.po" name="locale/id/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Image.mo" name="locale/is/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Image.po" name="locale/is/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Image.mo" name="locale/it/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Image.po" name="locale/it/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Image.mo" name="locale/ja/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Image.po" name="locale/ja/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Image.mo" name="locale/km/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Image.po" name="locale/km/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Image.mo" name="locale/ko/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Image.po" name="locale/ko/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Image.mo" name="locale/lt/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Image.po" name="locale/lt/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Image.mo" name="locale/lv/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Image.po" name="locale/lv/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Image.mo" name="locale/mk/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Image.po" name="locale/mk/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Image.mo" name="locale/nb/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Image.po" name="locale/nb/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Image.mo" name="locale/nl/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Image.po" name="locale/nl/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Image.mo" name="locale/nn/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Image.po" name="locale/nn/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Image.mo" name="locale/pl/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Image.po" name="locale/pl/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Image.mo" name="locale/pt/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Image.po" name="locale/pt/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Image.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Image.po" name="locale/pt_BR/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Image.mo" name="locale/ro/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Image.po" name="locale/ro/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Image.mo" name="locale/ru/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Image.po" name="locale/ru/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Image.mo" name="locale/sk/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Image.po" name="locale/sk/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Image.mo" name="locale/sl/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Image.po" name="locale/sl/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Image.mo" name="locale/sv/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Image.po" name="locale/sv/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Image.mo" name="locale/tr/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Image.po" name="locale/tr/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Image.mo" name="locale/uk/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Image.po" name="locale/uk/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Image.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Image.po" name="locale/zh_CN/LC_MESSAGES/Horde_Image.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Image.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Image.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Image.po" name="locale/zh_TW/LC_MESSAGES/Horde_Image.po" />
   </filelist>
  </phprelease>
  <changelog>
@@ -219,7 +576,7 @@ Initial release as a PEAR package
     <release>alpha</release>
     <api>alpha</api>
    </stability>
-   <date>2010-08-12</date>
+   <date>2010-10-22</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
    <notes>
 Initial Horde 4 package
index 10a85bc..96aa184 100644 (file)
@@ -42,28 +42,14 @@ implements Horde_Itip_Event
     private $_vevent;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Constructor.
      *
      * @param Horde_Icalendar_Vevent $vevent The iCalendar object that will be
      *                                       wrapped by this instance.
-     * @param Horde_Translation      $dict   A translation handler
-     *                                       implementing Horde_Translation.
      */
-    public function __construct(Horde_Icalendar_Vevent $vevent, $dict = null)
+    public function __construct(Horde_Icalendar_Vevent $vevent)
     {
         $this->_vevent = $vevent;
-        if ($dict) {
-            $this->_dict = $dict;
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Itip', dirname(__FILE__) . '/../../../../locale');
-        }
     }
 
     /**
@@ -103,7 +89,7 @@ implements Horde_Itip_Event
      */
     public function getSummary()
     {
-        return $this->_vevent->getAttributeDefault('SUMMARY', $this->_dict->t("No summary available"));
+        return $this->_vevent->getAttributeDefault('SUMMARY', Horde_Itip_Translation::t("No summary available"));
     }
 
     /**
index 411eccf..83713eb 100644 (file)
@@ -46,7 +46,7 @@ extends Horde_Itip_Response_Type_Base
      */
     public function getShortSubject()
     {
-        return $this->_dict->t("Accepted");
+        return Horde_Itip_Translation::t("Accepted");
     }
 
     /**
@@ -59,7 +59,7 @@ extends Horde_Itip_Response_Type_Base
     public function getShortMessage($is_update = false)
     {
         return $is_update
-            ? $this->_dict->t("has accepted the update to the following event")
-            : $this->_dict->t("has accepted the invitation to the following event");
+            ? Horde_Itip_Translation::t("has accepted the update to the following event")
+            : Horde_Itip_Translation::t("has accepted the invitation to the following event");
     }
 }
\ No newline at end of file
index c38e975..16bb000 100644 (file)
@@ -51,33 +51,18 @@ implements Horde_Itip_Response_Type
     private $_comment;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Constructor.
      *
      * @param Horde_Itip_Resource $resource  The invited resource. 
      * @param string              $comment   A comment for the subject line.
-     * @param Horde_Translation   $dict      A translation handler
-     *                                       implementing Horde_Translation.
      */
     public function __construct(
         Horde_Itip_Resource $resource,
-        $comment = null,
-        $dict = null
+        $comment = null
     )
     {
         $this->_resource = $resource;
         $this->_comment  = $comment;
-        if ($dict) {
-            $this->_dict = $dict;
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Itip', dirname(__FILE__) . '/../../../../../locale');
-        }
     }
 
     /**
index c716858..58a0561 100644 (file)
@@ -46,7 +46,7 @@ extends Horde_Itip_Response_Type_Base
      */
     public function getShortSubject()
     {
-        return $this->_dict->t("Declined");
+        return Horde_Itip_Translation::t("Declined");
     }
 
     /**
@@ -59,7 +59,7 @@ extends Horde_Itip_Response_Type_Base
     public function getShortMessage($is_update = false)
     {
         return $is_update
-            ? $this->_dict->t("has declined the update to the following event")
-            : $this->_dict->t("has declined the invitation to the following event");
+            ? Horde_Itip_Translation::t("has declined the update to the following event")
+            : Horde_Itip_Translation::t("has declined the invitation to the following event");
     }
 }
\ No newline at end of file
index 1ae146c..c5815e0 100644 (file)
@@ -46,7 +46,7 @@ extends Horde_Itip_Response_Type_Base
      */
     public function getShortSubject()
     {
-        return $this->_dict->t("Tentative");
+        return Horde_Itip_Translation::t("Tentative");
     }
 
     /**
@@ -59,7 +59,7 @@ extends Horde_Itip_Response_Type_Base
     public function getShortMessage($is_update = false)
     {
         return $is_update
-            ? $this->_dict->t("has tentatively accepted the update to the following event")
-            : $this->_dict->t("has tentatively accepted the invitation to the following event");
+            ? Horde_Itip_Translation::t("has tentatively accepted the update to the following event")
+            : Horde_Itip_Translation::t("has tentatively accepted the invitation to the following event");
     }
 }
\ No newline at end of file
index c805b77..2551fe3 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.9.0" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Itip</name>
  <channel>pear.horde.org</channel>
  <summary>iTip invitation response handling.</summary>
@@ -23,8 +23,8 @@
   <email>jan@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2010-08-17</date>
- <time>15:51:54</time>
+ <date>2010-10-22</date>
+ <time>19:02:58</time>
  <version>
   <release>0.1.0</release>
   <api>0.1.0</api>
      <file name="Itip.php" role="php" />
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Itip.mo" role="data" />
+      <file name="Horde_Itip.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Itip.pot" role="data" />
+   </dir> <!-- /locale -->
    <dir name="test">
     <dir name="Horde">
      <dir name="Itip">
    <install as="Horde/Itip/Response/Type/Base.php" name="lib/Horde/Itip/Response/Type/Base.php" />
    <install as="Horde/Itip/Response/Type/Decline.php" name="lib/Horde/Itip/Response/Type/Decline.php" />
    <install as="Horde/Itip/Response/Type/Tentative.php" name="lib/Horde/Itip/Response/Type/Tentative.php" />
+   <install as="locale/Horde_Itip.pot" name="locale/Horde_Itip.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Itip.mo" name="locale/ar/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Itip.po" name="locale/ar/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Itip.mo" name="locale/bg/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Itip.po" name="locale/bg/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Itip.mo" name="locale/bs/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Itip.po" name="locale/bs/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Itip.mo" name="locale/ca/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Itip.po" name="locale/ca/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Itip.mo" name="locale/cs/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Itip.po" name="locale/cs/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Itip.mo" name="locale/da/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Itip.po" name="locale/da/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Itip.mo" name="locale/de/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Itip.po" name="locale/de/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Itip.mo" name="locale/el/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Itip.po" name="locale/el/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Itip.mo" name="locale/en/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Itip.po" name="locale/en/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Itip.mo" name="locale/es/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Itip.po" name="locale/es/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Itip.mo" name="locale/et/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Itip.po" name="locale/et/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Itip.mo" name="locale/eu/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Itip.po" name="locale/eu/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Itip.mo" name="locale/fa/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Itip.po" name="locale/fa/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Itip.mo" name="locale/fi/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Itip.po" name="locale/fi/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Itip.mo" name="locale/fr/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Itip.po" name="locale/fr/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Itip.mo" name="locale/gl/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Itip.po" name="locale/gl/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Itip.mo" name="locale/he/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Itip.po" name="locale/he/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Itip.mo" name="locale/hr/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Itip.po" name="locale/hr/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Itip.mo" name="locale/hu/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Itip.po" name="locale/hu/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Itip.mo" name="locale/id/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Itip.po" name="locale/id/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Itip.mo" name="locale/is/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Itip.po" name="locale/is/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Itip.mo" name="locale/it/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Itip.po" name="locale/it/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Itip.mo" name="locale/ja/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Itip.po" name="locale/ja/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Itip.mo" name="locale/km/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Itip.po" name="locale/km/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Itip.mo" name="locale/ko/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Itip.po" name="locale/ko/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Itip.mo" name="locale/lt/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Itip.po" name="locale/lt/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Itip.mo" name="locale/lv/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Itip.po" name="locale/lv/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Itip.mo" name="locale/mk/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Itip.po" name="locale/mk/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Itip.mo" name="locale/nb/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Itip.po" name="locale/nb/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Itip.mo" name="locale/nl/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Itip.po" name="locale/nl/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Itip.mo" name="locale/nn/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Itip.po" name="locale/nn/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Itip.mo" name="locale/pl/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Itip.po" name="locale/pl/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Itip.mo" name="locale/pt/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Itip.po" name="locale/pt/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Itip.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Itip.po" name="locale/pt_BR/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Itip.mo" name="locale/ro/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Itip.po" name="locale/ro/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Itip.mo" name="locale/ru/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Itip.po" name="locale/ru/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Itip.mo" name="locale/sk/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Itip.po" name="locale/sk/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Itip.mo" name="locale/sl/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Itip.po" name="locale/sl/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Itip.mo" name="locale/sv/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Itip.po" name="locale/sv/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Itip.mo" name="locale/tr/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Itip.po" name="locale/tr/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Itip.mo" name="locale/uk/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Itip.po" name="locale/uk/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Itip.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Itip.po" name="locale/zh_CN/LC_MESSAGES/Horde_Itip.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Itip.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Itip.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Itip.po" name="locale/zh_TW/LC_MESSAGES/Horde_Itip.po" />
    <install as="Horde/Itip/AllTests.php" name="test/Horde/Itip/AllTests.php" />
    <install as="Horde/Itip/Autoload.php" name="test/Horde/Itip/Autoload.php" />
    <install as="Horde/Itip/phpunit.xml" name="test/Horde/Itip/phpunit.xml" />
     <release>alpha</release>
     <api>alpha</api>
    </stability>
-   <date>2010-08-17</date>
+   <date>2010-10-22</date>
    <license uri="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html">LGPL</license>
    <notes>
 * Extracted package from Kolab_Resource.
index 15b5073..b425c6b 100644 (file)
@@ -719,7 +719,6 @@ class Kolab {
      */
     function getAppConsts($app)
     {
-        $dict = new Horde_Translation_Gettext('Horde_Kolab', dirname(__FILE__) . '/locale');
         switch ($app) {
         case 'mnemo':
             return array(
@@ -728,7 +727,7 @@ class Kolab {
                 'allowed_types'         => array(
                     'note',
                 ),
-                'default_folder_name'   => $dict->t("Notes"),
+                'default_folder_name'   => Horde_Kolab_Translation::t("Notes"),
                 'application'           => $app,
             );
 
@@ -739,7 +738,7 @@ class Kolab {
                 'allowed_types'         => array(
                     'event',
                 ),
-                'default_folder_name'   => $dict->t("Calendar"),
+                'default_folder_name'   => Horde_Kolab_Translation::t("Calendar"),
                 'application'           => $app,
             );
 
@@ -751,7 +750,7 @@ class Kolab {
                     'contact',
                     'distribution-list',
                 ),
-                'default_folder_name'   => $dict->t("Contacts"),
+                'default_folder_name'   => Horde_Kolab_Translation::t("Contacts"),
                 'application'           => $app,
             );
 
@@ -762,7 +761,7 @@ class Kolab {
                 'allowed_types'         => array(
                     'task',
                 ),
-                'default_folder_name'   => $dict->t("Tasks"),
+                'default_folder_name'   => Horde_Kolab_Translation::t("Tasks"),
                 'application'           => $app,
             );
 
@@ -773,12 +772,12 @@ class Kolab {
                 'allowed_types'         => array(
                     'h-prefs',
                 ),
-                'default_folder_name'   => $dict->t("Preferences"),
+                'default_folder_name'   => Horde_Kolab_Translation::t("Preferences"),
                 'application'           => $app,
             );
 
         default:
-            return PEAR::raiseError(sprintf($dict->t("The Horde/Kolab integration engine does not support \"%s\""), $app));
+            return PEAR::raiseError(sprintf(Horde_Kolab_Translation::t("The Horde/Kolab integration engine does not support \"%s\""), $app));
         }
     }
 
diff --git a/framework/Kolab/Kolab/Translation.php b/framework/Kolab/Kolab/Translation.php
new file mode 100644 (file)
index 0000000..f4bbc13
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Kolab
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Kolab_Translation is the translation wrapper class for Horde_Kolab.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Kolab
+ */
+class Horde_Kolab_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Kolab';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../locale' : '@data_dir@/Kolab/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Kolab';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../locale' : '@data_dir@/Kolab/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index 4863795..a3ad253 100644 (file)
@@ -1,16 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.4.9" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
-http://pear.php.net/dtd/tasks-1.0.xsd
-http://pear.php.net/dtd/package-2.0
-http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Kolab</name>
  <channel>pear.horde.org</channel>
  <summary>Glue package for accessing a Kolab server from Horde</summary>
  <description>This package contains a number of helper functions that
  make communication between a Horde client and a Kolab server
  smoother. It is now deprecated in favor of the various Kolab_*
- packages.
- </description>
+ packages.</description>
  <lead>
   <name>Chuck Hagenbuch</name>
   <user>chuck</user>
@@ -23,8 +19,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <email>jan@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2006-05-08</date>
- <time>22:13:52</time>
+ <date>2010-10-22</date>
+ <time>19:03:01</time>
  <version>
   <release>0.0.6</release>
   <api>0.0.6</api>
@@ -34,7 +30,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <api>alpha</api>
  </stability>
  <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
- <notes>* Moved all functionality into separate Kolab_* modules.
+ <notes>
+* Moved all functionality into separate Kolab_* modules.
 * Converted to package.xml 2.0 for pear.horde.org
 * Allow using either c-client or Net_IMAP for Kolab IMAP functionality
   (Request #5124, wrobel@pardus.de)
@@ -43,7 +40,273 @@ http://pear.php.net/dtd/package-2.0.xsd">
 * Added XML handlers for the new Kolab framework.
  </notes>
  <contents>
-  <dir name="/" baseinstalldir="/Horde">
+  <dir baseinstalldir="/" name="/">
+   <dir name="Kolab">
+     <file name="Translation.php" role="php">
+       <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+     </file>
+   </dir> <!-- /Kolab -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab.mo" role="data" />
+      <file name="Horde_Kolab.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Kolab.pot" role="data" />
+   </dir> <!-- /locale -->
    <file name="Kolab.php" role="php" />
   </dir> <!-- / -->
  </contents>
@@ -55,40 +318,138 @@ http://pear.php.net/dtd/package-2.0.xsd">
    <pearinstaller>
     <min>1.4.0b1</min>
    </pearinstaller>
+   <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
   </required>
  </dependencies>
- <phprelease />
+ <phprelease>
+  <filelist>
+   <install as="locale/Horde_Kolab.pot" name="locale/Horde_Kolab.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Kolab.mo" name="locale/ar/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Kolab.po" name="locale/ar/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Kolab.mo" name="locale/bg/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Kolab.po" name="locale/bg/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Kolab.mo" name="locale/bs/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Kolab.po" name="locale/bs/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Kolab.mo" name="locale/ca/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Kolab.po" name="locale/ca/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Kolab.mo" name="locale/cs/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Kolab.po" name="locale/cs/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Kolab.mo" name="locale/da/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Kolab.po" name="locale/da/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Kolab.mo" name="locale/de/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Kolab.po" name="locale/de/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Kolab.mo" name="locale/el/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Kolab.po" name="locale/el/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Kolab.mo" name="locale/en/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Kolab.po" name="locale/en/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Kolab.mo" name="locale/es/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Kolab.po" name="locale/es/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Kolab.mo" name="locale/et/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Kolab.po" name="locale/et/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Kolab.mo" name="locale/eu/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Kolab.po" name="locale/eu/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Kolab.mo" name="locale/fa/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Kolab.po" name="locale/fa/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Kolab.mo" name="locale/fi/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Kolab.po" name="locale/fi/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Kolab.mo" name="locale/fr/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Kolab.po" name="locale/fr/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Kolab.mo" name="locale/gl/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Kolab.po" name="locale/gl/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Kolab.mo" name="locale/he/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Kolab.po" name="locale/he/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Kolab.mo" name="locale/hr/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Kolab.po" name="locale/hr/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Kolab.mo" name="locale/hu/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Kolab.po" name="locale/hu/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Kolab.mo" name="locale/id/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Kolab.po" name="locale/id/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Kolab.mo" name="locale/is/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Kolab.po" name="locale/is/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Kolab.mo" name="locale/it/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Kolab.po" name="locale/it/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Kolab.mo" name="locale/ja/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Kolab.po" name="locale/ja/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Kolab.mo" name="locale/km/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Kolab.po" name="locale/km/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Kolab.mo" name="locale/ko/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Kolab.po" name="locale/ko/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Kolab.mo" name="locale/lt/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Kolab.po" name="locale/lt/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Kolab.mo" name="locale/lv/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Kolab.po" name="locale/lv/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Kolab.mo" name="locale/mk/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Kolab.po" name="locale/mk/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Kolab.mo" name="locale/nb/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Kolab.po" name="locale/nb/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Kolab.mo" name="locale/nl/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Kolab.po" name="locale/nl/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Kolab.mo" name="locale/nn/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Kolab.po" name="locale/nn/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Kolab.mo" name="locale/pl/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Kolab.po" name="locale/pl/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Kolab.mo" name="locale/pt/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Kolab.po" name="locale/pt/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Kolab.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Kolab.po" name="locale/pt_BR/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Kolab.mo" name="locale/ro/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Kolab.po" name="locale/ro/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Kolab.mo" name="locale/ru/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Kolab.po" name="locale/ru/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Kolab.mo" name="locale/sk/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Kolab.po" name="locale/sk/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Kolab.mo" name="locale/sl/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Kolab.po" name="locale/sl/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Kolab.mo" name="locale/sv/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Kolab.po" name="locale/sv/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Kolab.mo" name="locale/tr/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Kolab.po" name="locale/tr/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Kolab.mo" name="locale/uk/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Kolab.po" name="locale/uk/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Kolab.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Kolab.po" name="locale/zh_CN/LC_MESSAGES/Horde_Kolab.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Kolab.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Kolab.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Kolab.po" name="locale/zh_TW/LC_MESSAGES/Horde_Kolab.po" />
+  </filelist>
+ </phprelease>
  <changelog>
   <release>
    <version>
-    <release>0.0.5</release>
-    <api>0.0.5</api>
+    <release>0.0.1</release>
+    <api>0.0.1</api>
    </version>
    <stability>
     <release>alpha</release>
     <api>alpha</api>
    </stability>
-   <date>2004-09-27</date>
+   <date>2004-01-28</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Yet Another Rewrite (tm). Kolab_Cyrus is gone. Support for the original
-Kolab server has been dropped - Kolab 2 is now the supported backend.
+   <notes>
+Initial contribution to Horde
    </notes>
   </release>
   <release>
    <version>
-    <release>0.0.4</release>
-    <api>0.0.4</api>
+    <release>0.0.2</release>
+    <api>0.0.2</api>
    </version>
    <stability>
     <release>alpha</release>
     <api>alpha</api>
    </stability>
-   <date>2004-04-21</date>
+   <date>2004-01-30</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Pretty much a total reorganisation of the library; added a new Kolab_Cyrus
-object to better encapsulate communication with the Cyrus server. Moved and
-in most cases renamed existing functions to fit into the Kolab_Cyrus object,
-and added several new functions.
+   <notes>
+- Replaced the various iconv() functions with Horde counterparts from
+  the MIME:: and String:: libraries.
+- Replaced the Net_HTTP_Client code with its equivalent that uses
+  HTTP_Request for GETs, and PHP streams with the WebDAV_Client wrapper
+  for WebDAV PUTs.
+- Fixed a small bug in openCyrusConnection() when false was being
+  returned (instead of raising Horde::fatal) on a certain error condition.
    </notes>
   </release>
   <release>
@@ -102,7 +463,8 @@ and added several new functions.
    </stability>
    <date>2004-03-09</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>- Modified the cyrusMailboxURI() function to properly handle shared
+   <notes>
+- Modified the cyrusMailboxURI() function to properly handle shared
   Cyrus folders.
 - Small change in the openCyrusConnection() function to disable creating
   the specified folder if it is a shared folder, even if the user requests
@@ -113,36 +475,57 @@ and added several new functions.
   </release>
   <release>
    <version>
-    <release>0.0.2</release>
-    <api>0.0.2</api>
+    <release>0.0.4</release>
+    <api>0.0.4</api>
    </version>
    <stability>
     <release>alpha</release>
     <api>alpha</api>
    </stability>
-   <date>2004-01-30</date>
+   <date>2004-04-21</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>- Replaced the various iconv() functions with Horde counterparts from
-  the MIME:: and String:: libraries.
-- Replaced the Net_HTTP_Client code with its equivalent that uses
-  HTTP_Request for GETs, and PHP streams with the WebDAV_Client wrapper
-  for WebDAV PUTs.
-- Fixed a small bug in openCyrusConnection() when false was being
-  returned (instead of raising Horde::fatal) on a certain error condition.
+   <notes>
+Pretty much a total reorganisation of the library; added a new Kolab_Cyrus
+object to better encapsulate communication with the Cyrus server. Moved and
+in most cases renamed existing functions to fit into the Kolab_Cyrus object,
+and added several new functions.
    </notes>
   </release>
   <release>
    <version>
-    <release>0.0.1</release>
-    <api>0.0.1</api>
+    <release>0.0.5</release>
+    <api>0.0.5</api>
    </version>
    <stability>
     <release>alpha</release>
     <api>alpha</api>
    </stability>
-   <date>2004-01-28</date>
+   <date>2004-09-27</date>
+   <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
+   <notes>
+Yet Another Rewrite (tm). Kolab_Cyrus is gone. Support for the original
+Kolab server has been dropped - Kolab 2 is now the supported backend.
+   </notes>
+  </release>
+  <release>
+   <version>
+    <release>0.0.6</release>
+    <api>0.0.6</api>
+   </version>
+   <stability>
+    <release>alpha</release>
+    <api>alpha</api>
+   </stability>
+   <date>2010-10-22</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Initial contribution to Horde
+   <notes>
+* Moved all functionality into separate Kolab_* modules.
+* Converted to package.xml 2.0 for pear.horde.org
+* Allow using either c-client or Net_IMAP for Kolab IMAP functionality
+  (Request #5124, wrobel@pardus.de)
+* Splitted Kolab date handling funktions into Date.php
+  (thomas.jarosch@intra2net.com)
+* Added XML handlers for the new Kolab framework.
    </notes>
   </release>
  </changelog>
diff --git a/framework/Kolab_Format/lib/Horde/Kolab/Format/Translation.php b/framework/Kolab_Format/lib/Horde/Kolab/Format/Translation.php
new file mode 100644 (file)
index 0000000..19b32cb
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Kolab_Format
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Kolab_Format_Translation is the translation wrapper class for Horde_Kolab_Format.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Kolab_Format
+ */
+class Horde_Kolab_Format_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Kolab_Format';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../../locale' : '@data_dir@/Kolab_Format/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Kolab_Format';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../../locale' : '@data_dir@/Kolab_Format/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index 2301b7d..9fc843f 100644 (file)
@@ -281,25 +281,12 @@ class Horde_Kolab_Format_Xml
     );
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Constructor
      *
      * @param array $params Any additional options
      */
     public function __construct($params = null)
     {
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Kolab_Format', dirname(__FILE__) . '/../../../../locale');
-        }
-
         if (is_array($params) && isset($params['version'])) {
             $this->_version = $params['version'];
         } else {
@@ -453,7 +440,7 @@ class Horde_Kolab_Format_Xml
             $this->_parseXml($xmltext);
         }
         if (!$this->_xmldoc->documentElement->hasChildNodes()) {
-            throw new Horde_Kolab_Format_Exception($this->_dict->t("No or unreadable content in Kolab XML object"));
+            throw new Horde_Kolab_Format_Exception(Horde_Kolab_Format_Translation::t("No or unreadable content in Kolab XML object"));
         }
 
         // fresh object data
@@ -468,7 +455,7 @@ class Horde_Kolab_Format_Xml
 
         // uid is vital
         if (!isset($object['uid'])) {
-            throw new Horde_Kolab_Format_Exception($this->_dict->t("UID not found in Kolab XML object"));
+            throw new Horde_Kolab_Format_Exception(Horde_Kolab_Format_Translation::t("UID not found in Kolab XML object"));
         }
 
         return $object;
@@ -559,7 +546,7 @@ class Horde_Kolab_Format_Xml
                 return null;
             } elseif ($params['value'] == self::VALUE_NOT_EMPTY) {
                 // May not be empty. Return an error
-                throw new Horde_Kolab_Format_Exception(sprintf($this->_dict->t("Data value for %s is empty in Kolab XML object!"),
+                throw new Horde_Kolab_Format_Exception(sprintf(Horde_Kolab_Format_Translation::t("Data value for %s is empty in Kolab XML object!"),
                                                   $name));
             } elseif ($params['value'] == self::VALUE_DEFAULT) {
                 // Return the default
@@ -608,7 +595,7 @@ class Horde_Kolab_Format_Xml
 
         @$this->_xmldoc->loadXML($xmltext);
         if (empty($this->_xmldoc->documentElement)) {
-            throw new Horde_Kolab_Format_Exception($this->_dict->t("No or unreadable content in Kolab XML object"));
+            throw new Horde_Kolab_Format_Exception(Horde_Kolab_Format_Translation::t("No or unreadable content in Kolab XML object"));
         }
 
     }
@@ -724,7 +711,7 @@ class Horde_Kolab_Format_Xml
                 $value = $params['default'];
             } elseif ($params['value'] == self::VALUE_NOT_EMPTY) {
                 // May not be empty. Return an error
-                throw new Horde_Kolab_Format_Exception(sprintf($this->_dict->t("Data value for %s is empty in Kolab XML object!"),
+                throw new Horde_Kolab_Format_Exception(sprintf(Horde_Kolab_Format_Translation::t("Data value for %s is empty in Kolab XML object!"),
                                                   $name));
             } elseif ($params['value'] == self::VALUE_MAYBE_MISSING) {
                 /**
index f3fc615..cdf4408 100644 (file)
@@ -29,8 +29,8 @@
   <email>jan@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2010-08-15</date>
- <time>15:31:17</time>
+ <date>2010-10-22</date>
+ <time>19:03:01</time>
  <version>
   <release>1.0.2</release>
   <api>1.0.0</api>
        </dir> <!-- /lib/Horde/Kolab/Format/Xml -->
        <file name="Date.php" role="php" />
        <file name="Exception.php" role="php" />
+       <file name="Translation.php" role="php">
+        <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+       </file>
        <file name="Xml.php" role="php" />
       </dir> <!-- /lib/Horde/Kolab/Format -->
       <file name="Format.php" role="php" />
      </dir> <!-- /lib/Horde/Kolab -->
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Format.mo" role="data" />
+      <file name="Horde_Kolab_Format.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Kolab_Format.pot" role="data" />
+   </dir> <!-- /locale -->
    <dir name="test">
     <dir name="Horde">
      <dir name="Kolab">
     <channel>pear.horde.org</channel>
    </package>
    <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
+   <package>
     <name>Util</name>
     <channel>pear.horde.org</channel>
    </package>
    <install as="Horde/Kolab/Format.php" name="lib/Horde/Kolab/Format.php" />
    <install as="Horde/Kolab/Format/Date.php" name="lib/Horde/Kolab/Format/Date.php" />
    <install as="Horde/Kolab/Format/Exception.php" name="lib/Horde/Kolab/Format/Exception.php" />
+   <install as="Horde/Kolab/Format/Translation.php" name="lib/Horde/Kolab/Format/Translation.php" />
    <install as="Horde/Kolab/Format/Xml.php" name="lib/Horde/Kolab/Format/Xml.php" />
    <install as="Horde/Kolab/Format/Xml/Annotation.php" name="lib/Horde/Kolab/Format/Xml/Annotation.php" />
    <install as="Horde/Kolab/Format/Xml/Contact.php" name="lib/Horde/Kolab/Format/Xml/Contact.php" />
    <install as="Horde/Kolab/Format/Xml/Hprefs.php" name="lib/Horde/Kolab/Format/Xml/Hprefs.php" />
    <install as="Horde/Kolab/Format/Xml/Note.php" name="lib/Horde/Kolab/Format/Xml/Note.php" />
    <install as="Horde/Kolab/Format/Xml/Task.php" name="lib/Horde/Kolab/Format/Xml/Task.php" />
+   <install as="locale/Horde_Kolab_Format.pot" name="locale/Horde_Kolab_Format.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/ar/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/ar/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/bg/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/bg/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/bs/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/bs/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/ca/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/ca/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/cs/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/cs/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/da/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/da/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/de/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/de/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/el/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/el/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/en/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/en/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/es/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/es/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/et/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/et/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/eu/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/eu/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/fa/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/fa/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/fi/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/fi/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/fr/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/fr/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/gl/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/gl/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/he/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/he/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/hr/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/hr/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/hu/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/hu/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/id/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/id/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/is/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/is/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/it/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/it/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/ja/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/ja/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/km/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/km/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/ko/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/ko/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/lt/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/lt/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/lv/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/lv/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/mk/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/mk/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/nb/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/nb/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/nl/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/nl/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/nn/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/nn/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/pl/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/pl/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/pt/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/pt/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/pt_BR/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/ro/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/ro/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/ru/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/ru/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/sk/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/sk/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/sl/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/sl/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/sv/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/sv/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/tr/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/tr/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/uk/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/uk/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/zh_CN/LC_MESSAGES/Horde_Kolab_Format.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Kolab_Format.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Kolab_Format.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Kolab_Format.po" name="locale/zh_TW/LC_MESSAGES/Horde_Kolab_Format.po" />
    <install as="Horde/Kolab/Format/AllTests.php" name="test/Horde/Kolab/Format/AllTests.php" />
    <install as="Horde/Kolab/Format/Autoload.php" name="test/Horde/Kolab/Format/Autoload.php" />
    <install as="Horde/Kolab/Format/phpunit.xml" name="test/Horde/Kolab/Format/phpunit.xml" />
     <release>stable</release>
     <api>stable</api>
    </stability>
-   <date>2010-08-15</date>
+   <date>2010-10-22</date>
    <license uri="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html">LGPL</license>
    <notes>
 * Removed dependency on Horde_Exception.
index 03fb217..d12d76e 100644 (file)
@@ -54,19 +54,12 @@ class Horde_Kolab_FreeBusy_Driver_Base
     protected $logger;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Constructor.
      *
      * @param array       $params        Any additional options
      */
     public function __construct($callee = null, $callee_part = null,
-                                $logger = null, $params = array())
+                                $logger = null)
     {
         list($this->user, $this->pass) = $this->getCredentials();
 
@@ -82,12 +75,6 @@ class Horde_Kolab_FreeBusy_Driver_Base
         }
 
         $this->logger = $logger;
-
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Kolab_FreeBusy', dirname(__FILE__) . '/../../../../../locale');
-        }
     }
 
     /**
@@ -189,11 +176,11 @@ class Horde_Kolab_FreeBusy_Driver_Base
 
         if (empty($this->user)) {
             header('WWW-Authenticate: Basic realm="Kolab Freebusy"');
-            return PEAR::raiseError($this->_dict->t("Please authenticate!"));
+            return PEAR::raiseError(Horde_Kolab_FreeBusy_Translation::t("Please authenticate!"));
         }
 
         if (!$this->_authenticated) {
-            return PEAR::raiseError(sprintf($this->_dict->t("Invalid authentication for user %s!"),
+            return PEAR::raiseError(sprintf(Horde_Kolab_FreeBusy_Translation::t("Invalid authentication for user %s!"),
                                             $this->user));
         }
         return true;
index 509afc4..52a5add 100644 (file)
@@ -215,7 +215,7 @@ class Horde_Kolab_FreeBusy_Driver_Freebusy_Base extends Horde_Kolab_FreeBusy_Dri
             }
 
             if (empty($access->owner)) {
-                $message = sprintf($this->_dict->t("No such account %s!"),
+                $message = sprintf(Horde_Kolab_FreeBusy_Translation::t("No such account %s!"),
                                    htmlentities($access->req_owner));
                 $error = array('type' => FREEBUSY_ERROR_NOTFOUND,
                                'error' => PEAR::raiseError($message));
@@ -292,7 +292,7 @@ class Horde_Kolab_FreeBusy_Driver_Freebusy_Base extends Horde_Kolab_FreeBusy_Dri
                 $redirect = 'https://' . urlencode($this->user) . ':' . urlencode($GLOBALS['registry']->getAuthCredential('password'))
                     . '@' . $this->freebusyserver . $path;
                 if (!@readfile($redirect)) {
-                    $message = sprintf($this->_dict->t("Unable to read free/busy information from %s"),
+                    $message = sprintf(Horde_Kolab_FreeBusy_Translation::t("Unable to read free/busy information from %s"),
                                        'https://' . urlencode($this->user) . ':XXX'
                                        . '@' . $this->freebusyserver . $_SERVER['REQUEST_URI']);
                     return PEAR::raiseError($message);
index 998fd67..9b1d8ed 100644 (file)
@@ -79,7 +79,7 @@ class Horde_Kolab_FreeBusy_Driver_Freebusy_Kolab extends Horde_Kolab_FreeBusy_Dr
         $req_folder = Horde_String::convertCharset($req_folder, 'UTF-8', 'UTF7-IMAP');
         $folder = explode('/', $req_folder);
         if (count($folder) < 2) {
-            return PEAR::raiseError(sprintf($this->_dict->t("No such folder %s"), $req_folder));
+            return PEAR::raiseError(sprintf(Horde_Kolab_FreeBusy_Translation::t("No such folder %s"), $req_folder));
         }
 
         $folder[0] = strtolower($folder[0]);
@@ -194,7 +194,7 @@ class Horde_Kolab_FreeBusy_Driver_Freebusy_Kolab extends Horde_Kolab_FreeBusy_Dr
                 }
             }
         } else {
-            return PEAR::raiseError($this->_dict->t("Unable to determine owner of the free/busy data!"));
+            return PEAR::raiseError(Horde_Kolab_FreeBusy_Translation::t("Unable to determine owner of the free/busy data!"));
         }
 
         /* Mangle the folder request into an IMAP folder name */
index a94a24b..89152cb 100644 (file)
@@ -91,23 +91,10 @@ class Horde_Kolab_FreeBusy_Imap {
     var $_xacl;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Initialize the free/busy IMAP handler.
      */
     public function __construct($params = array())
     {
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Kolab_FreeBusy', dirname(__FILE__) . '/../../../../locale');
-        }
-
         //@todo: Make Kolab_FreeBusy session-less again and ensure we get the
         //driver information as well as the login credentials here.
         $params = array('driver'   => 'Mock',
@@ -138,14 +125,14 @@ class Horde_Kolab_FreeBusy_Imap {
             return $this->_data;
         }
         if (!$this->_folder->exists()) {
-            return PEAR::raiseError(sprintf($this->_dict->t("Folder %s does not exist!"), $folder));
+            return PEAR::raiseError(sprintf(Horde_Kolab_FreeBusy_Translation::t("Folder %s does not exist!"), $folder));
         }
         $type = $this->_folder->getType();
         if (is_a($type, 'PEAR_Error')) {
             return $type;
         }
         if ($type != 'event') {
-            return PEAR::raiseError(sprintf($this->_dict->t("Folder %s has type \"%s\" not \"event\"!"),
+            return PEAR::raiseError(sprintf(Horde_Kolab_FreeBusy_Translation::t("Folder %s has type \"%s\" not \"event\"!"),
                                             $folder, $type));
         }
     }
index e028c3d..450dee0 100644 (file)
@@ -14,14 +14,7 @@ class Horde_Kolab_FreeBusy_Report {
 
     var $_errors = array();
 
-    /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    function Horde_Kolab_FreeBusy_Report($params = array())
+    function Horde_Kolab_FreeBusy_Report()
     {
         if (PHP_SAPI == 'cli') {
             $this->_break = "\n";
@@ -32,30 +25,24 @@ class Horde_Kolab_FreeBusy_Report {
             /** Don't report notices */
             error_reporting(E_ALL & ~E_NOTICE);
         }
-
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Kolab_FreeBusy', dirname(__FILE__) . '/../../../../locale');
-        }
     }
 
     function start()
     {
-        echo $this->_dict->t("Starting to regenerate the free/busy cache...");
+        echo Horde_Kolab_FreeBusy_Translation::t("Starting to regenerate the free/busy cache...");
         $this->linebreak(2);
     }
 
     function success($calendar)
     {
-        echo sprintf($this->_dict->t("Successfully regenerated calendar \"%s\"!"),
+        echo sprintf(Horde_Kolab_FreeBusy_Translation::t("Successfully regenerated calendar \"%s\"!"),
                      $calendar);
         $this->linebreak(1);
     }
 
     function failure($calendar, $error)
     {
-        $this->_errors[] = sprintf($this->_dict->t("Failed regenerating calendar %s: %s"),
+        $this->_errors[] = sprintf(Horde_Kolab_FreeBusy_Translation::t("Failed regenerating calendar %s: %s"),
                                    $calendar, $error->getMessage());
     }
 
@@ -63,7 +50,7 @@ class Horde_Kolab_FreeBusy_Report {
     {
         if (!empty($this->_errors)) {
             $this->linebreak(1);
-            echo $this->_dict->t("Errors:");
+            echo Horde_Kolab_FreeBusy_Translation::t("Errors:");
             $this->linebreak(1);
             foreach ($this->_errors as $error) {
                 echo $error;
@@ -71,7 +58,7 @@ class Horde_Kolab_FreeBusy_Report {
             return false;
         } else {
             $this->linebreak(1);
-            echo $this->_dict->t("Successfully regenerated all calendar caches!");
+            echo Horde_Kolab_FreeBusy_Translation::t("Successfully regenerated all calendar caches!");
             $this->linebreak(1);
             return true;
         }
diff --git a/framework/Kolab_FreeBusy/lib/Horde/Kolab/FreeBusy/Translation.php b/framework/Kolab_FreeBusy/lib/Horde/Kolab/FreeBusy/Translation.php
new file mode 100644 (file)
index 0000000..6d0acfa
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Kolab_FreeBusy
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Kolab_FreeBusy_Translation is the translation wrapper class for Horde_Kolab_FreeBusy.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Kolab_FreeBusy
+ */
+class Horde_Kolab_FreeBusy_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Kolab_FreeBusy';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../../locale' : '@data_dir@/Kolab_FreeBusy/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Kolab_FreeBusy';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../../locale' : '@data_dir@/Kolab_FreeBusy/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index 112ba67..d6401e7 100644 (file)
@@ -27,25 +27,13 @@ class Horde_Kolab_FreeBusy_View {
     var $_data;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Constructor.
      *
      * @param array $data The data to display
      */
-    function Horde_Kolab_FreeBusy_View(&$data, $params = array())
+    function Horde_Kolab_FreeBusy_View(&$data)
     {
         $this->_data = $data;
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Kolab_FreeBusy', dirname(__FILE__) . '/../../../../locale');
-        }
     }
 
     /**
@@ -215,9 +203,9 @@ class Horde_Kolab_FreeBusy_View_error extends Horde_Kolab_FreeBusy_View {
         } else {
             $url = '/';
         }
-        $message = sprintf($this->_dict->t("The requested URL %s was not found on this server."), $url);
+        $message = sprintf(Horde_Kolab_FreeBusy_Translation::t("The requested URL %s was not found on this server."), $url);
 
-        $this->_errorPage($error, $headers, $this->_dict->t("404 Not Found"), $this->_dict->t("Not found"), $message);
+        $this->_errorPage($error, $headers, Horde_Kolab_FreeBusy_Translation::t("404 Not Found"), Horde_Kolab_FreeBusy_Translation::t("Not found"), $message);
     }
 
     /**
@@ -238,8 +226,8 @@ class Horde_Kolab_FreeBusy_View_error extends Horde_Kolab_FreeBusy_View {
         $headers = array('WWW-Authenticate: Basic realm="freebusy-' . $email_domain . '"',
                          'HTTP/1.0 401 Unauthorized');
 
-        $this->_errorPage($error, $headers, $this->_dict->t("401 Unauthorized"), $this->_dict->t("Unauthorized"),
-                  $this->_dict->t("You are not authorized to access the requested URL."));
+        $this->_errorPage($error, $headers, Horde_Kolab_FreeBusy_Translation::t("401 Unauthorized"), Horde_Kolab_FreeBusy_Translation::t("Unauthorized"),
+                  Horde_Kolab_FreeBusy_Translation::t("You are not authorized to access the requested URL."));
     }
 
     /**
@@ -255,7 +243,7 @@ class Horde_Kolab_FreeBusy_View_error extends Horde_Kolab_FreeBusy_View {
         } else {
             $url = '/';
         }
-        $this->_errorPage($error, $headers, $this->_dict->t("500 Server Error"), $this->_dict->t("Error"),
+        $this->_errorPage($error, $headers, Horde_Kolab_FreeBusy_Translation::t("500 Server Error"), Horde_Kolab_FreeBusy_Translation::t("Error"),
                   htmlentities($$url));
     }
 
index 029b634..f654403 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.9.0" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Kolab_FreeBusy</name>
  <channel>pear.horde.org</channel>
  <summary>A package for providing free/busy information.</summary>
@@ -34,8 +34,8 @@
   <email>jan@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2009-11-27</date>
- <time>14:17:37</time>
+ <date>2010-10-22</date>
+ <time>19:03:04</time>
  <version>
   <release>0.1.5</release>
   <api>0.1.0</api>
@@ -74,6 +74,9 @@
        <file name="Factory.php" role="php" />
        <file name="Imap.php" role="php" />
        <file name="Report.php" role="php" />
+       <file name="Translation.php" role="php">
+        <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+       </file>
        <file name="View.php" role="php" />
       </dir> <!-- /lib/Horde/Kolab/FreeBusy -->
       <dir name="Test">
      </dir> <!-- /lib/Horde/Kolab -->
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_FreeBusy.mo" role="data" />
+      <file name="Horde_Kolab_FreeBusy.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Kolab_FreeBusy.pot" role="data" />
+   </dir> <!-- /locale -->
    <dir name="test">
     <dir name="Horde">
      <dir name="Kolab">
     <name>Horde_Date</name>
     <channel>pear.horde.org</channel>
    </package>
+   <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
   </required>
  </dependencies>
  <phprelease>
    <install as="Horde/Kolab/FreeBusy/Factory.php" name="lib/Horde/Kolab/FreeBusy/Factory.php" />
    <install as="Horde/Kolab/FreeBusy/Imap.php" name="lib/Horde/Kolab/FreeBusy/Imap.php" />
    <install as="Horde/Kolab/FreeBusy/Report.php" name="lib/Horde/Kolab/FreeBusy/Report.php" />
+   <install as="Horde/Kolab/FreeBusy/Translation.php" name="lib/Horde/Kolab/FreeBusy/Translation.php" />
    <install as="Horde/Kolab/FreeBusy/View.php" name="lib/Horde/Kolab/FreeBusy/View.php" />
    <install as="Horde/Kolab/FreeBusy/Cache/Base.php" name="lib/Horde/Kolab/FreeBusy/Cache/Base.php" />
    <install as="Horde/Kolab/FreeBusy/Controller/FreebusyController.php" name="lib/Horde/Kolab/FreeBusy/Controller/FreebusyController.php" />
    <install as="Horde/Kolab/FreeBusy/Driver/Freebusy/Base.php" name="lib/Horde/Kolab/FreeBusy/Driver/Freebusy/Base.php" />
    <install as="Horde/Kolab/FreeBusy/Driver/Freebusy/Kolab.php" name="lib/Horde/Kolab/FreeBusy/Driver/Freebusy/Kolab.php" />
    <install as="Horde/Kolab/Test/FreeBusy.php" name="lib/Horde/Kolab/Test/FreeBusy.php" />
+   <install as="locale/Horde_Kolab_FreeBusy.pot" name="locale/Horde_Kolab_FreeBusy.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/ar/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/ar/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/bg/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/bg/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/bs/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/bs/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/ca/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/ca/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/cs/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/cs/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/da/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/da/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/de/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/de/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/el/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/el/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/en/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/en/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/es/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/es/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/et/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/et/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/eu/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/eu/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/fa/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/fa/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/fi/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/fi/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/fr/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/fr/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/gl/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/gl/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/he/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/he/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/hr/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/hr/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/hu/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/hu/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/id/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/id/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/is/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/is/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/it/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/it/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/ja/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/ja/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/km/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/km/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/ko/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/ko/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/lt/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/lt/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/lv/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/lv/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/mk/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/mk/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/nb/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/nb/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/nl/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/nl/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/nn/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/nn/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/pl/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/pl/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/pt/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/pt/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/pt_BR/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/ro/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/ro/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/ru/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/ru/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/sk/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/sk/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/sl/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/sl/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/sv/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/sv/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/tr/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/tr/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/uk/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/uk/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/zh_CN/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Kolab_FreeBusy.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Kolab_FreeBusy.po" name="locale/zh_TW/LC_MESSAGES/Horde_Kolab_FreeBusy.po" />
    <install as="Horde/Kolab/FreeBusy/AllTests.php" name="test/Horde/Kolab/FreeBusy/AllTests.php" />
    <install as="Horde/Kolab/FreeBusy/DispatchTest.php" name="test/Horde/Kolab/FreeBusy/DispatchTest.php" />
    <install as="Horde/Kolab/FreeBusy/FreeBusyScenarioTest.php" name="test/Horde/Kolab/FreeBusy/FreeBusyScenarioTest.php" />
     <release>alpha</release>
     <api>alpha</api>
    </stability>
-   <date>2009-11-27</date>
+   <date>2010-10-22</date>
    <license uri="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html">LGPL</license>
    <notes>
 * Adapted the package to the changes in Kolab_Server.
index 0567b93..e901052 100644 (file)
@@ -55,25 +55,6 @@ define('RM_ITIP_TENTATIVE',                 3);
 class Kolab_Resource
 {
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
-     * Constructor.
-     */
-    public function __construct($dict = null)
-    {
-        if ($dict) {
-            $this->_dict = $dict;
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Kolab_Resource', dirname(__FILE__) . '/../../../locale');
-        }
-    }
-
-    /**
      * Returns the resource policy applying for the given sender
      *
      * @param string $sender   The sender address
@@ -551,13 +532,13 @@ class Kolab_Resource
             Horde::logMessage(sprintf('Removing event %s', $uid), 'INFO');
 
             if (is_a($imap_error, 'PEAR_Error')) {
-                $body = sprintf($this->_dict->t("Unable to access %s's calendar:"), $resource) . "\n\n" . $summary;
-                $subject = sprintf($this->_dict->t("Error processing \"%s\""), $summary);
+                $body = sprintf(Horde_Kolab_Resource_Translation::t("Unable to access %s's calendar:"), $resource) . "\n\n" . $summary;
+                $subject = sprintf(Horde_Kolab_Resource_Translation::t("Error processing \"%s\""), $summary);
             } else if (!$data->objectUidExists($uid)) {
                 Horde::logMessage(sprintf('Canceled event %s is not present in %s\'s calendar',
                                           $uid, $resource), 'WARNING');
-                $body = sprintf($this->_dict->t("The following event that was canceled is not present in %s's calendar:"), $resource) . "\n\n" . $summary;
-                $subject = sprintf($this->_dict->t("Error processing \"%s\""), $summary);
+                $body = sprintf(Horde_Kolab_Resource_Translation::t("The following event that was canceled is not present in %s's calendar:"), $resource) . "\n\n" . $summary;
+                $subject = sprintf(Horde_Kolab_Resource_Translation::t("Error processing \"%s\""), $summary);
             } else {
                 /**
                  * Delete the messages from IMAP
@@ -572,8 +553,8 @@ class Kolab_Resource
                                               $uid, $result->getMessage()), 'DEBUG');
                 }
 
-                $body = $this->_dict->t("The following event has been successfully removed:") . "\n\n" . $summary;
-                $subject = sprintf($this->_dict->t("%s has been cancelled"), $summary);
+                $body = Horde_Kolab_Resource_Translation::t("The following event has been successfully removed:") . "\n\n" . $summary;
+                $subject = sprintf(Horde_Kolab_Resource_Translation::t("%s has been cancelled"), $summary);
             }
 
             Horde::logMessage(sprintf('Sending confirmation of cancelation to %s', $organiser), 'WARNING');
diff --git a/framework/Kolab_Resource/lib/Horde/Kolab/Resource/Translation.php b/framework/Kolab_Resource/lib/Horde/Kolab/Resource/Translation.php
new file mode 100644 (file)
index 0000000..d9d7187
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Kolab_Resource
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Kolab_Resource_Translation is the translation wrapper class for Horde_Kolab_Resource.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Kolab_Resource
+ */
+class Horde_Kolab_Resource_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Kolab_Resource';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../../locale' : '@data_dir@/Kolab_Resource/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Kolab_Resource';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../../locale' : '@data_dir@/Kolab_Resource/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index e80cb5f..c632f24 100644 (file)
@@ -22,8 +22,8 @@
   <email>jan@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2010-08-15</date>
- <time>15:30:39</time>
+ <date>2010-10-22</date>
+ <time>19:03:00</time>
  <version>
   <release>0.1.0</release>
   <api>0.1.0</api>
        <file name="Epoch.php" role="php" />
        <file name="Exception.php" role="php" />
        <file name="Freebusy.php" role="php" />
-<!--
-       <file name="Itip.php" role="php" />
--->
        <file name="Reply.php" role="php" />
+       <file name="Translation.php" role="php">
+        <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+       </file>
       </dir> <!-- /lib/Horde/Kolab/Resource -->
       <file name="Resource.php" role="php" />
      </dir> <!-- /lib/Horde/Kolab -->
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Resource.mo" role="data" />
+      <file name="Horde_Kolab_Resource.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Kolab_Resource.pot" role="data" />
+   </dir> <!-- /locale -->
    <dir name="test">
     <dir name="Horde">
      <dir name="Kolab">
        </dir> <!-- /test/Horde/Kolab/Resource/fixtures -->
        <file name="AllTests.php" role="test" />
        <file name="Autoload.php" role="test" />
-       <file name="TestCase.php" role="test" />
        <file name="phpunit.xml" role="test" />
+       <file name="TestCase.php" role="test" />
       </dir> <!-- /test/Horde/Kolab/Resource -->
      </dir> <!-- /test/Horde/Kolab -->
     </dir> <!-- /test/Horde -->
    </dir> <!-- /test -->
    <file name="COPYING" role="doc" />
+   <file name="TODO" role="data" />
   </dir> <!-- / -->
  </contents>
  <dependencies>
     <min>0.0.2</min>
    </package>
    <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
+   <package>
     <name>Horde_Util</name>
     <channel>pear.horde.org</channel>
     <min>0.0.2</min>
    <install as="Horde/Kolab/Resource/Epoch.php" name="lib/Horde/Kolab/Resource/Epoch.php" />
    <install as="Horde/Kolab/Resource/Exception.php" name="lib/Horde/Kolab/Resource/Exception.php" />
    <install as="Horde/Kolab/Resource/Freebusy.php" name="lib/Horde/Kolab/Resource/Freebusy.php" />
-<!--
-   <install as="Horde/Kolab/Resource/Itip.php" name="lib/Horde/Kolab/Resource/Itip.php" />
--->
    <install as="Horde/Kolab/Resource/Reply.php" name="lib/Horde/Kolab/Resource/Reply.php" />
+   <install as="Horde/Kolab/Resource/Translation.php" name="lib/Horde/Kolab/Resource/Translation.php" />
    <install as="Horde/Kolab/Resource/Freebusy/Kolab.php" name="lib/Horde/Kolab/Resource/Freebusy/Kolab.php" />
    <install as="Horde/Kolab/Resource/Freebusy/Mock.php" name="lib/Horde/Kolab/Resource/Freebusy/Mock.php" />
-   <install as="Horde/Kolab/Resource/fixtures/recur_invitation.eml" name="test/Horde/Kolab/Resource/fixtures/recur_invitation.eml" />
+   <install as="locale/Horde_Kolab_Resource.pot" name="locale/Horde_Kolab_Resource.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/ar/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/ar/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/bg/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/bg/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/bs/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/bs/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/ca/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/ca/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/cs/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/cs/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/da/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/da/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/de/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/de/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/el/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/el/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/en/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/en/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/es/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/es/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/et/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/et/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/eu/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/eu/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/fa/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/fa/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/fi/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/fi/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/fr/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/fr/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/gl/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/gl/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/he/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/he/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/hr/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/hr/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/hu/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/hu/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/id/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/id/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/is/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/is/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/it/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/it/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/ja/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/ja/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/km/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/km/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/ko/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/ko/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/lt/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/lt/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/lv/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/lv/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/mk/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/mk/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/nb/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/nb/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/nl/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/nl/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/nn/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/nn/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/pl/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/pl/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/pt/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/pt/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/pt_BR/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/ro/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/ro/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/ru/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/ru/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/sk/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/sk/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/sl/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/sl/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/sv/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/sv/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/tr/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/tr/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/uk/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/uk/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/zh_CN/LC_MESSAGES/Horde_Kolab_Resource.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Kolab_Resource.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Kolab_Resource.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Kolab_Resource.po" name="locale/zh_TW/LC_MESSAGES/Horde_Kolab_Resource.po" />
    <install as="Horde/Kolab/Resource/AllTests.php" name="test/Horde/Kolab/Resource/AllTests.php" />
    <install as="Horde/Kolab/Resource/Autoload.php" name="test/Horde/Kolab/Resource/Autoload.php" />
-   <install as="Horde/Kolab/Resource/TestCase.php" name="test/Horde/Kolab/Resource/TestCase.php" />
    <install as="Horde/Kolab/Resource/phpunit.xml" name="test/Horde/Kolab/Resource/phpunit.xml" />
+   <install as="Horde/Kolab/Resource/TestCase.php" name="test/Horde/Kolab/Resource/TestCase.php" />
+   <install as="Horde/Kolab/Resource/fixtures/recur_invitation.eml" name="test/Horde/Kolab/Resource/fixtures/recur_invitation.eml" />
   </filelist>
  </phprelease>
  <changelog>
     <release>alpha</release>
     <api>alpha</api>
    </stability>
-   <date>2010-08-15</date>
+   <date>2010-10-22</date>
    <license uri="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html">LGPL</license>
    <notes>
 * Extracted package from Kolab_Filter.
index 22d7579..d5e2438 100644 (file)
@@ -90,24 +90,13 @@ class Horde_Kolab_Storage_Data
     private $_cache_cyrus_optimize = true;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Creates a Kolab Folder Data representation.
      *
      * @param string $type         Type of the folder.
      * @param string $object_type  Type of the objects we want to read.
      * @param int    $data_version Format version of the object data.
-     * @param array $params  Hash with configuration data. Possible values:
-     *                       - 'translation': A translation handler
-     *                                        implementing Horde_Translation.
      */
-    public function __construct($type, $object_type = null, $data_version = 1,
-                                $params = array())
+    public function __construct($type, $object_type = null, $data_version = 1)
     {
         $this->_type = $type;
         if (!empty($object_type)) {
@@ -122,12 +111,6 @@ class Horde_Kolab_Storage_Data
         } else {
             $this->_type_key = '';
         }
-
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Block', dirname(__FILE__) . '/../../../locale');
-        }
     }
 
     /**
@@ -312,14 +295,14 @@ class Horde_Kolab_Storage_Data
         if ($old_object_id != null) {
             // check if object really exists
             if (!$this->objectUidExists($old_object_id)) {
-                throw new Horde_Kolab_Storage_Exception(sprintf($this->_dict->t("Old object %s does not exist."),
+                throw new Horde_Kolab_Storage_Exception(sprintf(Horde_Kolab_Storage_Translation::t("Old object %s does not exist."),
                                                                 $old_object_id));
             }
 
             // get the storage ID
             $id = $this->getStorageId($old_object_id);
             if ($id === false) {
-                throw new Horde_Kolab_Storage_Exception(sprintf($this->_dict->t("Old object %s does not map to a uid."),
+                throw new Horde_Kolab_Storage_Exception(sprintf(Horde_Kolab_Storage_Translation::t("Old object %s does not map to a uid."),
                                                                 $old_object_id));
             }
 
@@ -627,7 +610,7 @@ class Horde_Kolab_Storage_Data
         $this->_cache->load($this->_cache_key, $this->_data_version);
 
         if (!isset($this->_cache->objects[$object_id])) {
-            throw new Horde_Kolab_Storage_Exception(sprintf($this->_dict->t("Kolab cache: Object uid %s does not exist in the cache!"), $object_id));
+            throw new Horde_Kolab_Storage_Exception(sprintf(Horde_Kolab_Storage_Translation::t("Kolab cache: Object uid %s does not exist in the cache!"), $object_id));
         }
         return $this->_cache->objects[$object_id];
     }
diff --git a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Translation.php b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Translation.php
new file mode 100644 (file)
index 0000000..130366c
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Kolab_Storage
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Kolab_Storage_Translation is the translation wrapper class for Horde_Kolab_Storage.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Kolab_Storage
+ */
+class Horde_Kolab_Storage_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Kolab_Storage';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../../locale' : '@data_dir@/Kolab_Storage/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Kolab_Storage';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../../locale' : '@data_dir@/Kolab_Storage/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index 5186a77..8460154 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.9.0" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Kolab_Storage</name>
  <channel>pear.horde.org</channel>
  <summary>A package for handling Kolab data stored on an IMAP server.</summary>
@@ -31,8 +31,8 @@
   <email>jan@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2010-04-28</date>
- <time>00:43:56</time>
+ <date>2010-10-22</date>
+ <time>19:03:03</time>
  <version>
   <release>0.4.0</release>
   <api>0.1.0</api>
        <file name="Driver.php" role="php" />
        <file name="Exception.php" role="php" />
        <file name="Folder.php" role="php" />
+       <file name="Translation.php" role="php">
+        <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+       </file>
       </dir> <!-- /lib/Horde/Kolab/Storage -->
       <file name="Storage.php" role="php" />
      </dir> <!-- /lib/Horde/Kolab -->
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Kolab_Storage.mo" role="data" />
+      <file name="Horde_Kolab_Storage.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Kolab_Storage.pot" role="data" />
+   </dir> <!-- /locale -->
    <dir name="script">
     <dir name="Horde">
      <dir name="Kolab">
     <channel>pear.horde.org</channel>
    </package>
    <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
+   <package>
     <name>Util</name>
     <channel>pear.horde.org</channel>
    </package>
    <install as="Horde/Kolab/Storage/Driver.php" name="lib/Horde/Kolab/Storage/Driver.php" />
    <install as="Horde/Kolab/Storage/Exception.php" name="lib/Horde/Kolab/Storage/Exception.php" />
    <install as="Horde/Kolab/Storage/Folder.php" name="lib/Horde/Kolab/Storage/Folder.php" />
+   <install as="Horde/Kolab/Storage/Translation.php" name="lib/Horde/Kolab/Storage/Translation.php" />
    <install as="Horde/Kolab/Storage/Driver/Base.php" name="lib/Horde/Kolab/Storage/Driver/Base.php" />
    <install as="Horde/Kolab/Storage/Driver/Cclient.php" name="lib/Horde/Kolab/Storage/Driver/Cclient.php" />
    <install as="Horde/Kolab/Storage/Driver/Imap.php" name="lib/Horde/Kolab/Storage/Driver/Imap.php" />
    <install as="Horde/Kolab/Storage/Folder/Permission/Element/Group.php" name="lib/Horde/Kolab/Storage/Folder/Permission/Element/Group.php" />
    <install as="Horde/Kolab/Storage/Folder/Permission/Element/Guest.php" name="lib/Horde/Kolab/Storage/Folder/Permission/Element/Guest.php" />
    <install as="Horde/Kolab/Storage/Folder/Permission/Element/User.php" name="lib/Horde/Kolab/Storage/Folder/Permission/Element/User.php" />
+   <install as="locale/Horde_Kolab_Storage.pot" name="locale/Horde_Kolab_Storage.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/ar/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/ar/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/bg/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/bg/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/bs/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/bs/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/ca/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/ca/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/cs/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/cs/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/da/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/da/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/de/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/de/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/el/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/el/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/en/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/en/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/es/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/es/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/et/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/et/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/eu/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/eu/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/fa/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/fa/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/fi/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/fi/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/fr/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/fr/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/gl/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/gl/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/he/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/he/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/hr/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/hr/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/hu/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/hu/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/id/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/id/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/is/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/is/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/it/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/it/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/ja/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/ja/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/km/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/km/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/ko/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/ko/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/lt/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/lt/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/lv/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/lv/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/mk/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/mk/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/nb/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/nb/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/nl/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/nl/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/nn/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/nn/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/pl/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/pl/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/pt/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/pt/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/pt_BR/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/ro/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/ro/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/ru/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/ru/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/sk/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/sk/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/sl/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/sl/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/sv/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/sv/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/tr/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/tr/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/uk/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/uk/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/zh_CN/LC_MESSAGES/Horde_Kolab_Storage.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Kolab_Storage.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Kolab_Storage.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Kolab_Storage.po" name="locale/zh_TW/LC_MESSAGES/Horde_Kolab_Storage.po" />
    <install as="test_drivers" name="script/Horde/Kolab/Storage/test_drivers.php" />
    <install as="Horde/Kolab/Storage/AclTest.php" name="test/Horde/Kolab/Storage/AclTest.php" />
    <install as="Horde/Kolab/Storage/AllTests.php" name="test/Horde/Kolab/Storage/AllTests.php" />
     <release>alpha</release>
     <api>alpha</api>
    </stability>
-   <date>2010-04-28</date>
+   <date>2010-10-22</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
    <notes>
 * Added namespace support (Bug #6691).
index f4f33d3..17f0d63 100644 (file)
@@ -251,23 +251,16 @@ class Horde_LoginTasks
     /**
      * Labels for the class constants.
      *
-     * @param Horde_Translation $dict  A translation handler implementing
-     *                                 Horde_Translation.
-     *
      * @return array  A mapping of constant to gettext string.
      */
-    static public function getLabels($dict = null)
+    static public function getLabels()
     {
-        if (!$dict) {
-            $dict = new Horde_Translation_Gettext('Horde_LoginTasks', dirname(__FILE__) . '/../../locale');
-        }
-
         return array(
-            self::YEARLY => $dict->t("Yearly"),
-            self::MONTHLY => $dict->t("Monthly"),
-            self::WEEKLY => $dict->t("Weekly"),
-            self::DAILY => $dict->t("Daily"),
-            self::EVERY => $dict->t("Every Login")
+            self::YEARLY => Horde_LoginTasks_Translation::t("Yearly"),
+            self::MONTHLY => Horde_LoginTasks_Translation::t("Monthly"),
+            self::WEEKLY => Horde_LoginTasks_Translation::t("Weekly"),
+            self::DAILY => Horde_LoginTasks_Translation::t("Daily"),
+            self::EVERY => Horde_LoginTasks_Translation::t("Every Login")
         );
     }
 
diff --git a/framework/LoginTasks/lib/Horde/LoginTasks/Translation.php b/framework/LoginTasks/lib/Horde/LoginTasks/Translation.php
new file mode 100644 (file)
index 0000000..6788567
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package LoginTasks
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_LoginTasks_Translation is the translation wrapper class for Horde_LoginTasks.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package LoginTasks
+ */
+class Horde_LoginTasks_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_LoginTasks';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/LoginTasks/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_LoginTasks';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/LoginTasks/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index e82feef..74f1675 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.9.0" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>LoginTasks</name>
  <channel>pear.horde.org</channel>
  <summary>Horde Login Tasks System</summary>
@@ -10,8 +10,8 @@
   <email>slusarz@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2010-03-03</date>
- <time>15:40:58</time>
+ <date>2010-10-22</date>
+ <time>19:03:07</time>
  <version>
   <release>0.1.0</release>
   <api>0.1.0</api>
@@ -21,7 +21,8 @@
   <api>beta</api>
  </stability>
  <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
- <notes>* Add ability to dynamically skip system tasks.
+ <notes>
+* Add ability to dynamically skip system tasks.
  * Removed horde/Core and horde/Util dependency.
  * Added system tasks.
  * Added ONCE interval.
       <file name="SystemTask.php" role="php" />
       <file name="Task.php" role="php" />
       <file name="Tasklist.php" role="php" />
+      <file name="Translation.php" role="php">
+       <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+      </file>
      </dir> <!-- /lib/Horde/LoginTasks -->
      <file name="LoginTasks.php" role="php" />
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_LoginTasks.mo" role="data" />
+      <file name="Horde_LoginTasks.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_LoginTasks.pot" role="data" />
+   </dir> <!-- /locale -->
    <dir name="test">
     <dir name="Horde">
      <dir name="LoginTasks">
    <pearinstaller>
     <min>1.5.4</min>
    </pearinstaller>
+   <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
   </required>
  </dependencies>
  <phprelease>
    <install as="Horde/LoginTasks/SystemTask.php" name="lib/Horde/LoginTasks/SystemTask.php" />
    <install as="Horde/LoginTasks/Task.php" name="lib/Horde/LoginTasks/Task.php" />
    <install as="Horde/LoginTasks/Tasklist.php" name="lib/Horde/LoginTasks/Tasklist.php" />
+   <install as="Horde/LoginTasks/Translation.php" name="lib/Horde/LoginTasks/Translation.php" />
+   <install as="locale/Horde_LoginTasks.pot" name="locale/Horde_LoginTasks.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/ar/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_LoginTasks.po" name="locale/ar/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/bg/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_LoginTasks.po" name="locale/bg/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/bs/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_LoginTasks.po" name="locale/bs/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/ca/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_LoginTasks.po" name="locale/ca/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/cs/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_LoginTasks.po" name="locale/cs/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/da/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_LoginTasks.po" name="locale/da/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/de/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_LoginTasks.po" name="locale/de/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/el/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_LoginTasks.po" name="locale/el/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/en/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_LoginTasks.po" name="locale/en/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/es/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_LoginTasks.po" name="locale/es/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/et/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_LoginTasks.po" name="locale/et/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/eu/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_LoginTasks.po" name="locale/eu/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/fa/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_LoginTasks.po" name="locale/fa/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/fi/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_LoginTasks.po" name="locale/fi/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/fr/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_LoginTasks.po" name="locale/fr/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/gl/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_LoginTasks.po" name="locale/gl/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/he/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_LoginTasks.po" name="locale/he/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/hr/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_LoginTasks.po" name="locale/hr/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/hu/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_LoginTasks.po" name="locale/hu/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/id/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_LoginTasks.po" name="locale/id/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/is/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_LoginTasks.po" name="locale/is/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/it/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_LoginTasks.po" name="locale/it/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/ja/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_LoginTasks.po" name="locale/ja/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/km/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_LoginTasks.po" name="locale/km/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/ko/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_LoginTasks.po" name="locale/ko/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/lt/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_LoginTasks.po" name="locale/lt/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/lv/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_LoginTasks.po" name="locale/lv/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/mk/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_LoginTasks.po" name="locale/mk/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/nb/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_LoginTasks.po" name="locale/nb/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/nl/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_LoginTasks.po" name="locale/nl/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/nn/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_LoginTasks.po" name="locale/nn/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/pl/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_LoginTasks.po" name="locale/pl/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/pt/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_LoginTasks.po" name="locale/pt/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/pt_BR/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_LoginTasks.po" name="locale/pt_BR/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/ro/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_LoginTasks.po" name="locale/ro/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/ru/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_LoginTasks.po" name="locale/ru/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/sk/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_LoginTasks.po" name="locale/sk/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/sl/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_LoginTasks.po" name="locale/sl/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/sv/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_LoginTasks.po" name="locale/sv/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/tr/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_LoginTasks.po" name="locale/tr/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/uk/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_LoginTasks.po" name="locale/uk/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/zh_CN/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_LoginTasks.po" name="locale/zh_CN/LC_MESSAGES/Horde_LoginTasks.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_LoginTasks.mo" name="locale/zh_TW/LC_MESSAGES/Horde_LoginTasks.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_LoginTasks.po" name="locale/zh_TW/LC_MESSAGES/Horde_LoginTasks.po" />
    <install as="Horde/LoginTasks/AllTests.php" name="test/Horde/LoginTasks/AllTests.php" />
    <install as="Horde/LoginTasks/Autoload.php" name="test/Horde/LoginTasks/Autoload.php" />
    <install as="Horde/LoginTasks/LoginTasksTest.php" name="test/Horde/LoginTasks/LoginTasksTest.php" />
@@ -119,10 +476,12 @@ Converted to package.xml 2.0 for pear.horde.org
     <release>beta</release>
     <api>beta</api>
    </stability>
-   <date>2010-03-03</date>
+   <date>2010-10-22</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
    <notes>
-* Added system tasks.
+* Add ability to dynamically skip system tasks.
+ * Removed horde/Core and horde/Util dependency.
+ * Added system tasks.
  * Added ONCE interval.
  * Renamed Maintenance:: -&gt; Horde_LoginTasks::.
  * Initial Horde 4 package.
index 23ae853..ab361ef 100644 (file)
@@ -499,26 +499,20 @@ class Horde_Mime_Headers implements Serializable
     /**
      * Returns the list of valid mailing list headers.
      *
-     * @param Horde_Translation $dict  A translation handler implementing
-     *                                 Horde_Translation.
-     *
      * @return array  The list of valid mailing list headers.
      */
-    static public function listHeaders($dict = null)
+    static public function listHeaders()
     {
-        if (!$dict) {
-            $dict = new Horde_Translation_Gettext('Horde_Mime', dirname(__FILE__) . '/../../../locale');
-        }
         return array(
             /* RFC 2369 */
-            'list-help'         =>  $dict->t("List-Help"),
-            'list-unsubscribe'  =>  $dict->t("List-Unsubscribe"),
-            'list-subscribe'    =>  $dict->t("List-Subscribe"),
-            'list-owner'        =>  $dict->t("List-Owner"),
-            'list-post'         =>  $dict->t("List-Post"),
-            'list-archive'      =>  $dict->t("List-Archive"),
+            'list-help'         =>  Horde_Mime_Translation::t("List-Help"),
+            'list-unsubscribe'  =>  Horde_Mime_Translation::t("List-Unsubscribe"),
+            'list-subscribe'    =>  Horde_Mime_Translation::t("List-Subscribe"),
+            'list-owner'        =>  Horde_Mime_Translation::t("List-Owner"),
+            'list-post'         =>  Horde_Mime_Translation::t("List-Post"),
+            'list-archive'      =>  Horde_Mime_Translation::t("List-Archive"),
             /* RFC 2919 */
-            'list-id'           =>  $dict->t("List-Id")
+            'list-id'           =>  Horde_Mime_Translation::t("List-Id")
         );
     }
 
index da727ab..8ba8b1d 100644 (file)
@@ -81,13 +81,6 @@ class Horde_Mime_Mail
     protected $_mailer_params = array();
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Constructor.
      *
      * @param array $params  A hash with basic message information. 'charset'
@@ -97,14 +90,8 @@ class Horde_Mime_Mail
      *
      * @throws Horde_Mime_Exception
      */
-    public function __construct($params = array(), $dict = null)
+    public function __construct($params = array())
     {
-        if ($dict) {
-            $this->_dict = $dict;
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Mime', dirname(__FILE__) . '/../../../locale');
-        }
-
         /* Set SERVER_NAME. */
         if (!isset($_SERVER['SERVER_NAME'])) {
             $_SERVER['SERVER_NAME'] = php_uname('n');
@@ -401,7 +388,7 @@ class Horde_Mime_Mail
 
         foreach (Horde_Mime_Address::bareAddress(implode(', ', $addrlist), null, true) as $val) {
             if (Horde_Mime::is8bit($val)) {
-                throw new Horde_Mime_Exception(sprintf($this->_dict->t("Invalid character in e-mail address: %s."), $val));
+                throw new Horde_Mime_Exception(sprintf(Horde_Mime_Translation::t("Invalid character in e-mail address: %s."), $val));
             }
         }
 
@@ -455,9 +442,9 @@ class Horde_Mime_Mail
             $body = new Horde_Mime_Part();
             if (!empty($this->_body) && !empty($this->_htmlBody)) {
                 $body->setType('multipart/alternative');
-                $this->_body->setDescription($this->_dict->t("Plaintext Version of Message"));
+                $this->_body->setDescription(Horde_Mime_Translation::t("Plaintext Version of Message"));
                 $body->addPart($this->_body);
-                $this->_htmlBody->setDescription($this->_dict->t("HTML Version of Message"));
+                $this->_htmlBody->setDescription(Horde_Mime_Translation::t("HTML Version of Message"));
                 $body->addPart($this->_htmlBody);
             } elseif (!empty($this->_htmlBody)) {
                 $body = $this->_htmlBody;
index dfc0d48..1178428 100644 (file)
@@ -30,26 +30,12 @@ class Horde_Mime_Mdn
     protected $_msgtext = false;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Constructor.
      *
      * @param Horde_Mime_Headers $mime_headers  A headers object.
-     * @param Horde_Translation $dict           A translation handler
-     *                                          implementing Horde_Translation.
      */
-    public function __construct(Horde_Mime_Headers $headers, $dict = null)
+    public function __construct(Horde_Mime_Headers $headers)
     {
-        if ($dict) {
-            $this->_dict = $dict;
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Mime', dirname(__FILE__) . '/../../../locale');
-        }
         $this->_headers = $headers;
     }
 
@@ -199,7 +185,7 @@ class Horde_Mime_Mdn
             $msg_headers->addHeader('From', $opts['from_addr']);
         }
         $msg_headers->addHeader('To', $this->getMdnReturnAddr());
-        $msg_headers->addHeader('Subject', $this->_dict->t("Disposition Notification"));
+        $msg_headers->addHeader('Subject', Horde_Mime_Translation::t("Disposition Notification"));
 
         /* MDNs are a subtype of 'multipart/report'. */
         $msg = new Horde_Mime_Part();
@@ -210,7 +196,7 @@ class Horde_Mime_Mdn
         $part_one = new Horde_Mime_Part('text/plain');
         $part_one->setCharset($opts['charset']);
         if ($type == 'displayed') {
-            $contents = sprintf($this->_dict->t("The message sent on %s to %s with subject \"%s\" has been displayed.\n\nThis is no guarantee that the message has been read or understood."), $this->_headers->getValue('Date'), $this->_headers->getValue('To'), $this->_headers->getValue('Subject'));
+            $contents = sprintf(Horde_Mime_Translation::t("The message sent on %s to %s with subject \"%s\" has been displayed.\n\nThis is no guarantee that the message has been read or understood."), $this->_headers->getValue('Date'), $this->_headers->getValue('To'), $this->_headers->getValue('Subject'));
             $flowed = new Horde_Text_Flowed($contents, $opts['charset']);
             $flowed->setDelSp(true);
             $part_one->setContentTypeParameter('format', 'flowed');
diff --git a/framework/Mime/lib/Horde/Mime/Translation.php b/framework/Mime/lib/Horde/Mime/Translation.php
new file mode 100644 (file)
index 0000000..5b311cf
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Mime
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Mime_Translation is the translation wrapper class for Horde_Mime.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Mime
+ */
+class Horde_Mime_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Mime';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Mime/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Mime';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Mime/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index 6aa706d..9e0623d 100644 (file)
@@ -1,13 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.4.9" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
-http://pear.php.net/dtd/tasks-1.0.xsd
-http://pear.php.net/dtd/package-2.0
-http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Mime</name>
  <channel>pear.horde.org</channel>
  <summary>Horde MIME Library</summary>
- <description>Provides methods for dealing with MIME (RFC 2045) and related e-mail (RFC 822/2822/5322) standards.
- </description>
+ <description>Provides methods for dealing with MIME (RFC 2045) and related e-mail (RFC 822/2822/5322) standards.</description>
  <lead>
   <name>Chuck Hagenbuch</name>
   <user>chuck</user>
@@ -20,8 +16,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <email>slusarz@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2008-10-29</date>
- <time>14:00:00</time>
+ <date>2010-10-22</date>
+ <time>19:02:57</time>
  <version>
   <release>0.1.0</release>
   <api>0.1.0</api>
@@ -31,24 +27,26 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <api>alpha</api>
  </stability>
  <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
- <notes>* Converted tests to PHPUnit.
+ <notes>
+* Converted tests to PHPUnit.
  * Moved viewer code to horde/Mime_Viewer package.
  * Removed Webcpp and Enscript viewers. Source code highlighting is now
  exclusively handled by the Srchighlight driver.
  * No need to generate Content-Transfer-Encoding header if part data is 7bit.
  * Default disposition should be empty by default, not inline (RFC 2183 [2]).
  * Request #8556: Allow specifying a header charset for a part.
- * Add 'raw' render view to Horde_Mime_Viewer.
+ * Add &apos;raw&apos; render view to Horde_Mime_Viewer.
  * Horde_Mime_Part::parseMessage() correctly parses non-MIME parts.
- * Remove dependence on PEAR's Mail_mimeDecode::.
+ * Remove dependence on PEAR&apos;s Mail_mimeDecode::.
  * Added Horde_Mime::uudecode().
  * Remove support for deprecated mime_magic module.
  * Use Gnumeric to display MS Excel documents.
  * Use AbiWord to display MS Word documents (Request #8011).
  * Add support for decoding IDN (RFC 3490) names (Request #5836).
- * Initial package.</notes>
+ * Initial package.
+ </notes>
  <contents>
-  <dir name="/">
+  <dir baseinstalldir="/" name="/">
    <dir name="lib">
     <dir name="Horde">
      <dir name="Mime">
@@ -58,12 +56,276 @@ http://pear.php.net/dtd/package-2.0.xsd">
       <file name="Magic.php" role="php" />
       <file name="Mail.php" role="php" />
       <file name="Mdn.php" role="php" />
-      <file name="Part.php" role="php" />
       <file name="mime.mapping.php" role="php" />
+      <file name="Part.php" role="php" />
+      <file name="Translation.php" role="php">
+       <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+      </file>
      </dir> <!-- /lib/Horde/Mime -->
      <file name="Mime.php" role="php" />
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime.mo" role="data" />
+      <file name="Horde_Mime.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Mime.pot" role="data" />
+   </dir> <!-- /locale -->
    <dir name="test">
     <dir name="Horde">
      <dir name="Mime">
@@ -113,9 +375,10 @@ http://pear.php.net/dtd/package-2.0.xsd">
     <name>Util</name>
     <channel>pear.horde.org</channel>
    </package>
-   <extension>
-    <name>gettext</name>
-   </extension>
+   <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
   </required>
   <optional>
    <package>
@@ -135,15 +398,146 @@ http://pear.php.net/dtd/package-2.0.xsd">
  </dependencies>
  <phprelease>
   <filelist>
-   <install name="lib/Horde/Mime/Address.php" as="Horde/Mime/Address.php" />
-   <install name="lib/Horde/Mime/Exception.php" as="Horde/Mime/Exception.php" />
-   <install name="lib/Horde/Mime/Headers.php" as="Horde/Mime/Headers.php" />
-   <install name="lib/Horde/Mime/Mdn.php" as="Horde/Mime/Mdn.php" />
-   <install name="lib/Horde/Mime/Magic.php" as="Horde/Mime/Magic.php" />
-   <install name="lib/Horde/Mime/Mail.php" as="Horde/Mime/Mail.php" />
-   <install name="lib/Horde/Mime/Part.php" as="Horde/Mime/Part.php" />
-   <install name="lib/Horde/Mime/mime.mapping.php" as="Horde/Mime/mime.mapping.php" />
-   <install name="lib/Horde/Mime.php" as="Horde/Mime.php" />
+   <install as="Horde/Mime.php" name="lib/Horde/Mime.php" />
+   <install as="Horde/Mime/Address.php" name="lib/Horde/Mime/Address.php" />
+   <install as="Horde/Mime/Exception.php" name="lib/Horde/Mime/Exception.php" />
+   <install as="Horde/Mime/Headers.php" name="lib/Horde/Mime/Headers.php" />
+   <install as="Horde/Mime/Magic.php" name="lib/Horde/Mime/Magic.php" />
+   <install as="Horde/Mime/Mail.php" name="lib/Horde/Mime/Mail.php" />
+   <install as="Horde/Mime/Mdn.php" name="lib/Horde/Mime/Mdn.php" />
+   <install as="Horde/Mime/mime.mapping.php" name="lib/Horde/Mime/mime.mapping.php" />
+   <install as="Horde/Mime/Part.php" name="lib/Horde/Mime/Part.php" />
+   <install as="Horde/Mime/Translation.php" name="lib/Horde/Mime/Translation.php" />
+   <install as="locale/Horde_Mime.pot" name="locale/Horde_Mime.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Mime.mo" name="locale/ar/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Mime.po" name="locale/ar/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Mime.mo" name="locale/bg/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Mime.po" name="locale/bg/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Mime.mo" name="locale/bs/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Mime.po" name="locale/bs/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Mime.mo" name="locale/ca/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Mime.po" name="locale/ca/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Mime.mo" name="locale/cs/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Mime.po" name="locale/cs/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Mime.mo" name="locale/da/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Mime.po" name="locale/da/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Mime.mo" name="locale/de/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Mime.po" name="locale/de/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Mime.mo" name="locale/el/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Mime.po" name="locale/el/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Mime.mo" name="locale/en/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Mime.po" name="locale/en/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Mime.mo" name="locale/es/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Mime.po" name="locale/es/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Mime.mo" name="locale/et/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Mime.po" name="locale/et/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Mime.mo" name="locale/eu/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Mime.po" name="locale/eu/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Mime.mo" name="locale/fa/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Mime.po" name="locale/fa/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Mime.mo" name="locale/fi/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Mime.po" name="locale/fi/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Mime.mo" name="locale/fr/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Mime.po" name="locale/fr/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Mime.mo" name="locale/gl/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Mime.po" name="locale/gl/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Mime.mo" name="locale/he/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Mime.po" name="locale/he/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Mime.mo" name="locale/hr/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Mime.po" name="locale/hr/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Mime.mo" name="locale/hu/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Mime.po" name="locale/hu/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Mime.mo" name="locale/id/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Mime.po" name="locale/id/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Mime.mo" name="locale/is/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Mime.po" name="locale/is/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Mime.mo" name="locale/it/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Mime.po" name="locale/it/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Mime.mo" name="locale/ja/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Mime.po" name="locale/ja/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Mime.mo" name="locale/km/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Mime.po" name="locale/km/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Mime.mo" name="locale/ko/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Mime.po" name="locale/ko/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Mime.mo" name="locale/lt/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Mime.po" name="locale/lt/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Mime.mo" name="locale/lv/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Mime.po" name="locale/lv/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Mime.mo" name="locale/mk/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Mime.po" name="locale/mk/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Mime.mo" name="locale/nb/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Mime.po" name="locale/nb/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Mime.mo" name="locale/nl/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Mime.po" name="locale/nl/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Mime.mo" name="locale/nn/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Mime.po" name="locale/nn/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Mime.mo" name="locale/pl/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Mime.po" name="locale/pl/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Mime.mo" name="locale/pt/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Mime.po" name="locale/pt/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Mime.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Mime.po" name="locale/pt_BR/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Mime.mo" name="locale/ro/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Mime.po" name="locale/ro/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Mime.mo" name="locale/ru/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Mime.po" name="locale/ru/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Mime.mo" name="locale/sk/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Mime.po" name="locale/sk/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Mime.mo" name="locale/sl/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Mime.po" name="locale/sl/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Mime.mo" name="locale/sv/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Mime.po" name="locale/sv/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Mime.mo" name="locale/tr/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Mime.po" name="locale/tr/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Mime.mo" name="locale/uk/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Mime.po" name="locale/uk/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Mime.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Mime.po" name="locale/zh_CN/LC_MESSAGES/Horde_Mime.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Mime.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Mime.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Mime.po" name="locale/zh_TW/LC_MESSAGES/Horde_Mime.po" />
+   <install as="Horde/Mime/AddressTest.php" name="test/Horde/Mime/AddressTest.php" />
+   <install as="Horde/Mime/AllTests.php" name="test/Horde/Mime/AllTests.php" />
+   <install as="Horde/Mime/HeadersTest.php" name="test/Horde/Mime/HeadersTest.php" />
+   <install as="Horde/Mime/MagicTest.php" name="test/Horde/Mime/MagicTest.php" />
+   <install as="Horde/Mime/MailTest.php" name="test/Horde/Mime/MailTest.php" />
+   <install as="Horde/Mime/MimeTest.php" name="test/Horde/Mime/MimeTest.php" />
+   <install as="Horde/Mime/PartTest.php" name="test/Horde/Mime/PartTest.php" />
+   <install as="Horde/Mime/fixtures/attachment.bin" name="test/Horde/Mime/fixtures/attachment.bin" />
+   <install as="Horde/Mime/fixtures/flowed_msg.txt" name="test/Horde/Mime/fixtures/flowed_msg.txt" />
+   <install as="Horde/Mime/fixtures/sample_msg.txt" name="test/Horde/Mime/fixtures/sample_msg.txt" />
+   <install as="Horde/Mime/fixtures/uudecode.txt" name="test/Horde/Mime/fixtures/uudecode.txt" />
   </filelist>
  </phprelease>
+ <changelog>
+  <release>
+   <version>
+    <release>0.1.0</release>
+    <api>0.1.0</api>
+   </version>
+   <stability>
+    <release>alpha</release>
+    <api>alpha</api>
+   </stability>
+   <date>2010-10-22</date>
+   <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
+   <notes>
+* Converted tests to PHPUnit.
+ * Moved viewer code to horde/Mime_Viewer package.
+ * Removed Webcpp and Enscript viewers. Source code highlighting is now
+ exclusively handled by the Srchighlight driver.
+ * No need to generate Content-Transfer-Encoding header if part data is 7bit.
+ * Default disposition should be empty by default, not inline (RFC 2183 [2]).
+ * Request #8556: Allow specifying a header charset for a part.
+ * Add &apos;raw&apos; render view to Horde_Mime_Viewer.
+ * Horde_Mime_Part::parseMessage() correctly parses non-MIME parts.
+ * Remove dependence on PEAR&apos;s Mail_mimeDecode::.
+ * Added Horde_Mime::uudecode().
+ * Remove support for deprecated mime_magic module.
+ * Use Gnumeric to display MS Excel documents.
+ * Use AbiWord to display MS Word documents (Request #8011).
+ * Add support for decoding IDN (RFC 3490) names (Request #5836).
+ * Initial package.
+   </notes>
+  </release>
+ </changelog>
 </package>
index e7c4ba5..9f95498 100644 (file)
@@ -63,13 +63,6 @@ class Horde_Mime_Viewer_Base
     );
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Constructor.
      *
      * @param Horde_Mime_Part $mime_part  The object with the data to be
@@ -83,19 +76,11 @@ class Horde_Mime_Viewer_Base
      *     - 'text_filter': (callback) A callback function used to filter text.
      *                      Is called the same as Horde_Text_Filter::filter().
      *                      DEFAULT: Uses Horde_Text_Filter::filter().
-     *     - 'translation': (object) A translation handler implementing
-     *                      Horde_Translation.
      *
      * @throws InvalidArgumentException
      */
     public function __construct(Horde_Mime_Part $part, array $conf = array())
     {
-        if (isset($conf['translation'])) {
-            $this->_dict = $conf['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Mime_Viewer', dirname(__FILE__) . '/../../../../locale');
-        }
-
         foreach ($this->_required as $val) {
             if (!isset($conf[$val])) {
                 throw new InvalidArgumentException(__CLASS__ . ': Missing configuration value (' . $val . ')');
index 7ccf82a..e5c63bc 100644 (file)
@@ -73,7 +73,7 @@ class Horde_Mime_Viewer_Msword extends Horde_Mime_Viewer_Base
             $data = file_get_contents($tmp_out);
             $type = 'text/html';
         } else {
-            $data = $this->_dict->t("Unable to translate this Word document");
+            $data = Horde_Mime_Viewer_Translation::t("Unable to translate this Word document");
             $type = 'text/plain';
         }
 
index 2fff6db..bad0ef8 100644 (file)
@@ -75,36 +75,36 @@ class Horde_Mime_Viewer_Rar extends Horde_Mime_Viewer_Base
 
         $name = $this->_mimepart->getName(true);
         if (empty($name)) {
-            $name = $this->_dict->t("unnamed");
+            $name = Horde_Mime_Viewer_Translation::t("unnamed");
         }
 
         $monospace = $this->getConfigParam('monospace');
 
         $text = '<table><tr><td align="left"><span ' .
             ($monospace ? 'class="' . $monospace . '">' : 'style="font-family:monospace">') .
-            $this->_textFilter($this->_dict->t("Archive Name") . ':  ' . $name, 'space2html', array(
+            $this->_textFilter(Horde_Mime_Viewer_Translation::t("Archive Name") . ':  ' . $name, 'space2html', array(
                 'charset' => $charset,
                 'encode' => true,
                 'encode_all' => true
             )) . "\n" .
-            $this->_textFilter($this->_dict->t("Archive File Size") . ': ' . strlen($contents) . ' bytes', 'space2html', array(
+            $this->_textFilter(Horde_Mime_Viewer_Translation::t("Archive File Size") . ': ' . strlen($contents) . ' bytes', 'space2html', array(
                 'charset' => $charset,
                 'encode' => true,
                 'encode_all' => true
             )) . "\n" .
-            $this->_textFilter(sprintf($this->_dict->ngettext("File Count: %d file", "File Count: %d files", $fileCount), $fileCount), 'space2html', array(
+            $this->_textFilter(sprintf(Horde_Mime_Viewer_Translation::ngettext("File Count: %d file", "File Count: %d files", $fileCount), $fileCount), 'space2html', array(
                 'charset' => $charset,
                 'encode' => true,
                 'encode_all' => true
             )) .
             "\n\n" .
             $this->_textFilter(
-                Horde_String::pad($this->_dict->t("File Name"), 50, ' ', STR_PAD_RIGHT) .
-                Horde_String::pad($this->_dict->t("Attributes"), 10, ' ', STR_PAD_LEFT) .
-                Horde_String::pad($this->_dict->t("Size"), 10, ' ', STR_PAD_LEFT) .
-                Horde_String::pad($this->_dict->t("Modified Date"), 19, ' ', STR_PAD_LEFT) .
-                Horde_String::pad($this->_dict->t("Method"), 10, ' ', STR_PAD_LEFT) .
-                Horde_String::pad($this->_dict->t("Ratio"), 10, ' ', STR_PAD_LEFT),
+                Horde_String::pad(Horde_Mime_Viewer_Translation::t("File Name"), 50, ' ', STR_PAD_RIGHT) .
+                Horde_String::pad(Horde_Mime_Viewer_Translation::t("Attributes"), 10, ' ', STR_PAD_LEFT) .
+                Horde_String::pad(Horde_Mime_Viewer_Translation::t("Size"), 10, ' ', STR_PAD_LEFT) .
+                Horde_String::pad(Horde_Mime_Viewer_Translation::t("Modified Date"), 19, ' ', STR_PAD_LEFT) .
+                Horde_String::pad(Horde_Mime_Viewer_Translation::t("Method"), 10, ' ', STR_PAD_LEFT) .
+                Horde_String::pad(Horde_Mime_Viewer_Translation::t("Ratio"), 10, ' ', STR_PAD_LEFT),
                 'space2html',
                 array(
                     'charset' => $charset,
index 03f29b5..a1a8106 100644 (file)
@@ -63,13 +63,13 @@ class Horde_Mime_Viewer_Rfc822 extends Horde_Mime_Viewer_Base
         $headers = Horde_Mime_Headers::parseHeaders($text);
 
         $header_array = array(
-            'date' => $this->_dict->t("Date"),
-            'from' => $this->_dict->t("From"),
-            'to' => $this->_dict->t("To"),
-            'cc' => $this->_dict->t("Cc"),
-            'bcc' => $this->_dict->t("Bcc"),
-            'reply-to' => $this->_dict->t("Reply-To"),
-            'subject' => $this->_dict->t("Subject")
+            'date' => Horde_Mime_Viewer_Translation::t("Date"),
+            'from' => Horde_Mime_Viewer_Translation::t("From"),
+            'to' => Horde_Mime_Viewer_Translation::t("To"),
+            'cc' => Horde_Mime_Viewer_Translation::t("Cc"),
+            'bcc' => Horde_Mime_Viewer_Translation::t("Bcc"),
+            'reply-to' => Horde_Mime_Viewer_Translation::t("Reply-To"),
+            'subject' => Horde_Mime_Viewer_Translation::t("Subject")
         );
         $header_output = array();
 
index 1337fbf..42aa1c8 100644 (file)
@@ -72,7 +72,7 @@ class Horde_Mime_Viewer_Rtf extends Horde_Mime_Viewer_Base
 
         $data = file_exists($tmp_output)
             ? file_get_contents($tmp_output)
-            : $this->_dict->t("Unable to translate this RTF document");
+            : Horde_Mime_Viewer_Translation::t("Unable to translate this RTF document");
 
         return $this->_renderReturn(
             $data,
index 2467358..70ef941 100644 (file)
@@ -93,34 +93,34 @@ class Horde_Mime_Viewer_Tgz extends Horde_Mime_Viewer_Base
 
         $name = $this->_mimepart->getName(true);
         if (empty($name)) {
-            $name = $this->_dict->t("unnamed");
+            $name = Horde_Mime_Viewer_Translation::t("unnamed");
         }
 
         $monospace = $this->getConfigParam('monospace');
 
         $text = '<table><tr><td align="left"><span ' .
             ($monospace ? 'class="' . $monospace . '">' : 'style="font-family:monospace">') .
-            $this->_textFilter($this->_dict->t("Archive Name") . ':  ' . $name, 'Space2html', array(
+            $this->_textFilter(Horde_Mime_Viewer_Translation::t("Archive Name") . ':  ' . $name, 'Space2html', array(
                 'charset' => $charset,
                 'encode' => true,
                 'encode_all' => true
             )) . "\n" .
-            $this->_textFilter($this->_dict->t("Archive File Size") . ': ' . strlen($contents) . ' bytes', 'Space2html', array(
+            $this->_textFilter(Horde_Mime_Viewer_Translation::t("Archive File Size") . ': ' . strlen($contents) . ' bytes', 'Space2html', array(
                 'charset' => $charset,
                 'encode' => true,
                 'encode_all' => true
             )) . "\n" .
-            $this->_textFilter(sprintf($this->_dict->ngettext("File Count: %d file", "File Count: %d files", $fileCount), $fileCount), 'Space2html', array(
+            $this->_textFilter(sprintf(Horde_Mime_Viewer_Translation::ngettext("File Count: %d file", "File Count: %d files", $fileCount), $fileCount), 'Space2html', array(
                 'charset' => $charset,
                 'encode' => true,
                 'encode_all' => true
             )) .
             "\n\n" .
             $this->_textFilter(
-                str_pad($this->_dict->t("File Name"), 62, ' ', STR_PAD_RIGHT) .
-                str_pad($this->_dict->t("Attributes"), 15, ' ', STR_PAD_LEFT) .
-                str_pad($this->_dict->t("Size"), 10, ' ', STR_PAD_LEFT) .
-                str_pad($this->_dict->t("Modified Date"), 19, ' ', STR_PAD_LEFT),
+                str_pad(Horde_Mime_Viewer_Translation::t("File Name"), 62, ' ', STR_PAD_RIGHT) .
+                str_pad(Horde_Mime_Viewer_Translation::t("Attributes"), 15, ' ', STR_PAD_LEFT) .
+                str_pad(Horde_Mime_Viewer_Translation::t("Size"), 10, ' ', STR_PAD_LEFT) .
+                str_pad(Horde_Mime_Viewer_Translation::t("Modified Date"), 19, ' ', STR_PAD_LEFT),
                 'Space2html',
                 array(
                     'charset' => $charset,
diff --git a/framework/Mime_Viewer/lib/Horde/Mime/Viewer/Translation.php b/framework/Mime_Viewer/lib/Horde/Mime/Viewer/Translation.php
new file mode 100644 (file)
index 0000000..b8dc429
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Mime_Viewer
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Mime_Viewer_Translation is the translation wrapper class for Horde_Mime_Viewer.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Mime_Viewer
+ */
+class Horde_Mime_Viewer_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Mime_Viewer';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../../locale' : '@data_dir@/Mime_Viewer/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Mime_Viewer';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../../locale' : '@data_dir@/Mime_Viewer/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index aaf356e..4847f13 100644 (file)
@@ -72,7 +72,7 @@ class Horde_Mime_Viewer_Wordperfect extends Horde_Mime_Viewer_Base
 
         $data = file_exists($tmp_output)
             ? file_get_contents($tmp_output)
-            : $this->_dict->t("Unable to translate this WordPerfect document");
+            : Horde_Mime_Viewer_Translation::t("Unable to translate this WordPerfect document");
 
         return $this->_renderReturn(
             $data,
index 08a3e71..18f203b 100644 (file)
@@ -87,7 +87,7 @@ class Horde_Mime_Viewer_Zip extends Horde_Mime_Viewer_Base
 
         $name = $this->_mimepart->getName(true);
         if (empty($name)) {
-            $name = $this->_dict->t("unnamed");
+            $name = Horde_Mime_Viewer_Translation::t("unnamed");
         }
 
         $monospace = $this->getConfigParam('monospace');
@@ -95,17 +95,17 @@ class Horde_Mime_Viewer_Zip extends Horde_Mime_Viewer_Base
         $text = '<table><tr><td align="left"><span ' .
             ($monospace ? 'class="' . $monospace . '">' : 'style="font-family:monospace">') .
             $this->_textFilter(
-                $this->_dict->t("Archive Name") . ': ' . $name . "\n" .
-                $this->_dict->t("Archive File Size") . ': ' . strlen($contents) .
+                Horde_Mime_Viewer_Translation::t("Archive Name") . ': ' . $name . "\n" .
+                Horde_Mime_Viewer_Translation::t("Archive File Size") . ': ' . strlen($contents) .
                 " bytes\n" .
-                sprintf($this->_dict->ngettext("File Count: %d file", "File Count: %d files", $fileCount), $fileCount) .
+                sprintf(Horde_Mime_Viewer_Translation::ngettext("File Count: %d file", "File Count: %d files", $fileCount), $fileCount) .
                 "\n\n" .
                 str_repeat(' ', 15) .
-                Horde_String::pad($this->_dict->t("Attributes"), 10, ' ', STR_PAD_LEFT) .
-                Horde_String::pad($this->_dict->t("Size"), 10, ' ', STR_PAD_LEFT) .
-                Horde_String::pad($this->_dict->t("Modified Date"), 19, ' ', STR_PAD_LEFT) .
-                Horde_String::pad($this->_dict->t("Method"), 10, ' ', STR_PAD_LEFT) .
-                Horde_String::pad($this->_dict->t("Ratio"), 10, ' ', STR_PAD_LEFT) .
+                Horde_String::pad(Horde_Mime_Viewer_Translation::t("Attributes"), 10, ' ', STR_PAD_LEFT) .
+                Horde_String::pad(Horde_Mime_Viewer_Translation::t("Size"), 10, ' ', STR_PAD_LEFT) .
+                Horde_String::pad(Horde_Mime_Viewer_Translation::t("Modified Date"), 19, ' ', STR_PAD_LEFT) .
+                Horde_String::pad(Horde_Mime_Viewer_Translation::t("Method"), 10, ' ', STR_PAD_LEFT) .
+                Horde_String::pad(Horde_Mime_Viewer_Translation::t("Ratio"), 10, ' ', STR_PAD_LEFT) .
                 "\n",
                 'Space2html',
                 array(
index 264c022..9a2922c 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.9.0" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Mime_Viewer</name>
  <channel>pear.horde.org</channel>
  <summary>Horde MIME Viewer Library</summary>
@@ -10,8 +10,8 @@
   <email>slusarz@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2010-10-02</date>
- <time>23:49:26</time>
+ <date>2010-10-22</date>
+ <time>19:03:07</time>
  <version>
   <release>0.2.0</release>
   <api>0.1.0</api>
@@ -129,6 +129,9 @@ Replaced external or PHP-based syntax highlighters with javascript SyntaxHighlig
        <file name="Syntaxhighlighter.php" role="php" />
        <file name="Tgz.php" role="php" />
        <file name="Tnef.php" role="php" />
+       <file name="Translation.php" role="php">
+         <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+       </file>
        <file name="Wordperfect.php" role="php" />
        <file name="Zip.php" role="php" />
       </dir> <!-- /lib/Horde/Mime/Viewer -->
@@ -136,6 +139,254 @@ Replaced external or PHP-based syntax highlighters with javascript SyntaxHighlig
      </dir> <!-- /lib/Horde/Mime -->
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.mo" role="data" />
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Mime_Viewer.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Mime_Viewer.pot" role="data" />
+   </dir> <!-- /locale -->
    <dir name="test">
     <dir name="Horde">
      <dir name="Mime">
@@ -183,9 +434,10 @@ Replaced external or PHP-based syntax highlighters with javascript SyntaxHighlig
     <name>Util</name>
     <channel>pear.horde.org</channel>
    </package>
-   <extension>
-    <name>gettext</name>
-   </extension>
+   <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
   </required>
  </dependencies>
  <phprelease>
@@ -267,6 +519,7 @@ Replaced external or PHP-based syntax highlighters with javascript SyntaxHighlig
    <install as="Horde/Mime/Viewer/Syntaxhighlighter.php" name="lib/Horde/Mime/Viewer/Syntaxhighlighter.php" />
    <install as="Horde/Mime/Viewer/Tgz.php" name="lib/Horde/Mime/Viewer/Tgz.php" />
    <install as="Horde/Mime/Viewer/Tnef.php" name="lib/Horde/Mime/Viewer/Tnef.php" />
+   <install as="Horde/Mime/Viewer/Translation.php" name="lib/Horde/Mime/Viewer/Translation.php" />
    <install as="Horde/Mime/Viewer/Wordperfect.php" name="lib/Horde/Mime/Viewer/Wordperfect.php" />
    <install as="Horde/Mime/Viewer/Zip.php" name="lib/Horde/Mime/Viewer/Zip.php" />
    <install as="Horde/Mime/Viewer/Ooo/common.xsl" name="lib/Horde/Mime/Viewer/Ooo/common.xsl" />
@@ -280,6 +533,80 @@ Replaced external or PHP-based syntax highlighters with javascript SyntaxHighlig
    <install as="Horde/Mime/Viewer/Ooo/table_cells.xsl" name="lib/Horde/Mime/Viewer/Ooo/table_cells.xsl" />
    <install as="Horde/Mime/Viewer/Ooo/table_columns.xsl" name="lib/Horde/Mime/Viewer/Ooo/table_columns.xsl" />
    <install as="Horde/Mime/Viewer/Ooo/table_rows.xsl" name="lib/Horde/Mime/Viewer/Ooo/table_rows.xsl" />
+   <install as="locale/Horde_Mime_Viewer.pot" name="locale/Horde_Mime_Viewer.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/ar/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/bg/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/bs/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/ca/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/cs/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/cs/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/da/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/da/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/de/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/de/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/el/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/el/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/en/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/en/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/es/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/es/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/et/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/et/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/eu/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/fa/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/fi/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/fi/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/fr/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/fr/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/gl/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/he/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/he/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/hr/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/hr/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/hu/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/hu/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/id/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/is/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/it/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/it/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/ja/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/ja/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/km/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/ko/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/ko/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/lt/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/lt/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/lv/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/lv/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/mk/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/nb/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/nb/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/nl/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/nl/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/nn/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/nn/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/pl/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/pl/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/pt/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/pt/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/pt_BR/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/ro/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/ro/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/ru/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/ru/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/sk/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/sk/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/sl/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/sl/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/sv/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/sv/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/tr/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/tr/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Mime_Viewer.mo" name="locale/uk/LC_MESSAGES/Horde_Mime_Viewer.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/uk/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/zh_CN/LC_MESSAGES/Horde_Mime_Viewer.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Mime_Viewer.po" name="locale/zh_TW/LC_MESSAGES/Horde_Mime_Viewer.po" />
    <install as="Horde/Mime/Viewer/url.phpt" name="test/Horde/Mime/Viewer/url.phpt" />
   </filelist>
  </phprelease>
@@ -293,7 +620,7 @@ Replaced external or PHP-based syntax highlighters with javascript SyntaxHighlig
     <release>beta</release>
     <api>beta</api>
    </stability>
-   <date>2010-10-02</date>
+   <date>2010-10-22</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
    <notes>
 Replaced external or PHP-based syntax highlighters with javascript SyntaxHighlighter: http://alexgorbatchev.com/SyntaxHighlighter/
index 4668179..11bd504 100644 (file)
@@ -31,21 +31,8 @@ class Horde_Form {
     protected $_autofilled = false;
     protected $_help = false;
 
-    /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    public function __construct($vars, $title = '', $name = null, $dict = null)
+    public function __construct($vars, $title = '', $name = null)
     {
-        if ($dict) {
-            $this->_dict = $dict;
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Model', dirname(__FILE__) . '/../../locale');
-        }
-
         if (is_null($name)) {
             $name = Horde_String::lower(get_class($this));
         }
@@ -385,7 +372,7 @@ class Horde_Form {
         if ($this->_useFormToken) {
             $tokenSource = $GLOBALS['injector']->getInstance('Horde_Token');
             if (!$tokenSource->verify($this->_vars->get($this->_name . '_formToken'))) {
-                $this->_errors['_formToken'] = $this->_dict->t("This form has already been processed.");
+                $this->_errors['_formToken'] = Horde_Model_Translation::t("This form has already been processed.");
             }
         }
 
@@ -641,7 +628,7 @@ class Horde_Form_Type_number extends Horde_Form_Type
     function isValid($var, $vars, $value, &$message)
     {
         if ($var->isRequired() && empty($value) && ((string)(double)$value !== $value)) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
             return false;
         } elseif (empty($value)) {
             return true;
@@ -652,7 +639,7 @@ class Horde_Form_Type_number extends Horde_Form_Type
             return true;
         }
 
-        $message = $this->_dict->t("This field must be a valid number.");
+        $message = Horde_Model_Translation::t("This field must be a valid number.");
         return false;
     }
 
@@ -708,7 +695,7 @@ class Horde_Form_Type_number extends Horde_Form_Type
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Number"));
+        return array('name' => Horde_Model_Translation::t("Number"));
     }
 }
 
@@ -717,7 +704,7 @@ class Horde_Form_Type_int extends Horde_Form_Type {
     function isValid($var, $vars, $value, &$message)
     {
         if ($var->isRequired() && empty($value) && ((string)(int)$value !== $value)) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
             return false;
         }
 
@@ -725,7 +712,7 @@ class Horde_Form_Type_int extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("This field may only contain integers.");
+        $message = Horde_Model_Translation::t("This field may only contain integers.");
         return false;
     }
 
@@ -734,7 +721,7 @@ class Horde_Form_Type_int extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Integer"));
+        return array('name' => Horde_Model_Translation::t("Integer"));
     }
 
 }
@@ -744,7 +731,7 @@ class Horde_Form_Type_octal extends Horde_Form_Type {
     function isValid($var, $vars, $value, &$message)
     {
         if ($var->isRequired() && empty($value) && ((string)(int)$value !== $value)) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
             return false;
         }
 
@@ -752,7 +739,7 @@ class Horde_Form_Type_octal extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("This field may only contain octal values.");
+        $message = Horde_Model_Translation::t("This field may only contain octal values.");
         return false;
     }
 
@@ -761,7 +748,7 @@ class Horde_Form_Type_octal extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Octal"));
+        return array('name' => Horde_Model_Translation::t("Octal"));
     }
 
 }
@@ -771,7 +758,7 @@ class Horde_Form_Type_intlist extends Horde_Form_Type {
     function isValid($var, $vars, $value, &$message)
     {
         if (empty($value) && $var->isRequired()) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
             return false;
         }
 
@@ -779,7 +766,7 @@ class Horde_Form_Type_intlist extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("This field must be a comma or space separated list of integers");
+        $message = Horde_Model_Translation::t("This field must be a comma or space separated list of integers");
         return false;
     }
 
@@ -788,7 +775,7 @@ class Horde_Form_Type_intlist extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Integer list"));
+        return array('name' => Horde_Model_Translation::t("Integer list"));
     }
 
 }
@@ -831,14 +818,14 @@ class Horde_Form_Type_text extends Horde_Form_Type {
 
         if (!empty($this->_maxlength) && Horde_String::length($value) > $this->_maxlength) {
             $valid = false;
-            $message = sprintf($this->_dict->t("Value is over the maximum length of %s."), $this->_maxlength);
+            $message = sprintf(Horde_Model_Translation::t("Value is over the maximum length of %s."), $this->_maxlength);
         } elseif ($var->isRequired() && empty($this->_regex)) {
             if (!($valid = strlen(trim($value)) > 0)) {
-                $message = $this->_dict->t("This field is required.");
+                $message = Horde_Model_Translation::t("This field is required.");
             }
         } elseif (strlen($this->_regex)) {
             if (!($valid = preg_match($this->_regex, $value))) {
-                $message = $this->_dict->t("You must enter a valid value.");
+                $message = Horde_Model_Translation::t("You must enter a valid value.");
             }
         }
 
@@ -851,13 +838,13 @@ class Horde_Form_Type_text extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Text"),
+            'name' => Horde_Model_Translation::t("Text"),
             'params' => array(
-                'regex'     => array('label' => $this->_dict->t("Regex"),
+                'regex'     => array('label' => Horde_Model_Translation::t("Regex"),
                                      'type'  => 'text'),
-                'size'      => array('label' => $this->_dict->t("Size"),
+                'size'      => array('label' => Horde_Model_Translation::t("Size"),
                                      'type'  => 'int'),
-                'maxlength' => array('label' => $this->_dict->t("Maximum length"),
+                'maxlength' => array('label' => Horde_Model_Translation::t("Maximum length"),
                                      'type'  => 'int')));
     }
 
@@ -871,13 +858,13 @@ class Horde_Form_Type_stringlist extends Horde_Form_Type_text {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("String list"),
+            'name' => Horde_Model_Translation::t("String list"),
             'params' => array(
-                'regex'     => array('label' => $this->_dict->t("Regex"),
+                'regex'     => array('label' => Horde_Model_Translation::t("Regex"),
                                      'type'  => 'text'),
-                'size'      => array('label' => $this->_dict->t("Size"),
+                'size'      => array('label' => Horde_Model_Translation::t("Size"),
                                      'type'  => 'int'),
-                'maxlength' => array('label' => $this->_dict->t("Maximum length"),
+                'maxlength' => array('label' => Horde_Model_Translation::t("Maximum length"),
                                      'type'  => 'int')),
         );
     }
@@ -893,12 +880,12 @@ class Horde_Form_Type_phone extends Horde_Form_Type {
         if ($var->isRequired()) {
             $valid = strlen(trim($value)) > 0;
             if (!$valid) {
-                $message = $this->_dict->t("This field is required.");
+                $message = Horde_Model_Translation::t("This field is required.");
             }
         } else {
             $valid = preg_match('/^\+?[\d()\-\/ ]*$/', $value);
             if (!$valid) {
-                $message = $this->_dict->t("You must enter a valid phone number, digits only with an optional '+' for the international dialing prefix.");
+                $message = Horde_Model_Translation::t("You must enter a valid phone number, digits only with an optional '+' for the international dialing prefix.");
             }
         }
 
@@ -910,7 +897,7 @@ class Horde_Form_Type_phone extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Phone number"));
+        return array('name' => Horde_Model_Translation::t("Phone number"));
     }
 
 }
@@ -922,7 +909,7 @@ class Horde_Form_Type_cellphone extends Horde_Form_Type_phone {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Mobile phone number"));
+        return array('name' => Horde_Model_Translation::t("Mobile phone number"));
     }
 
 }
@@ -948,11 +935,11 @@ class Horde_Form_Type_ipaddress extends Horde_Form_Type_text {
             }
 
             if (!$valid) {
-                $message = $this->_dict->t("Please enter a valid IP address.");
+                $message = Horde_Model_Translation::t("Please enter a valid IP address.");
             }
         } elseif ($var->isRequired()) {
             $valid = false;
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
         }
 
         return $valid;
@@ -963,7 +950,7 @@ class Horde_Form_Type_ipaddress extends Horde_Form_Type_text {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("IP address"));
+        return array('name' => Horde_Model_Translation::t("IP address"));
     }
 
 }
@@ -1006,13 +993,13 @@ class Horde_Form_Type_longtext extends Horde_Form_Type_text {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Long text"),
+            'name' => Horde_Model_Translation::t("Long text"),
             'params' => array(
-                'rows'   => array('label' => $this->_dict->t("Number of rows"),
+                'rows'   => array('label' => Horde_Model_Translation::t("Number of rows"),
                                   'type'  => 'int'),
-                'cols'   => array('label' => $this->_dict->t("Number of columns"),
+                'cols'   => array('label' => Horde_Model_Translation::t("Number of columns"),
                                   'type'  => 'int'),
-                'helper' => array('label' => $this->_dict->t("Helper?"),
+                'helper' => array('label' => Horde_Model_Translation::t("Helper?"),
                                   'type'  => 'boolean')));
     }
 
@@ -1036,10 +1023,10 @@ class Horde_Form_Type_countedtext extends Horde_Form_Type_longtext {
 
         if ($var->isRequired() && $length <= 0) {
             $valid = false;
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
         } elseif ($length > $this->_chars) {
             $valid = false;
-            $message = sprintf($this->_dict->t("There are too many characters in this field. You have entered %s characters; you must enter less than %s."), Horde_String::length(trim($value)), $this->_chars);
+            $message = sprintf(Horde_Model_Translation::t("There are too many characters in this field. You have entered %s characters; you must enter less than %s."), Horde_String::length(trim($value)), $this->_chars);
         }
 
         return $valid;
@@ -1051,13 +1038,13 @@ class Horde_Form_Type_countedtext extends Horde_Form_Type_longtext {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Counted text"),
+            'name' => Horde_Model_Translation::t("Counted text"),
             'params' => array(
-                'rows'  => array('label' => $this->_dict->t("Number of rows"),
+                'rows'  => array('label' => Horde_Model_Translation::t("Number of rows"),
                                  'type'  => 'int'),
-                'cols'  => array('label' => $this->_dict->t("Number of columns"),
+                'cols'  => array('label' => Horde_Model_Translation::t("Number of columns"),
                                  'type'  => 'int'),
-                'chars' => array('label' => $this->_dict->t("Number of characters"),
+                'chars' => array('label' => Horde_Model_Translation::t("Number of characters"),
                                  'type'  => 'int')));
     }
 
@@ -1071,11 +1058,11 @@ class Horde_Form_Type_address extends Horde_Form_Type_longtext {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Address"),
+            'name' => Horde_Model_Translation::t("Address"),
             'params' => array(
-                'rows' => array('label' => $this->_dict->t("Number of rows"),
+                'rows' => array('label' => Horde_Model_Translation::t("Number of rows"),
                                 'type'  => 'int'),
-                'cols' => array('label' => $this->_dict->t("Number of columns"),
+                'cols' => array('label' => Horde_Model_Translation::t("Number of columns"),
                                 'type'  => 'int')));
     }
 
@@ -1125,7 +1112,7 @@ class Horde_Form_Type_file extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("File upload"));
+        return array('name' => Horde_Model_Translation::t("File upload"));
     }
 
 }
@@ -1147,7 +1134,7 @@ class Horde_Form_Type_boolean extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("True or false"));
+        return array('name' => Horde_Model_Translation::t("True or false"));
     }
 
 }
@@ -1178,25 +1165,25 @@ class Horde_Form_Type_link extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Link"),
+            'name' => Horde_Model_Translation::t("Link"),
             'params' => array(
                 'url' => array(
-                    'label' => $this->_dict->t("Link URL"),
+                    'label' => Horde_Model_Translation::t("Link URL"),
                     'type' => 'text'),
                 'text' => array(
-                    'label' => $this->_dict->t("Link text"),
+                    'label' => Horde_Model_Translation::t("Link text"),
                     'type' => 'text'),
                 'target' => array(
-                    'label' => $this->_dict->t("Link target"),
+                    'label' => Horde_Model_Translation::t("Link target"),
                     'type' => 'text'),
                 'onclick' => array(
-                    'label' => $this->_dict->t("Onclick event"),
+                    'label' => Horde_Model_Translation::t("Onclick event"),
                     'type' => 'text'),
                 'title' => array(
-                    'label' => $this->_dict->t("Link title attribute"),
+                    'label' => Horde_Model_Translation::t("Link title attribute"),
                     'type' => 'text'),
                 'accesskey' => array(
-                    'label' => $this->_dict->t("Link access key"),
+                    'label' => Horde_Model_Translation::t("Link access key"),
                     'type' => 'text')));
     }
 
@@ -1237,7 +1224,7 @@ class Horde_Form_Type_email extends Horde_Form_Type {
 
         // Check for too many.
         if (!$this->_allow_multi && count($emails) > 1) {
-            $message = $this->_dict->t("Only one email address is allowed.");
+            $message = Horde_Model_Translation::t("Only one email address is allowed.");
             return false;
         }
 
@@ -1248,7 +1235,7 @@ class Horde_Form_Type_email extends Horde_Form_Type {
                 continue;
             }
             if (!$this->validateEmailAddress($email)) {
-                $message = sprintf($this->_dict->t("\"%s\" is not a valid email address."), $email);
+                $message = sprintf(Horde_Model_Translation::t("\"%s\" is not a valid email address."), $email);
                 return false;
             }
             ++$nonEmpty;
@@ -1256,9 +1243,9 @@ class Horde_Form_Type_email extends Horde_Form_Type {
 
         if (!$nonEmpty && $var->isRequired()) {
             if ($this->_allow_multi) {
-                $message = $this->_dict->t("You must enter at least one email address.");
+                $message = Horde_Model_Translation::t("You must enter at least one email address.");
             } else {
-                $message = $this->_dict->t("You must enter an email address.");
+                $message = Horde_Model_Translation::t("You must enter an email address.");
             }
             return false;
         }
@@ -1433,17 +1420,17 @@ class Horde_Form_Type_email extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Email"),
+            'name' => Horde_Model_Translation::t("Email"),
             'params' => array(
-                'allow_multi' => array('label' => $this->_dict->t("Allow multiple addresses?"),
+                'allow_multi' => array('label' => Horde_Model_Translation::t("Allow multiple addresses?"),
                                        'type'  => 'boolean'),
-                'strip_domain' => array('label' => $this->_dict->t("Protect address from spammers?"),
+                'strip_domain' => array('label' => Horde_Model_Translation::t("Protect address from spammers?"),
                                         'type' => 'boolean'),
-                'link_compose' => array('label' => $this->_dict->t("Link the email address to the compose page when displaying?"),
+                'link_compose' => array('label' => Horde_Model_Translation::t("Link the email address to the compose page when displaying?"),
                                         'type' => 'boolean'),
-                'link_name' => array('label' => $this->_dict->t("The name to use when linking to the compose page"),
+                'link_name' => array('label' => Horde_Model_Translation::t("The name to use when linking to the compose page"),
                                      'type' => 'text'),
-                'delimiters' => array('label' => $this->_dict->t("Character to split multiple addresses with"),
+                'delimiters' => array('label' => Horde_Model_Translation::t("Character to split multiple addresses with"),
                                       'type' => 'text'),
             ),
         );
@@ -1653,9 +1640,9 @@ class Horde_Form_Type_matrix extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Field matrix"),
+            'name' => Horde_Model_Translation::t("Field matrix"),
             'params' => array(
-                'cols' => array('label' => $this->_dict->t("Column titles"),
+                'cols' => array('label' => Horde_Model_Translation::t("Column titles"),
                                 'type'  => 'stringlist')));
     }
 
@@ -1666,12 +1653,12 @@ class Horde_Form_Type_emailConfirm extends Horde_Form_Type {
     function isValid($var, $vars, $value, &$message)
     {
         if ($var->isRequired() && empty($value['original'])) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
             return false;
         }
 
         if ($value['original'] != $value['confirm']) {
-            $message = $this->_dict->t("Email addresses must match.");
+            $message = Horde_Model_Translation::t("Email addresses must match.");
             return false;
         } else {
             $parser = new Horde_Mail_Rfc822();
@@ -1680,11 +1667,11 @@ class Horde_Form_Type_emailConfirm extends Horde_Form_Type {
             ));
 
             if (count($parsed_email) > 1) {
-                $message = $this->_dict->t("Only one email address allowed.");
+                $message = Horde_Model_Translation::t("Only one email address allowed.");
                 return false;
             }
             if (empty($parsed_email[0]->mailbox)) {
-                $message = $this->_dict->t("You did not enter a valid email address.");
+                $message = Horde_Model_Translation::t("You did not enter a valid email address.");
                 return false;
             }
         }
@@ -1697,7 +1684,7 @@ class Horde_Form_Type_emailConfirm extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Email with confirmation"));
+        return array('name' => Horde_Model_Translation::t("Email with confirmation"));
     }
 
 }
@@ -1712,7 +1699,7 @@ class Horde_Form_Type_password extends Horde_Form_Type {
             $valid = strlen(trim($value)) > 0;
 
             if (!$valid) {
-                $message = $this->_dict->t("This field is required.");
+                $message = Horde_Model_Translation::t("This field is required.");
             }
         }
 
@@ -1724,7 +1711,7 @@ class Horde_Form_Type_password extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Password"));
+        return array('name' => Horde_Model_Translation::t("Password"));
     }
 
 }
@@ -1734,12 +1721,12 @@ class Horde_Form_Type_passwordconfirm extends Horde_Form_Type {
     function isValid($var, $vars, $value, &$message)
     {
         if ($var->isRequired() && empty($value['original'])) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
             return false;
         }
 
         if ($value['original'] != $value['confirm']) {
-            $message = $this->_dict->t("Passwords must match.");
+            $message = Horde_Model_Translation::t("Passwords must match.");
             return false;
         }
 
@@ -1757,7 +1744,7 @@ class Horde_Form_Type_passwordconfirm extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Password with confirmation"));
+        return array('name' => Horde_Model_Translation::t("Password with confirmation"));
     }
 
 }
@@ -1772,7 +1759,7 @@ class Horde_Form_Type_enum extends Horde_Form_Type {
         $this->_values = $values;
 
         if ($prompt === true) {
-            $this->_prompt = $this->_dict->t("-- select --");
+            $this->_prompt = Horde_Model_Translation::t("-- select --");
         } else {
             $this->_prompt = $prompt;
         }
@@ -1781,7 +1768,7 @@ class Horde_Form_Type_enum extends Horde_Form_Type {
     function isValid($var, $vars, $value, &$message)
     {
         if ($var->isRequired() && $value == '' && !isset($this->_values[$value])) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
             return false;
         }
 
@@ -1790,7 +1777,7 @@ class Horde_Form_Type_enum extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("Invalid data.");
+        $message = Horde_Model_Translation::t("Invalid data.");
         return false;
     }
 
@@ -1800,11 +1787,11 @@ class Horde_Form_Type_enum extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Drop down list"),
+            'name' => Horde_Model_Translation::t("Drop down list"),
             'params' => array(
-                'values' => array('label' => $this->_dict->t("Values to select from"),
+                'values' => array('label' => Horde_Model_Translation::t("Values to select from"),
                                   'type'  => 'stringlist'),
-                'prompt' => array('label' => $this->_dict->t("Prompt text"),
+                'prompt' => array('label' => Horde_Model_Translation::t("Prompt text"),
                                   'type'  => 'text')));
     }
 
@@ -1820,7 +1807,7 @@ class Horde_Form_Type_mlenum extends Horde_Form_Type {
         $this->_values = &$values;
 
         if ($prompts === true) {
-            $this->_prompts = array($this->_dict->t("-- select --"), $this->_dict->t("-- select --"));
+            $this->_prompts = array(Horde_Model_Translation::t("-- select --"), Horde_Model_Translation::t("-- select --"));
         } elseif (!is_array($prompts)) {
             $this->_prompts = array($prompts, $prompts);
         } else {
@@ -1841,7 +1828,7 @@ class Horde_Form_Type_mlenum extends Horde_Form_Type {
     function isValid($var, $vars, $value, &$message)
     {
         if ($var->isRequired() && (empty($value['1']) || empty($value['2']))) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
             return false;
         }
 
@@ -1850,7 +1837,7 @@ class Horde_Form_Type_mlenum extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("Invalid data.");
+        $message = Horde_Model_Translation::t("Invalid data.");
         return false;
     }
 
@@ -1866,11 +1853,11 @@ class Horde_Form_Type_mlenum extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Multi-level drop down lists"),
+            'name' => Horde_Model_Translation::t("Multi-level drop down lists"),
             'params' => array(
-                'values' => array('label' => $this->_dict->t("Values to select from"),
+                'values' => array('label' => Horde_Model_Translation::t("Values to select from"),
                                   'type'  => 'stringlist'),
-                'prompt' => array('label' => $this->_dict->t("Prompt text"),
+                'prompt' => array('label' => Horde_Model_Translation::t("Prompt text"),
                                   'type'  => 'text')));
     }
 
@@ -1902,7 +1889,7 @@ class Horde_Form_Type_multienum extends Horde_Form_Type_enum {
 
         if (empty($value) && ((string)(int)$value !== $value)) {
             if ($var->isRequired()) {
-                $message = $this->_dict->t("This field is required.");
+                $message = Horde_Model_Translation::t("This field is required.");
                 return false;
             } else {
                 return true;
@@ -1913,7 +1900,7 @@ class Horde_Form_Type_multienum extends Horde_Form_Type_enum {
             return true;
         }
 
-        $message = $this->_dict->t("Invalid data.");
+        $message = Horde_Model_Translation::t("Invalid data.");
         return false;
     }
 
@@ -1923,11 +1910,11 @@ class Horde_Form_Type_multienum extends Horde_Form_Type_enum {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Multiple selection"),
+            'name' => Horde_Model_Translation::t("Multiple selection"),
             'params' => array(
-                'values' => array('label' => $this->_dict->t("Values"),
+                'values' => array('label' => Horde_Model_Translation::t("Values"),
                                   'type'  => 'stringlist'),
-                'size'   => array('label' => $this->_dict->t("Size"),
+                'size'   => array('label' => Horde_Model_Translation::t("Size"),
                                   'type'  => 'int'))
         );
     }
@@ -1958,9 +1945,9 @@ class Horde_Form_Type_radio extends Horde_Form_Type_enum {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Radio selection"),
+            'name' => Horde_Model_Translation::t("Radio selection"),
             'params' => array(
-                'values' => array('label' => $this->_dict->t("Values"),
+                'values' => array('label' => Horde_Model_Translation::t("Values"),
                                   'type'  => 'stringlist')));
     }
 
@@ -1992,7 +1979,7 @@ class Horde_Form_Type_set extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("Invalid data.");
+        $message = Horde_Model_Translation::t("Invalid data.");
         return false;
     }
 
@@ -2002,9 +1989,9 @@ class Horde_Form_Type_set extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Set"),
+            'name' => Horde_Model_Translation::t("Set"),
             'params' => array(
-                'values' => array('label' => $this->_dict->t("Values"),
+                'values' => array('label' => Horde_Model_Translation::t("Values"),
                                   'type'  => 'stringlist')));
     }
 
@@ -2027,7 +2014,7 @@ class Horde_Form_Type_date extends Horde_Form_Type {
             $valid = strlen(trim($value)) > 0;
 
             if (!$valid) {
-                $message = sprintf($this->_dict->t("%s is required"), $var->getHumanName());
+                $message = sprintf(Horde_Model_Translation::t("%s is required"), $var->getHumanName());
             }
         }
 
@@ -2059,15 +2046,15 @@ class Horde_Form_Type_date extends Horde_Form_Type {
                                                    date('j'), date('n'),
                                                    date('Y'));
         if ($ago < -1) {
-            return sprintf($this->_dict->t(" (%s days ago)"), $diffdays);
+            return sprintf(Horde_Model_Translation::t(" (%s days ago)"), $diffdays);
         } elseif ($ago == -1) {
-            return $this->_dict->t(" (yesterday)");
+            return Horde_Model_Translation::t(" (yesterday)");
         } elseif ($ago == 0) {
-            return $this->_dict->t(" (today)");
+            return Horde_Model_Translation::t(" (today)");
         } elseif ($ago == 1) {
-            return $this->_dict->t(" (tomorrow)");
+            return Horde_Model_Translation::t(" (tomorrow)");
         } else {
-            return sprintf($this->_dict->t(" (in %s days)"), $diffdays);
+            return sprintf(Horde_Model_Translation::t(" (in %s days)"), $diffdays);
         }
     }
 
@@ -2088,7 +2075,7 @@ class Horde_Form_Type_date extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Date"));
+        return array('name' => Horde_Model_Translation::t("Date"));
     }
 
 }
@@ -2098,7 +2085,7 @@ class Horde_Form_Type_time extends Horde_Form_Type {
     function isValid($var, $vars, $value, &$message)
     {
         if ($var->isRequired() && empty($value) && ((string)(double)$value !== $value)) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
             return false;
         }
 
@@ -2106,7 +2093,7 @@ class Horde_Form_Type_time extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("This field may only contain numbers and the colon.");
+        $message = Horde_Model_Translation::t("This field may only contain numbers and the colon.");
         return false;
     }
 
@@ -2115,7 +2102,7 @@ class Horde_Form_Type_time extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Time"));
+        return array('name' => Horde_Model_Translation::t("Time"));
     }
 
 }
@@ -2137,10 +2124,10 @@ class Horde_Form_Type_hourminutesecond extends Horde_Form_Type {
         }
 
         if (!$this->emptyTimeArray($time) && !$this->checktime($time['hour'], $time['minute'], $time['second'])) {
-            $message = $this->_dict->t("Please enter a valid time.");
+            $message = Horde_Model_Translation::t("Please enter a valid time.");
             return false;
         } elseif ($this->emptyTimeArray($time) && $var->isRequired()) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
             return false;
         }
 
@@ -2220,9 +2207,9 @@ class Horde_Form_Type_hourminutesecond extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Time selection"),
+            'name' => Horde_Model_Translation::t("Time selection"),
             'params' => array(
-                'seconds' => array('label' => $this->_dict->t("Show seconds?"),
+                'seconds' => array('label' => Horde_Model_Translation::t("Show seconds?"),
                                   'type'  => 'boolean')));
     }
 
@@ -2254,7 +2241,7 @@ class Horde_Form_Type_monthyear extends Horde_Form_Type {
 
         if (!$vars->get($this->getMonthVar($var)) ||
             !$vars->get($this->getYearVar($var))) {
-            $message = $this->_dict->t("Please enter a month and a year.");
+            $message = Horde_Model_Translation::t("Please enter a month and a year.");
             return false;
         }
 
@@ -2276,11 +2263,11 @@ class Horde_Form_Type_monthyear extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Month and year"),
+        return array('name' => Horde_Model_Translation::t("Month and year"),
                      'params' => array(
-                         'start_year' => array('label' => $this->_dict->t("Start year"),
+                         'start_year' => array('label' => Horde_Model_Translation::t("Start year"),
                                                'type'  => 'int'),
-                         'end_year'   => array('label' => $this->_dict->t("End year"),
+                         'end_year'   => array('label' => Horde_Model_Translation::t("End year"),
                                                'type'  => 'int')));
     }
 
@@ -2329,13 +2316,13 @@ class Horde_Form_Type_monthdayyear extends Horde_Form_Type {
         $empty = $this->emptyDateArray($date);
 
         if ($empty == 1 && $var->isRequired()) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
             return false;
         } elseif ($empty == 0 && !checkdate($date['month'], $date['day'], $date['year'])) {
-            $message = $this->_dict->t("Please enter a valid date, check the number of days in the month.");
+            $message = Horde_Model_Translation::t("Please enter a valid date, check the number of days in the month.");
             return false;
         } elseif ($empty == -1) {
-            $message = $this->_dict->t("Select all date components.");
+            $message = Horde_Model_Translation::t("Select all date components.");
             return false;
         }
 
@@ -2480,17 +2467,17 @@ class Horde_Form_Type_monthdayyear extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Date selection"),
+            'name' => Horde_Model_Translation::t("Date selection"),
             'params' => array(
-                'start_year' => array('label' => $this->_dict->t("Start year"),
+                'start_year' => array('label' => Horde_Model_Translation::t("Start year"),
                                       'type'  => 'int'),
-                'end_year'   => array('label' => $this->_dict->t("End year"),
+                'end_year'   => array('label' => Horde_Model_Translation::t("End year"),
                                       'type'  => 'int'),
-                'picker'     => array('label' => $this->_dict->t("Show picker?"),
+                'picker'     => array('label' => Horde_Model_Translation::t("Show picker?"),
                                       'type'  => 'boolean'),
-                'format_in'  => array('label' => $this->_dict->t("Storage format"),
+                'format_in'  => array('label' => Horde_Model_Translation::t("Storage format"),
                                       'type'  => 'text'),
-                'format_out' => array('label' => $this->_dict->t("Display format"),
+                'format_out' => array('label' => Horde_Model_Translation::t("Display format"),
                                       'type'  => 'text')));
     }
 
@@ -2619,19 +2606,19 @@ class Horde_Form_Type_datetime extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Date and time selection"),
+            'name' => Horde_Model_Translation::t("Date and time selection"),
             'params' => array(
-                'start_year' => array('label' => $this->_dict->t("Start year"),
+                'start_year' => array('label' => Horde_Model_Translation::t("Start year"),
                                       'type'  => 'int'),
-                'end_year'   => array('label' => $this->_dict->t("End year"),
+                'end_year'   => array('label' => Horde_Model_Translation::t("End year"),
                                       'type'  => 'int'),
-                'picker'     => array('label' => $this->_dict->t("Show picker?"),
+                'picker'     => array('label' => Horde_Model_Translation::t("Show picker?"),
                                       'type'  => 'boolean'),
-                'format_in'  => array('label' => $this->_dict->t("Storage format"),
+                'format_in'  => array('label' => Horde_Model_Translation::t("Storage format"),
                                       'type'  => 'text'),
-                'format_out' => array('label' => $this->_dict->t("Display format"),
+                'format_out' => array('label' => Horde_Model_Translation::t("Display format"),
                                       'type'  => 'text'),
-                'seconds'    => array('label' => $this->_dict->t("Show seconds?"),
+                'seconds'    => array('label' => Horde_Model_Translation::t("Show seconds?"),
                                       'type'  => 'boolean')));
     }
 
@@ -2642,7 +2629,7 @@ class Horde_Form_Type_colorpicker extends Horde_Form_Type {
     function isValid($var, $vars, $value, &$message)
     {
         if ($var->isRequired() && empty($value)) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
             return false;
         }
 
@@ -2650,7 +2637,7 @@ class Horde_Form_Type_colorpicker extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("This field must contain a color code in the RGB Hex format, for example '#1234af'.");
+        $message = Horde_Model_Translation::t("This field must contain a color code in the RGB Hex format, for example '#1234af'.");
         return false;
     }
 
@@ -2659,7 +2646,7 @@ class Horde_Form_Type_colorpicker extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Colour selection"));
+        return array('name' => Horde_Model_Translation::t("Colour selection"));
     }
 
 }
@@ -2720,13 +2707,13 @@ class Horde_Form_Type_sorter extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Sort order selection"),
+            'name' => Horde_Model_Translation::t("Sort order selection"),
             'params' => array(
-                'values' => array('label' => $this->_dict->t("Values"),
+                'values' => array('label' => Horde_Model_Translation::t("Values"),
                                   'type'  => 'stringlist'),
-                'size'   => array('label' => $this->_dict->t("Size"),
+                'size'   => array('label' => Horde_Model_Translation::t("Size"),
                                   'type'  => 'int'),
-                'header' => array('label' => $this->_dict->t("Header"),
+                'header' => array('label' => Horde_Model_Translation::t("Header"),
                                   'type'  => 'text')));
     }
 
@@ -2767,7 +2754,7 @@ class Horde_Form_Type_selectfiles extends Horde_Form_Type {
     {
         $this->_selectid = $selectid;
         if (is_null($link_text)) {
-            $link_text = $this->_dict->t("Select Files");
+            $link_text = Horde_Model_Translation::t("Select Files");
         }
         $this->_link_text = $link_text;
         $this->_link_style = $link_style;
@@ -2788,15 +2775,15 @@ class Horde_Form_Type_selectfiles extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("File selection"),
+            'name' => Horde_Model_Translation::t("File selection"),
             'params' => array(
-                'selectid'   => array('label' => $this->_dict->t("Id"),
+                'selectid'   => array('label' => Horde_Model_Translation::t("Id"),
                                       'type' => 'text'),
-                'link_text'  => array('label' => $this->_dict->t("Link text"),
+                'link_text'  => array('label' => Horde_Model_Translation::t("Link text"),
                                       'type' => 'text'),
-                'link_style' => array('label' => $this->_dict->t("Link style"),
+                'link_style' => array('label' => Horde_Model_Translation::t("Link style"),
                                       'type' => 'text'),
-                'icon'       => array('label' => $this->_dict->t("Show icon?"),
+                'icon'       => array('label' => Horde_Model_Translation::t("Show icon?"),
                                       'type' => 'boolean')));
     }
 
@@ -2899,19 +2886,19 @@ class Horde_Form_Type_assign extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Assignment columns"),
+            'name' => Horde_Model_Translation::t("Assignment columns"),
             'params' => array(
-                'leftValues'  => array('label' => $this->_dict->t("Left values"),
+                'leftValues'  => array('label' => Horde_Model_Translation::t("Left values"),
                                        'type'  => 'stringlist'),
-                'rightValues' => array('label' => $this->_dict->t("Right values"),
+                'rightValues' => array('label' => Horde_Model_Translation::t("Right values"),
                                        'type'  => 'stringlist'),
-                'leftHeader'  => array('label' => $this->_dict->t("Left header"),
+                'leftHeader'  => array('label' => Horde_Model_Translation::t("Left header"),
                                        'type'  => 'text'),
-                'rightHeader' => array('label' => $this->_dict->t("Right header"),
+                'rightHeader' => array('label' => Horde_Model_Translation::t("Right header"),
                                        'type'  => 'text'),
-                'size'        => array('label' => $this->_dict->t("Size"),
+                'size'        => array('label' => Horde_Model_Translation::t("Size"),
                                        'type'  => 'int'),
-                'width'       => array('label' => $this->_dict->t("Width in CSS units"),
+                'width'       => array('label' => Horde_Model_Translation::t("Width in CSS units"),
                                        'type'  => 'text')));
     }
 
@@ -2922,7 +2909,7 @@ class Horde_Form_Type_creditcard extends Horde_Form_Type {
     function isValid($var, $vars, $value, &$message)
     {
         if (empty($value) && $var->isRequired()) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
             return false;
         }
 
@@ -2930,7 +2917,7 @@ class Horde_Form_Type_creditcard extends Horde_Form_Type {
             /* getCardType() will also verify the checksum. */
             $type = $this->getCardType($value);
             if ($type === false || $type == 'unknown') {
-                $message = $this->_dict->t("This does not seem to be a valid card number.");
+                $message = Horde_Model_Translation::t("This does not seem to be a valid card number.");
                 return false;
             }
         }
@@ -3014,7 +3001,7 @@ class Horde_Form_Type_creditcard extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Credit card number"));
+        return array('name' => Horde_Model_Translation::t("Credit card number"));
     }
 
 }
@@ -3031,7 +3018,7 @@ class Horde_Form_Type_obrowser extends Horde_Form_Type {
      */
     function about()
     {
-        return array('name' => $this->_dict->t("Relationship browser"));
+        return array('name' => Horde_Model_Translation::t("Relationship browser"));
     }
 
 }
@@ -3068,13 +3055,13 @@ class Horde_Form_Type_dblookup extends Horde_Form_Type_enum {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Database lookup"),
+            'name' => Horde_Model_Translation::t("Database lookup"),
             'params' => array(
-                'dsn' => array('label' => $this->_dict->t("DSN (see http://pear.php.net/manual/en/package.database.db.intro-dsn.php)"),
+                'dsn' => array('label' => Horde_Model_Translation::t("DSN (see http://pear.php.net/manual/en/package.database.db.intro-dsn.php)"),
                                'type'  => 'text'),
-                'sql' => array('label' => $this->_dict->t("SQL statement for value lookups"),
+                'sql' => array('label' => Horde_Model_Translation::t("SQL statement for value lookups"),
                                'type'  => 'text'),
-                'prompt' => array('label' => $this->_dict->t("Prompt text"),
+                'prompt' => array('label' => Horde_Model_Translation::t("Prompt text"),
                                   'type'  => 'text'))
             );
     }
@@ -3095,12 +3082,12 @@ class Horde_Form_Type_figlet extends Horde_Form_Type {
     function isValid($var, $vars, $value, &$message)
     {
         if (empty($value) && $var->isRequired()) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
             return false;
         }
 
         if (Horde_String::lower($value) != Horde_String::lower($this->_text)) {
-            $message = $this->_dict->t("The text you entered did not match the text on the screen.");
+            $message = Horde_Model_Translation::t("The text you entered did not match the text on the screen.");
             return false;
         }
 
@@ -3113,11 +3100,11 @@ class Horde_Form_Type_figlet extends Horde_Form_Type {
     function about()
     {
         return array(
-            'name' => $this->_dict->t("Figlet CAPTCHA"),
+            'name' => Horde_Model_Translation::t("Figlet CAPTCHA"),
             'params' => array(
-                'text' => array('label' => $this->_dict->t("Text"),
+                'text' => array('label' => Horde_Model_Translation::t("Text"),
                                 'type'  => 'text'),
-                'font' => array('label' => $this->_dict->t("Figlet font"),
+                'font' => array('label' => Horde_Model_Translation::t("Figlet font"),
                                 'type'  => 'text'))
             );
     }
@@ -3583,7 +3570,7 @@ class Horde_Form_Variable {
             $vals = $this->getValue($vars);
             if (!is_array($vals)) {
                 if ($this->required) {
-                    $message = $this->_dict->t("This field is required.");
+                    $message = Horde_Model_Translation::t("This field is required.");
                     return false;
                 } else {
                     return true;
@@ -3591,7 +3578,7 @@ class Horde_Form_Variable {
             }
             foreach ($vals as $i => $value) {
                 if ($value === null && $this->required) {
-                    $message = $this->_dict->t("This field is required.");
+                    $message = Horde_Model_Translation::t("This field is required.");
                     return false;
                 } else {
                     if (!$this->type->isValid($this, $vars, $value, $message)) {
index 428ff4f..61fa98a 100644 (file)
@@ -42,29 +42,14 @@ abstract class Horde_Form_Renderer {
     var $_encodeTitle = true;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Construct a new Horde_Form_Renderer::.
      *
      * @param array $params  This is a hash of renderer-specific parameters.
      *                       Possible keys:
      *                       - 'encode_title': @see $_encodeTitle
-     *                       - 'translation': (object) A translation handler
-     *                                        implementing Horde_Translation.
      */
     function __construct($params = array())
     {
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Model', dirname(__FILE__) . '/../../../locale');
-        }
-
         if (isset($params['encode_title'])) {
             $this->encodeTitle($params['encode_title']);
         }
@@ -78,14 +63,14 @@ abstract class Horde_Form_Renderer {
     {
         if ($submit === true || is_null($submit) || empty($submit)) {
             /* Default to 'Submit'. */
-            $submit = array($this->_dict->t("Submit"));
+            $submit = array(Horde_Model_Translation::t("Submit"));
         } elseif (!is_array($submit)) {
             /* Default to array if not passed. */
             $submit = array($submit);
         }
         /* Only if $reset is strictly true insert default 'Reset'. */
         if ($reset === true) {
-            $reset = $this->_dict->t("Reset");
+            $reset = Horde_Model_Translation::t("Reset");
         }
 
         $this->_submit = $submit;
index 351e697..5dc8f09 100644 (file)
@@ -276,10 +276,10 @@ try {
     function submit($submit = null, $reset = false)
     {
         if (is_null($submit) || empty($submit)) {
-            $submit = $this->_dict->t("Submit");
+            $submit = Horde_Model_Translation::t("Submit");
         }
         if ($reset === true) {
-            $reset = $this->_dict->t("Reset");
+            $reset = Horde_Model_Translation::t("Reset");
         }
         $this->_renderSubmit($submit, $reset);
     }
@@ -295,7 +295,7 @@ try {
         }
         if ($this->_requiredLegend) {
             echo '<div class="form-error-example">' . $this->_requiredMarker
-                . ' &#61; ' . $this->_dict->t("Required Field") . '</div>'."\n";
+                . ' &#61; ' . Horde_Model_Translation::t("Required Field") . '</div>'."\n";
         }
     }
 
index 356a034..481b353 100644 (file)
@@ -10,27 +10,12 @@ abstract class Horde_Form_Type
     protected $_properties = array();
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Type constructor. Takes a hash of key/value parameters.
      *
      * @param array $properties Any type properties to initialize.
-     * @param Horde_Translation $dict  A translation handler implementing
-     *                                 Horde_Translation.
      */
-    public function __construct($properties = array(), $dict = null)
+    public function __construct($properties = array())
     {
-        if ($dict) {
-            $this->_dict = $dict;
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Model', dirname(__FILE__) . '/../../../locale');
-        }
-
         $this->_properties = array();
         $vars = array_keys(get_object_vars($this));
         foreach ($vars as $var) {
index 538eaee..a5b8207 100644 (file)
@@ -7,7 +7,7 @@ class Horde_Form_Type_Color extends Horde_Form_Type {
     function isValid($var, $vars, $value, &$message)
     {
         if ($var->required && empty($value)) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
             return false;
         }
 
@@ -15,7 +15,7 @@ class Horde_Form_Type_Color extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("This field must contain a color code in the RGB Hex format, for example '#1234af'.");
+        $message = Horde_Model_Translation::t("This field must contain a color code in the RGB Hex format, for example '#1234af'.");
         return false;
     }
 
index 6ed0c5c..930d2c8 100644 (file)
@@ -7,7 +7,7 @@ class Horde_Form_Type_creditcard extends Horde_Form_Type {
     function isValid($var, $vars, $value, &$message)
     {
         if (empty($value) && $var->required) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
             return false;
         }
 
@@ -15,7 +15,7 @@ class Horde_Form_Type_creditcard extends Horde_Form_Type {
             /* getCardType() will also verify the checksum. */
             $type = $this->getCardType($value);
             if ($type === false || $type == 'unknown') {
-                $message = $this->_dict->t("This does not seem to be a valid card number.");
+                $message = Horde_Model_Translation::t("This does not seem to be a valid card number.");
                 return false;
             }
         }
index db80653..a3b0c59 100644 (file)
@@ -14,7 +14,7 @@ class Horde_Form_Type_Date extends Horde_Form_Type {
             $valid = strlen(trim($value)) > 0;
 
             if (!$valid) {
-                $message = $this->_dict->t("This field is required.");
+                $message = Horde_Model_Translation::t("This field is required.");
             }
         }
 
@@ -43,15 +43,15 @@ class Horde_Form_Type_Date extends Horde_Form_Type {
                                                    date('j'), date('n'),
                                                    date('Y'));
         if ($ago < -1) {
-            return sprintf($this->_dict->t(" (%s days ago)"), $diffdays);
+            return sprintf(Horde_Model_Translation::t(" (%s days ago)"), $diffdays);
         } elseif ($ago == -1) {
-            return $this->_dict->t(" (yesterday)");
+            return Horde_Model_Translation::t(" (yesterday)");
         } elseif ($ago == 0) {
-            return $this->_dict->t(" (today)");
+            return Horde_Model_Translation::t(" (today)");
         } elseif ($ago == 1) {
-            return $this->_dict->t(" (tomorrow)");
+            return Horde_Model_Translation::t(" (tomorrow)");
         } else {
-            return sprintf($this->_dict->t(" (in %s days)"), $diffdays);
+            return sprintf(Horde_Model_Translation::t(" (in %s days)"), $diffdays);
         }
     }
 
index 83f70a7..c717bb1 100644 (file)
@@ -74,7 +74,7 @@ class Horde_Form_Type_Email extends Horde_Form_Type {
 
         // Check for too many.
         if (!$this->_allow_multi && count($emails) > 1) {
-            $message = $this->_dict->t("Only one email address is allowed.");
+            $message = Horde_Model_Translation::t("Only one email address is allowed.");
             return false;
         }
 
@@ -85,7 +85,7 @@ class Horde_Form_Type_Email extends Horde_Form_Type {
                 continue;
             }
             if (!$this->validateEmailAddress($email)) {
-                $message = sprintf($this->_dict->t("\"%s\" is not a valid email address."), $email);
+                $message = sprintf(Horde_Model_Translation::t("\"%s\" is not a valid email address."), $email);
                 return false;
             }
             ++$nonEmpty;
@@ -93,9 +93,9 @@ class Horde_Form_Type_Email extends Horde_Form_Type {
 
         if (!$nonEmpty && $var->required) {
             if ($this->_allow_multi) {
-                $message = $this->_dict->t("You must enter at least one email address.");
+                $message = Horde_Model_Translation::t("You must enter at least one email address.");
             } else {
-                $message = $this->_dict->t("You must enter an email address.");
+                $message = Horde_Model_Translation::t("You must enter an email address.");
             }
             return false;
         }
@@ -421,12 +421,12 @@ class Horde_Form_Type_EmailConfirm extends Horde_Form_Type {
     public function isValid($var, $vars, $value, &$message)
     {
         if ($var->required && empty($value['original'])) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
             return false;
         }
 
         if ($value['original'] != $value['confirm']) {
-            $message = $this->_dict->t("Email addresses must match.");
+            $message = Horde_Model_Translation::t("Email addresses must match.");
             return false;
         } else {
             try {
@@ -438,11 +438,11 @@ class Horde_Form_Type_EmailConfirm extends Horde_Form_Type {
                 return false;
             }
             if (count($parsed_email) > 1) {
-                $message = $this->_dict->t("Only one email address allowed.");
+                $message = Horde_Model_Translation::t("Only one email address allowed.");
                 return false;
             }
             if (empty($parsed_email[0]->mailbox)) {
-                $message = $this->_dict->t("You did not enter a valid email address.");
+                $message = Horde_Model_Translation::t("You did not enter a valid email address.");
                 return false;
             }
         }
index ff8a0d4..6f85cea 100644 (file)
@@ -25,7 +25,7 @@ class Horde_Form_Type_Enum extends Horde_Form_Type {
     public function isValid($var, $vars, $value, &$message)
     {
         if ($var->required && $value == '' && !isset($this->_values[$value])) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
             return false;
         }
 
@@ -34,7 +34,7 @@ class Horde_Form_Type_Enum extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("Invalid data.");
+        $message = Horde_Model_Translation::t("Invalid data.");
         return false;
     }
 
index d2dbbb5..4c33ba9 100644 (file)
@@ -7,7 +7,7 @@ class Horde_Form_Type_Int extends Horde_Form_Type {
     public function isValid($var, $vars, $value, &$message)
     {
         if ($var->required && empty($value) && ((string)(int)$value !== $value)) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
             return false;
         }
 
@@ -15,7 +15,7 @@ class Horde_Form_Type_Int extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("This field may only contain integers.");
+        $message = Horde_Model_Translation::t("This field may only contain integers.");
         return false;
     }
 
index 5990f4f..31f4c5d 100644 (file)
@@ -11,7 +11,7 @@ class Horde_Form_Type_Number extends Horde_Form_Type {
     public function isValid($var, $vars, $value, &$message)
     {
         if ($var->required && empty($value) && ((string)(double)$value !== $value)) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
             return false;
         } elseif (empty($value)) {
             return true;
@@ -22,7 +22,7 @@ class Horde_Form_Type_Number extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("This field must be a valid number.");
+        $message = Horde_Model_Translation::t("This field must be a valid number.");
         return false;
     }
 
index b5c3777..144af48 100644 (file)
@@ -7,7 +7,7 @@ class Horde_Form_Type_Octal extends Horde_Form_Type {
     function isValid($var, $vars, $value, &$message)
     {
         if ($var->required && empty($value) && ((string)(int)$value !== $value)) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
             return false;
         }
 
@@ -15,7 +15,7 @@ class Horde_Form_Type_Octal extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("This field may only contain octal values.");
+        $message = Horde_Model_Translation::t("This field may only contain octal values.");
         return false;
     }
 
index a82a3ff..161b5af 100644 (file)
@@ -12,7 +12,7 @@ class Horde_Form_Type_Password extends Horde_Form_Type {
             $valid = strlen(trim($value)) > 0;
 
             if (!$valid) {
-                $message = $this->_dict->t("This field is required.");
+                $message = Horde_Model_Translation::t("This field is required.");
             }
         }
 
@@ -30,12 +30,12 @@ class Horde_Form_Type_passwordConfirm extends Horde_Form_Type {
     public function isValid($var, $vars, $value, &$message)
     {
         if ($var->required && empty($value['original'])) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
             return false;
         }
 
         if ($value['original'] != $value['confirm']) {
-            $message = $this->_dict->t("Passwords must match.");
+            $message = Horde_Model_Translation::t("Passwords must match.");
             return false;
         }
 
index c51e440..7eedc35 100644 (file)
@@ -11,12 +11,12 @@ class Horde_Form_Type_Phone extends Horde_Form_Type {
         if ($var->required) {
             $valid = strlen(trim($value)) > 0;
             if (!$valid) {
-                $message = $this->_dict->t("This field is required.");
+                $message = Horde_Model_Translation::t("This field is required.");
             }
         } else {
             $valid = preg_match('/^\+?[\d()\-\/ ]*$/', $value);
             if (!$valid) {
-                $message = $this->_dict->t("You must enter a valid phone number, digits only with an optional '+' for the international dialing prefix.");
+                $message = Horde_Model_Translation::t("You must enter a valid phone number, digits only with an optional '+' for the international dialing prefix.");
             }
         }
 
index 9e19b47..54aa95f 100644 (file)
@@ -27,7 +27,7 @@ class Horde_Form_Type_Set extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("Invalid data.");
+        $message = Horde_Model_Translation::t("Invalid data.");
         return false;
     }
 
@@ -48,7 +48,7 @@ class Horde_Form_Type_multienum extends Horde_Form_Type_enum {
 
         if (empty($value) && ((string)(int)$value !== $value)) {
             if ($var->required) {
-                $message = $this->_dict->t("This field is required.");
+                $message = Horde_Model_Translation::t("This field is required.");
                 return false;
             } else {
                 return true;
@@ -59,7 +59,7 @@ class Horde_Form_Type_multienum extends Horde_Form_Type_enum {
             return true;
         }
 
-        $message = $this->_dict->t("Invalid data.");
+        $message = Horde_Model_Translation::t("Invalid data.");
         return false;
     }
 
index f87f192..fb72e3e 100644 (file)
@@ -26,14 +26,14 @@ class Horde_Form_Type_String extends Horde_Form_Type {
 
         if (!empty($this->_maxlength) && Horde_String::length($value) > $this->_maxlength) {
             $valid = false;
-            $message = sprintf($this->_dict->t("Value is over the maximum length of %s."), $this->_maxlength);
+            $message = sprintf(Horde_Model_Translation::t("Value is over the maximum length of %s."), $this->_maxlength);
         } elseif ($var->required && empty($this->_regex)) {
             if (!($valid = strlen(trim($value)) > 0)) {
-                $message = $this->_dict->t("This field is required.");
+                $message = Horde_Model_Translation::t("This field is required.");
             }
         } elseif (strlen($this->_regex)) {
             if (!($valid = preg_match($this->_regex, $value))) {
-                $message = $this->_dict->t("You must enter a valid value.");
+                $message = Horde_Model_Translation::t("You must enter a valid value.");
             }
         }
 
index e5ccdfc..097c6e1 100644 (file)
@@ -7,7 +7,7 @@ class Horde_Form_Type_Time extends Horde_Form_Type {
     public function isValid($var, $vars, $value, &$message)
     {
         if ($var->required && empty($value) && ((string)(double)$value !== $value)) {
-            $message = $this->_dict->t("This field is required.");
+            $message = Horde_Model_Translation::t("This field is required.");
             return false;
         }
 
@@ -15,7 +15,7 @@ class Horde_Form_Type_Time extends Horde_Form_Type {
             return true;
         }
 
-        $message = $this->_dict->t("This field may only contain numbers and the colon.");
+        $message = Horde_Model_Translation::t("This field may only contain numbers and the colon.");
         return false;
     }
 
index cfc8f9c..40d913d 100644 (file)
@@ -15,25 +15,6 @@ class Horde_Form_VarRenderer_Xhtml extends Horde_Form_VarRenderer
     protected $_onLoadJS = array();
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
-     * Constructor.
-     */
-    public function __construct($params = array())
-    {
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Model', dirname(__FILE__) . '/../../../../locale');
-        }
-    }
-
-    /**
      * Handles the end of rendering of variables; writes onload JavaScript.
      *
      * @access public
@@ -197,8 +178,8 @@ class Horde_Form_VarRenderer_Xhtml extends Horde_Form_VarRenderer
                     'Horde_Html_Helper.iconlist' => $icon_list
                 ));
 
-                $html .= Horde::link('#', $this->_dict->t("Emoticons"), '', '', 'Horde_Html_Helper.open(\'emoticons\', \'' . $var->getVarName() . '\'); return false;')
-                    . Horde::img('emoticons/smile.png', $this->_dict->t("Emoticons"), 'id="' . $imgId . '" align="middle"')
+                $html .= Horde::link('#', Horde_Model_Translation::t("Emoticons"), '', '', 'Horde_Html_Helper.open(\'emoticons\', \'' . $var->getVarName() . '\'); return false;')
+                    . Horde::img('emoticons/smile.png', Horde_Model_Translation::t("Emoticons"), 'id="' . $imgId . '" align="middle"')
                     . '</a>'."\n";
             }
             $html .= '</div><div id="htmlhelper_' . $var->getVarName()
@@ -256,7 +237,7 @@ class Horde_Form_VarRenderer_Xhtml extends Horde_Form_VarRenderer
         $time = $var->type->getTimeParts($var->getValue($vars));
 
         /* Output hours. */
-        $hours = array('' => $this->_dict->t("hh"));
+        $hours = array('' => Horde_Model_Translation::t("hh"));
         for ($i = 0; $i <= 23; $i++) {
             $hours[sprintf('%02d', $i)] = $i;
         }
@@ -266,7 +247,7 @@ class Horde_Form_VarRenderer_Xhtml extends Horde_Form_VarRenderer
                         $this->_getActionScripts($form, $var));
 
         /* Output minutes. */
-        $minutes = array('' => $this->_dict->t("mm"));
+        $minutes = array('' => Horde_Model_Translation::t("mm"));
         for ($i = 0; $i <= 59; $i++) {
             $minutes[sprintf('%02d', $i)] = $i;
         }
@@ -278,7 +259,7 @@ class Horde_Form_VarRenderer_Xhtml extends Horde_Form_VarRenderer
         /* Return if seconds are not required. */
         if ($var->type->show_seconds) {
             /* Output seconds. */
-            $seconds = array('' => $this->_dict->t("ss"));
+            $seconds = array('' => Horde_Model_Translation::t("ss"));
             for ($i = 0; $i <= 59; $i++) {
                 $seconds[sprintf('%02d', $i)] = $i;
             }
@@ -294,20 +275,20 @@ class Horde_Form_VarRenderer_Xhtml extends Horde_Form_VarRenderer
     function _renderVarInput_monthyear($form, $var, $vars)
     {
         $dates = array();
-        $dates['month'] = array('' => $this->_dict->t("MM"),
-                                1 => $this->_dict->t("January"),
-                                2 => $this->_dict->t("February"),
-                                3 => $this->_dict->t("March"),
-                                4 => $this->_dict->t("April"),
-                                5 => $this->_dict->t("May"),
-                                6 => $this->_dict->t("June"),
-                                7 => $this->_dict->t("July"),
-                                8 => $this->_dict->t("August"),
-                                9 => $this->_dict->t("September"),
-                                10 => $this->_dict->t("October"),
-                                11 => $this->_dict->t("November"),
-                                12 => $this->_dict->t("December"));
-        $dates['year'] = array('' => $this->_dict->t("YYYY"));
+        $dates['month'] = array('' => Horde_Model_Translation::t("MM"),
+                                1 => Horde_Model_Translation::t("January"),
+                                2 => Horde_Model_Translation::t("February"),
+                                3 => Horde_Model_Translation::t("March"),
+                                4 => Horde_Model_Translation::t("April"),
+                                5 => Horde_Model_Translation::t("May"),
+                                6 => Horde_Model_Translation::t("June"),
+                                7 => Horde_Model_Translation::t("July"),
+                                8 => Horde_Model_Translation::t("August"),
+                                9 => Horde_Model_Translation::t("September"),
+                                10 => Horde_Model_Translation::t("October"),
+                                11 => Horde_Model_Translation::t("November"),
+                                12 => Horde_Model_Translation::t("December"));
+        $dates['year'] = array('' => Horde_Model_Translation::t("YYYY"));
         if ($var->type->start_year > $var->type->end_year) {
             for ($i = $var->type->start_year; $i >= $var->type->end_year; $i--) {
                 $dates['year'][$i] = $i;
@@ -333,24 +314,24 @@ class Horde_Form_VarRenderer_Xhtml extends Horde_Form_VarRenderer
     function _renderVarInput_monthdayyear($form, $var, $vars)
     {
         $dates = array();
-        $dates['month'] = array(''   => $this->_dict->t("MM"),
-                                '1'  => $this->_dict->t("January"),
-                                '2'  => $this->_dict->t("February"),
-                                '3'  => $this->_dict->t("March"),
-                                '4'  => $this->_dict->t("April"),
-                                '5'  => $this->_dict->t("May"),
-                                '6'  => $this->_dict->t("June"),
-                                '7'  => $this->_dict->t("July"),
-                                '8'  => $this->_dict->t("August"),
-                                '9'  => $this->_dict->t("September"),
-                                '10' => $this->_dict->t("October"),
-                                '11' => $this->_dict->t("November"),
-                                '12' => $this->_dict->t("December"));
-        $dates['day'] = array('' => $this->_dict->t("DD"));
+        $dates['month'] = array(''   => Horde_Model_Translation::t("MM"),
+                                '1'  => Horde_Model_Translation::t("January"),
+                                '2'  => Horde_Model_Translation::t("February"),
+                                '3'  => Horde_Model_Translation::t("March"),
+                                '4'  => Horde_Model_Translation::t("April"),
+                                '5'  => Horde_Model_Translation::t("May"),
+                                '6'  => Horde_Model_Translation::t("June"),
+                                '7'  => Horde_Model_Translation::t("July"),
+                                '8'  => Horde_Model_Translation::t("August"),
+                                '9'  => Horde_Model_Translation::t("September"),
+                                '10' => Horde_Model_Translation::t("October"),
+                                '11' => Horde_Model_Translation::t("November"),
+                                '12' => Horde_Model_Translation::t("December"));
+        $dates['day'] = array('' => Horde_Model_Translation::t("DD"));
         for ($i = 1; $i <= 31; $i++) {
             $dates['day'][$i] = $i;
         }
-        $dates['year'] = array('' => $this->_dict->t("YYYY"));
+        $dates['year'] = array('' => Horde_Model_Translation::t("YYYY"));
         if ($var->type->start_year > $var->type->end_year) {
             for ($i = $var->type->start_year; $i >= $var->type->end_year; $i--) {
                 $dates['year'][$i] = $i;
@@ -395,8 +376,8 @@ class Horde_Form_VarRenderer_Xhtml extends Horde_Form_VarRenderer
             $html .= Horde::img('blank.gif', '', array('class' => 'form-colorpicker-preview',
                                                        'id' => 'colordemo_' . $var->getVarName(),
                                                        'style' => 'background:' . $var->getValue($vars)))
-                . Horde::link('#', $this->_dict->t("Color Picker"), '', '', 'openColorPicker(\''. $var->getVarName() .'\'); return false;')
-                . Horde::img('colorpicker.png', $this->_dict->t("Color Picker")) . '</a>'
+                . Horde::link('#', Horde_Model_Translation::t("Color Picker"), '', '', 'openColorPicker(\''. $var->getVarName() .'\'); return false;')
+                . Horde::img('colorpicker.png', Horde_Model_Translation::t("Color Picker")) . '</a>'
                 . '<div id="colorpicker_' . $var->getVarName() . '" class="form-colorpicker-palette"></div>';
         }
 
@@ -419,11 +400,11 @@ class Horde_Form_VarRenderer_Xhtml extends Horde_Form_VarRenderer
             . '[list]" onchange="' . $instance . '.deselectHeader();" '
             . ' id="'. $varname . '-list-">'
             . $var->type->getOptions($var->getValue($vars)) . '    </select><div class="leftFloat">'
-            . Horde::link('#', $this->_dict->t("Move up"), '', '', $instance . '.moveColumnUp(); return false;')
-                . Horde::img('nav/up.png', $this->_dict->t("Move up"))
+            . Horde::link('#', Horde_Model_Translation::t("Move up"), '', '', $instance . '.moveColumnUp(); return false;')
+                . Horde::img('nav/up.png', Horde_Model_Translation::t("Move up"))
                 . '</a><br />'
-            . Horde::link('#', $this->_dict->t("Move up"), '', '', $instance . '.moveColumnDown(); return false;')
-                . Horde::img('nav/down.png', $this->_dict->t("Move down"))
+            . Horde::link('#', Horde_Model_Translation::t("Move up"), '', '', $instance . '.moveColumnDown(); return false;')
+                . Horde::img('nav/down.png', Horde_Model_Translation::t("Move down"))
                 . '</a></div>'
             . '<script type="text/javascript">' . "\n"
             . sprintf('%1$s = new Horde_Form_Sorter(\'%1$s\', \'%2$s\', \'%3$s\');' . "\n",
@@ -453,10 +434,10 @@ class Horde_Form_VarRenderer_Xhtml extends Horde_Form_VarRenderer
              . $var->type->getOptions(0, $fname)
              . '    </select>'
              . '<div><a href="" onclick="Horde_Form_Assign.move(\''. $fname .'\', 0); return false;">'
-             . Horde::img('rhand.png', $this->_dict->t("Add column"))
+             . Horde::img('rhand.png', Horde_Model_Translation::t("Add column"))
              . '</a><br /><a href="" onclick="Horde_Form_Assign.move(\''
              . $fname . '\', 1); return false;">'
-             . Horde::img('lhand.png', $this->_dict->t("Remove column"))
+             . Horde::img('lhand.png', Horde_Model_Translation::t("Remove column"))
              . '</a></div>'
              . sprintf('    <select name="%s__right" multiple="multiple" size="%d" style="width:%s"%s>',
                      $name, $size, $width,
@@ -548,7 +529,7 @@ class Horde_Form_VarRenderer_Xhtml extends Horde_Form_VarRenderer
                         $this->_getActionScripts($form, $var),
                         $this->_multiSelectOptions($values, $selected));
         return $html . '<p class="form-hint">'
-            . $this->_dict->t("To select multiple items, hold down the Control (PC) or Command (Mac) key while clicking.")
+            . Horde_Model_Translation::t("To select multiple items, hold down the Control (PC) or Command (Mac) key while clicking.")
             . "</p>\n";
     }
 
@@ -576,9 +557,9 @@ class Horde_Form_VarRenderer_Xhtml extends Horde_Form_VarRenderer
             $form_name = $form->getName();
             $var_name = $var->getVarName() . '[]';
             $function_name = 'select'  . $form_name . $var->getVarName();
-            $enable = $this->_dict->t("Select all");
-            $disable = $this->_dict->t("Select none");
-            $invert = $this->_dict->t("Invert selection");
+            $enable = Horde_Model_Translation::t("Select all");
+            $disable = Horde_Model_Translation::t("Select none");
+            $invert = Horde_Model_Translation::t("Invert selection");
             $html .= <<<EOT
 <script type="text/javascript">
 function $function_name()
@@ -647,7 +628,7 @@ EOT;
                 $html .= sprintf('    <select%s name="%s[n][r]"><option value="">%s</option>%s    </select><br />'."\n",
                        ' id="'. $varname .'-n--r-"',
                        $varname,
-                       $this->_dict->t("-- select --"),
+                       Horde_Model_Translation::t("-- select --"),
                        $this->_selectOptions($new_input, $var_array['n']['r']));
             } elseif ($new_input == true) {
                 $html .= sprintf('    <input%s type="text" name="%s[n][r]" value="%s" />',
@@ -774,7 +755,7 @@ EOT;
         if ($GLOBALS['browser']->hasFeature('javascript')) {
             $imgId = $varname .'goto';
             $html .= '<div id="goto" class="headerbox" style="position:absolute;visibility:hidden;padding:0"></div>';
-            $html .= Horde::link('#', $this->_dict->t("Select an object"), '', '', 'obrowserWindow = ' . Horde::popupJs($GLOBALS['registry']->get('webroot', 'horde') . '/services/obrowser/') . 'obrowserWindowName = obrowserWindow.name; return false;') . Horde::img('tree/leaf.png', $this->_dict->t("Object"), 'id="' . $imgId . '" align="middle"') . "</a>\n";
+            $html .= Horde::link('#', Horde_Model_Translation::t("Select an object"), '', '', 'obrowserWindow = ' . Horde::popupJs($GLOBALS['registry']->get('webroot', 'horde') . '/services/obrowser/') . 'obrowserWindowName = obrowserWindow.name; return false;') . Horde::img('tree/leaf.png', Horde_Model_Translation::t("Object"), 'id="' . $imgId . '" align="middle"') . "</a>\n";
         }
 
         return $html;
@@ -791,7 +772,7 @@ EOT;
                        $var->getVarName(),
                        strlen($var->type->text),
                        htmlspecialchars($var->getValue($vars))) .
-            '<p class="form-input-figlet">' . $this->_dict->t("Enter the letters below:") . '</p>' .
+            '<p class="form-input-figlet">' . Horde_Model_Translation::t("Enter the letters below:") . '</p>' .
             $this->_renderVarDisplay_figlet($form, $var, $vars);
     }
 
@@ -862,7 +843,7 @@ EOT;
 
     function _renderVarDisplay_boolean($form, $var, $vars)
     {
-        return $var->getValue($vars) ? $this->_dict->t("Yes") : $this->_dict->t("No");
+        return $var->getValue($vars) ? Horde_Model_Translation::t("Yes") : Horde_Model_Translation::t("No");
     }
 
     function _renderVarDisplay_enum($form, $var, $vars)
@@ -870,7 +851,7 @@ EOT;
         $values = $var->getValues();
         $value = $var->getValue($vars);
         if (count($values) == 0) {
-            return $this->_dict->t("No values");
+            return Horde_Model_Translation::t("No values");
         } elseif (isset($values[$value]) && $value != '') {
             return htmlspecialchars($values[$value]);
         }
@@ -880,7 +861,7 @@ EOT;
     {
         $values = $var->getValues();
         if (count($values) == 0) {
-            return $this->_dict->t("No values");
+            return Horde_Model_Translation::t("No values");
         } elseif (isset($values[$var->getValue($vars)])) {
             return htmlspecialchars($values[$var->getValue($vars)]);
         }
@@ -891,7 +872,7 @@ EOT;
         $values = $var->getValues();
         $on = $var->getValue($vars);
         if (!count($values) || !count($on)) {
-            return $this->_dict->t("No values");
+            return Horde_Model_Translation::t("No values");
         } else {
             $display = array();
             foreach ($values as $value => $name) {
@@ -908,7 +889,7 @@ EOT;
         $values = $var->getValues();
         $on = $var->getValue($vars);
         if (!count($values) || !count($on)) {
-            return $this->_dict->t("No values");
+            return Horde_Model_Translation::t("No values");
         } else {
             $display = array();
             foreach ($values as $value => $name) {
@@ -929,7 +910,7 @@ EOT;
 
         if ($number && $registry->hasMethod('telephony/dial')) {
             $url = $registry->call('telephony/dial', array($number));
-            $label = sprintf($this->_dict->t("Dial %s"), $number);
+            $label = sprintf(Horde_Model_Translation::t("Dial %s"), $number);
             $html .= ' ' . Horde::link($url, $label) . Horde::img('phone.png', $label) . '</a>';
         }
 
@@ -945,7 +926,7 @@ EOT;
         $number = $var->getValue($vars);
         if ($number && $registry->hasMethod('sms/compose')) {
             $url = $registry->link('sms/compose', array('to' => $number));
-            $html .= ' ' . Horde::link($url, $this->_dict->t("Send SMS")) . Horde::img('mobile.png', $this->_dict->t("Send SMS")) . '</a>';
+            $html .= ' ' . Horde::link($url, Horde_Model_Translation::t("Send SMS")) . Horde::img('mobile.png', Horde_Model_Translation::t("Send SMS")) . '</a>';
         }
 
         return $html;
@@ -961,13 +942,13 @@ EOT;
             /* UK postcode detected. */
             /* Multimap.co.uk generated map */
             $mapurl = 'http://www.multimap.com/map/browse.cgi?pc=' . urlencode($postcode[1]);
-            $desc = $this->_dict->t("Multimap UK map");
+            $desc = Horde_Model_Translation::t("Multimap UK map");
             $icon = 'map.png';
         } elseif (preg_match('/ACT|NSW|NT|QLD|SA|TAS|VIC|WA/', $address)) {
             /* Australian state detected. */
             /* Whereis.com.au generated map */
             $mapurl = 'http://www.whereis.com.au/whereis/mapping/geocodeAddress.do?';
-            $desc = $this->_dict->t("Whereis Australia map");
+            $desc = Horde_Model_Translation::t("Whereis Australia map");
             $icon = 'map.png';
             /* Split out the address, line-by-line. */
             $addressLines = explode("\n", $address);
@@ -990,7 +971,7 @@ EOT;
             /* American/Canadian address style. */
             /* Mapquest generated map */
             $mapurl = 'http://www.mapquest.com/maps/map.adp?size=big&zoom=7';
-            $desc = $this->_dict->t("MapQuest map");
+            $desc = Horde_Model_Translation::t("MapQuest map");
             $icon = 'map.png';
             $country = null;
             if (!empty($addressParts[4]) && preg_match('|[a-zA-Z]\d[a-zA-Z]\s?\d[a-zA-Z]\d|', $addressParts[4])) {
@@ -1014,7 +995,7 @@ EOT;
 
             /* Yahoo! generated map. */
             $mapurl2 = 'http://us.rd.yahoo.com/maps/home/submit_a/*-http://maps.yahoo.com/maps?srchtype=a&getmap=Get+Map&';
-            $desc2 = $this->_dict->t("Yahoo! map");
+            $desc2 = Horde_Model_Translation::t("Yahoo! map");
             $icon2 = 'map.png';
             if (!empty($addressParts[1])) {
                 $mapurl2 .= '&addr=' . urlencode($addressParts[1]);
@@ -1034,7 +1015,7 @@ EOT;
 
             /* Google generated map. */
             $mapurl3 = 'http://maps.google.com/maps?q=' . urlencode($addressParts[0]) . '&hl=en';
-            $desc3 = $this->_dict->t("Google Maps");
+            $desc3 = Horde_Model_Translation::t("Google Maps");
             $icon3 = 'map.png';
 
         } elseif (preg_match('/(.*?)\r?\n([A-Z]{1,3})-(\d{5})\s+(.*)/i', $address, $addressParts)) {
@@ -1059,7 +1040,7 @@ EOT;
                     $mirror = 'uk';
                 }
                 $mapurl = 'http://www.' . $mirror . '.map24.com/source/address/v2.0.0/cnt_nav_maplet.php?cid=validateaddr&country=' . $country;
-                $desc = $this->_dict->t("Map24 map");
+                $desc = Horde_Model_Translation::t("Map24 map");
                 $icon = 'map_eu.png';
                 if (!empty($addressParts[1])) {
                     $mapurl .= '&street=' . urlencode($addressParts[1]);
@@ -1074,7 +1055,7 @@ EOT;
 
             /* Mapquest generated map. */
             $mapurl2 = 'http://www.mapquest.com/maps/map.adp?country=' . Horde_String::upper($country);
-            $desc2 = $this->_dict->t("MapQuest map");
+            $desc2 = Horde_Model_Translation::t("MapQuest map");
             $icon2 = 'map_eu.png';
             if (!empty($addressParts[1])) {
                 $mapurl2 .= '&address=' . urlencode($addressParts[1]);
@@ -1215,7 +1196,7 @@ EOT;
                     if ($GLOBALS['registry']->hasMethod('files/getViewLink')) {
                         $filename = basename($filename);
                         $url = $GLOBALS['registry']->call('files/getViewLink', array($dir, $filename));
-                        $filename = Horde::link($url, $this->_dict->t("Preview"), null, 'form_file_view') . htmlspecialchars(Horde_Util::realPath($dir . '/' . $filename), ENT_QUOTES, $this->_charset) . '</a>';
+                        $filename = Horde::link($url, Horde_Model_Translation::t("Preview"), null, 'form_file_view') . htmlspecialchars(Horde_Util::realPath($dir . '/' . $filename), ENT_QUOTES, $this->_charset) . '</a>';
                     } else {
                         if (!empty($dir) && ($dir != '.')) {
                             $filename = $dir . '/' . $filename;
diff --git a/framework/Model/lib/Horde/Model/Translation.php b/framework/Model/lib/Horde/Model/Translation.php
new file mode 100644 (file)
index 0000000..e6e82c9
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Model
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Model_Translation is the translation wrapper class for Horde_Model.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Model
+ */
+class Horde_Model_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Model';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Model/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Model';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Model/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index a88c4ca..e789c59 100644 (file)
@@ -65,13 +65,6 @@ class Net_IMSP {
     var $_logBuffer                  = array();
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Constructor function.
      *
      * @param array $params Hash containing server parameters.
@@ -84,11 +77,6 @@ class Net_IMSP {
         if (is_array($params) && !empty($params['port'])) {
             $this->imsp_port = $params['port'];
         }
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Net_IMSP', dirname(__FILE__) . '/locale');
-        }
     }
 
     /**
@@ -455,7 +443,7 @@ class Net_IMSP {
             return new $class($params);
         }
 
-         throw new Horde_Exception(sprintf($this->_dict->t("Unable to load the definition of %s."), $class));
+         throw new Horde_Exception(sprintf(Horde_Net_IMSP_Translation::t("Unable to load the definition of %s."), $class));
     }
 
     /**
index 7ca6069..c26fdf3 100644 (file)
@@ -27,29 +27,6 @@ class Net_IMSP_Auth {
      */
     var $_imsp;
 
-    /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
-     * Constructor function.
-     *
-     * @param array $params  Hash with configuration data. Possible values:
-     *                       - 'translation': A translation handler
-     *                                        implementing Horde_Translation.
-     */
-    public function __construct($params = array())
-    {
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Net_IMSP', dirname(__FILE__) . '/../locale');
-        }
-    }
-
      /**
      * Attempts to login to IMSP server.
      *
@@ -141,7 +118,7 @@ class Net_IMSP_Auth {
             return new $class();
         }
 
-        throw new Horde_Exception(sprintf($this->_dict->t("Unable to load the definition of %s."), $class));
+        throw new Horde_Exception(sprintf(Horde_Net_IMSP_Translation::t("Unable to load the definition of %s."), $class));
     }
 
     /**
index 82ae4f9..a78df42 100644 (file)
@@ -50,13 +50,6 @@ class Net_IMSP_Book {
     var $_params;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Constructor function.
      *
      * @param array $params Hash containing IMSP parameters.
@@ -64,11 +57,6 @@ class Net_IMSP_Book {
     function Net_IMSP_Book($params)
     {
         $this->_params = $params;
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Net_IMSP', dirname(__FILE__) . '/../locale');
-        }
     }
 
     /**
@@ -1305,7 +1293,7 @@ class Net_IMSP_Book {
         if (isset($this->_imsp)) {
             return $this->_imsp->setLogger($params);
         } else {
-            return PEAR::raiseError($this->_dict->t("The IMSP log could not be initialized."));
+            return PEAR::raiseError(Horde_Net_IMSP_Translation::t("The IMSP log could not be initialized."));
         }
     }
 
diff --git a/framework/Net_IMSP/IMSP/Translation.php b/framework/Net_IMSP/IMSP/Translation.php
new file mode 100644 (file)
index 0000000..7401026
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Net_IMSP
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Net_IMSP_Translation is the translation wrapper class for Horde_Net_IMSP.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Net_IMSP
+ */
+class Horde_Net_IMSP_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Net_IMSP';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../locale' : '@data_dir@/Net_IMSP/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Net_IMSP';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../locale' : '@data_dir@/Net_IMSP/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index 8d133f7..f34f187 100644 (file)
@@ -1,21 +1,17 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.4.9" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
-http://pear.php.net/dtd/tasks-1.0.xsd
-http://pear.php.net/dtd/package-2.0
-http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Net_IMSP</name>
  <channel>pear.horde.org</channel>
  <summary>IMSP API</summary>
- <description>Provides an API into an IMSP server for Addressbooks and Options
- </description>
+ <description>Provides an API into an IMSP server for Addressbooks and Options</description>
  <lead>
   <name>Michael Rubinsky</name>
   <user>mrubinsk</user>
   <email>mrubinsk@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2006-05-08</date>
- <time>22:36:36</time>
+ <date>2010-10-22</date>
+ <time>19:03:05</time>
  <version>
   <release>0.0.6</release>
   <api>0.0.6</api>
@@ -25,22 +21,287 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <api>beta</api>
  </stability>
  <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
- <notes>Converted to package.xml 2.0 for pear.horde.org
+ <notes>
+Converted to package.xml 2.0 for pear.horde.org
  </notes>
  <contents>
-  <dir name="/">
+  <dir baseinstalldir="/Net" name="/">
    <dir name="IMSP">
     <dir name="Auth">
-     <file baseinstalldir="/Net" name="cram_md5.php" role="php" />
-     <file baseinstalldir="/Net" name="imtest.php" role="php" />
-     <file baseinstalldir="/Net" name="plaintext.php" role="php" />
-    </dir> <!-- //IMSP/Auth -->
-    <file baseinstalldir="/Net" name="Auth.php" role="php" />
-    <file baseinstalldir="/Net" name="Book.php" role="php" />
-    <file baseinstalldir="/Net" name="Options.php" role="php" />
-    <file baseinstalldir="/Net" name="Utils.php" role="php" />
-   </dir> <!-- //IMSP -->
-   <file baseinstalldir="/Net" name="IMSP.php" role="php" />
+     <file name="cram_md5.php" role="php" />
+     <file name="imtest.php" role="php" />
+     <file name="plaintext.php" role="php" />
+    </dir> <!-- /IMSP/Auth -->
+    <file name="Auth.php" role="php" />
+    <file name="Book.php" role="php" />
+    <file name="Options.php" role="php" />
+    <file name="Translation.php" role="php">
+      <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+    </file>
+    <file name="Utils.php" role="php" />
+   </dir> <!-- /IMSP -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Net_IMSP.mo" role="data" />
+      <file name="Horde_Net_IMSP.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Net_IMSP.pot" role="data" />
+   </dir> <!-- /locale -->
+   <file name="IMSP.php" role="php" />
   </dir> <!-- / -->
  </contents>
  <dependencies>
@@ -51,38 +312,132 @@ http://pear.php.net/dtd/package-2.0.xsd">
    <pearinstaller>
     <min>1.4.0b1</min>
    </pearinstaller>
+   <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
   </required>
  </dependencies>
- <phprelease />
+ <phprelease>
+  <filelist>
+   <install as="locale/Horde_Net_IMSP.pot" name="locale/Horde_Net_IMSP.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/ar/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/ar/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/bg/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/bg/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/bs/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/bs/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/ca/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/ca/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/cs/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/cs/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/da/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/da/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/de/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/de/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/el/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/el/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/en/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/en/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/es/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/es/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/et/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/et/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/eu/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/eu/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/fa/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/fa/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/fi/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/fi/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/fr/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/fr/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/gl/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/gl/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/he/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/he/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/hr/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/hr/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/hu/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/hu/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/id/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/id/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/is/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/is/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/it/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/it/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/ja/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/ja/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/km/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/km/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/ko/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/ko/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/lt/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/lt/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/lv/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/lv/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/mk/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/mk/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/nb/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/nb/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/nl/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/nl/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/nn/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/nn/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/pl/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/pl/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/pt/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/pt/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/pt_BR/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/ro/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/ro/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/ru/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/ru/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/sk/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/sk/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/sl/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/sl/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/sv/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/sv/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/tr/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/tr/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/uk/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/uk/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/zh_CN/LC_MESSAGES/Horde_Net_IMSP.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Net_IMSP.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Net_IMSP.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Net_IMSP.po" name="locale/zh_TW/LC_MESSAGES/Horde_Net_IMSP.po" />
+  </filelist>
+ </phprelease>
  <changelog>
   <release>
    <version>
-    <release>0.0.5</release>
-    <api>0.0.5</api>
+    <release>0.0.1</release>
+    <api>0.0.1</api>
    </version>
    <stability>
-    <release>beta</release>
-    <api>beta</api>
+    <release>alpha</release>
+    <api>alpha</api>
    </stability>
-   <date>2006-01-01</date>
+   <date>2004-02-05</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Suport for using Horde_Share added.
+   <notes>
+Initial packaging and release of code
    </notes>
   </release>
   <release>
    <version>
-    <release>0.0.4</release>
-    <api>0.0.4</api>
+    <release>0.0.2</release>
+    <api>0.0.2</api>
    </version>
    <stability>
     <release>beta</release>
     <api>beta</api>
    </stability>
-   <date>2005-04-12</date>
+   <date>2005-02-06</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Support for automatically creating a user&apos;s default addressbook and
-functions added to the Net_IMSP_Utils class for easily adding and deleting
-addressbook.
+   <notes>
+Bug fix for addressbook names containing spaces
    </notes>
   </release>
   <release>
@@ -96,35 +451,55 @@ addressbook.
    </stability>
    <date>2005-02-23</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Added support for authentication using mtest for Cyrus IMAP
+   <notes>
+Added support for authentication using mtest for Cyrus IMAP
    </notes>
   </release>
   <release>
    <version>
-    <release>0.0.2</release>
-    <api>0.0.2</api>
+    <release>0.0.4</release>
+    <api>0.0.4</api>
    </version>
    <stability>
     <release>beta</release>
     <api>beta</api>
    </stability>
-   <date>2005-02-06</date>
+   <date>2005-04-12</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Bug fix for addressbook names containing spaces
+   <notes>
+Support for automatically creating a user&apos;s default addressbook and
+functions added to the Net_IMSP_Utils class for easily adding and deleting
+addressbook.
    </notes>
   </release>
   <release>
    <version>
-    <release>0.0.1</release>
-    <api>0.0.1</api>
+    <release>0.0.5</release>
+    <api>0.0.5</api>
    </version>
    <stability>
-    <release>alpha</release>
-    <api>alpha</api>
+    <release>beta</release>
+    <api>beta</api>
    </stability>
-   <date>2004-02-05</date>
+   <date>2006-01-01</date>
+   <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
+   <notes>
+Suport for using Horde_Share added.
+   </notes>
+  </release>
+  <release>
+   <version>
+    <release>0.0.6</release>
+    <api>0.0.6</api>
+   </version>
+   <stability>
+    <release>beta</release>
+    <api>beta</api>
+   </stability>
+   <date>2010-10-22</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Initial packaging and release of code
+   <notes>
+Converted to package.xml 2.0 for pear.horde.org
    </notes>
   </release>
  </changelog>
index 911ed77..aafd46c 100644 (file)
  *
  * @package Horde_Nls
  */
-$dict = new Horde_Translation_Gettext('Horde_Nls', dirname(__FILE__) . '/../../../locale');
-
 $countries = array(
-    'AF' => $dict->t("Afghanistan"),
-    'AL' => $dict->t("Albania"),
-    'DZ' => $dict->t("Algeria"),
-    'AS' => $dict->t("American Samoa"),
-    'AD' => $dict->t("Andorra"),
-    'AO' => $dict->t("Angola"),
-    'AI' => $dict->t("Anguilla"),
-    'AQ' => $dict->t("Antarctica"),
-    'AG' => $dict->t("Antigua and Barbuda"),
-    'AR' => $dict->t("Argentina"),
-    'AM' => $dict->t("Armenia"),
-    'AW' => $dict->t("Aruba"),
-    'AU' => $dict->t("Australia"),
-    'AT' => $dict->t("Austria"),
-    'AZ' => $dict->t("Azerbaijan"),
-    'BS' => $dict->t("Bahamas"),
-    'BH' => $dict->t("Bahrain"),
-    'BD' => $dict->t("Bangladesh"),
-    'BB' => $dict->t("Barbados"),
-    'BY' => $dict->t("Belarus"),
-    'BE' => $dict->t("Belgium"),
-    'BZ' => $dict->t("Belize"),
-    'BJ' => $dict->t("Benin"),
-    'BM' => $dict->t("Bermuda"),
-    'BT' => $dict->t("Bhutan"),
-    'BO' => $dict->t("Bolivia"),
-    'BA' => $dict->t("Bosnia and Herzegovina"),
-    'BW' => $dict->t("Botswana"),
-    'BV' => $dict->t("Bouvet Island"),
-    'BR' => $dict->t("Brazil"),
-    'IO' => $dict->t("British Indian Ocean Territory"),
-    'BN' => $dict->t("Brunei Darussalam"),
-    'BG' => $dict->t("Bulgaria"),
-    'BF' => $dict->t("Burkina Faso"),
-    'BI' => $dict->t("Burundi"),
-    'KH' => $dict->t("Cambodia"),
-    'CM' => $dict->t("Cameroon"),
-    'CA' => $dict->t("Canada"),
-    'CV' => $dict->t("Cape Verde"),
-    'KY' => $dict->t("Cayman Islands"),
-    'CF' => $dict->t("Central African Republic"),
-    'TD' => $dict->t("Chad"),
-    'CL' => $dict->t("Chile"),
-    'CN' => $dict->t("China"),
-    'CX' => $dict->t("Christmas Island"),
-    'CC' => $dict->t("Cocos (Keeling) Islands"),
-    'CO' => $dict->t("Colombia"),
-    'KM' => $dict->t("Comoros"),
-    'CG' => $dict->t("Congo"),
-    'CD' => $dict->t("Congo, The Democratic Republic of the"),
-    'CK' => $dict->t("Cook Islands"),
-    'CR' => $dict->t("Costa Rica"),
-    'CI' => $dict->t("Cote d'Ivoire"),
-    'HR' => $dict->t("Croatia"),
-    'CU' => $dict->t("Cuba"),
-    'CY' => $dict->t("Cyprus"),
-    'CZ' => $dict->t("Czech Republic"),
-    'DK' => $dict->t("Denmark"),
-    'DJ' => $dict->t("Djibouti"),
-    'DM' => $dict->t("Dominica"),
-    'DO' => $dict->t("Dominican Republic"),
-    'EC' => $dict->t("Ecuador"),
-    'EG' => $dict->t("Egypt"),
-    'SV' => $dict->t("El Salvador"),
-    'GQ' => $dict->t("Equatorial Guinea"),
-    'ER' => $dict->t("Eritrea"),
-    'EE' => $dict->t("Estonia"),
-    'ET' => $dict->t("Ethiopia"),
-    'FK' => $dict->t("Falkland Islands (Malvinas)"),
-    'FO' => $dict->t("Faroe Islands"),
-    'FJ' => $dict->t("Fiji"),
-    'FI' => $dict->t("Finland"),
-    'FR' => $dict->t("France"),
-    'GF' => $dict->t("French Guiana"),
-    'PF' => $dict->t("French Polynesia"),
-    'TF' => $dict->t("French Southern Territories"),
-    'GA' => $dict->t("Gabon"),
-    'GM' => $dict->t("Gambia"),
-    'GE' => $dict->t("Georgia"),
-    'DE' => $dict->t("Germany"),
-    'GH' => $dict->t("Ghana"),
-    'GI' => $dict->t("Gibraltar"),
-    'GR' => $dict->t("Greece"),
-    'GL' => $dict->t("Greenland"),
-    'GD' => $dict->t("Grenada"),
-    'GP' => $dict->t("Guadeloupe"),
-    'GU' => $dict->t("Guam"),
-    'GT' => $dict->t("Guatemala"),
-    'GN' => $dict->t("Guinea"),
-    'GW' => $dict->t("Guinea-Bissau"),
-    'GY' => $dict->t("Guyana"),
-    'HT' => $dict->t("Haiti"),
-    'HM' => $dict->t("Heard Island and McDonald Islands"),
-    'VA' => $dict->t("Holy See (Vatican City State)"),
-    'HN' => $dict->t("Honduras"),
-    'HK' => $dict->t("Hong Kong"),
-    'HU' => $dict->t("Hungary"),
-    'IS' => $dict->t("Iceland"),
-    'IN' => $dict->t("India"),
-    'ID' => $dict->t("Indonesia"),
-    'IR' => $dict->t("Iran, Islamic Republic of"),
-    'IQ' => $dict->t("Iraq"),
-    'IE' => $dict->t("Ireland"),
-    'IL' => $dict->t("Israel"),
-    'IT' => $dict->t("Italy"),
-    'JM' => $dict->t("Jamaica"),
-    'JP' => $dict->t("Japan"),
-    'JO' => $dict->t("Jordan"),
-    'KZ' => $dict->t("Kazakhstan"),
-    'KE' => $dict->t("Kenya"),
-    'KI' => $dict->t("Kiribati"),
-    'KP' => $dict->t("Korea, Democratic People's Republic of"),
-    'KR' => $dict->t("Korea, Republic of"),
-    'KW' => $dict->t("Kuwait"),
-    'KG' => $dict->t("Kyrgyzstan"),
-    'LA' => $dict->t("Lao People's Democratic Republic"),
-    'LV' => $dict->t("Latvia"),
-    'LB' => $dict->t("Lebanon"),
-    'LS' => $dict->t("Lesotho"),
-    'LR' => $dict->t("Liberia"),
-    'LY' => $dict->t("Libyan Arab Jamahiriya"),
-    'LI' => $dict->t("Liechtenstein"),
-    'LT' => $dict->t("Lithuania"),
-    'LU' => $dict->t("Luxembourg"),
-    'MO' => $dict->t("Macao"),
-    'MK' => $dict->t("Macedonia, The Former Yugoslav Republic of"),
-    'MG' => $dict->t("Madagascar"),
-    'MW' => $dict->t("Malawi"),
-    'MY' => $dict->t("Malaysia"),
-    'MV' => $dict->t("Maldives"),
-    'ML' => $dict->t("Mali"),
-    'MT' => $dict->t("Malta"),
-    'MH' => $dict->t("Marshall Islands"),
-    'MQ' => $dict->t("Martinique"),
-    'MR' => $dict->t("Mauritania"),
-    'MU' => $dict->t("Mauritius"),
-    'YT' => $dict->t("Mayotte"),
-    'MX' => $dict->t("Mexico"),
-    'FM' => $dict->t("Micronesia, Federated States of"),
-    'MD' => $dict->t("Moldova, Republic of"),
-    'MC' => $dict->t("Monaco"),
-    'MN' => $dict->t("Mongolia"),
-    'MS' => $dict->t("Montserrat"),
-    'MA' => $dict->t("Morocco"),
-    'MZ' => $dict->t("Mozambique"),
-    'MM' => $dict->t("Myanmar"),
-    'NA' => $dict->t("Namibia"),
-    'NR' => $dict->t("Nauru"),
-    'NP' => $dict->t("Nepal"),
-    'NL' => $dict->t("Netherlands"),
-    'AN' => $dict->t("Netherlands Antilles"),
-    'NC' => $dict->t("New Caledonia"),
-    'NZ' => $dict->t("New Zealand"),
-    'NI' => $dict->t("Nicaragua"),
-    'NE' => $dict->t("Niger"),
-    'NG' => $dict->t("Nigeria"),
-    'NU' => $dict->t("Niue"),
-    'NF' => $dict->t("Norfolk Island"),
-    'MP' => $dict->t("Northern Mariana Islands"),
-    'NO' => $dict->t("Norway"),
-    'OM' => $dict->t("Oman"),
-    'PK' => $dict->t("Pakistan"),
-    'PW' => $dict->t("Palau"),
-    'PS' => $dict->t("Palestinian Territory, Occupied"),
-    'PA' => $dict->t("Panama"),
-    'PG' => $dict->t("Papua New Guinea"),
-    'PY' => $dict->t("Paraguay"),
-    'PE' => $dict->t("Peru"),
-    'PH' => $dict->t("Philippines"),
-    'PN' => $dict->t("Pitcairn"),
-    'PL' => $dict->t("Poland"),
-    'PT' => $dict->t("Portugal"),
-    'PR' => $dict->t("Puerto Rico"),
-    'QA' => $dict->t("Qatar"),
-    'RE' => $dict->t("Reunion"),
-    'RO' => $dict->t("Romania"),
-    'RU' => $dict->t("Russian Federation"),
-    'RW' => $dict->t("Rwanda"),
-    'SH' => $dict->t("Saint Helena"),
-    'KN' => $dict->t("Saint Kitts and Nevis"),
-    'LC' => $dict->t("Saint Lucia"),
-    'PM' => $dict->t("Saint Pierre and Miquelon"),
-    'VC' => $dict->t("Saint Vincent and the Grenadines"),
-    'WS' => $dict->t("Samoa"),
-    'SM' => $dict->t("San Marino"),
-    'ST' => $dict->t("Sao Tome and Principe"),
-    'SA' => $dict->t("Saudi Arabia"),
-    'SN' => $dict->t("Senegal"),
-    'CS' => $dict->t("Serbia and Montenegro"),
-    'SC' => $dict->t("Seychelles"),
-    'SL' => $dict->t("Sierra Leone"),
-    'SG' => $dict->t("Singapore"),
-    'SK' => $dict->t("Slovakia"),
-    'SI' => $dict->t("Slovenia"),
-    'SB' => $dict->t("Solomon Islands"),
-    'SO' => $dict->t("Somalia"),
-    'ZA' => $dict->t("South Africa"),
-    'GS' => $dict->t("South Georgia and the South Sandwich Islands"),
-    'ES' => $dict->t("Spain"),
-    'LK' => $dict->t("Sri Lanka"),
-    'SD' => $dict->t("Sudan"),
-    'SR' => $dict->t("Suriname"),
-    'SJ' => $dict->t("Svalbard and Jan Mayen"),
-    'SZ' => $dict->t("Swaziland"),
-    'SE' => $dict->t("Sweden"),
-    'CH' => $dict->t("Switzerland"),
-    'SY' => $dict->t("Syrian Arab Republic"),
-    'TW' => $dict->t("Taiwan, Province of China"),
-    'TJ' => $dict->t("Tajikistan"),
-    'TZ' => $dict->t("Tanzania, United Republic of"),
-    'TH' => $dict->t("Thailand"),
-    'TL' => $dict->t("Timor-Leste"),
-    'TG' => $dict->t("Togo"),
-    'TK' => $dict->t("Tokelau"),
-    'TO' => $dict->t("Tonga"),
-    'TT' => $dict->t("Trinidad and Tobago"),
-    'TN' => $dict->t("Tunisia"),
-    'TR' => $dict->t("Turkey"),
-    'TM' => $dict->t("Turkmenistan"),
-    'TC' => $dict->t("Turks and Caicos Islands"),
-    'TV' => $dict->t("Tuvalu"),
-    'UG' => $dict->t("Uganda"),
-    'UA' => $dict->t("Ukraine"),
-    'AE' => $dict->t("United Arab Emirates"),
-    'GB' => $dict->t("United Kingdom"),
-    'US' => $dict->t("United States"),
-    'UM' => $dict->t("United States Minor Outlying Islands"),
-    'UY' => $dict->t("Uruguay"),
-    'UZ' => $dict->t("Uzbekistan"),
-    'VU' => $dict->t("Vanuatu"),
-    'VE' => $dict->t("Venezuela"),
-    'VN' => $dict->t("Viet Nam"),
-    'VG' => $dict->t("Virgin Islands, British"),
-    'VI' => $dict->t("Virgin Islands, U.S."),
-    'WF' => $dict->t("Wallis and Futuna"),
-    'EH' => $dict->t("Western Sahara"),
-    'YE' => $dict->t("Yemen"),
-    'ZM' => $dict->t("Zambia"),
-    'ZW' => $dict->t("Zimbabwe")
+    'AF' => Horde_Nls_Translation::t("Afghanistan"),
+    'AL' => Horde_Nls_Translation::t("Albania"),
+    'DZ' => Horde_Nls_Translation::t("Algeria"),
+    'AS' => Horde_Nls_Translation::t("American Samoa"),
+    'AD' => Horde_Nls_Translation::t("Andorra"),
+    'AO' => Horde_Nls_Translation::t("Angola"),
+    'AI' => Horde_Nls_Translation::t("Anguilla"),
+    'AQ' => Horde_Nls_Translation::t("Antarctica"),
+    'AG' => Horde_Nls_Translation::t("Antigua and Barbuda"),
+    'AR' => Horde_Nls_Translation::t("Argentina"),
+    'AM' => Horde_Nls_Translation::t("Armenia"),
+    'AW' => Horde_Nls_Translation::t("Aruba"),
+    'AU' => Horde_Nls_Translation::t("Australia"),
+    'AT' => Horde_Nls_Translation::t("Austria"),
+    'AZ' => Horde_Nls_Translation::t("Azerbaijan"),
+    'BS' => Horde_Nls_Translation::t("Bahamas"),
+    'BH' => Horde_Nls_Translation::t("Bahrain"),
+    'BD' => Horde_Nls_Translation::t("Bangladesh"),
+    'BB' => Horde_Nls_Translation::t("Barbados"),
+    'BY' => Horde_Nls_Translation::t("Belarus"),
+    'BE' => Horde_Nls_Translation::t("Belgium"),
+    'BZ' => Horde_Nls_Translation::t("Belize"),
+    'BJ' => Horde_Nls_Translation::t("Benin"),
+    'BM' => Horde_Nls_Translation::t("Bermuda"),
+    'BT' => Horde_Nls_Translation::t("Bhutan"),
+    'BO' => Horde_Nls_Translation::t("Bolivia"),
+    'BA' => Horde_Nls_Translation::t("Bosnia and Herzegovina"),
+    'BW' => Horde_Nls_Translation::t("Botswana"),
+    'BV' => Horde_Nls_Translation::t("Bouvet Island"),
+    'BR' => Horde_Nls_Translation::t("Brazil"),
+    'IO' => Horde_Nls_Translation::t("British Indian Ocean Territory"),
+    'BN' => Horde_Nls_Translation::t("Brunei Darussalam"),
+    'BG' => Horde_Nls_Translation::t("Bulgaria"),
+    'BF' => Horde_Nls_Translation::t("Burkina Faso"),
+    'BI' => Horde_Nls_Translation::t("Burundi"),
+    'KH' => Horde_Nls_Translation::t("Cambodia"),
+    'CM' => Horde_Nls_Translation::t("Cameroon"),
+    'CA' => Horde_Nls_Translation::t("Canada"),
+    'CV' => Horde_Nls_Translation::t("Cape Verde"),
+    'KY' => Horde_Nls_Translation::t("Cayman Islands"),
+    'CF' => Horde_Nls_Translation::t("Central African Republic"),
+    'TD' => Horde_Nls_Translation::t("Chad"),
+    'CL' => Horde_Nls_Translation::t("Chile"),
+    'CN' => Horde_Nls_Translation::t("China"),
+    'CX' => Horde_Nls_Translation::t("Christmas Island"),
+    'CC' => Horde_Nls_Translation::t("Cocos (Keeling) Islands"),
+    'CO' => Horde_Nls_Translation::t("Colombia"),
+    'KM' => Horde_Nls_Translation::t("Comoros"),
+    'CG' => Horde_Nls_Translation::t("Congo"),
+    'CD' => Horde_Nls_Translation::t("Congo, The Democratic Republic of the"),
+    'CK' => Horde_Nls_Translation::t("Cook Islands"),
+    'CR' => Horde_Nls_Translation::t("Costa Rica"),
+    'CI' => Horde_Nls_Translation::t("Cote d'Ivoire"),
+    'HR' => Horde_Nls_Translation::t("Croatia"),
+    'CU' => Horde_Nls_Translation::t("Cuba"),
+    'CY' => Horde_Nls_Translation::t("Cyprus"),
+    'CZ' => Horde_Nls_Translation::t("Czech Republic"),
+    'DK' => Horde_Nls_Translation::t("Denmark"),
+    'DJ' => Horde_Nls_Translation::t("Djibouti"),
+    'DM' => Horde_Nls_Translation::t("Dominica"),
+    'DO' => Horde_Nls_Translation::t("Dominican Republic"),
+    'EC' => Horde_Nls_Translation::t("Ecuador"),
+    'EG' => Horde_Nls_Translation::t("Egypt"),
+    'SV' => Horde_Nls_Translation::t("El Salvador"),
+    'GQ' => Horde_Nls_Translation::t("Equatorial Guinea"),
+    'ER' => Horde_Nls_Translation::t("Eritrea"),
+    'EE' => Horde_Nls_Translation::t("Estonia"),
+    'ET' => Horde_Nls_Translation::t("Ethiopia"),
+    'FK' => Horde_Nls_Translation::t("Falkland Islands (Malvinas)"),
+    'FO' => Horde_Nls_Translation::t("Faroe Islands"),
+    'FJ' => Horde_Nls_Translation::t("Fiji"),
+    'FI' => Horde_Nls_Translation::t("Finland"),
+    'FR' => Horde_Nls_Translation::t("France"),
+    'GF' => Horde_Nls_Translation::t("French Guiana"),
+    'PF' => Horde_Nls_Translation::t("French Polynesia"),
+    'TF' => Horde_Nls_Translation::t("French Southern Territories"),
+    'GA' => Horde_Nls_Translation::t("Gabon"),
+    'GM' => Horde_Nls_Translation::t("Gambia"),
+    'GE' => Horde_Nls_Translation::t("Georgia"),
+    'DE' => Horde_Nls_Translation::t("Germany"),
+    'GH' => Horde_Nls_Translation::t("Ghana"),
+    'GI' => Horde_Nls_Translation::t("Gibraltar"),
+    'GR' => Horde_Nls_Translation::t("Greece"),
+    'GL' => Horde_Nls_Translation::t("Greenland"),
+    'GD' => Horde_Nls_Translation::t("Grenada"),
+    'GP' => Horde_Nls_Translation::t("Guadeloupe"),
+    'GU' => Horde_Nls_Translation::t("Guam"),
+    'GT' => Horde_Nls_Translation::t("Guatemala"),
+    'GN' => Horde_Nls_Translation::t("Guinea"),
+    'GW' => Horde_Nls_Translation::t("Guinea-Bissau"),
+    'GY' => Horde_Nls_Translation::t("Guyana"),
+    'HT' => Horde_Nls_Translation::t("Haiti"),
+    'HM' => Horde_Nls_Translation::t("Heard Island and McDonald Islands"),
+    'VA' => Horde_Nls_Translation::t("Holy See (Vatican City State)"),
+    'HN' => Horde_Nls_Translation::t("Honduras"),
+    'HK' => Horde_Nls_Translation::t("Hong Kong"),
+    'HU' => Horde_Nls_Translation::t("Hungary"),
+    'IS' => Horde_Nls_Translation::t("Iceland"),
+    'IN' => Horde_Nls_Translation::t("India"),
+    'ID' => Horde_Nls_Translation::t("Indonesia"),
+    'IR' => Horde_Nls_Translation::t("Iran, Islamic Republic of"),
+    'IQ' => Horde_Nls_Translation::t("Iraq"),
+    'IE' => Horde_Nls_Translation::t("Ireland"),
+    'IL' => Horde_Nls_Translation::t("Israel"),
+    'IT' => Horde_Nls_Translation::t("Italy"),
+    'JM' => Horde_Nls_Translation::t("Jamaica"),
+    'JP' => Horde_Nls_Translation::t("Japan"),
+    'JO' => Horde_Nls_Translation::t("Jordan"),
+    'KZ' => Horde_Nls_Translation::t("Kazakhstan"),
+    'KE' => Horde_Nls_Translation::t("Kenya"),
+    'KI' => Horde_Nls_Translation::t("Kiribati"),
+    'KP' => Horde_Nls_Translation::t("Korea, Democratic People's Republic of"),
+    'KR' => Horde_Nls_Translation::t("Korea, Republic of"),
+    'KW' => Horde_Nls_Translation::t("Kuwait"),
+    'KG' => Horde_Nls_Translation::t("Kyrgyzstan"),
+    'LA' => Horde_Nls_Translation::t("Lao People's Democratic Republic"),
+    'LV' => Horde_Nls_Translation::t("Latvia"),
+    'LB' => Horde_Nls_Translation::t("Lebanon"),
+    'LS' => Horde_Nls_Translation::t("Lesotho"),
+    'LR' => Horde_Nls_Translation::t("Liberia"),
+    'LY' => Horde_Nls_Translation::t("Libyan Arab Jamahiriya"),
+    'LI' => Horde_Nls_Translation::t("Liechtenstein"),
+    'LT' => Horde_Nls_Translation::t("Lithuania"),
+    'LU' => Horde_Nls_Translation::t("Luxembourg"),
+    'MO' => Horde_Nls_Translation::t("Macao"),
+    'MK' => Horde_Nls_Translation::t("Macedonia, The Former Yugoslav Republic of"),
+    'MG' => Horde_Nls_Translation::t("Madagascar"),
+    'MW' => Horde_Nls_Translation::t("Malawi"),
+    'MY' => Horde_Nls_Translation::t("Malaysia"),
+    'MV' => Horde_Nls_Translation::t("Maldives"),
+    'ML' => Horde_Nls_Translation::t("Mali"),
+    'MT' => Horde_Nls_Translation::t("Malta"),
+    'MH' => Horde_Nls_Translation::t("Marshall Islands"),
+    'MQ' => Horde_Nls_Translation::t("Martinique"),
+    'MR' => Horde_Nls_Translation::t("Mauritania"),
+    'MU' => Horde_Nls_Translation::t("Mauritius"),
+    'YT' => Horde_Nls_Translation::t("Mayotte"),
+    'MX' => Horde_Nls_Translation::t("Mexico"),
+    'FM' => Horde_Nls_Translation::t("Micronesia, Federated States of"),
+    'MD' => Horde_Nls_Translation::t("Moldova, Republic of"),
+    'MC' => Horde_Nls_Translation::t("Monaco"),
+    'MN' => Horde_Nls_Translation::t("Mongolia"),
+    'MS' => Horde_Nls_Translation::t("Montserrat"),
+    'MA' => Horde_Nls_Translation::t("Morocco"),
+    'MZ' => Horde_Nls_Translation::t("Mozambique"),
+    'MM' => Horde_Nls_Translation::t("Myanmar"),
+    'NA' => Horde_Nls_Translation::t("Namibia"),
+    'NR' => Horde_Nls_Translation::t("Nauru"),
+    'NP' => Horde_Nls_Translation::t("Nepal"),
+    'NL' => Horde_Nls_Translation::t("Netherlands"),
+    'AN' => Horde_Nls_Translation::t("Netherlands Antilles"),
+    'NC' => Horde_Nls_Translation::t("New Caledonia"),
+    'NZ' => Horde_Nls_Translation::t("New Zealand"),
+    'NI' => Horde_Nls_Translation::t("Nicaragua"),
+    'NE' => Horde_Nls_Translation::t("Niger"),
+    'NG' => Horde_Nls_Translation::t("Nigeria"),
+    'NU' => Horde_Nls_Translation::t("Niue"),
+    'NF' => Horde_Nls_Translation::t("Norfolk Island"),
+    'MP' => Horde_Nls_Translation::t("Northern Mariana Islands"),
+    'NO' => Horde_Nls_Translation::t("Norway"),
+    'OM' => Horde_Nls_Translation::t("Oman"),
+    'PK' => Horde_Nls_Translation::t("Pakistan"),
+    'PW' => Horde_Nls_Translation::t("Palau"),
+    'PS' => Horde_Nls_Translation::t("Palestinian Territory, Occupied"),
+    'PA' => Horde_Nls_Translation::t("Panama"),
+    'PG' => Horde_Nls_Translation::t("Papua New Guinea"),
+    'PY' => Horde_Nls_Translation::t("Paraguay"),
+    'PE' => Horde_Nls_Translation::t("Peru"),
+    'PH' => Horde_Nls_Translation::t("Philippines"),
+    'PN' => Horde_Nls_Translation::t("Pitcairn"),
+    'PL' => Horde_Nls_Translation::t("Poland"),
+    'PT' => Horde_Nls_Translation::t("Portugal"),
+    'PR' => Horde_Nls_Translation::t("Puerto Rico"),
+    'QA' => Horde_Nls_Translation::t("Qatar"),
+    'RE' => Horde_Nls_Translation::t("Reunion"),
+    'RO' => Horde_Nls_Translation::t("Romania"),
+    'RU' => Horde_Nls_Translation::t("Russian Federation"),
+    'RW' => Horde_Nls_Translation::t("Rwanda"),
+    'SH' => Horde_Nls_Translation::t("Saint Helena"),
+    'KN' => Horde_Nls_Translation::t("Saint Kitts and Nevis"),
+    'LC' => Horde_Nls_Translation::t("Saint Lucia"),
+    'PM' => Horde_Nls_Translation::t("Saint Pierre and Miquelon"),
+    'VC' => Horde_Nls_Translation::t("Saint Vincent and the Grenadines"),
+    'WS' => Horde_Nls_Translation::t("Samoa"),
+    'SM' => Horde_Nls_Translation::t("San Marino"),
+    'ST' => Horde_Nls_Translation::t("Sao Tome and Principe"),
+    'SA' => Horde_Nls_Translation::t("Saudi Arabia"),
+    'SN' => Horde_Nls_Translation::t("Senegal"),
+    'CS' => Horde_Nls_Translation::t("Serbia and Montenegro"),
+    'SC' => Horde_Nls_Translation::t("Seychelles"),
+    'SL' => Horde_Nls_Translation::t("Sierra Leone"),
+    'SG' => Horde_Nls_Translation::t("Singapore"),
+    'SK' => Horde_Nls_Translation::t("Slovakia"),
+    'SI' => Horde_Nls_Translation::t("Slovenia"),
+    'SB' => Horde_Nls_Translation::t("Solomon Islands"),
+    'SO' => Horde_Nls_Translation::t("Somalia"),
+    'ZA' => Horde_Nls_Translation::t("South Africa"),
+    'GS' => Horde_Nls_Translation::t("South Georgia and the South Sandwich Islands"),
+    'ES' => Horde_Nls_Translation::t("Spain"),
+    'LK' => Horde_Nls_Translation::t("Sri Lanka"),
+    'SD' => Horde_Nls_Translation::t("Sudan"),
+    'SR' => Horde_Nls_Translation::t("Suriname"),
+    'SJ' => Horde_Nls_Translation::t("Svalbard and Jan Mayen"),
+    'SZ' => Horde_Nls_Translation::t("Swaziland"),
+    'SE' => Horde_Nls_Translation::t("Sweden"),
+    'CH' => Horde_Nls_Translation::t("Switzerland"),
+    'SY' => Horde_Nls_Translation::t("Syrian Arab Republic"),
+    'TW' => Horde_Nls_Translation::t("Taiwan, Province of China"),
+    'TJ' => Horde_Nls_Translation::t("Tajikistan"),
+    'TZ' => Horde_Nls_Translation::t("Tanzania, United Republic of"),
+    'TH' => Horde_Nls_Translation::t("Thailand"),
+    'TL' => Horde_Nls_Translation::t("Timor-Leste"),
+    'TG' => Horde_Nls_Translation::t("Togo"),
+    'TK' => Horde_Nls_Translation::t("Tokelau"),
+    'TO' => Horde_Nls_Translation::t("Tonga"),
+    'TT' => Horde_Nls_Translation::t("Trinidad and Tobago"),
+    'TN' => Horde_Nls_Translation::t("Tunisia"),
+    'TR' => Horde_Nls_Translation::t("Turkey"),
+    'TM' => Horde_Nls_Translation::t("Turkmenistan"),
+    'TC' => Horde_Nls_Translation::t("Turks and Caicos Islands"),
+    'TV' => Horde_Nls_Translation::t("Tuvalu"),
+    'UG' => Horde_Nls_Translation::t("Uganda"),
+    'UA' => Horde_Nls_Translation::t("Ukraine"),
+    'AE' => Horde_Nls_Translation::t("United Arab Emirates"),
+    'GB' => Horde_Nls_Translation::t("United Kingdom"),
+    'US' => Horde_Nls_Translation::t("United States"),
+    'UM' => Horde_Nls_Translation::t("United States Minor Outlying Islands"),
+    'UY' => Horde_Nls_Translation::t("Uruguay"),
+    'UZ' => Horde_Nls_Translation::t("Uzbekistan"),
+    'VU' => Horde_Nls_Translation::t("Vanuatu"),
+    'VE' => Horde_Nls_Translation::t("Venezuela"),
+    'VN' => Horde_Nls_Translation::t("Viet Nam"),
+    'VG' => Horde_Nls_Translation::t("Virgin Islands, British"),
+    'VI' => Horde_Nls_Translation::t("Virgin Islands, U.S."),
+    'WF' => Horde_Nls_Translation::t("Wallis and Futuna"),
+    'EH' => Horde_Nls_Translation::t("Western Sahara"),
+    'YE' => Horde_Nls_Translation::t("Yemen"),
+    'ZM' => Horde_Nls_Translation::t("Zambia"),
+    'ZW' => Horde_Nls_Translation::t("Zimbabwe")
 );
 
 asort($countries, SORT_LOCALE_STRING);
index d4fa911..d2bb39a 100644 (file)
@@ -76,26 +76,12 @@ class Horde_Nls_Geoip
     protected $_fh;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Constructor.
      *
      * @param string $datafile         The location of the GeoIP database.
-     * @param Horde_Translation $dict  A translation handler implementing
-     *                                 Horde_Translation.
      */
-    public function __construct($datafile, $dict = null)
+    public function __construct($datafile)
     {
-        if ($dict) {
-            $this->_dict = $dict;
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Nls', dirname(__FILE__) . '/../../../locale');
-        }
         $this->_datafile = $datafile;
     }
 
@@ -335,11 +321,11 @@ class Horde_Nls_Geoip
         $code = Horde_String::upper($code);
 
         $geoip_codes = array(
-            'AP' => $this->_dict->t("Asia/Pacific Region"),
-            'EU' => $this->_dict->t("Europe"),
-            'A1' => $this->_dict->t("Anonymous Proxy"),
-            'A2' => $this->_dict->t("Satellite Provider"),
-            'O1' => $this->_dict->t("Other")
+            'AP' => Horde_Nls_Translation::t("Asia/Pacific Region"),
+            'EU' => Horde_Nls_Translation::t("Europe"),
+            'A1' => Horde_Nls_Translation::t("Anonymous Proxy"),
+            'A2' => Horde_Nls_Translation::t("Satellite Provider"),
+            'O1' => Horde_Nls_Translation::t("Other")
         );
 
         return isset($geoip_codes[$code])
index b9a1ef1..7a3ba20 100644 (file)
  *
  * @package Horde_Nls
  */
-$dict = new Horde_Translation_Gettext('Horde_Nls', dirname(__FILE__) . '/../../../locale');
-
 $tld = array(
-    'ac' => $dict->t("Ascension Island"),
-    'ad' => $dict->t("Andorra"),
-    'ae' => $dict->t("United Arab Emirates"),
-    'af' => $dict->t("Afghanistan"),
-    'ag' => $dict->t("Antigua and Barbuda"),
-    'ai' => $dict->t("Anguilla"),
-    'al' => $dict->t("Albania"),
-    'am' => $dict->t("Armenia"),
-    'an' => $dict->t("Netherlands Antilles"),
-    'ao' => $dict->t("Angola"),
-    'aq' => $dict->t("Antarctica"),
-    'ar' => $dict->t("Argentina"),
-    'as' => $dict->t("American Samoa"),
-    'at' => $dict->t("Austria"),
-    'au' => $dict->t("Australia"),
-    'aw' => $dict->t("Aruba"),
-    'ax' => $dict->t("Aland Islands"),
-    'az' => $dict->t("Azerbaijan"),
-    'ba' => $dict->t("Bosnia and Herzegovina"),
-    'bb' => $dict->t("Barbados"),
-    'bd' => $dict->t("Bangladesh"),
-    'be' => $dict->t("Belgium"),
-    'bf' => $dict->t("Burkina Faso"),
-    'bg' => $dict->t("Bulgaria"),
-    'bh' => $dict->t("Bahrain"),
-    'bi' => $dict->t("Burundi"),
-    'bj' => $dict->t("Benin"),
-    'bm' => $dict->t("Bermuda"),
-    'bn' => $dict->t("Brunei Darussalam"),
-    'bo' => $dict->t("Bolivia"),
-    'br' => $dict->t("Brazil"),
-    'bs' => $dict->t("Bahamas"),
-    'bt' => $dict->t("Bhutan"),
-    'bv' => $dict->t("Bouvet Island"),
-    'bw' => $dict->t("Botswana"),
-    'by' => $dict->t("Belarus"),
-    'bz' => $dict->t("Belize"),
-    'ca' => $dict->t("Canada"),
-    'cc' => $dict->t("Cocos (Keeling) Islands"),
-    'cd' => $dict->t("Congo, The Democratic Republic of the"),
-    'cf' => $dict->t("Central African Republic"),
-    'cg' => $dict->t("Congo, Republic of"),
-    'ch' => $dict->t("Switzerland"),
-    'ci' => $dict->t("Cote d'Ivoire"),
-    'ck' => $dict->t("Cook Islands"),
-    'cl' => $dict->t("Chile"),
-    'cm' => $dict->t("Cameroon"),
-    'cn' => $dict->t("China"),
-    'co' => $dict->t("Colombia"),
-    'cr' => $dict->t("Costa Rica"),
-    'cu' => $dict->t("Cuba"),
-    'cv' => $dict->t("Cape Verde"),
-    'cx' => $dict->t("Christmas Island"),
-    'cy' => $dict->t("Cyprus"),
-    'cz' => $dict->t("Czech Republic"),
-    'de' => $dict->t("Germany"),
-    'dj' => $dict->t("Djibouti"),
-    'dk' => $dict->t("Denmark"),
-    'dm' => $dict->t("Dominica"),
-    'do' => $dict->t("Dominican Republic"),
-    'dz' => $dict->t("Algeria"),
-    'ec' => $dict->t("Ecuador"),
-    'ee' => $dict->t("Estonia"),
-    'eg' => $dict->t("Egypt"),
-    'eh' => $dict->t("Western Sahara"),
-    'er' => $dict->t("Eritrea"),
-    'es' => $dict->t("Spain"),
-    'et' => $dict->t("Ethiopia"),
-    'eu' => $dict->t("European Union"),
-    'fi' => $dict->t("Finland"),
-    'fj' => $dict->t("Fiji"),
-    'fk' => $dict->t("Falkland Islands (Malvinas)"),
-    'fm' => $dict->t("Micronesia, Federated States of"),
-    'fo' => $dict->t("Faroe Islands"),
-    'fr' => $dict->t("France"),
-    'ga' => $dict->t("Gabon"),
-    'gb' => $dict->t("United Kingdom"),
-    'gd' => $dict->t("Grenada"),
-    'ge' => $dict->t("Georgia"),
-    'gf' => $dict->t("French Guiana"),
-    'gg' => $dict->t("Guernsey"),
-    'gh' => $dict->t("Ghana"),
-    'gi' => $dict->t("Gibraltar"),
-    'gl' => $dict->t("Greenland"),
-    'gm' => $dict->t("Gambia"),
-    'gn' => $dict->t("Guinea"),
-    'gp' => $dict->t("Guadeloupe"),
-    'gq' => $dict->t("Equatorial Guinea"),
-    'gr' => $dict->t("Greece"),
-    'gs' => $dict->t("South Georgia and the South Sandwich Islands"),
-    'gt' => $dict->t("Guatemala"),
-    'gu' => $dict->t("Guam"),
-    'gw' => $dict->t("Guinea-Bissau"),
-    'gy' => $dict->t("Guyana"),
-    'hk' => $dict->t("Hong Kong"),
-    'hm' => $dict->t("Heard and McDonald Islands"),
-    'hn' => $dict->t("Honduras"),
-    'hr' => $dict->t("Croatia/Hrvatska"),
-    'ht' => $dict->t("Haiti"),
-    'hu' => $dict->t("Hungary"),
-    'id' => $dict->t("Indonesia"),
-    'ie' => $dict->t("Ireland"),
-    'il' => $dict->t("Israel"),
-    'im' => $dict->t("Isle of Man"),
-    'in' => $dict->t("India"),
-    'io' => $dict->t("British Indian Ocean Territory"),
-    'iq' => $dict->t("Iraq"),
-    'ir' => $dict->t("Iran, Islamic Republic of"),
-    'is' => $dict->t("Iceland"),
-    'it' => $dict->t("Italy"),
-    'je' => $dict->t("Jersey"),
-    'jm' => $dict->t("Jamaica"),
-    'jo' => $dict->t("Jordan"),
-    'jp' => $dict->t("Japan"),
-    'ke' => $dict->t("Kenya"),
-    'kg' => $dict->t("Kyrgyzstan"),
-    'kh' => $dict->t("Cambodia"),
-    'ki' => $dict->t("Kiribati"),
-    'km' => $dict->t("Comoros"),
-    'kn' => $dict->t("Saint Kitts and Nevis"),
-    'kp' => $dict->t("Korea, Democratic People's Republic of"),
-    'kr' => $dict->t("Korea, Republic of"),
-    'kw' => $dict->t("Kuwait"),
-    'ky' => $dict->t("Cayman Islands"),
-    'kz' => $dict->t("Kazakhstan"),
-    'la' => $dict->t("Lao People's Democratic Republic"),
-    'lb' => $dict->t("Lebanon"),
-    'lc' => $dict->t("Saint Lucia"),
-    'li' => $dict->t("Liechtenstein"),
-    'lk' => $dict->t("Sri Lanka"),
-    'lr' => $dict->t("Liberia"),
-    'ls' => $dict->t("Lesotho"),
-    'lt' => $dict->t("Lithuania"),
-    'lu' => $dict->t("Luxembourg"),
-    'lv' => $dict->t("Latvia"),
-    'ly' => $dict->t("Libyan Arab Jamahiriya"),
-    'ma' => $dict->t("Morocco"),
-    'mc' => $dict->t("Monaco"),
-    'md' => $dict->t("Moldova, Republic of"),
-    'me' => $dict->t("Montenegro"),
-    'mg' => $dict->t("Madagascar"),
-    'mh' => $dict->t("Marshall Islands"),
-    'mk' => $dict->t("Macedonia, The Former Yugoslav Republic of"),
-    'ml' => $dict->t("Mali"),
-    'mm' => $dict->t("Myanmar"),
-    'mn' => $dict->t("Mongolia"),
-    'mo' => $dict->t("Macao"),
-    'mp' => $dict->t("Northern Mariana Islands"),
-    'mq' => $dict->t("Martinique"),
-    'mr' => $dict->t("Mauritania"),
-    'ms' => $dict->t("Montserrat"),
-    'mt' => $dict->t("Malta"),
-    'mu' => $dict->t("Mauritius"),
-    'mv' => $dict->t("Maldives"),
-    'mw' => $dict->t("Malawi"),
-    'mx' => $dict->t("Mexico"),
-    'my' => $dict->t("Malaysia"),
-    'mz' => $dict->t("Mozambique"),
-    'na' => $dict->t("Namibia"),
-    'nc' => $dict->t("New Caledonia"),
-    'ne' => $dict->t("Niger"),
-    'nf' => $dict->t("Norfolk Island"),
-    'ng' => $dict->t("Nigeria"),
-    'ni' => $dict->t("Nicaragua"),
-    'nl' => $dict->t("Netherlands"),
-    'no' => $dict->t("Norway"),
-    'np' => $dict->t("Nepal"),
-    'nr' => $dict->t("Nauru"),
-    'nu' => $dict->t("Niue"),
-    'nz' => $dict->t("New Zealand"),
-    'om' => $dict->t("Oman"),
-    'pa' => $dict->t("Panama"),
-    'pe' => $dict->t("Peru"),
-    'pf' => $dict->t("French Polynesia"),
-    'pg' => $dict->t("Papua New Guinea"),
-    'ph' => $dict->t("Philippines"),
-    'pk' => $dict->t("Pakistan"),
-    'pl' => $dict->t("Poland"),
-    'pm' => $dict->t("Saint Pierre and Miquelon"),
-    'pn' => $dict->t("Pitcairn Island"),
-    'pr' => $dict->t("Puerto Rico"),
-    'ps' => $dict->t("Palestinian Territory, Occupied"),
-    'pt' => $dict->t("Portugal"),
-    'pw' => $dict->t("Palau"),
-    'py' => $dict->t("Paraguay"),
-    'qa' => $dict->t("Qatar"),
-    're' => $dict->t("Reunion Island"),
-    'ro' => $dict->t("Romania"),
-    'rs' => $dict->t("Serbia"),
-    'ru' => $dict->t("Russian Federation"),
-    'rw' => $dict->t("Rwanda"),
-    'sa' => $dict->t("Saudi Arabia"),
-    'sb' => $dict->t("Solomon Islands"),
-    'sc' => $dict->t("Seychelles"),
-    'sd' => $dict->t("Sudan"),
-    'se' => $dict->t("Sweden"),
-    'sg' => $dict->t("Singapore"),
-    'sh' => $dict->t("Saint Helena"),
-    'si' => $dict->t("Slovenia"),
-    'sj' => $dict->t("Svalbard and Jan Mayen Islands"),
-    'sk' => $dict->t("Slovakia"),
-    'sl' => $dict->t("Sierra Leone"),
-    'sm' => $dict->t("San Marino"),
-    'sn' => $dict->t("Senegal"),
-    'so' => $dict->t("Somalia"),
-    'sr' => $dict->t("Suriname"),
-    'st' => $dict->t("Sao Tome and Principe"),
-    'su' => $dict->t("Soviet Union"),
-    'sv' => $dict->t("El Salvador"),
-    'sy' => $dict->t("Syrian Arab Republic"),
-    'sz' => $dict->t("Swaziland"),
-    'tc' => $dict->t("Turks and Caicos Islands"),
-    'td' => $dict->t("Chad"),
-    'tf' => $dict->t("French Southern Territories"),
-    'tg' => $dict->t("Togo"),
-    'th' => $dict->t("Thailand"),
-    'tj' => $dict->t("Tajikistan"),
-    'tk' => $dict->t("Tokelau"),
-    'tl' => $dict->t("Timor-Leste"),
-    'tm' => $dict->t("Turkmenistan"),
-    'tn' => $dict->t("Tunisia"),
-    'to' => $dict->t("Tonga"),
-    'tp' => $dict->t("East Timor"),
-    'tr' => $dict->t("Turkey"),
-    'tt' => $dict->t("Trinidad and Tobago"),
-    'tv' => $dict->t("Tuvalu"),
-    'tw' => $dict->t("Taiwan"),
-    'tz' => $dict->t("Tanzania, United Republic of"),
-    'ua' => $dict->t("Ukraine"),
-    'ug' => $dict->t("Uganda"),
-    'uk' => $dict->t("United Kingdom"),
-    'um' => $dict->t("United States Minor Outlying Islands"),
-    'us' => $dict->t("United States"),
-    'uy' => $dict->t("Uruguay"),
-    'uz' => $dict->t("Uzbekistan"),
-    'va' => $dict->t("Holy See (Vatican City State)"),
-    'vc' => $dict->t("Saint Vincent and the Grenadines"),
-    've' => $dict->t("Venezuela"),
-    'vg' => $dict->t("Virgin Islands, British"),
-    'vi' => $dict->t("Virgin Islands, U.S."),
-    'vn' => $dict->t("Viet Nam"),
-    'vu' => $dict->t("Vanuatu"),
-    'wf' => $dict->t("Wallis and Futuna Islands"),
-    'ws' => $dict->t("Samoa"),
-    'ye' => $dict->t("Yemen"),
-    'yt' => $dict->t("Mayotte"),
-    'yu' => $dict->t("Yugoslavia"),
-    'za' => $dict->t("South Africa"),
-    'zm' => $dict->t("Zambia"),
-    'zw' => $dict->t("Zimbabwe")
+    'ac' => Horde_Nls_Translation::t("Ascension Island"),
+    'ad' => Horde_Nls_Translation::t("Andorra"),
+    'ae' => Horde_Nls_Translation::t("United Arab Emirates"),
+    'af' => Horde_Nls_Translation::t("Afghanistan"),
+    'ag' => Horde_Nls_Translation::t("Antigua and Barbuda"),
+    'ai' => Horde_Nls_Translation::t("Anguilla"),
+    'al' => Horde_Nls_Translation::t("Albania"),
+    'am' => Horde_Nls_Translation::t("Armenia"),
+    'an' => Horde_Nls_Translation::t("Netherlands Antilles"),
+    'ao' => Horde_Nls_Translation::t("Angola"),
+    'aq' => Horde_Nls_Translation::t("Antarctica"),
+    'ar' => Horde_Nls_Translation::t("Argentina"),
+    'as' => Horde_Nls_Translation::t("American Samoa"),
+    'at' => Horde_Nls_Translation::t("Austria"),
+    'au' => Horde_Nls_Translation::t("Australia"),
+    'aw' => Horde_Nls_Translation::t("Aruba"),
+    'ax' => Horde_Nls_Translation::t("Aland Islands"),
+    'az' => Horde_Nls_Translation::t("Azerbaijan"),
+    'ba' => Horde_Nls_Translation::t("Bosnia and Herzegovina"),
+    'bb' => Horde_Nls_Translation::t("Barbados"),
+    'bd' => Horde_Nls_Translation::t("Bangladesh"),
+    'be' => Horde_Nls_Translation::t("Belgium"),
+    'bf' => Horde_Nls_Translation::t("Burkina Faso"),
+    'bg' => Horde_Nls_Translation::t("Bulgaria"),
+    'bh' => Horde_Nls_Translation::t("Bahrain"),
+    'bi' => Horde_Nls_Translation::t("Burundi"),
+    'bj' => Horde_Nls_Translation::t("Benin"),
+    'bm' => Horde_Nls_Translation::t("Bermuda"),
+    'bn' => Horde_Nls_Translation::t("Brunei Darussalam"),
+    'bo' => Horde_Nls_Translation::t("Bolivia"),
+    'br' => Horde_Nls_Translation::t("Brazil"),
+    'bs' => Horde_Nls_Translation::t("Bahamas"),
+    'bt' => Horde_Nls_Translation::t("Bhutan"),
+    'bv' => Horde_Nls_Translation::t("Bouvet Island"),
+    'bw' => Horde_Nls_Translation::t("Botswana"),
+    'by' => Horde_Nls_Translation::t("Belarus"),
+    'bz' => Horde_Nls_Translation::t("Belize"),
+    'ca' => Horde_Nls_Translation::t("Canada"),
+    'cc' => Horde_Nls_Translation::t("Cocos (Keeling) Islands"),
+    'cd' => Horde_Nls_Translation::t("Congo, The Democratic Republic of the"),
+    'cf' => Horde_Nls_Translation::t("Central African Republic"),
+    'cg' => Horde_Nls_Translation::t("Congo, Republic of"),
+    'ch' => Horde_Nls_Translation::t("Switzerland"),
+    'ci' => Horde_Nls_Translation::t("Cote d'Ivoire"),
+    'ck' => Horde_Nls_Translation::t("Cook Islands"),
+    'cl' => Horde_Nls_Translation::t("Chile"),
+    'cm' => Horde_Nls_Translation::t("Cameroon"),
+    'cn' => Horde_Nls_Translation::t("China"),
+    'co' => Horde_Nls_Translation::t("Colombia"),
+    'cr' => Horde_Nls_Translation::t("Costa Rica"),
+    'cu' => Horde_Nls_Translation::t("Cuba"),
+    'cv' => Horde_Nls_Translation::t("Cape Verde"),
+    'cx' => Horde_Nls_Translation::t("Christmas Island"),
+    'cy' => Horde_Nls_Translation::t("Cyprus"),
+    'cz' => Horde_Nls_Translation::t("Czech Republic"),
+    'de' => Horde_Nls_Translation::t("Germany"),
+    'dj' => Horde_Nls_Translation::t("Djibouti"),
+    'dk' => Horde_Nls_Translation::t("Denmark"),
+    'dm' => Horde_Nls_Translation::t("Dominica"),
+    'do' => Horde_Nls_Translation::t("Dominican Republic"),
+    'dz' => Horde_Nls_Translation::t("Algeria"),
+    'ec' => Horde_Nls_Translation::t("Ecuador"),
+    'ee' => Horde_Nls_Translation::t("Estonia"),
+    'eg' => Horde_Nls_Translation::t("Egypt"),
+    'eh' => Horde_Nls_Translation::t("Western Sahara"),
+    'er' => Horde_Nls_Translation::t("Eritrea"),
+    'es' => Horde_Nls_Translation::t("Spain"),
+    'et' => Horde_Nls_Translation::t("Ethiopia"),
+    'eu' => Horde_Nls_Translation::t("European Union"),
+    'fi' => Horde_Nls_Translation::t("Finland"),
+    'fj' => Horde_Nls_Translation::t("Fiji"),
+    'fk' => Horde_Nls_Translation::t("Falkland Islands (Malvinas)"),
+    'fm' => Horde_Nls_Translation::t("Micronesia, Federated States of"),
+    'fo' => Horde_Nls_Translation::t("Faroe Islands"),
+    'fr' => Horde_Nls_Translation::t("France"),
+    'ga' => Horde_Nls_Translation::t("Gabon"),
+    'gb' => Horde_Nls_Translation::t("United Kingdom"),
+    'gd' => Horde_Nls_Translation::t("Grenada"),
+    'ge' => Horde_Nls_Translation::t("Georgia"),
+    'gf' => Horde_Nls_Translation::t("French Guiana"),
+    'gg' => Horde_Nls_Translation::t("Guernsey"),
+    'gh' => Horde_Nls_Translation::t("Ghana"),
+    'gi' => Horde_Nls_Translation::t("Gibraltar"),
+    'gl' => Horde_Nls_Translation::t("Greenland"),
+    'gm' => Horde_Nls_Translation::t("Gambia"),
+    'gn' => Horde_Nls_Translation::t("Guinea"),
+    'gp' => Horde_Nls_Translation::t("Guadeloupe"),
+    'gq' => Horde_Nls_Translation::t("Equatorial Guinea"),
+    'gr' => Horde_Nls_Translation::t("Greece"),
+    'gs' => Horde_Nls_Translation::t("South Georgia and the South Sandwich Islands"),
+    'gt' => Horde_Nls_Translation::t("Guatemala"),
+    'gu' => Horde_Nls_Translation::t("Guam"),
+    'gw' => Horde_Nls_Translation::t("Guinea-Bissau"),
+    'gy' => Horde_Nls_Translation::t("Guyana"),
+    'hk' => Horde_Nls_Translation::t("Hong Kong"),
+    'hm' => Horde_Nls_Translation::t("Heard and McDonald Islands"),
+    'hn' => Horde_Nls_Translation::t("Honduras"),
+    'hr' => Horde_Nls_Translation::t("Croatia/Hrvatska"),
+    'ht' => Horde_Nls_Translation::t("Haiti"),
+    'hu' => Horde_Nls_Translation::t("Hungary"),
+    'id' => Horde_Nls_Translation::t("Indonesia"),
+    'ie' => Horde_Nls_Translation::t("Ireland"),
+    'il' => Horde_Nls_Translation::t("Israel"),
+    'im' => Horde_Nls_Translation::t("Isle of Man"),
+    'in' => Horde_Nls_Translation::t("India"),
+    'io' => Horde_Nls_Translation::t("British Indian Ocean Territory"),
+    'iq' => Horde_Nls_Translation::t("Iraq"),
+    'ir' => Horde_Nls_Translation::t("Iran, Islamic Republic of"),
+    'is' => Horde_Nls_Translation::t("Iceland"),
+    'it' => Horde_Nls_Translation::t("Italy"),
+    'je' => Horde_Nls_Translation::t("Jersey"),
+    'jm' => Horde_Nls_Translation::t("Jamaica"),
+    'jo' => Horde_Nls_Translation::t("Jordan"),
+    'jp' => Horde_Nls_Translation::t("Japan"),
+    'ke' => Horde_Nls_Translation::t("Kenya"),
+    'kg' => Horde_Nls_Translation::t("Kyrgyzstan"),
+    'kh' => Horde_Nls_Translation::t("Cambodia"),
+    'ki' => Horde_Nls_Translation::t("Kiribati"),
+    'km' => Horde_Nls_Translation::t("Comoros"),
+    'kn' => Horde_Nls_Translation::t("Saint Kitts and Nevis"),
+    'kp' => Horde_Nls_Translation::t("Korea, Democratic People's Republic of"),
+    'kr' => Horde_Nls_Translation::t("Korea, Republic of"),
+    'kw' => Horde_Nls_Translation::t("Kuwait"),
+    'ky' => Horde_Nls_Translation::t("Cayman Islands"),
+    'kz' => Horde_Nls_Translation::t("Kazakhstan"),
+    'la' => Horde_Nls_Translation::t("Lao People's Democratic Republic"),
+    'lb' => Horde_Nls_Translation::t("Lebanon"),
+    'lc' => Horde_Nls_Translation::t("Saint Lucia"),
+    'li' => Horde_Nls_Translation::t("Liechtenstein"),
+    'lk' => Horde_Nls_Translation::t("Sri Lanka"),
+    'lr' => Horde_Nls_Translation::t("Liberia"),
+    'ls' => Horde_Nls_Translation::t("Lesotho"),
+    'lt' => Horde_Nls_Translation::t("Lithuania"),
+    'lu' => Horde_Nls_Translation::t("Luxembourg"),
+    'lv' => Horde_Nls_Translation::t("Latvia"),
+    'ly' => Horde_Nls_Translation::t("Libyan Arab Jamahiriya"),
+    'ma' => Horde_Nls_Translation::t("Morocco"),
+    'mc' => Horde_Nls_Translation::t("Monaco"),
+    'md' => Horde_Nls_Translation::t("Moldova, Republic of"),
+    'me' => Horde_Nls_Translation::t("Montenegro"),
+    'mg' => Horde_Nls_Translation::t("Madagascar"),
+    'mh' => Horde_Nls_Translation::t("Marshall Islands"),
+    'mk' => Horde_Nls_Translation::t("Macedonia, The Former Yugoslav Republic of"),
+    'ml' => Horde_Nls_Translation::t("Mali"),
+    'mm' => Horde_Nls_Translation::t("Myanmar"),
+    'mn' => Horde_Nls_Translation::t("Mongolia"),
+    'mo' => Horde_Nls_Translation::t("Macao"),
+    'mp' => Horde_Nls_Translation::t("Northern Mariana Islands"),
+    'mq' => Horde_Nls_Translation::t("Martinique"),
+    'mr' => Horde_Nls_Translation::t("Mauritania"),
+    'ms' => Horde_Nls_Translation::t("Montserrat"),
+    'mt' => Horde_Nls_Translation::t("Malta"),
+    'mu' => Horde_Nls_Translation::t("Mauritius"),
+    'mv' => Horde_Nls_Translation::t("Maldives"),
+    'mw' => Horde_Nls_Translation::t("Malawi"),
+    'mx' => Horde_Nls_Translation::t("Mexico"),
+    'my' => Horde_Nls_Translation::t("Malaysia"),
+    'mz' => Horde_Nls_Translation::t("Mozambique"),
+    'na' => Horde_Nls_Translation::t("Namibia"),
+    'nc' => Horde_Nls_Translation::t("New Caledonia"),
+    'ne' => Horde_Nls_Translation::t("Niger"),
+    'nf' => Horde_Nls_Translation::t("Norfolk Island"),
+    'ng' => Horde_Nls_Translation::t("Nigeria"),
+    'ni' => Horde_Nls_Translation::t("Nicaragua"),
+    'nl' => Horde_Nls_Translation::t("Netherlands"),
+    'no' => Horde_Nls_Translation::t("Norway"),
+    'np' => Horde_Nls_Translation::t("Nepal"),
+    'nr' => Horde_Nls_Translation::t("Nauru"),
+    'nu' => Horde_Nls_Translation::t("Niue"),
+    'nz' => Horde_Nls_Translation::t("New Zealand"),
+    'om' => Horde_Nls_Translation::t("Oman"),
+    'pa' => Horde_Nls_Translation::t("Panama"),
+    'pe' => Horde_Nls_Translation::t("Peru"),
+    'pf' => Horde_Nls_Translation::t("French Polynesia"),
+    'pg' => Horde_Nls_Translation::t("Papua New Guinea"),
+    'ph' => Horde_Nls_Translation::t("Philippines"),
+    'pk' => Horde_Nls_Translation::t("Pakistan"),
+    'pl' => Horde_Nls_Translation::t("Poland"),
+    'pm' => Horde_Nls_Translation::t("Saint Pierre and Miquelon"),
+    'pn' => Horde_Nls_Translation::t("Pitcairn Island"),
+    'pr' => Horde_Nls_Translation::t("Puerto Rico"),
+    'ps' => Horde_Nls_Translation::t("Palestinian Territory, Occupied"),
+    'pt' => Horde_Nls_Translation::t("Portugal"),
+    'pw' => Horde_Nls_Translation::t("Palau"),
+    'py' => Horde_Nls_Translation::t("Paraguay"),
+    'qa' => Horde_Nls_Translation::t("Qatar"),
+    're' => Horde_Nls_Translation::t("Reunion Island"),
+    'ro' => Horde_Nls_Translation::t("Romania"),
+    'rs' => Horde_Nls_Translation::t("Serbia"),
+    'ru' => Horde_Nls_Translation::t("Russian Federation"),
+    'rw' => Horde_Nls_Translation::t("Rwanda"),
+    'sa' => Horde_Nls_Translation::t("Saudi Arabia"),
+    'sb' => Horde_Nls_Translation::t("Solomon Islands"),
+    'sc' => Horde_Nls_Translation::t("Seychelles"),
+    'sd' => Horde_Nls_Translation::t("Sudan"),
+    'se' => Horde_Nls_Translation::t("Sweden"),
+    'sg' => Horde_Nls_Translation::t("Singapore"),
+    'sh' => Horde_Nls_Translation::t("Saint Helena"),
+    'si' => Horde_Nls_Translation::t("Slovenia"),
+    'sj' => Horde_Nls_Translation::t("Svalbard and Jan Mayen Islands"),
+    'sk' => Horde_Nls_Translation::t("Slovakia"),
+    'sl' => Horde_Nls_Translation::t("Sierra Leone"),
+    'sm' => Horde_Nls_Translation::t("San Marino"),
+    'sn' => Horde_Nls_Translation::t("Senegal"),
+    'so' => Horde_Nls_Translation::t("Somalia"),
+    'sr' => Horde_Nls_Translation::t("Suriname"),
+    'st' => Horde_Nls_Translation::t("Sao Tome and Principe"),
+    'su' => Horde_Nls_Translation::t("Soviet Union"),
+    'sv' => Horde_Nls_Translation::t("El Salvador"),
+    'sy' => Horde_Nls_Translation::t("Syrian Arab Republic"),
+    'sz' => Horde_Nls_Translation::t("Swaziland"),
+    'tc' => Horde_Nls_Translation::t("Turks and Caicos Islands"),
+    'td' => Horde_Nls_Translation::t("Chad"),
+    'tf' => Horde_Nls_Translation::t("French Southern Territories"),
+    'tg' => Horde_Nls_Translation::t("Togo"),
+    'th' => Horde_Nls_Translation::t("Thailand"),
+    'tj' => Horde_Nls_Translation::t("Tajikistan"),
+    'tk' => Horde_Nls_Translation::t("Tokelau"),
+    'tl' => Horde_Nls_Translation::t("Timor-Leste"),
+    'tm' => Horde_Nls_Translation::t("Turkmenistan"),
+    'tn' => Horde_Nls_Translation::t("Tunisia"),
+    'to' => Horde_Nls_Translation::t("Tonga"),
+    'tp' => Horde_Nls_Translation::t("East Timor"),
+    'tr' => Horde_Nls_Translation::t("Turkey"),
+    'tt' => Horde_Nls_Translation::t("Trinidad and Tobago"),
+    'tv' => Horde_Nls_Translation::t("Tuvalu"),
+    'tw' => Horde_Nls_Translation::t("Taiwan"),
+    'tz' => Horde_Nls_Translation::t("Tanzania, United Republic of"),
+    'ua' => Horde_Nls_Translation::t("Ukraine"),
+    'ug' => Horde_Nls_Translation::t("Uganda"),
+    'uk' => Horde_Nls_Translation::t("United Kingdom"),
+    'um' => Horde_Nls_Translation::t("United States Minor Outlying Islands"),
+    'us' => Horde_Nls_Translation::t("United States"),
+    'uy' => Horde_Nls_Translation::t("Uruguay"),
+    'uz' => Horde_Nls_Translation::t("Uzbekistan"),
+    'va' => Horde_Nls_Translation::t("Holy See (Vatican City State)"),
+    'vc' => Horde_Nls_Translation::t("Saint Vincent and the Grenadines"),
+    've' => Horde_Nls_Translation::t("Venezuela"),
+    'vg' => Horde_Nls_Translation::t("Virgin Islands, British"),
+    'vi' => Horde_Nls_Translation::t("Virgin Islands, U.S."),
+    'vn' => Horde_Nls_Translation::t("Viet Nam"),
+    'vu' => Horde_Nls_Translation::t("Vanuatu"),
+    'wf' => Horde_Nls_Translation::t("Wallis and Futuna Islands"),
+    'ws' => Horde_Nls_Translation::t("Samoa"),
+    'ye' => Horde_Nls_Translation::t("Yemen"),
+    'yt' => Horde_Nls_Translation::t("Mayotte"),
+    'yu' => Horde_Nls_Translation::t("Yugoslavia"),
+    'za' => Horde_Nls_Translation::t("South Africa"),
+    'zm' => Horde_Nls_Translation::t("Zambia"),
+    'zw' => Horde_Nls_Translation::t("Zimbabwe")
 );
diff --git a/framework/Nls/lib/Horde/Nls/Translation.php b/framework/Nls/lib/Horde/Nls/Translation.php
new file mode 100644 (file)
index 0000000..19cc8e7
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Nls
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Nls_Translation is the translation wrapper class for Horde_Nls.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Nls
+ */
+class Horde_Nls_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Nls';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Nls/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Nls';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Nls/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index e6af73b..77990d7 100644 (file)
@@ -1,14 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.4.9" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
-http://pear.php.net/dtd/tasks-1.0.xsd
-http://pear.php.net/dtd/package-2.0
-http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Nls</name>
  <channel>pear.horde.org</channel>
- <summary>This package provides Native Language Support (NLS).
- </summary>
- <description>Provide common methods for handling language data, timezones, and hostname->country lookups.
- </description>
+ <summary>This package provides Native Language Support (NLS).</summary>
+ <description>Provide common methods for handling language data, timezones, and hostname-&gt;country lookups.</description>
  <lead>
   <name>Chuck Hagenbuch</name>
   <user>chuck</user>
@@ -21,7 +16,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <email>jan@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2009-07-08</date>
+ <date>2010-10-22</date>
+ <time>19:03:06</time>
  <version>
   <release>0.1.0</release>
   <api>0.1.0</api>
@@ -31,11 +27,12 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <api>beta</api>
  </stability>
  <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
- <notes>* Eliminate dependency on horde/Browser and horde/Core.
+ <notes>
+* Eliminate dependency on horde/Browser and horde/Core.
  * Initial Horde 4 package.
  </notes>
  <contents>
-  <dir name="/">
+  <dir baseinstalldir="/" name="/">
    <dir name="lib">
     <dir name="Horde">
      <dir name="Nls">
@@ -44,10 +41,274 @@ http://pear.php.net/dtd/package-2.0.xsd">
       <file name="Countries.php" role="php" />
       <file name="Geoip.php" role="php" />
       <file name="Tld.php" role="php" />
+      <file name="Translation.php" role="php">
+       <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+      </file>
      </dir> <!-- /lib/Horde/Nls -->
      <file name="Nls.php" role="php" />
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Nls.mo" role="data" />
+      <file name="Horde_Nls.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Nls.pot" role="data" />
+   </dir> <!-- /locale -->
   </dir> <!-- / -->
  </contents>
  <dependencies>
@@ -59,6 +320,10 @@ http://pear.php.net/dtd/package-2.0.xsd">
     <min>1.5.4</min>
    </pearinstaller>
    <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
+   <package>
     <name>Util</name>
     <channel>pear.horde.org</channel>
    </package>
@@ -71,16 +336,119 @@ http://pear.php.net/dtd/package-2.0.xsd">
  </dependencies>
  <phprelease>
   <filelist>
-   <install name="lib/Horde/Nls/Carsigns.php" as="Horde/Nls/Carsigns.php" />
-   <install name="lib/Horde/Nls/Coordinates.php" as="Horde/Nls/Coordinates.php" />
-   <install name="lib/Horde/Nls/Countries.php" as="Horde/Nls/Countries.php" />
-   <install name="lib/Horde/Nls/Geoip.php" as="Horde/Nls/Geoip.php" />
-   <install name="lib/Horde/Nls/Tld.php" as="Horde/Nls/Tld.php" />
-   <install name="lib/Horde/Nls.php" as="Horde/Nls.php" />
+   <install as="Horde/Nls.php" name="lib/Horde/Nls.php" />
+   <install as="Horde/Nls/Carsigns.php" name="lib/Horde/Nls/Carsigns.php" />
+   <install as="Horde/Nls/Coordinates.php" name="lib/Horde/Nls/Coordinates.php" />
+   <install as="Horde/Nls/Countries.php" name="lib/Horde/Nls/Countries.php" />
+   <install as="Horde/Nls/Geoip.php" name="lib/Horde/Nls/Geoip.php" />
+   <install as="Horde/Nls/Tld.php" name="lib/Horde/Nls/Tld.php" />
+   <install as="Horde/Nls/Translation.php" name="lib/Horde/Nls/Translation.php" />
+   <install as="locale/Horde_Nls.pot" name="locale/Horde_Nls.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Nls.mo" name="locale/ar/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Nls.po" name="locale/ar/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Nls.mo" name="locale/bg/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Nls.po" name="locale/bg/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Nls.mo" name="locale/bs/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Nls.po" name="locale/bs/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Nls.mo" name="locale/ca/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Nls.po" name="locale/ca/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Nls.mo" name="locale/cs/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Nls.po" name="locale/cs/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Nls.mo" name="locale/da/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Nls.po" name="locale/da/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Nls.mo" name="locale/de/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Nls.po" name="locale/de/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Nls.mo" name="locale/el/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Nls.po" name="locale/el/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Nls.mo" name="locale/en/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Nls.po" name="locale/en/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Nls.mo" name="locale/es/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Nls.po" name="locale/es/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Nls.mo" name="locale/et/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Nls.po" name="locale/et/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Nls.mo" name="locale/eu/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Nls.po" name="locale/eu/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Nls.mo" name="locale/fa/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Nls.po" name="locale/fa/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Nls.mo" name="locale/fi/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Nls.po" name="locale/fi/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Nls.mo" name="locale/fr/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Nls.po" name="locale/fr/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Nls.mo" name="locale/gl/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Nls.po" name="locale/gl/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Nls.mo" name="locale/he/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Nls.po" name="locale/he/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Nls.mo" name="locale/hr/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Nls.po" name="locale/hr/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Nls.mo" name="locale/hu/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Nls.po" name="locale/hu/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Nls.mo" name="locale/id/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Nls.po" name="locale/id/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Nls.mo" name="locale/is/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Nls.po" name="locale/is/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Nls.mo" name="locale/it/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Nls.po" name="locale/it/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Nls.mo" name="locale/ja/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Nls.po" name="locale/ja/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Nls.mo" name="locale/km/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Nls.po" name="locale/km/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Nls.mo" name="locale/ko/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Nls.po" name="locale/ko/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Nls.mo" name="locale/lt/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Nls.po" name="locale/lt/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Nls.mo" name="locale/lv/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Nls.po" name="locale/lv/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Nls.mo" name="locale/mk/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Nls.po" name="locale/mk/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Nls.mo" name="locale/nb/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Nls.po" name="locale/nb/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Nls.mo" name="locale/nl/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Nls.po" name="locale/nl/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Nls.mo" name="locale/nn/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Nls.po" name="locale/nn/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Nls.mo" name="locale/pl/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Nls.po" name="locale/pl/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Nls.mo" name="locale/pt/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Nls.po" name="locale/pt/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Nls.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Nls.po" name="locale/pt_BR/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Nls.mo" name="locale/ro/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Nls.po" name="locale/ro/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Nls.mo" name="locale/ru/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Nls.po" name="locale/ru/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Nls.mo" name="locale/sk/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Nls.po" name="locale/sk/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Nls.mo" name="locale/sl/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Nls.po" name="locale/sl/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Nls.mo" name="locale/sv/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Nls.po" name="locale/sv/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Nls.mo" name="locale/tr/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Nls.po" name="locale/tr/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Nls.mo" name="locale/uk/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Nls.po" name="locale/uk/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Nls.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Nls.po" name="locale/zh_CN/LC_MESSAGES/Horde_Nls.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Nls.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Nls.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Nls.po" name="locale/zh_TW/LC_MESSAGES/Horde_Nls.po" />
   </filelist>
  </phprelease>
  <changelog>
   <release>
+   <version>
+    <release>0.0.1</release>
+    <api>0.0.1</api>
+   </version>
+   <stability>
+    <release>alpha</release>
+    <api>alpha</api>
+   </stability>
+   <date>2004-02-11</date>
+   <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
+   <notes>
+Initial packaging
+   </notes>
+  </release>
+  <release>
    <date>2006-05-08</date>
    <time>22:48:51</time>
    <version>
@@ -92,21 +460,24 @@ http://pear.php.net/dtd/package-2.0.xsd">
     <api>alpha</api>
    </stability>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Converted to package.xml 2.0 for pear.horde.org
+   <notes>
+Converted to package.xml 2.0 for pear.horde.org
    </notes>
   </release>
   <release>
    <version>
-    <release>0.0.1</release>
-    <api>0.0.1</api>
+    <release>0.1.0</release>
+    <api>0.1.0</api>
    </version>
    <stability>
-    <release>alpha</release>
-    <api>alpha</api>
+    <release>beta</release>
+    <api>beta</api>
    </stability>
-   <date>2004-02-11</date>
+   <date>2010-10-22</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Initial packaging
+   <notes>
+* Eliminate dependency on horde/Browser and horde/Core.
+ * Initial Horde 4 package.
    </notes>
   </release>
  </changelog>
index 628d930..f82b90a 100644 (file)
@@ -167,18 +167,13 @@ class Horde_Perms
      * looking it up in the applications's permission api.
      *
      * @param string $name             The permissions's name.
-     * @param Horde_Translation $dict  A translation handler implementing
-     *                                 Horde_Translation.
      *
      * @return string  The title for the permission.
      */
-    public function getTitle($name, $dict = null)
+    public function getTitle($name)
     {
         if ($name === self::ROOT) {
-            if (!$dict) {
-                $dict = new Horde_Translation_Gettext('Horde_Perms', dirname(__FILE__) . '/../../locale');
-            }
-            return $dict->t("All Permissions");
+            return Horde_Perms_Translation::t("All Permissions");
         }
 
         $levels = explode(':', $name);
@@ -509,22 +504,15 @@ class Horde_Perms
     /**
      * Returns an hash of the available permissions.
      *
-     * @param Horde_Translation $dict  A translation handler implementing
-     *                                 Horde_Translation.
-     *
      * @return array  The available permissions as a hash.
      */
-    static public function getPermsArray($dict = null)
+    static public function getPermsArray()
     {
-        if (!$dict) {
-            $dict = new Horde_Translation_Gettext('Horde_Perms', dirname(__FILE__) . '/../../locale');
-        }
-
         return array(
-            self::SHOW => $dict->t("Show"),
-            self::READ => $dict->t("Read"),
-            self::EDIT => $dict->t("Edit"),
-            self::DELETE => $dict->t("Delete")
+            self::SHOW => Horde_Perms_Translation::t("Show"),
+            self::READ => Horde_Perms_Translation::t("Read"),
+            self::EDIT => Horde_Perms_Translation::t("Edit"),
+            self::DELETE => Horde_Perms_Translation::t("Delete")
         );
     }
 
diff --git a/framework/Perms/lib/Horde/Perms/Translation.php b/framework/Perms/lib/Horde/Perms/Translation.php
new file mode 100644 (file)
index 0000000..6498eef
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Perms
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Perms_Translation is the translation wrapper class for Horde_Perms.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Perms
+ */
+class Horde_Perms_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Perms';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Perms/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Perms';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Perms/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index dc9c39d..e959129 100644 (file)
@@ -1,8 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.4.9" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
-http://pear.php.net/dtd/tasks-1.0.xsd
-http://pear.php.net/dtd/package-2.0
-http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Perms</name>
  <channel>pear.horde.org</channel>
  <extends>Horde_Perms</extends>
@@ -20,7 +17,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <email>jan@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2009-11-20</date>
+ <date>2010-10-22</date>
+ <time>19:02:59</time>
  <version>
   <release>0.2.0</release>
   <api>0.2.0</api>
@@ -30,11 +28,12 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <api>beta</api>
  </stability>
  <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
- <notes>* Eliminated horde/Core dependency.
+ <notes>
+* Eliminated horde/Core dependency.
  * Initial Horde 4 package.
  </notes>
  <contents>
-  <dir name="/">
+  <dir baseinstalldir="/" name="/">
    <dir name="lib">
     <dir name="Horde">
      <dir name="Perms">
@@ -46,10 +45,274 @@ http://pear.php.net/dtd/package-2.0.xsd">
       <file name="Exception.php" role="php" />
       <file name="Permission.php" role="php" />
       <file name="Sql.php" role="php" />
+      <file name="Translation.php" role="php">
+       <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+      </file>
      </dir> <!-- /lib/Horde/Perms -->
      <file name="Perms.php" role="php" />
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Perms.mo" role="data" />
+      <file name="Horde_Perms.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Perms.pot" role="data" />
+   </dir> <!-- /locale -->
   </dir> <!-- / -->
  </contents>
  <dependencies>
@@ -68,9 +331,10 @@ http://pear.php.net/dtd/package-2.0.xsd">
     <name>Util</name>
     <channel>pear.horde.org</channel>
    </package>
-   <extension>
-    <name>gettext</name>
-   </extension>
+   <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
   </required>
   <optional>
    <package>
@@ -85,35 +349,117 @@ http://pear.php.net/dtd/package-2.0.xsd">
  </dependencies>
  <phprelease>
   <filelist>
-   <install name="lib/Horde/Perms/Datatree.php" as="Horde/Perms/Datatree.php" />
-   <install name="lib/Horde/Perms/Exception.php" as="Horde/Perms/Exception.php" />
-   <install name="lib/Horde/Perms/Permission.php" as="Horde/Perms/Permission.php" />
-   <install name="lib/Horde/Perms/Permission/DataTreeObject.php" as="Horde/Perms/Permission/DataTreeObject.php" />
-   <install name="lib/Horde/Perms/Permission/SqlObject.php" as="Horde/Perms/Permission/SqlObject.php" />
-   <install name="lib/Horde/Perms/Sql.php" as="Horde/Perms/Sql.php" />
-   <install name="lib/Horde/Perms.php" as="Horde/Perms.php" />
+   <install as="Horde/Perms.php" name="lib/Horde/Perms.php" />
+   <install as="Horde/Perms/Datatree.php" name="lib/Horde/Perms/Datatree.php" />
+   <install as="Horde/Perms/Exception.php" name="lib/Horde/Perms/Exception.php" />
+   <install as="Horde/Perms/Permission.php" name="lib/Horde/Perms/Permission.php" />
+   <install as="Horde/Perms/Sql.php" name="lib/Horde/Perms/Sql.php" />
+   <install as="Horde/Perms/Translation.php" name="lib/Horde/Perms/Translation.php" />
+   <install as="Horde/Perms/Permission/DataTreeObject.php" name="lib/Horde/Perms/Permission/DataTreeObject.php" />
+   <install as="Horde/Perms/Permission/SqlObject.php" name="lib/Horde/Perms/Permission/SqlObject.php" />
+   <install as="locale/Horde_Perms.pot" name="locale/Horde_Perms.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Perms.mo" name="locale/ar/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Perms.po" name="locale/ar/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Perms.mo" name="locale/bg/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Perms.po" name="locale/bg/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Perms.mo" name="locale/bs/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Perms.po" name="locale/bs/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Perms.mo" name="locale/ca/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Perms.po" name="locale/ca/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Perms.mo" name="locale/cs/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Perms.po" name="locale/cs/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Perms.mo" name="locale/da/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Perms.po" name="locale/da/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Perms.mo" name="locale/de/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Perms.po" name="locale/de/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Perms.mo" name="locale/el/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Perms.po" name="locale/el/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Perms.mo" name="locale/en/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Perms.po" name="locale/en/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Perms.mo" name="locale/es/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Perms.po" name="locale/es/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Perms.mo" name="locale/et/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Perms.po" name="locale/et/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Perms.mo" name="locale/eu/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Perms.po" name="locale/eu/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Perms.mo" name="locale/fa/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Perms.po" name="locale/fa/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Perms.mo" name="locale/fi/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Perms.po" name="locale/fi/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Perms.mo" name="locale/fr/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Perms.po" name="locale/fr/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Perms.mo" name="locale/gl/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Perms.po" name="locale/gl/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Perms.mo" name="locale/he/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Perms.po" name="locale/he/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Perms.mo" name="locale/hr/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Perms.po" name="locale/hr/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Perms.mo" name="locale/hu/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Perms.po" name="locale/hu/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Perms.mo" name="locale/id/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Perms.po" name="locale/id/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Perms.mo" name="locale/is/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Perms.po" name="locale/is/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Perms.mo" name="locale/it/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Perms.po" name="locale/it/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Perms.mo" name="locale/ja/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Perms.po" name="locale/ja/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Perms.mo" name="locale/km/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Perms.po" name="locale/km/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Perms.mo" name="locale/ko/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Perms.po" name="locale/ko/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Perms.mo" name="locale/lt/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Perms.po" name="locale/lt/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Perms.mo" name="locale/lv/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Perms.po" name="locale/lv/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Perms.mo" name="locale/mk/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Perms.po" name="locale/mk/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Perms.mo" name="locale/nb/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Perms.po" name="locale/nb/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Perms.mo" name="locale/nl/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Perms.po" name="locale/nl/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Perms.mo" name="locale/nn/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Perms.po" name="locale/nn/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Perms.mo" name="locale/pl/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Perms.po" name="locale/pl/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Perms.mo" name="locale/pt/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Perms.po" name="locale/pt/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Perms.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Perms.po" name="locale/pt_BR/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Perms.mo" name="locale/ro/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Perms.po" name="locale/ro/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Perms.mo" name="locale/ru/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Perms.po" name="locale/ru/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Perms.mo" name="locale/sk/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Perms.po" name="locale/sk/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Perms.mo" name="locale/sl/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Perms.po" name="locale/sl/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Perms.mo" name="locale/sv/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Perms.po" name="locale/sv/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Perms.mo" name="locale/tr/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Perms.po" name="locale/tr/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Perms.mo" name="locale/uk/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Perms.po" name="locale/uk/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Perms.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Perms.po" name="locale/zh_CN/LC_MESSAGES/Horde_Perms.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Perms.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Perms.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Perms.po" name="locale/zh_TW/LC_MESSAGES/Horde_Perms.po" />
   </filelist>
  </phprelease>
  <changelog>
   <release>
    <version>
-    <release>0.1.0</release>
-    <api>0.1.0</api>
+    <release>0.0.1</release>
+    <api>0.0.1</api>
    </version>
    <stability>
-    <release>beta</release>
-    <api>beta</api>
+    <release>alpha</release>
+    <api>alpha</api>
    </stability>
-   <date>2008-08-20</date>
+   <date>2003-07-05</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>* Cache permissions with Horde_Cache (duck@obala.net).
-   * Fixed special permissions with more than one user or group (Bug #2058).
-   * Added a getParent() call instead of accessing the _datatree member directly. (duck@obala.net, Request #6150).
-   * Added beta SQL Permissions driver (duck@obala.net, Request #6150).
-   * Automatically expand the node of the currently open permission.
-   * Only show Add Permission icons if there are sub-permissions to add.
-   * Make sure Horde_Array is available.
-   * Handle and display errors if they occur in the Perms backend.
+   <notes>
+Initial release as a PEAR package
    </notes>
   </release>
   <release>
@@ -127,21 +473,46 @@ http://pear.php.net/dtd/package-2.0.xsd">
    </stability>
    <date>2006-05-08</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Converted to package.xml 2.0 for pear.horde.org
+   <notes>
+Converted to package.xml 2.0 for pear.horde.org
    </notes>
   </release>
   <release>
    <version>
-    <release>0.0.1</release>
-    <api>0.0.1</api>
+    <release>0.1.0</release>
+    <api>0.1.0</api>
    </version>
    <stability>
-    <release>alpha</release>
-    <api>alpha</api>
+    <release>beta</release>
+    <api>beta</api>
    </stability>
-   <date>2003-07-05</date>
+   <date>2008-08-20</date>
+   <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
+   <notes>
+* Cache permissions with Horde_Cache (duck@obala.net).
+   * Fixed special permissions with more than one user or group (Bug #2058).
+   * Added a getParent() call instead of accessing the _datatree member directly. (duck@obala.net, Request #6150).
+   * Added beta SQL Permissions driver (duck@obala.net, Request #6150).
+   * Automatically expand the node of the currently open permission.
+   * Only show Add Permission icons if there are sub-permissions to add.
+   * Make sure Horde_Array is available.
+   * Handle and display errors if they occur in the Perms backend.
+   </notes>
+  </release>
+  <release>
+   <version>
+    <release>0.2.0</release>
+    <api>0.2.0</api>
+   </version>
+   <stability>
+    <release>beta</release>
+    <api>beta</api>
+   </stability>
+   <date>2010-10-22</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Initial release as a PEAR package
+   <notes>
+* Eliminated horde/Core dependency.
+ * Initial Horde 4 package.
    </notes>
   </release>
  </changelog>
index ac3af03..0ab24ca 100644 (file)
@@ -31,13 +31,6 @@ class Horde_Prefs implements ArrayAccess
     protected $_cache;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * List of dirty prefs.
      *
      * @var array
@@ -112,8 +105,6 @@ class Horde_Prefs implements ArrayAccess
      * sizecallback - (callback) If set, called when setting a value in the
      *                backend.
      *                DEFAULT: NONE
-     * translation - (object) A translation handler implementing
-     *               Horde_Translation.
      * user - (string) The name of the user who owns this set of preferences.
      *        DEFAULT: NONE
      * </pre>
@@ -132,9 +123,6 @@ class Horde_Prefs implements ArrayAccess
         $this->_opts = array_merge($this->_opts, $opts);
 
         $this->_cache = $this->_getStorage($this->_opts['cache']);
-        $this->_dict = isset($this->_opts['translation'])
-            ? $this->_opts['translation']
-            : new Horde_Translation_Gettext('Horde_Prefs', dirname(__FILE__) . '/../../locale');
         $this->_scope = $scope;
         $this->_storage = $this->_getStorage($driver, $params);
 
index aa61fec..ef58923 100644 (file)
@@ -33,11 +33,8 @@ class Horde_Prefs_CategoryManager
     /**
      * TODO
      */
-    static public function getSelect($id, $current = null, $dict = null)
+    static public function getSelect($id, $current = null)
     {
-        if (!$dict) {
-            $dict = new Horde_Translation_Gettext('Horde_Prefs', dirname(__FILE__) . '/../../../locale');
-        }
         $categories = self::get();
         $colors = self::colors();
         $fgcolors = self::fgColors();
@@ -48,13 +45,13 @@ class Horde_Prefs_CategoryManager
         if (!in_array($current, $categories) && !empty($current)) {
             $curr_html = htmlspecialchars($current);
             $html .= '<option value="*new*' . $curr_html . '">'
-                . sprintf($dict->t("Use Current: %s"), $curr_html)
+                . sprintf(Horde_Prefs_Translation::t("Use Current: %s"), $curr_html)
                 . '</option>'
                 . '<option value="" disabled="disabled">- - - - - - - - -</option>';
         }
 
         if (!$GLOBALS['prefs']->isLocked('categories')) {
-            $html .= '<option value="*new*">' . $dict->t("New Category")
+            $html .= '<option value="*new*">' . Horde_Prefs_Translation::t("New Category")
                 . "</option>\n"
                 . '<option value="" disabled="disabled">- - - - - - - - -</option>';
         }
@@ -63,7 +60,7 @@ class Horde_Prefs_CategoryManager
         $html .= '<option value="" style="background:'
             . $colors['_unfiled_'] . ';color:' . $fgcolors['_unfiled_'] . '"'
             . (empty($current) ? ' selected="selected">' : '>')
-            . htmlspecialchars($dict->t("Unfiled")) . '</option>';
+            . htmlspecialchars(Horde_Prefs_Translation::t("Unfiled")) . '</option>';
 
         foreach ($categories as $name) {
             $name_html = htmlspecialchars($name);
@@ -80,13 +77,10 @@ class Horde_Prefs_CategoryManager
     /**
      * TODO
      */
-    static public function getJavaScript($formname, $elementname, $dict = null)
+    static public function getJavaScript($formname, $elementname)
     {
-        if (!$dict) {
-            $dict = new Horde_Translation_Gettext('Horde_Prefs', dirname(__FILE__) . '/../../../locale');
-        }
-        $prompt = addslashes($dict->t("Please type the new category name:"));
-        $error = addslashes($dict->t("You must type a new category name."));
+        $prompt = addslashes(Horde_Prefs_Translation::t("Please type the new category name:"));
+        $error = addslashes(Horde_Prefs_Translation::t("You must type a new category name."));
 
         return <<<JAVASCRIPT
 
index 9afbadb..b4ce7bf 100644 (file)
@@ -59,13 +59,6 @@ class Horde_Prefs_Identity
     protected $_prefs;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Constructor.
      *
      * @param array $params  Parameters:
@@ -85,8 +78,6 @@ class Horde_Prefs_Identity
      * prefs: (Horde_Prefs) [REQUIRED] The prefs object to use.
      * properties: (array) The list of properties for the identity.
      *             DEFAULT: array('from_addr', 'fullname', 'id')
-     * translation: (object) A translation handler implementing
-     *              Horde_Translation.
      * user: (string) [REQUIRED] The user whose prefs we are handling.
      * </pre>
      */
@@ -100,10 +91,6 @@ class Horde_Prefs_Identity
         $this->_prefs = $params['prefs'];
         $this->_user = $params['user'];
 
-        $this->_dict = isset($params['translation'])
-            ? $params['translation']
-            : new Horde_Translation_Gettext('Horde_Prefs', dirname(__FILE__) . '/../../../locale');
-
         if (!($this->_identities = @unserialize($this->_prefs->getValue($this->_prefnames['identities'], false)))) {
             $this->_identities = $this->_prefs->getDefault($this->_prefnames['identities']);
         } elseif (is_array($this->_identities)) {
@@ -124,7 +111,7 @@ class Horde_Prefs_Identity
                 $identity[$key] = $this->_prefs->getValue($key);
             }
             if (empty($identity['id'])) {
-                $identity['id'] = $this->_dict->t("Default Identity");
+                $identity['id'] = Horde_Prefs_Translation::t("Default Identity");
             }
 
             $this->_identities = array($identity);
@@ -345,7 +332,7 @@ class Horde_Prefs_Identity
         }
 
         if (!$this->getValue('id', $identity)) {
-            $this->setValue('id', $this->_dict->t("Unnamed"), $identity);
+            $this->setValue('id', Horde_Prefs_Translation::t("Unnamed"), $identity);
         }
 
         /* RFC 2822 [3.2.5] does not allow the '\' character to be used in the
diff --git a/framework/Prefs/lib/Horde/Prefs/Translation.php b/framework/Prefs/lib/Horde/Prefs/Translation.php
new file mode 100644 (file)
index 0000000..6c265d5
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Prefs
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Prefs_Translation is the translation wrapper class for Horde_Prefs.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Prefs
+ */
+class Horde_Prefs_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Prefs';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Prefs/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Prefs';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Prefs/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index 95c4cf2..2c3977a 100644 (file)
@@ -1,20 +1,17 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.4.9" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
-http://pear.php.net/dtd/tasks-1.0.xsd
-http://pear.php.net/dtd/package-2.0
-http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Prefs</name>
  <channel>pear.horde.org</channel>
  <summary>Horde Preferances API</summary>
- <description>The Horde_Prefs:: package provides a common abstracted interface into the various preferences storage mediums.  It also includes all of the functions for retrieving, storing, and checking preference values.
- </description>
+ <description>The Horde_Prefs:: package provides a common abstracted interface into the various preferences storage mediums.  It also includes all of the functions for retrieving, storing, and checking preference values.</description>
  <lead>
   <name>Chuck Hagenbuch</name>
   <user>chuck</user>
   <email>chuck@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2009-11-21</date>
+ <date>2010-10-22</date>
+ <time>19:02:57</time>
  <version>
   <release>0.1.0</release>
   <api>0.1.0</api>
@@ -24,7 +21,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <api>beta</api>
  </stability>
  <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
- <notes>* Abstract storage code into Horde_Prefs_Storage.
+ <notes>
+* Abstract storage code into Horde_Prefs_Storage.
  * Add array access API to Horde_Prefs.
  * Remove dependency on horde/Core.
  * Use Horde_Db as backend for Sql driver.
@@ -32,7 +30,7 @@ http://pear.php.net/dtd/package-2.0.xsd">
  * Initial Horde 4 package.
  </notes>
  <contents>
-  <dir name="/">
+  <dir baseinstalldir="/" name="/">
    <dir name="lib">
     <dir name="Horde">
      <dir name="Prefs">
@@ -50,10 +48,284 @@ http://pear.php.net/dtd/package-2.0.xsd">
       <file name="Exception.php" role="php" />
       <file name="Identity.php" role="php" />
       <file name="Storage.php" role="php" />
+      <file name="Translation.php" role="php">
+       <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+      </file>
      </dir> <!-- /lib/Horde/Prefs -->
      <file name="Prefs.php" role="php" />
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Prefs.mo" role="data" />
+      <file name="Horde_Prefs.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Prefs.pot" role="data" />
+   </dir> <!-- /locale -->
+   <dir name="test">
+    <dir name="Horde">
+     <dir name="Prefs">
+      <file name="bug_2838.diff" role="test" />
+      <file name="bug_2838.exp" role="test" />
+      <file name="bug_2838.log" role="test" />
+      <file name="bug_2838.out" role="test" />
+     </dir> <!-- /test/Horde/Prefs -->
+    </dir> <!-- /test/Horde -->
+   </dir> <!-- /test -->
   </dir> <!-- / -->
  </contents>
  <dependencies>
@@ -73,6 +345,10 @@ http://pear.php.net/dtd/package-2.0.xsd">
     <channel>pear.horde.org</channel>
    </package>
    <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
+   <package>
     <name>Util</name>
     <channel>pear.horde.org</channel>
    </package>
@@ -82,44 +358,131 @@ http://pear.php.net/dtd/package-2.0.xsd">
     <name>Db</name>
     <channel>pear.horde.org</channel>
    </package>
-   <extension>
-    <name>gettext</name>
-   </extension>
   </optional>
  </dependencies>
  <phprelease>
   <filelist>
-   <install name="lib/Horde/Prefs/CategoryManager.php" as="Horde/Prefs/CategoryManager.php" />
-   <install name="lib/Horde/Prefs/Exception.php" as="Horde/Prefs/Exception.php" />
-   <install name="lib/Horde/Prefs/Identity.php" as="Horde/Prefs/Identity.php" />
-   <install name="lib/Horde/Prefs/Storage/File.php" as="Horde/Prefs/Storage/File.php" />
-   <install name="lib/Horde/Prefs/Storage/Imsp.php" as="Horde/Prefs/Storage/Imsp.php" />
-   <install name="lib/Horde/Prefs/Storage/Kolab.php" as="Horde/Prefs/Storage/Kolab.php" />
-   <install name="lib/Horde/Prefs/Storage/KolabImap.php" as="Horde/Prefs/Storage/KolabImap.php" />
-   <install name="lib/Horde/Prefs/Storage/Ldap.php" as="Horde/Prefs/Storage/Ldap.php" />
-   <install name="lib/Horde/Prefs/Storage/Null.php" as="Horde/Prefs/Storage/Null.php" />
-   <install name="lib/Horde/Prefs/Storage/Session.php" as="Horde/Prefs/Storage/Session.php" />
-   <install name="lib/Horde/Prefs/Storage/Sql.php" as="Horde/Prefs/Storage/Sql.php" />
-   <install name="lib/Horde/Prefs/Storage.php" as="Horde/Prefs/Storage.php" />
-   <install name="lib/Horde/Prefs.php" as="Horde/Prefs.php" />
+   <install as="Horde/Prefs.php" name="lib/Horde/Prefs.php" />
+   <install as="Horde/Prefs/CategoryManager.php" name="lib/Horde/Prefs/CategoryManager.php" />
+   <install as="Horde/Prefs/Exception.php" name="lib/Horde/Prefs/Exception.php" />
+   <install as="Horde/Prefs/Identity.php" name="lib/Horde/Prefs/Identity.php" />
+   <install as="Horde/Prefs/Storage.php" name="lib/Horde/Prefs/Storage.php" />
+   <install as="Horde/Prefs/Translation.php" name="lib/Horde/Prefs/Translation.php" />
+   <install as="Horde/Prefs/Storage/File.php" name="lib/Horde/Prefs/Storage/File.php" />
+   <install as="Horde/Prefs/Storage/Imsp.php" name="lib/Horde/Prefs/Storage/Imsp.php" />
+   <install as="Horde/Prefs/Storage/Kolab.php" name="lib/Horde/Prefs/Storage/Kolab.php" />
+   <install as="Horde/Prefs/Storage/KolabImap.php" name="lib/Horde/Prefs/Storage/KolabImap.php" />
+   <install as="Horde/Prefs/Storage/Ldap.php" name="lib/Horde/Prefs/Storage/Ldap.php" />
+   <install as="Horde/Prefs/Storage/Null.php" name="lib/Horde/Prefs/Storage/Null.php" />
+   <install as="Horde/Prefs/Storage/Session.php" name="lib/Horde/Prefs/Storage/Session.php" />
+   <install as="Horde/Prefs/Storage/Sql.php" name="lib/Horde/Prefs/Storage/Sql.php" />
+   <install as="locale/Horde_Prefs.pot" name="locale/Horde_Prefs.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Prefs.mo" name="locale/ar/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Prefs.po" name="locale/ar/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Prefs.mo" name="locale/bg/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Prefs.po" name="locale/bg/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Prefs.mo" name="locale/bs/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Prefs.po" name="locale/bs/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Prefs.mo" name="locale/ca/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Prefs.po" name="locale/ca/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Prefs.mo" name="locale/cs/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Prefs.po" name="locale/cs/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Prefs.mo" name="locale/da/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Prefs.po" name="locale/da/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Prefs.mo" name="locale/de/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Prefs.po" name="locale/de/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Prefs.mo" name="locale/el/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Prefs.po" name="locale/el/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Prefs.mo" name="locale/en/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Prefs.po" name="locale/en/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Prefs.mo" name="locale/es/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Prefs.po" name="locale/es/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Prefs.mo" name="locale/et/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Prefs.po" name="locale/et/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Prefs.mo" name="locale/eu/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Prefs.po" name="locale/eu/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Prefs.mo" name="locale/fa/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Prefs.po" name="locale/fa/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Prefs.mo" name="locale/fi/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Prefs.po" name="locale/fi/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Prefs.mo" name="locale/fr/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Prefs.po" name="locale/fr/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Prefs.mo" name="locale/gl/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Prefs.po" name="locale/gl/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Prefs.mo" name="locale/he/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Prefs.po" name="locale/he/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Prefs.mo" name="locale/hr/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Prefs.po" name="locale/hr/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Prefs.mo" name="locale/hu/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Prefs.po" name="locale/hu/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Prefs.mo" name="locale/id/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Prefs.po" name="locale/id/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Prefs.mo" name="locale/is/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Prefs.po" name="locale/is/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Prefs.mo" name="locale/it/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Prefs.po" name="locale/it/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Prefs.mo" name="locale/ja/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Prefs.po" name="locale/ja/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Prefs.mo" name="locale/km/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Prefs.po" name="locale/km/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Prefs.mo" name="locale/ko/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Prefs.po" name="locale/ko/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Prefs.mo" name="locale/lt/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Prefs.po" name="locale/lt/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Prefs.mo" name="locale/lv/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Prefs.po" name="locale/lv/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Prefs.mo" name="locale/mk/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Prefs.po" name="locale/mk/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Prefs.mo" name="locale/nb/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Prefs.po" name="locale/nb/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Prefs.mo" name="locale/nl/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Prefs.po" name="locale/nl/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Prefs.mo" name="locale/nn/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Prefs.po" name="locale/nn/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Prefs.mo" name="locale/pl/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Prefs.po" name="locale/pl/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Prefs.mo" name="locale/pt/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Prefs.po" name="locale/pt/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Prefs.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Prefs.po" name="locale/pt_BR/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Prefs.mo" name="locale/ro/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Prefs.po" name="locale/ro/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Prefs.mo" name="locale/ru/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Prefs.po" name="locale/ru/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Prefs.mo" name="locale/sk/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Prefs.po" name="locale/sk/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Prefs.mo" name="locale/sl/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Prefs.po" name="locale/sl/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Prefs.mo" name="locale/sv/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Prefs.po" name="locale/sv/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Prefs.mo" name="locale/tr/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Prefs.po" name="locale/tr/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Prefs.mo" name="locale/uk/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Prefs.po" name="locale/uk/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Prefs.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Prefs.po" name="locale/zh_CN/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Prefs.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Prefs.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Prefs.po" name="locale/zh_TW/LC_MESSAGES/Horde_Prefs.po" />
+   <install as="Horde/Prefs/bug_2838.diff" name="test/Horde/Prefs/bug_2838.diff" />
+   <install as="Horde/Prefs/bug_2838.exp" name="test/Horde/Prefs/bug_2838.exp" />
+   <install as="Horde/Prefs/bug_2838.log" name="test/Horde/Prefs/bug_2838.log" />
+   <install as="Horde/Prefs/bug_2838.out" name="test/Horde/Prefs/bug_2838.out" />
   </filelist>
  </phprelease>
  <changelog>
   <release>
-   <date>2006-05-08</date>
-   <time>22:57:02</time>
    <version>
-    <release>0.0.3</release>
-    <api>0.0.3</api>
+    <release>0.0.1</release>
+    <api>0.0.1</api>
    </version>
    <stability>
     <release>alpha</release>
     <api>alpha</api>
    </stability>
+   <date>2003-07-05</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>* Data in postgres must be stored in a BYTEA field, not a TEXT field (Bug #8130).
-   * Converted to package.xml 2.0 for pear.horde.org
-   * Added files-based preferences backend (thomas.jarosch@intra2net.com, Request #6653)
+   <notes>
+Initial release as a PEAR package
    </notes>
   </release>
   <release>
@@ -133,22 +496,47 @@ http://pear.php.net/dtd/package-2.0.xsd">
    </stability>
    <date>2004-01-01</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>* Add failover functionality, if one of the drivers is not available will fall back to session-based preferences.
+   <notes>
+* Add failover functionality, if one of the drivers is not available will fall back to session-based preferences.
 * Add support for separate read and write DB servers for the sql driver.
    </notes>
   </release>
   <release>
+   <date>2006-05-08</date>
+   <time>22:57:02</time>
    <version>
-    <release>0.0.1</release>
-    <api>0.0.1</api>
+    <release>0.0.3</release>
+    <api>0.0.3</api>
    </version>
    <stability>
     <release>alpha</release>
     <api>alpha</api>
    </stability>
-   <date>2003-07-05</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Initial release as a PEAR package
+   <notes>
+* Data in postgres must be stored in a BYTEA field, not a TEXT field (Bug #8130).
+   * Converted to package.xml 2.0 for pear.horde.org
+   * Added files-based preferences backend (thomas.jarosch@intra2net.com, Request #6653)
+   </notes>
+  </release>
+  <release>
+   <version>
+    <release>0.1.0</release>
+    <api>0.1.0</api>
+   </version>
+   <stability>
+    <release>beta</release>
+    <api>beta</api>
+   </stability>
+   <date>2010-10-22</date>
+   <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
+   <notes>
+* Abstract storage code into Horde_Prefs_Storage.
+ * Add array access API to Horde_Prefs.
+ * Remove dependency on horde/Core.
+ * Use Horde_Db as backend for Sql driver.
+ * Moved UI code to horde/Core.
+ * Initial Horde 4 package.
    </notes>
   </release>
  </changelog>
index 166cbf6..4cac02c 100644 (file)
@@ -64,13 +64,6 @@ class Horde_Rpc
     protected $_logger;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * RPC server constructor.
      *
      * @param Horde_Controller_Request_Http  The request object
@@ -82,12 +75,6 @@ class Horde_Rpc
      */
     public function __construct($request, $params = array())
     {
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Rpc', dirname(__FILE__) . '/../../locale');
-        }
-
         // Create a stub if we don't have a useable logger.
         if (isset($params['logger'])
             && is_callable(array($params['logger'], 'log'))) {
index a73cf52..2bd1683 100644 (file)
@@ -77,8 +77,8 @@ class Horde_Rpc_Phpgw extends Horde_Rpc
         $method = str_replace('.', '/', 'phpgw.' . $method);
 
         if (!$registry->hasMethod($method)) {
-            Horde::logMessage(sprintf($this->_dict->t("Method \"%s\" is not defined"), $method), 'NOTICE');
-            return sprintf($this->_dict->t("Method \"%s\" is not defined"), $method);
+            Horde::logMessage(sprintf(Horde_Rpc_Translation::t("Method \"%s\" is not defined"), $method), 'NOTICE');
+            return sprintf(Horde_Rpc_Translation::t("Method \"%s\" is not defined"), $method);
         }
 
         // Try to resume a session
@@ -96,7 +96,7 @@ class Horde_Rpc_Phpgw extends Horde_Rpc
             Horde::logMessage("rpc call $method allowed", 'NOTICE');
             return $registry->call($method, $params);
         } else {
-            return PEAR::raiseError($this->_dict->t("You did not authenticate."), 'horde.error');
+            return PEAR::raiseError(Horde_Rpc_Translation::t("You did not authenticate."), 'horde.error');
             // return parent::authorize();
             // error 9 "access denied"
         }
@@ -155,9 +155,9 @@ class Horde_Rpc_Phpgw extends Horde_Rpc
         if (is_a($result, 'PEAR_Error')) {
             throw new Horde_Rpc_Exception($result);
         } elseif ($http->getResponseCode() != 200) {
-            throw new Horde_Rpc_Exception($this->_dict->t("Request couldn't be answered. Returned errorcode: ") . $http->getResponseCode());
+            throw new Horde_Rpc_Exception(Horde_Rpc_Translation::t("Request couldn't be answered. Returned errorcode: ") . $http->getResponseCode());
         } elseif (strpos($http->getResponseBody(), '<?xml') === false) {
-            throw new Horde_Rpc_Exception($this->_dict->t("No valid XML data returned:") . "\n" . $http->getResponseBody());
+            throw new Horde_Rpc_Exception(Horde_Rpc_Translation::t("No valid XML data returned:") . "\n" . $http->getResponseBody());
         } else {
             $response = @xmlrpc_decode(substr($http->getResponseBody(), strpos($http->getResponseBody(), '<?xml')));
             if (is_array($response) && isset($response['faultString'])) {
index 5c46ec0..d961053 100644 (file)
@@ -203,7 +203,7 @@ class Horde_Rpc_Soap_Caller {
 
         if (!empty($this->_params['allowedMethods']) &&
             !in_array($method, $this->_params['allowedMethods'])) {
-            return sprintf($this->_dict->t("Method \"%s\" is not defined"), $method);
+            return sprintf(Horde_Rpc_Translation::t("Method \"%s\" is not defined"), $method);
         }
 
         $GLOBALS['__horde_rpc_PhpSoap']['lastMethodCalled'] = $method;
@@ -211,7 +211,7 @@ class Horde_Rpc_Soap_Caller {
             !empty($params) ? $params : array();
 
         if (!$GLOBALS['registry']->hasMethod($method)) {
-            return sprintf($this->_dict->t("Method \"%s\" is not defined"), $method);
+            return sprintf(Horde_Rpc_Translation::t("Method \"%s\" is not defined"), $method);
         }
 
         return $GLOBALS['registry']->call($method, $params);
diff --git a/framework/Rpc/lib/Horde/Rpc/Translation.php b/framework/Rpc/lib/Horde/Rpc/Translation.php
new file mode 100644 (file)
index 0000000..7884520
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Rpc
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Rpc_Translation is the translation wrapper class for Horde_Rpc.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Rpc
+ */
+class Horde_Rpc_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Rpc';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Rpc/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Rpc';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Rpc/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index 42ca893..6f083fc 100644 (file)
@@ -344,7 +344,7 @@ class Horde_Rpc_Webdav extends Horde_Rpc
         $pieces = explode('/', trim($this->path, '/'), 2);
 
         if (count($pieces) != 2) {
-            Horde::logMessage(sprintf($this->_dict->t("Error deleting from path %s; must be [app]/[path]", $options['path'])), 'INFO');
+            Horde::logMessage(sprintf(Horde_Rpc_Translation::t("Error deleting from path %s; must be [app]/[path]", $options['path'])), 'INFO');
             return '403 Must supply a resource within the application to delete.';
         }
 
@@ -405,7 +405,7 @@ class Horde_Rpc_Webdav extends Horde_Rpc
         // Take the module name from the path
         $pieces = explode('/', $path, 2);
         if (count($pieces) != 2) {
-            Horde::logMessage(sprintf($this->_dict->t("Unable to create directory %s; must be [app]/[path]"), $path), 'INFO');
+            Horde::logMessage(sprintf(Horde_Rpc_Translation::t("Unable to create directory %s; must be [app]/[path]"), $path), 'INFO');
             return '403 Must specify a resource within an application.  MKCOL disallowed at top level.';
         }
 
@@ -440,7 +440,7 @@ class Horde_Rpc_Webdav extends Horde_Rpc
         // Take the module name from the path
         $sourcePieces = explode('/', $path, 2);
         if (count($sourcePieces) != 2) {
-            Horde::logMessage(sprintf($this->_dict->t("Unable to rename %s; must be [app]/[path] and within the same application."), $path), 'INFO');
+            Horde::logMessage(sprintf(Horde_Rpc_Translation::t("Unable to rename %s; must be [app]/[path] and within the same application."), $path), 'INFO');
             return '403 Must specify a resource within an application.  MOVE disallowed at top level.';
         }
 
index a734194..a40b488 100644 (file)
@@ -1,14 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.4.9" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
-http://pear.php.net/dtd/tasks-1.0.xsd
-http://pear.php.net/dtd/package-2.0
-http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Rpc</name>
  <channel>pear.horde.org</channel>
  <summary>Horde RPC API</summary>
  <description>The Horde_Rpc:: class provides a common abstracted interface to
-various remote methods of accessing Horde functionality.
- </description>
+various remote methods of accessing Horde functionality.</description>
  <lead>
   <name>Chuck Hagenbuch</name>
   <user>chuck</user>
@@ -21,8 +17,8 @@ various remote methods of accessing Horde functionality.
   <email>jan@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2006-05-08</date>
- <time>23:04:55</time>
+ <date>2010-10-22</date>
+ <time>19:02:57</time>
  <version>
   <release>0.0.2</release>
   <api>0.0.2</api>
@@ -32,28 +28,304 @@ various remote methods of accessing Horde functionality.
   <api>beta</api>
  </stability>
  <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
- <notes>Converted to package.xml 2.0 for pear.horde.org
+ <notes>
+Converted to package.xml 2.0 for pear.horde.org
  </notes>
  <contents>
-  <dir name="/">
+  <dir baseinstalldir="/" name="/">
+   <dir name="doc">
+    <dir name="examples">
+     <file name="soap.php" role="doc" />
+     <file name="soap.pl" role="doc" />
+     <file name="xmlrpc.php" role="doc" />
+     <file name="xmlrpc.pl" role="doc" />
+    </dir> <!-- /doc/examples -->
+   </dir> <!-- /doc -->
    <dir name="lib">
     <dir name="Horde">
      <dir name="Rpc">
       <dir name="Syncml">
        <file name="Wbxml.php" role="php" />
       </dir> <!-- /lib/Horde/Rpc/Syncml -->
+      <file name="ActiveSync.php" role="php" />
       <file name="Exception.php" role="php" />
       <file name="Jsonrpc.php" role="php" />
       <file name="Phpgw.php" role="php" />
       <file name="Soap.php" role="php" />
       <file name="Syncml.php" role="php" />
+      <file name="Translation.php" role="php">
+       <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+      </file>
       <file name="Webdav.php" role="php" />
       <file name="Xmlrpc.php" role="php" />
-      <file name="ActiveSync.php" role="php" />
      </dir> <!-- /lib/Horde/Rpc -->
      <file name="Rpc.php" role="php" />
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Rpc.mo" role="data" />
+      <file name="Horde_Rpc.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Rpc.pot" role="data" />
+   </dir> <!-- /locale -->
+   <dir name="test">
+    <file name="rpc-test.php" role="test" />
+   </dir> <!-- /test -->
   </dir> <!-- / -->
  </contents>
  <dependencies>
@@ -72,6 +344,10 @@ various remote methods of accessing Horde functionality.
     <name>Support</name>
     <channel>pear.horde.org</channel>
    </package>
+   <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
    <extension>
     <name>xmlrpc</name>
    </extension>
@@ -79,16 +355,126 @@ various remote methods of accessing Horde functionality.
  </dependencies>
  <phprelease>
   <filelist>
-   <install name="lib/Horde/Rpc/Exception.php" as="Horde/Rpc/Exception.php" />
-   <install name="lib/Horde/Rpc/Jsonrpc.php" as="Horde/Rpc/Jsonrpc.php" />
-   <install name="lib/Horde/Rpc/Phpgw.php" as="Horde/Rpc/Phpgw.php" />
-   <install name="lib/Horde/Rpc/Soap.php" as="Horde/Rpc/Soap.php" />
-   <install name="lib/Horde/Rpc/Syncml/Wbxml.php" as="Horde/Rpc/Syncml/Wbxml.php" />
-   <install name="lib/Horde/Rpc/Syncml.php" as="Horde/Rpc/Syncml.php" />
-   <install name="lib/Horde/Rpc/Webdav.php" as="Horde/Rpc/Webdav.php" />
-   <install name="lib/Horde/Rpc/Xmlrpc.php" as="Horde/Rpc/Xmlrpc.php" />
-   <install name="lib/Horde/Rpc/ActiveSync.php" as="Horde/Rpc/ActiveSync.php" />
-   <install name="lib/Horde/Rpc.php" as="Horde/Rpc.php" />
+   <install as="examples/soap.php" name="doc/examples/soap.php" />
+   <install as="examples/soap.pl" name="doc/examples/soap.pl" />
+   <install as="examples/xmlrpc.php" name="doc/examples/xmlrpc.php" />
+   <install as="examples/xmlrpc.pl" name="doc/examples/xmlrpc.pl" />
+   <install as="Horde/Rpc.php" name="lib/Horde/Rpc.php" />
+   <install as="Horde/Rpc/ActiveSync.php" name="lib/Horde/Rpc/ActiveSync.php" />
+   <install as="Horde/Rpc/Exception.php" name="lib/Horde/Rpc/Exception.php" />
+   <install as="Horde/Rpc/Jsonrpc.php" name="lib/Horde/Rpc/Jsonrpc.php" />
+   <install as="Horde/Rpc/Phpgw.php" name="lib/Horde/Rpc/Phpgw.php" />
+   <install as="Horde/Rpc/Soap.php" name="lib/Horde/Rpc/Soap.php" />
+   <install as="Horde/Rpc/Syncml.php" name="lib/Horde/Rpc/Syncml.php" />
+   <install as="Horde/Rpc/Translation.php" name="lib/Horde/Rpc/Translation.php" />
+   <install as="Horde/Rpc/Webdav.php" name="lib/Horde/Rpc/Webdav.php" />
+   <install as="Horde/Rpc/Xmlrpc.php" name="lib/Horde/Rpc/Xmlrpc.php" />
+   <install as="Horde/Rpc/Syncml/Wbxml.php" name="lib/Horde/Rpc/Syncml/Wbxml.php" />
+   <install as="locale/Horde_Rpc.pot" name="locale/Horde_Rpc.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Rpc.mo" name="locale/ar/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Rpc.po" name="locale/ar/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Rpc.mo" name="locale/bg/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Rpc.po" name="locale/bg/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Rpc.mo" name="locale/bs/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Rpc.po" name="locale/bs/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Rpc.mo" name="locale/ca/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Rpc.po" name="locale/ca/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Rpc.mo" name="locale/cs/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Rpc.po" name="locale/cs/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Rpc.mo" name="locale/da/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Rpc.po" name="locale/da/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Rpc.mo" name="locale/de/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Rpc.po" name="locale/de/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Rpc.mo" name="locale/el/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Rpc.po" name="locale/el/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Rpc.mo" name="locale/en/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Rpc.po" name="locale/en/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Rpc.mo" name="locale/es/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Rpc.po" name="locale/es/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Rpc.mo" name="locale/et/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Rpc.po" name="locale/et/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Rpc.mo" name="locale/eu/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Rpc.po" name="locale/eu/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Rpc.mo" name="locale/fa/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Rpc.po" name="locale/fa/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Rpc.mo" name="locale/fi/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Rpc.po" name="locale/fi/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Rpc.mo" name="locale/fr/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Rpc.po" name="locale/fr/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Rpc.mo" name="locale/gl/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Rpc.po" name="locale/gl/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Rpc.mo" name="locale/he/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Rpc.po" name="locale/he/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Rpc.mo" name="locale/hr/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Rpc.po" name="locale/hr/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Rpc.mo" name="locale/hu/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Rpc.po" name="locale/hu/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Rpc.mo" name="locale/id/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Rpc.po" name="locale/id/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Rpc.mo" name="locale/is/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Rpc.po" name="locale/is/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Rpc.mo" name="locale/it/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Rpc.po" name="locale/it/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Rpc.mo" name="locale/ja/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Rpc.po" name="locale/ja/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Rpc.mo" name="locale/km/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Rpc.po" name="locale/km/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Rpc.mo" name="locale/ko/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Rpc.po" name="locale/ko/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Rpc.mo" name="locale/lt/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Rpc.po" name="locale/lt/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Rpc.mo" name="locale/lv/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Rpc.po" name="locale/lv/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Rpc.mo" name="locale/mk/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Rpc.po" name="locale/mk/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Rpc.mo" name="locale/nb/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Rpc.po" name="locale/nb/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Rpc.mo" name="locale/nl/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Rpc.po" name="locale/nl/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Rpc.mo" name="locale/nn/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Rpc.po" name="locale/nn/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Rpc.mo" name="locale/pl/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Rpc.po" name="locale/pl/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Rpc.mo" name="locale/pt/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Rpc.po" name="locale/pt/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Rpc.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Rpc.po" name="locale/pt_BR/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Rpc.mo" name="locale/ro/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Rpc.po" name="locale/ro/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Rpc.mo" name="locale/ru/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Rpc.po" name="locale/ru/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Rpc.mo" name="locale/sk/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Rpc.po" name="locale/sk/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Rpc.mo" name="locale/sl/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Rpc.po" name="locale/sl/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Rpc.mo" name="locale/sv/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Rpc.po" name="locale/sv/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Rpc.mo" name="locale/tr/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Rpc.po" name="locale/tr/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Rpc.mo" name="locale/uk/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Rpc.po" name="locale/uk/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Rpc.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Rpc.po" name="locale/zh_CN/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Rpc.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Rpc.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Rpc.po" name="locale/zh_TW/LC_MESSAGES/Horde_Rpc.po" />
+   <install as="rpc-test.php" name="test/rpc-test.php" />
   </filelist>
  </phprelease>
+ <changelog>
+  <release>
+   <version>
+    <release>0.0.2</release>
+    <api>0.0.2</api>
+   </version>
+   <stability>
+    <release>beta</release>
+    <api>beta</api>
+   </stability>
+   <date>2010-10-22</date>
+   <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
+   <notes>
+Converted to package.xml 2.0 for pear.horde.org
+   </notes>
+  </release>
+ </changelog>
 </package>
index cd025ab..96454c4 100644 (file)
@@ -23,21 +23,14 @@ class Horde_Service_Facebook_Request
      * @param string                 $method
      * @param Horde_Http_Client      $http_client
      * @param array                  $params
-     * @param Horde_Translation      $dict  A translation handler implementing
-     *                                      Horde_Translation.
      */
     public function __construct($facebook, $method, $http_client,
-                                $params = array(), $dict = null)
+                                $params = array())
     {
         $this->_facebook = $facebook;
         $this->_http = $http_client;
         $this->_method = $method;
         $this->_params = $params;
-        if ($dict) {
-            $this->_dict = $dict;
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Service_Facebook', dirname(__FILE__) . '/../../../../locale');
-        }
     }
 
     /**
@@ -91,7 +84,7 @@ class Horde_Service_Facebook_Request
         } catch (Exception $e) {
             // Not much we can do about a client exception - rethrow it as
             // temporarily unavailable.
-            throw new Horde_Service_Facebook_Exception($this->_dict->t("Service is unavailable. Please try again later."));
+            throw new Horde_Service_Facebook_Exception(Horde_Service_Facebook_Translation::t("Service is unavailable. Please try again later."));
         }
         return $result->getBody();
     }
diff --git a/framework/Service_Facebook/lib/Horde/Service/Facebook/Translation.php b/framework/Service_Facebook/lib/Horde/Service/Facebook/Translation.php
new file mode 100644 (file)
index 0000000..2efad11
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Services_Facebook
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Services_Facebook_Translation is the translation wrapper class for Horde_Services_Facebook.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Services_Facebook
+ */
+class Horde_Services_Facebook_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Services_Facebook';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../../locale' : '@data_dir@/Services_Facebook/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Services_Facebook';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../../locale' : '@data_dir@/Services_Facebook/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index 20b8433..ac50b2b 100644 (file)
@@ -25,13 +25,11 @@ class Horde_Service_Facebook_UploadRequest extends Horde_Service_Facebook_Reques
      * @param Horde_Http_Client      $http_client
      * @param string                 $file
      * @param array                  $params
-     * @param Horde_Translation      $dict  A translation handler implementing
-     *                                      Horde_Translation.
      */
     public function __construct($facebook, $method, $http_client, $file,
-                                $params = array(), $dict = null)
+                                $params = array())
     {
-        parent::__construct($facebook, $method, $http_client, $params, $dict);
+        parent::__construct($facebook, $method, $http_client, $params);
         $this->_filename = $file;
     }
 
@@ -91,7 +89,7 @@ class Horde_Service_Facebook_UploadRequest extends Horde_Service_Facebook_Reques
                                             array('Content-Type' => $content_type,
                                                   'Content-Length' => strlen($content)));
         } catch (Exception $e) {
-            throw new Horde_Service_Facebook_Exception(sprintf($this->_dict->t("Upload failed: %s"), $e->getMessage()));
+            throw new Horde_Service_Facebook_Exception(sprintf(Horde_Service_Facebook_Translation::t("Upload failed: %s"), $e->getMessage()));
         }
 
         return $result->getBody();
index bd4f070..38ed2d0 100644 (file)
@@ -1,20 +1,17 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.4.9" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
-http://pear.php.net/dtd/tasks-1.0.xsd
-http://pear.php.net/dtd/package-2.0
-http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Service_Facebook</name>
  <channel>pear.horde.org</channel>
  <summary>Horde Facebook client</summary>
- <description>This package provides client libraries for the Facebook REST API
- </description>
+ <description>This package provides client libraries for the Facebook REST API</description>
  <lead>
   <name>Michael J. Rubinsky</name>
   <user>mrubinsk</user>
   <email>mrubinsk@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2009-02-10</date>
+ <date>2010-10-22</date>
+ <time>19:03:07</time>
  <version>
   <release>0.1.0</release>
   <api>0.1.0</api>
@@ -28,35 +25,302 @@ http://pear.php.net/dtd/package-2.0.xsd">
 * Initial release
  </notes>
  <contents>
-  <dir name="/">
+  <dir baseinstalldir="/" name="/">
+   <dir name="doc">
+    <file name="facebook_example.php" role="doc" />
+   </dir> <!-- /doc -->
    <dir name="lib">
     <dir name="Horde">
      <dir name="Service">
       <dir name="Facebook">
+       <file name="Auth.php" role="php" />
        <file name="Base.php" role="php" />
-       <file name="Fql.php" role="php" />
-       <file name="Friends.php" role="php" />
-       <file name="Notifications.php" role="php" />
-       <file name="Users.php" role="php" />
-       <file name="Request.php" role="php" />
-       <file name="UploadRequest.php" role="php" />
        <file name="BatchRequest.php" role="php" />
-       <file name="Auth.php" role="php" />
+       <file name="ErrorCodes.php" role="php" />
+       <file name="Events.php" role="php" />
+       <file name="Exception.php" role="php" />
        <file name="Feeds.php" role="php" />
-       <file name="Photos.php" role="php" />
+       <file name="Fql.php" role="php" />
+       <file name="Friends.php" role="php" />
        <file name="Groups.php" role="php" />
        <file name="Links.php" role="php" />
        <file name="Notes.php" role="php" />
-       <file name="Videos.php" role="php" />
-       <file name="Exception.php" role="php" />
-       <file name="ErrorCodes.php" role="php" />
+       <file name="Notifications.php" role="php" />
+       <file name="Photos.php" role="php" />
+       <file name="Request.php" role="php" />
        <file name="Streams.php" role="php" />
-       <file name="Events.php" role="php" />
+       <file name="Translation.php" role="php">
+        <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+       </file>
+       <file name="UploadRequest.php" role="php" />
+       <file name="Users.php" role="php" />
+       <file name="Videos.php" role="php" />
       </dir> <!-- /lib/Horde/Service/Facebook -->
       <file name="Facebook.php" role="php" />
      </dir> <!-- /lib/Horde/Service -->
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Facebook.mo" role="data" />
+      <file name="Horde_Service_Facebook.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Service_Facebook.pot" role="data" />
+   </dir> <!-- /locale -->
   </dir> <!-- / -->
  </contents>
  <dependencies>
@@ -71,30 +335,140 @@ http://pear.php.net/dtd/package-2.0.xsd">
     <name>Http_Client</name>
     <channel>pear.horde.org</channel>
    </package>
+   <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
   </required>
  </dependencies>
  <phprelease>
   <filelist>
-   <install name="lib/Horde/Service/Facebook/Base.php" as="Horde/Service/Facebook/Base.php" />
-   <install name="lib/Horde/Service/Facebook/Fql.php" as="Horde/Service/Facebook/Fql.php" />
-   <install name="lib/Horde/Service/Facebook/Friends.php" as="Horde/Service/Facebook/Friends.php" />
-   <install name="lib/Horde/Service/Facebook/Notifications.php" as="Horde/Service/Facebook/Notifications.php" />
-   <install name="lib/Horde/Service/Facebook/Users.php" as="Horde/Service/Facebook/Users.php" />
-   <install name="lib/Horde/Service/Facebook/Request.php" as="Horde/Service/Facebook/Request.php" />
-   <install name="lib/Horde/Service/Facebook/UploadRequest.php" as="Horde/Service/Facebook/UploadRequest.php" />
-   <install name="lib/Horde/Service/Facebook/BatchRequest.php" as="Horde/Service/Facebook/BatchRequest.php" />
-   <install name="lib/Horde/Service/Facebook/Auth.php" as="Horde/Service/Facebook/Auth.php" />
-   <install name="lib/Horde/Service/Facebook/Feeds.php" as="Horde/Service/Facebook/Feeds.php" />
-   <install name="lib/Horde/Service/Facebook/Photos.php" as="Horde/Service/Facebook/Photos.php" />
-   <install name="lib/Horde/Service/Facebook/Groups.php" as="Horde/Service/Facebook/Groups.php" />
-   <install name="lib/Horde/Service/Facebook/Links.php" as="Horde/Service/Facebook/Links.php" />
-   <install name="lib/Horde/Service/Facebook/Notes.php" as="Horde/Service/Facebook/Notes.php" />
-   <install name="lib/Horde/Service/Facebook/Videos.php" as="Horde/Service/Facebook/Videos.php" />
-   <install name="lib/Horde/Service/Facebook/Exception.php" as="Horde/Service/Facebook/Exception.php" />
-   <install name="lib/Horde/Service/Facebook/ErrorCodes.php" as="Horde/Service/Facebook/ErrorCodes.php" />
-   <install name="lib/Horde/Service/Facebook/Streams.php" as="Horde/Service/Facebook/Streams.php" />
-   <install name="lib/Horde/Service/Facebook/Events.php" as="Horde/Service/Facebook/Events.php" />
-   <install name="lib/Horde/Service/Facebook.php" as="Horde/Service/Facebook.php" />
+   <install as="facebook_example.php" name="doc/facebook_example.php" />
+   <install as="Horde/Service/Facebook.php" name="lib/Horde/Service/Facebook.php" />
+   <install as="Horde/Service/Facebook/Auth.php" name="lib/Horde/Service/Facebook/Auth.php" />
+   <install as="Horde/Service/Facebook/Base.php" name="lib/Horde/Service/Facebook/Base.php" />
+   <install as="Horde/Service/Facebook/BatchRequest.php" name="lib/Horde/Service/Facebook/BatchRequest.php" />
+   <install as="Horde/Service/Facebook/ErrorCodes.php" name="lib/Horde/Service/Facebook/ErrorCodes.php" />
+   <install as="Horde/Service/Facebook/Events.php" name="lib/Horde/Service/Facebook/Events.php" />
+   <install as="Horde/Service/Facebook/Exception.php" name="lib/Horde/Service/Facebook/Exception.php" />
+   <install as="Horde/Service/Facebook/Feeds.php" name="lib/Horde/Service/Facebook/Feeds.php" />
+   <install as="Horde/Service/Facebook/Fql.php" name="lib/Horde/Service/Facebook/Fql.php" />
+   <install as="Horde/Service/Facebook/Friends.php" name="lib/Horde/Service/Facebook/Friends.php" />
+   <install as="Horde/Service/Facebook/Groups.php" name="lib/Horde/Service/Facebook/Groups.php" />
+   <install as="Horde/Service/Facebook/Links.php" name="lib/Horde/Service/Facebook/Links.php" />
+   <install as="Horde/Service/Facebook/Notes.php" name="lib/Horde/Service/Facebook/Notes.php" />
+   <install as="Horde/Service/Facebook/Notifications.php" name="lib/Horde/Service/Facebook/Notifications.php" />
+   <install as="Horde/Service/Facebook/Photos.php" name="lib/Horde/Service/Facebook/Photos.php" />
+   <install as="Horde/Service/Facebook/Request.php" name="lib/Horde/Service/Facebook/Request.php" />
+   <install as="Horde/Service/Facebook/Streams.php" name="lib/Horde/Service/Facebook/Streams.php" />
+   <install as="Horde/Service/Facebook/Translation.php" name="lib/Horde/Service/Facebook/Translation.php" />
+   <install as="Horde/Service/Facebook/UploadRequest.php" name="lib/Horde/Service/Facebook/UploadRequest.php" />
+   <install as="Horde/Service/Facebook/Users.php" name="lib/Horde/Service/Facebook/Users.php" />
+   <install as="Horde/Service/Facebook/Videos.php" name="lib/Horde/Service/Facebook/Videos.php" />
+   <install as="locale/Horde_Service_Facebook.pot" name="locale/Horde_Service_Facebook.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/ar/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/ar/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/bg/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/bg/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/bs/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/bs/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/ca/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/ca/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/cs/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/cs/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/da/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/da/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/de/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/de/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/el/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/el/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/en/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/en/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/es/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/es/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/et/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/et/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/eu/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/eu/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/fa/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/fa/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/fi/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/fi/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/fr/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/fr/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/gl/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/gl/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/he/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/he/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/hr/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/hr/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/hu/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/hu/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/id/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/id/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/is/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/is/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/it/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/it/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/ja/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/ja/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/km/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/km/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/ko/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/ko/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/lt/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/lt/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/lv/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/lv/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/mk/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/mk/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/nb/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/nb/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/nl/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/nl/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/nn/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/nn/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/pl/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/pl/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/pt/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/pt/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/pt_BR/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/ro/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/ro/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/ru/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/ru/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/sk/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/sk/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/sl/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/sl/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/sv/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/sv/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/tr/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/tr/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/uk/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/uk/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/zh_CN/LC_MESSAGES/Horde_Service_Facebook.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Service_Facebook.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Service_Facebook.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Service_Facebook.po" name="locale/zh_TW/LC_MESSAGES/Horde_Service_Facebook.po" />
   </filelist>
  </phprelease>
+ <changelog>
+  <release>
+   <version>
+    <release>0.1.0</release>
+    <api>0.1.0</api>
+   </version>
+   <stability>
+    <release>alpha</release>
+    <api>alpha</api>
+   </stability>
+   <date>2010-10-22</date>
+   <license uri="http://opensource.org/licenses/bsd-license.php">BSD</license>
+   <notes>
+* Initial release
+   </notes>
+  </release>
+ </changelog>
 </package>
index c268bcc..ab2a644 100644 (file)
@@ -7,45 +7,13 @@ class Horde_Block_Horde_Scribd extends Horde_Block {
     var $_app = 'horde';
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_localDict;
-
-    /**
-     * Constructor.
-     *
-     * @param array|boolean $params  Any parameters the block needs. If false,
-     *                               the default parameter will be used.
-     * @param integer $row           The block row.
-     * @param integer $col           The block column.
-     * @param Horde_Translation $dict  A translation handler implementing
-     *                                 Horde_Translation.
-     */
-    public function __construct($params = array(), $row = null, $col = null,
-                                $dict = null)
-    {
-        parent::__construct($params, $row, $col, $dict);
-        if ($dict) {
-            $this->_localDict = $dict;
-        } else {
-            $this->_localDict = new Horde_Translation_Gettext('Horde_Service_Scribd', dirname(__FILE__) . '/../../../locale');
-        }
-    }
-
-    function _params()
-    {
-    }
-
-    /**
      * The title to go in this block.
      *
      * @return string   The title text.
      */
     function _title()
     {
-        return $this->_localDict->t("Scribd Documents");
+        return Horde_Service_Scribd_Translation::t("Scribd Documents");
     }
 
     /**
diff --git a/framework/Service_Scribd/lib/Horde/Service/Scribd/Translation.php b/framework/Service_Scribd/lib/Horde/Service/Scribd/Translation.php
new file mode 100644 (file)
index 0000000..02dfdd8
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Date
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Date_Translation is the translation wrapper class for Horde_Date.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Date
+ */
+class Horde_Service_Scribd_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Service_Scribd';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Service_Scribd/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Service_Scribd';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Service_Scribd/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index dcd8ec8..3e282d3 100644 (file)
@@ -1,20 +1,17 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.4.9" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
-http://pear.php.net/dtd/tasks-1.0.xsd
-http://pear.php.net/dtd/package-2.0
-http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Service_Scribd</name>
  <channel>pear.horde.org</channel>
  <summary>Horde Scribd client</summary>
- <description>This package provides client libraries for the Scribd API
- </description>
+ <description>This package provides client libraries for the Scribd API</description>
  <lead>
   <name>Chuck Hagenbuch</name>
   <user>chuck</user>
   <email>chuck@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2008-08-01</date>
+ <date>2010-10-22</date>
+ <time>19:03:10</time>
  <version>
   <release>0.1.0</release>
   <api>0.1.0</api>
@@ -28,9 +25,12 @@ http://pear.php.net/dtd/package-2.0.xsd">
 * Initial release
  </notes>
  <contents>
-  <dir name="/">
+  <dir baseinstalldir="/" name="/">
    <dir name="lib">
     <dir name="Horde">
+     <dir name="Block">
+      <file name="Scribd.php" role="php" />
+     </dir> <!-- /lib/Horde/Block -->
      <dir name="Service">
       <dir name="Scribd">
        <file name="Exception.php" role="php" />
@@ -38,11 +38,276 @@ http://pear.php.net/dtd/package-2.0.xsd">
        <file name="Response.php" role="php" />
        <file name="Result.php" role="php" />
        <file name="ResultSet.php" role="php" />
+       <file name="Translation.php" role="php">
+        <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+       </file>
       </dir> <!-- /lib/Horde/Service/Scribd -->
       <file name="Scribd.php" role="php" />
      </dir> <!-- /lib/Horde/Service -->
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Service_Scribd.mo" role="data" />
+      <file name="Horde_Service_Scribd.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Service_Scribd.pot" role="data" />
+   </dir> <!-- /locale -->
+   <file name="test.php" role="php" />
   </dir> <!-- / -->
  </contents>
  <dependencies>
@@ -58,6 +323,10 @@ http://pear.php.net/dtd/package-2.0.xsd">
     <channel>pear.horde.org</channel>
    </package>
    <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
+   <package>
     <name>Xml_Element</name>
     <channel>pear.horde.org</channel>
    </package>
@@ -65,12 +334,118 @@ http://pear.php.net/dtd/package-2.0.xsd">
  </dependencies>
  <phprelease>
   <filelist>
-   <install name="lib/Horde/Service/Scribd/Exception.php" as="Horde/Service/Scribd/Exception.php" />
-   <install name="lib/Horde/Service/Scribd/Request.php" as="Horde/Service/Scribd/Request.php" />
-   <install name="lib/Horde/Service/Scribd/Response.php" as="Horde/Service/Scribd/Response.php" />
-   <install name="lib/Horde/Service/Scribd/Result.php" as="Horde/Service/Scribd/Result.php" />
-   <install name="lib/Horde/Service/Scribd/ResultSet.php" as="Horde/Service/Scribd/ResultSet.php" />
-   <install name="lib/Horde/Service/Scribd.php" as="Horde/Service/Scribd.php" />
+   <install as="Horde/Block/Scribd.php" name="lib/Horde/Block/Scribd.php" />
+   <install as="Horde/Service/Scribd.php" name="lib/Horde/Service/Scribd.php" />
+   <install as="Horde/Service/Scribd/Exception.php" name="lib/Horde/Service/Scribd/Exception.php" />
+   <install as="Horde/Service/Scribd/Request.php" name="lib/Horde/Service/Scribd/Request.php" />
+   <install as="Horde/Service/Scribd/Response.php" name="lib/Horde/Service/Scribd/Response.php" />
+   <install as="Horde/Service/Scribd/Result.php" name="lib/Horde/Service/Scribd/Result.php" />
+   <install as="Horde/Service/Scribd/ResultSet.php" name="lib/Horde/Service/Scribd/ResultSet.php" />
+   <install as="Horde/Service/Scribd/Translation.php" name="lib/Horde/Service/Scribd/Translation.php" />
+   <install as="locale/Horde_Service_Scribd.pot" name="locale/Horde_Service_Scribd.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/ar/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/ar/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/bg/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/bg/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/bs/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/bs/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/ca/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/ca/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/cs/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/cs/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/da/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/da/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/de/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/de/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/el/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/el/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/en/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/en/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/es/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/es/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/et/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/et/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/eu/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/eu/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/fa/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/fa/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/fi/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/fi/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/fr/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/fr/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/gl/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/gl/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/he/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/he/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/hr/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/hr/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/hu/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/hu/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/id/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/id/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/is/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/is/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/it/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/it/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/ja/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/ja/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/km/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/km/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/ko/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/ko/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/lt/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/lt/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/lv/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/lv/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/mk/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/mk/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/nb/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/nb/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/nl/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/nl/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/nn/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/nn/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/pl/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/pl/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/pt/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/pt/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/pt_BR/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/ro/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/ro/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/ru/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/ru/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/sk/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/sk/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/sl/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/sl/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/sv/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/sv/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/tr/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/tr/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/uk/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/uk/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/zh_CN/LC_MESSAGES/Horde_Service_Scribd.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Service_Scribd.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Service_Scribd.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Service_Scribd.po" name="locale/zh_TW/LC_MESSAGES/Horde_Service_Scribd.po" />
   </filelist>
  </phprelease>
+ <changelog>
+  <release>
+   <version>
+    <release>0.1.0</release>
+    <api>0.1.0</api>
+   </version>
+   <stability>
+    <release>alpha</release>
+    <api>alpha</api>
+   </stability>
+   <date>2010-10-22</date>
+   <license uri="http://opensource.org/licenses/bsd-license.php">BSD</license>
+   <notes>
+* Initial release
+   </notes>
+  </release>
+ </changelog>
 </package>
index 150e4ff..f2678e2 100644 (file)
@@ -78,28 +78,14 @@ class Horde_Share
     protected $_permsObject;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Constructor.
      *
      * @param string $app              The application that the shares belong
      *                                 to.
      * @param Horde_Perms $perms       The permissions object
-     * @param Horde_Translation $dict  A translation handler implementing
-     *                                 Horde_Translation.
      */
-    public function __construct($app, Horde_Perms $perms, $dict = null)
+    public function __construct($app, Horde_Perms $perms)
     {
-        if ($dict) {
-            $this->_dict = $dict;
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Share', dirname(__FILE__) . '/../../locale');
-        }
         $this->_app = $app;
         $this->_permsObject = $perms;
         $this->__wakeup();
index 613d39a..6ad07bd 100644 (file)
@@ -78,7 +78,7 @@ class Horde_Share_kolab extends Horde_Share
         case 'nag':
             return 'task';
         default:
-            throw new Horde_Share_Exception(sprintf($this->_dict->t("The Horde/Kolab integration engine does not support \"%s\""), $app));
+            throw new Horde_Share_Exception(sprintf(Horde_Share_Translation::t("The Horde/Kolab integration engine does not support \"%s\""), $app));
         }
     }
 
@@ -114,7 +114,7 @@ class Horde_Share_kolab extends Horde_Share
 
         /** Does the folder exist? */
         if (!$folder->exists()) {
-            throw new Horde_Share_Exception(sprintf($this->_dict->t("Share \"%s\" does not exist."), $object));
+            throw new Horde_Share_Exception(sprintf(Horde_Share_Translation::t("Share \"%s\" does not exist."), $object));
         }
 
         /** Create the object from the folder */
index f932774..c20867f 100644 (file)
@@ -45,29 +45,14 @@ class Horde_Share_Object_Kolab extends Horde_Share_Object
     private $_session;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Constructor.
      *
      * Sets the folder name.
      *
      * @param string $id  The share id.
-     * @param Horde_Translation $dict  A translation handler implementing
-     *                                 Horde_Translation.
      */
-    public function __construct($id, $type, $dict = null)
+    public function __construct($id, $type)
     {
-        if ($dict) {
-            $this->_dict = $dict;
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Share', dirname(__FILE__) . '/../../../../locale');
-        }
-
         // We actually ignore the random id string that all horde apps provide
         // as initial name and wait for a set('name', 'xyz') call. But we want
         // to know if we should create a default share.
@@ -124,17 +109,17 @@ class Horde_Share_Object_Kolab extends Horde_Share_Object
     {
         switch ($this->_type) {
         case 'contact':
-            return $this->_dict->t("Contacts");
+            return Horde_Share_Translation::t("Contacts");
         case 'note':
-            return $this->_dict->t("Notes");
+            return Horde_Share_Translation::t("Notes");
         case 'event':
-            return $this->_dict->t("Calendar");
+            return Horde_Share_Translation::t("Calendar");
         case 'task':
-            return $this->_dict->t("Tasks");
+            return Horde_Share_Translation::t("Tasks");
         case 'filter':
-            return $this->_dict->t("Filters");
+            return Horde_Share_Translation::t("Filters");
         case 'h-prefs':
-            return $this->_dict->t("Preferences");
+            return Horde_Share_Translation::t("Preferences");
         }
     }
 
@@ -150,7 +135,7 @@ class Horde_Share_Object_Kolab extends Horde_Share_Object
             $this->_folder = &$folder;
             $this->_folder_name = $folder->name;
         } else {
-           throw new Horde_Share_Exception($this->_dict->t("The share has already been initialized!"));
+           throw new Horde_Share_Exception(Horde_Share_Translation::t("The share has already been initialized!"));
         }
     }
 
@@ -370,6 +355,6 @@ class Horde_Share_Object_Kolab extends Horde_Share_Object
      */
     protected function _folderError()
     {
-        throw new Horde_Share_Exception($this->_dict->t("The Kolab share object has not been initialized yet!"));
+        throw new Horde_Share_Exception(Horde_Share_Translation::t("The Kolab share object has not been initialized yet!"));
     }
 }
index eb9b235..acccc78 100644 (file)
@@ -207,7 +207,7 @@ class Horde_Share_Sql extends Horde_Share
             Horde::logMessage($data, 'ERR');
             throw new Horde_Share_Exception($data->getMessage());
         } elseif (empty($data)) {
-            throw new Horde_Share_Exception(sprintf($this->_dict->t("Share \"%s\" does not exist."), $name));
+            throw new Horde_Share_Exception(sprintf(Horde_Share_Translation::t("Share \"%s\" does not exist."), $name));
         }
         $stmt->free();
         $results->free();
@@ -269,7 +269,7 @@ class Horde_Share_Sql extends Horde_Share
             Horde::logMessage($data, 'ERR');
             throw new Horde_Share_Exception($data->getMessage());
         } elseif (empty($data)) {
-            throw new Horde_Share_Exception(sprintf($this->_dict->t("Share ID %d does not exist."), $id));
+            throw new Horde_Share_Exception(sprintf(Horde_Share_Translation::t("Share ID %d does not exist."), $id));
         }
 
         $stmt->free();
index 8322cf5..b06f234 100644 (file)
@@ -544,7 +544,7 @@ class Horde_Share_Sql_Hierarchical extends Horde_Share_Sql
      */
     public function getShare($name)
     {
-        throw new Horde_Share_Exception($this->_dict->t("Share names are not supported in this driver"));
+        throw new Horde_Share_Exception(Horde_Share_Translation::t("Share names are not supported in this driver"));
     }
 
     /**
diff --git a/framework/Share/lib/Horde/Share/Translation.php b/framework/Share/lib/Horde/Share/Translation.php
new file mode 100644 (file)
index 0000000..85b281a
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Share
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Share_Translation is the translation wrapper class for Horde_Share.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Share
+ */
+class Horde_Share_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Share';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Share/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Share';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/Share/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index 132819c..b23dec5 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.9.0" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Horde_Share</name>
  <channel>pear.horde.org</channel>
  <summary>Horde Shared Permissions System</summary>
@@ -11,8 +11,8 @@ resources a user owns or has access to.</description>
   <email>chuck@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2010-05-17</date>
- <time>13:26:30</time>
+ <date>2010-10-22</date>
+ <time>19:03:00</time>
  <version>
   <release>0.0.4</release>
   <api>0.0.4</api>
@@ -26,7 +26,7 @@ resources a user owns or has access to.</description>
 * Converted to Horde 4 coding standards
  </notes>
  <contents>
-  <dir name="/">
+  <dir baseinstalldir="/" name="/">
    <dir name="lib">
     <dir name="Horde">
      <dir name="Share">
@@ -49,10 +49,274 @@ resources a user owns or has access to.</description>
       <file name="Kolab.php" role="php" />
       <file name="Object.php" role="php" />
       <file name="Sql.php" role="php" />
+      <file name="Translation.php" role="php">
+       <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+      </file>
      </dir> <!-- /lib/Horde/Share -->
-     <file  name="Share.php" role="php" />
+     <file name="Share.php" role="php" />
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Share.mo" role="data" />
+      <file name="Horde_Share.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Share.pot" role="data" />
+   </dir> <!-- /locale -->
    <dir name="tests">
     <dir name="Horde">
      <dir name="Share">
@@ -60,7 +324,17 @@ resources a user owns or has access to.</description>
       <file name="KolabScenarioTest.php" role="php" />
      </dir> <!-- /tests/Horde/Share -->
     </dir> <!-- /tests/Horde -->
+    <file name="kolab_createdefault.diff" role="data" />
+    <file name="kolab_createdefault.exp" role="data" />
+    <file name="kolab_createdefault.log" role="data" />
+    <file name="kolab_createdefault.out" role="data" />
+    <file name="kolab_createdefault.php" role="php" />
     <file name="kolab_createdefault.phpt" role="data" />
+    <file name="kolab_list.diff" role="data" />
+    <file name="kolab_list.exp" role="data" />
+    <file name="kolab_list.log" role="data" />
+    <file name="kolab_list.out" role="data" />
+    <file name="kolab_list.php" role="php" />
     <file name="kolab_list.phpt" role="data" />
     <file name="kolab_simple.phpt" role="data" />
    </dir> <!-- /tests -->
@@ -78,6 +352,10 @@ resources a user owns or has access to.</description>
     <name>Perms</name>
     <channel>pear.horde.org</channel>
    </package>
+   <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
   </required>
  </dependencies>
  <phprelease>
@@ -88,12 +366,100 @@ resources a user owns or has access to.</description>
    <install as="Horde/Share/Kolab.php" name="lib/Horde/Share/Kolab.php" />
    <install as="Horde/Share/Object.php" name="lib/Horde/Share/Object.php" />
    <install as="Horde/Share/Sql.php" name="lib/Horde/Share/Sql.php" />
+   <install as="Horde/Share/Translation.php" name="lib/Horde/Share/Translation.php" />
    <install as="Horde/Share/Object/Datatree.php" name="lib/Horde/Share/Object/Datatree.php" />
    <install as="Horde/Share/Object/Kolab.php" name="lib/Horde/Share/Object/Kolab.php" />
    <install as="Horde/Share/Object/Sql.php" name="lib/Horde/Share/Object/Sql.php" />
    <install as="Horde/Share/Object/Datatree/Share.php" name="lib/Horde/Share/Object/Datatree/Share.php" />
    <install as="Horde/Share/Object/Sql/Hierarchical.php" name="lib/Horde/Share/Object/Sql/Hierarchical.php" />
    <install as="Horde/Share/Sql/Hierarchical.php" name="lib/Horde/Share/Sql/Hierarchical.php" />
+   <install as="locale/Horde_Share.pot" name="locale/Horde_Share.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Share.mo" name="locale/ar/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Share.po" name="locale/ar/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Share.mo" name="locale/bg/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Share.po" name="locale/bg/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Share.mo" name="locale/bs/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Share.po" name="locale/bs/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Share.mo" name="locale/ca/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Share.po" name="locale/ca/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Share.mo" name="locale/cs/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Share.po" name="locale/cs/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Share.mo" name="locale/da/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Share.po" name="locale/da/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Share.mo" name="locale/de/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Share.po" name="locale/de/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Share.mo" name="locale/el/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Share.po" name="locale/el/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Share.mo" name="locale/en/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Share.po" name="locale/en/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Share.mo" name="locale/es/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Share.po" name="locale/es/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Share.mo" name="locale/et/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Share.po" name="locale/et/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Share.mo" name="locale/eu/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Share.po" name="locale/eu/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Share.mo" name="locale/fa/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Share.po" name="locale/fa/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Share.mo" name="locale/fi/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Share.po" name="locale/fi/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Share.mo" name="locale/fr/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Share.po" name="locale/fr/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Share.mo" name="locale/gl/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Share.po" name="locale/gl/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Share.mo" name="locale/he/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Share.po" name="locale/he/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Share.mo" name="locale/hr/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Share.po" name="locale/hr/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Share.mo" name="locale/hu/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Share.po" name="locale/hu/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Share.mo" name="locale/id/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Share.po" name="locale/id/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Share.mo" name="locale/is/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Share.po" name="locale/is/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Share.mo" name="locale/it/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Share.po" name="locale/it/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Share.mo" name="locale/ja/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Share.po" name="locale/ja/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Share.mo" name="locale/km/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Share.po" name="locale/km/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Share.mo" name="locale/ko/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Share.po" name="locale/ko/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Share.mo" name="locale/lt/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Share.po" name="locale/lt/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Share.mo" name="locale/lv/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Share.po" name="locale/lv/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Share.mo" name="locale/mk/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Share.po" name="locale/mk/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Share.mo" name="locale/nb/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Share.po" name="locale/nb/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Share.mo" name="locale/nl/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Share.po" name="locale/nl/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Share.mo" name="locale/nn/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Share.po" name="locale/nn/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Share.mo" name="locale/pl/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Share.po" name="locale/pl/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Share.mo" name="locale/pt/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Share.po" name="locale/pt/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Share.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Share.po" name="locale/pt_BR/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Share.mo" name="locale/ro/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Share.po" name="locale/ro/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Share.mo" name="locale/ru/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Share.po" name="locale/ru/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Share.mo" name="locale/sk/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Share.po" name="locale/sk/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Share.mo" name="locale/sl/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Share.po" name="locale/sl/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Share.mo" name="locale/sv/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Share.po" name="locale/sv/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Share.mo" name="locale/tr/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Share.po" name="locale/tr/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Share.mo" name="locale/uk/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Share.po" name="locale/uk/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Share.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Share.po" name="locale/zh_CN/LC_MESSAGES/Horde_Share.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Share.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Share.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Share.po" name="locale/zh_TW/LC_MESSAGES/Horde_Share.po" />
   </filelist>
  </phprelease>
  <changelog>
@@ -162,7 +528,7 @@ Initial release as a PEAR package
     <release>beta</release>
     <api>beta</api>
    </stability>
-   <date>2010-05-17</date>
+   <date>2010-10-22</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
    <notes>
 * Converted to Horde 4 coding standards
index f3a0279..f98de3d 100644 (file)
@@ -252,13 +252,6 @@ class SyncML_Backend {
     var $_backendMode;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    public $dict;
-
-    /**
      * Constructor.
      *
      * Sets up the default logging mechanism.
@@ -275,8 +268,6 @@ class SyncML_Backend {
      *                                      debug_dir.
      *                       - log_level:   Only log entries with at least
      *                                      this level. Defaults to 'INFO'.
-     *                       - 'translation': A translation handler
-     *                                        implementing Horde_Translation.
      */
     function SyncML_Backend($params)
     {
@@ -287,11 +278,6 @@ class SyncML_Backend {
         if (isset($params['log_level'])) {
             $this->_logLevel = $params['log_level'];
         }
-        if (isset($params['translation'])) {
-            $this->dict = $params['translation'];
-        } else {
-            $this->dict = new Horde_Translation_Gettext('SyncML', dirname(__FILE__) . '/../locale');
-        }
 
         $this->logMessage('Backend of class ' . get_class($this) . ' created', 'DEBUG');
      }
diff --git a/framework/SyncML/SyncML/Translation.php b/framework/SyncML/SyncML/Translation.php
new file mode 100644 (file)
index 0000000..c6d0a2d
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package SyncML
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_SyncML_Translation is the translation wrapper class for Horde_SyncML.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package SyncML
+ */
+class Horde_SyncML_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_SyncML';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../locale' : '@data_dir@/SyncML/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_SyncML';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../locale' : '@data_dir@/SyncML/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index b6cfdbc..7f98535 100644 (file)
@@ -1,13 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.4.9" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
-http://pear.php.net/dtd/tasks-1.0.xsd
-http://pear.php.net/dtd/package-2.0
-http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>SyncML</name>
  <channel>pear.horde.org</channel>
  <summary>SyncML provides an API for processing SyncML requests.</summary>
- <description>This package provides classes for implementing a SyncML server.
- </description>
+ <description>This package provides classes for implementing a SyncML server.</description>
  <lead>
   <name>Karsten Fourmont</name>
   <user>karsten</user>
@@ -20,8 +16,8 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <email>chuck@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2007-01-11</date>
- <time>13:58:57</time>
+ <date>2010-10-22</date>
+ <time>19:02:58</time>
  <version>
   <release>0.7.0</release>
   <api>0.7.0</api>
@@ -31,39 +27,303 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <api>beta</api>
  </stability>
  <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
- <notes>Make the SyncML package independant from Horde, provide a new Sql backend as a reference implementation for a backend.</notes>
+ <notes>
+Make the SyncML package independant from Horde, provide a new Sql backend as a reference implementation for a backend.
+ </notes>
  <contents>
-  <dir name="/">
+  <dir baseinstalldir="/" name="/">
    <dir name="docs">
     <file name="INSTALL.p900.txt" role="doc" />
     <file name="README.program_flow.txt" role="doc" />
     <file name="README.syncml_primer.txt" role="doc" />
     <file name="TODO" role="doc" />
    </dir> <!-- /docs -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_SyncML.mo" role="data" />
+      <file name="Horde_SyncML.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_SyncML.pot" role="data" />
+   </dir> <!-- /locale -->
    <dir name="SyncML">
+    <dir name="Backend">
+     <file name="Horde.php" role="php" />
+     <file name="Sql.php" role="php" />
+    </dir> <!-- /SyncML/Backend -->
     <dir name="Command">
      <file name="Alert.php" role="php" />
      <file name="Final.php" role="php" />
      <file name="Get.php" role="php" />
      <file name="Map.php" role="php" />
      <file name="Put.php" role="php" />
+     <file name="Replace.php" role="php" />
      <file name="Results.php" role="php" />
      <file name="Status.php" role="php" />
      <file name="Sync.php" role="php" />
-     <file name="SyncHdr.php" role="php" />
      <file name="SyncElement.php" role="php" />
+     <file name="SyncHdr.php" role="php" />
     </dir> <!-- /SyncML/Command -->
     <dir name="Device">
      <file name="Nokia.php" role="php" />
      <file name="P800.php" role="php" />
      <file name="Sync4j.php" role="php" />
-     <file name="Synthesis.php" role="php" />
      <file name="Sync4JMozilla.php" role="php" />
+     <file name="Synthesis.php" role="php" />
     </dir> <!-- /SyncML/Device -->
-    <dir name="Backend">
-     <file name="Horde.php" role="php" />
-     <file name="Sql.php" role="php" />
-    </dir> <!-- /SyncML/Backend -->
     <file name="Backend.php" role="php" />
     <file name="Command.php" role="php" />
     <file name="Constants.php" role="php" />
@@ -71,8 +331,229 @@ http://pear.php.net/dtd/package-2.0.xsd">
     <file name="DeviceInfo.php" role="php" />
     <file name="State.php" role="php" />
     <file name="Sync.php" role="php" />
+    <file name="Translation.php" role="php">
+      <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+    </file>
     <file name="XMLOutput.php" role="php" />
    </dir> <!-- /SyncML -->
+   <dir name="tests">
+    <dir name="testcase_funambol_outlook3015_calendar">
+     <file name="data.txt" role="data" />
+     <file name="syncml_client_10.xml" role="data" />
+     <file name="syncml_client_11.xml" role="data" />
+     <file name="syncml_client_12.xml" role="data" />
+     <file name="syncml_client_13.xml" role="data" />
+     <file name="syncml_client_20.xml" role="data" />
+     <file name="syncml_client_21.xml" role="data" />
+     <file name="syncml_client_22.xml" role="data" />
+     <file name="syncml_client_23.xml" role="data" />
+     <file name="syncml_client_30.xml" role="data" />
+     <file name="syncml_client_31.xml" role="data" />
+     <file name="syncml_client_32.xml" role="data" />
+     <file name="syncml_client_33.xml" role="data" />
+     <file name="syncml_client_40.xml" role="data" />
+     <file name="syncml_client_41.xml" role="data" />
+     <file name="syncml_client_42.xml" role="data" />
+     <file name="syncml_client_43.xml" role="data" />
+     <file name="syncml_client_50.xml" role="data" />
+     <file name="syncml_client_51.xml" role="data" />
+     <file name="syncml_client_52.xml" role="data" />
+     <file name="syncml_client_53.xml" role="data" />
+     <file name="syncml_log.txt" role="data" />
+     <file name="syncml_server_10.xml" role="data" />
+     <file name="syncml_server_11.xml" role="data" />
+     <file name="syncml_server_12.xml" role="data" />
+     <file name="syncml_server_13.xml" role="data" />
+     <file name="syncml_server_20.xml" role="data" />
+     <file name="syncml_server_21.xml" role="data" />
+     <file name="syncml_server_22.xml" role="data" />
+     <file name="syncml_server_23.xml" role="data" />
+     <file name="syncml_server_30.xml" role="data" />
+     <file name="syncml_server_31.xml" role="data" />
+     <file name="syncml_server_32.xml" role="data" />
+     <file name="syncml_server_33.xml" role="data" />
+     <file name="syncml_server_40.xml" role="data" />
+     <file name="syncml_server_41.xml" role="data" />
+     <file name="syncml_server_42.xml" role="data" />
+     <file name="syncml_server_43.xml" role="data" />
+     <file name="syncml_server_50.xml" role="data" />
+     <file name="syncml_server_51.xml" role="data" />
+     <file name="syncml_server_52.xml" role="data" />
+     <file name="syncml_server_53.xml" role="data" />
+    </dir> <!-- /tests/testcase_funambol_outlook3015_calendar -->
+    <dir name="testcase_P900_tasksandcalendar">
+     <file name="data.txt" role="data" />
+     <file name="devinf.txt" role="data" />
+     <file name="syncml_client_10.xml" role="data" />
+     <file name="syncml_client_11.xml" role="data" />
+     <file name="syncml_client_12.xml" role="data" />
+     <file name="syncml_client_20.xml" role="data" />
+     <file name="syncml_client_21.xml" role="data" />
+     <file name="syncml_client_22.xml" role="data" />
+     <file name="syncml_client_30.xml" role="data" />
+     <file name="syncml_client_31.xml" role="data" />
+     <file name="syncml_client_32.xml" role="data" />
+     <file name="syncml_client_40.xml" role="data" />
+     <file name="syncml_client_41.xml" role="data" />
+     <file name="syncml_client_42.xml" role="data" />
+     <file name="syncml_client_50.xml" role="data" />
+     <file name="syncml_client_51.xml" role="data" />
+     <file name="syncml_client_52.xml" role="data" />
+     <file name="syncml_client_60.xml" role="data" />
+     <file name="syncml_client_61.xml" role="data" />
+     <file name="syncml_client_62.xml" role="data" />
+     <file name="syncml_log.txt" role="data" />
+     <file name="syncml_server_10.xml" role="data" />
+     <file name="syncml_server_11.xml" role="data" />
+     <file name="syncml_server_12.xml" role="data" />
+     <file name="syncml_server_20.xml" role="data" />
+     <file name="syncml_server_21.xml" role="data" />
+     <file name="syncml_server_22.xml" role="data" />
+     <file name="syncml_server_30.xml" role="data" />
+     <file name="syncml_server_31.xml" role="data" />
+     <file name="syncml_server_32.xml" role="data" />
+     <file name="syncml_server_40.xml" role="data" />
+     <file name="syncml_server_41.xml" role="data" />
+     <file name="syncml_server_42.xml" role="data" />
+     <file name="syncml_server_50.xml" role="data" />
+     <file name="syncml_server_51.xml" role="data" />
+     <file name="syncml_server_52.xml" role="data" />
+     <file name="syncml_server_60.xml" role="data" />
+     <file name="syncml_server_61.xml" role="data" />
+     <file name="syncml_server_62.xml" role="data" />
+    </dir> <!-- /tests/testcase_P900_tasksandcalendar -->
+    <dir name="testcase_sync4j_pocketpc_calendar">
+     <file name="syncml_client_10.xml" role="data" />
+     <file name="syncml_client_11.xml" role="data" />
+     <file name="syncml_client_12.xml" role="data" />
+     <file name="syncml_client_13.xml" role="data" />
+     <file name="syncml_client_20.xml" role="data" />
+     <file name="syncml_client_21.xml" role="data" />
+     <file name="syncml_client_22.xml" role="data" />
+     <file name="syncml_client_23.xml" role="data" />
+     <file name="syncml_client_30.xml" role="data" />
+     <file name="syncml_client_31.xml" role="data" />
+     <file name="syncml_client_32.xml" role="data" />
+     <file name="syncml_client_33.xml" role="data" />
+     <file name="syncml_client_40.xml" role="data" />
+     <file name="syncml_client_41.xml" role="data" />
+     <file name="syncml_client_42.xml" role="data" />
+     <file name="syncml_client_43.xml" role="data" />
+     <file name="syncml_server_10.xml" role="data" />
+     <file name="syncml_server_11.xml" role="data" />
+     <file name="syncml_server_12.xml" role="data" />
+     <file name="syncml_server_13.xml" role="data" />
+     <file name="syncml_server_20.xml" role="data" />
+     <file name="syncml_server_21.xml" role="data" />
+     <file name="syncml_server_22.xml" role="data" />
+     <file name="syncml_server_23.xml" role="data" />
+     <file name="syncml_server_30.xml" role="data" />
+     <file name="syncml_server_31.xml" role="data" />
+     <file name="syncml_server_32.xml" role="data" />
+     <file name="syncml_server_33.xml" role="data" />
+     <file name="syncml_server_40.xml" role="data" />
+     <file name="syncml_server_41.xml" role="data" />
+     <file name="syncml_server_42.xml" role="data" />
+     <file name="syncml_server_43.xml" role="data" />
+    </dir> <!-- /tests/testcase_sync4j_pocketpc_calendar -->
+    <dir name="testcase_sync4j_pocketpc_contacts">
+     <file name="syncml_client_10.xml" role="data" />
+     <file name="syncml_client_11.xml" role="data" />
+     <file name="syncml_client_12.xml" role="data" />
+     <file name="syncml_client_13.xml" role="data" />
+     <file name="syncml_client_20.xml" role="data" />
+     <file name="syncml_client_21.xml" role="data" />
+     <file name="syncml_client_22.xml" role="data" />
+     <file name="syncml_client_23.xml" role="data" />
+     <file name="syncml_client_30.xml" role="data" />
+     <file name="syncml_client_31.xml" role="data" />
+     <file name="syncml_client_32.xml" role="data" />
+     <file name="syncml_client_33.xml" role="data" />
+     <file name="syncml_client_40.xml" role="data" />
+     <file name="syncml_client_41.xml" role="data" />
+     <file name="syncml_client_42.xml" role="data" />
+     <file name="syncml_client_43.xml" role="data" />
+     <file name="syncml_server_10.xml" role="data" />
+     <file name="syncml_server_11.xml" role="data" />
+     <file name="syncml_server_12.xml" role="data" />
+     <file name="syncml_server_13.xml" role="data" />
+     <file name="syncml_server_20.xml" role="data" />
+     <file name="syncml_server_21.xml" role="data" />
+     <file name="syncml_server_22.xml" role="data" />
+     <file name="syncml_server_23.xml" role="data" />
+     <file name="syncml_server_30.xml" role="data" />
+     <file name="syncml_server_31.xml" role="data" />
+     <file name="syncml_server_32.xml" role="data" />
+     <file name="syncml_server_33.xml" role="data" />
+     <file name="syncml_server_40.xml" role="data" />
+     <file name="syncml_server_41.xml" role="data" />
+     <file name="syncml_server_42.xml" role="data" />
+     <file name="syncml_server_43.xml" role="data" />
+    </dir> <!-- /tests/testcase_sync4j_pocketpc_contacts -->
+    <dir name="testcase_sync4j_pocketpc_notes">
+     <file name="syncml_client_10.xml" role="data" />
+     <file name="syncml_client_11.xml" role="data" />
+     <file name="syncml_client_12.xml" role="data" />
+     <file name="syncml_client_13.xml" role="data" />
+     <file name="syncml_client_20.xml" role="data" />
+     <file name="syncml_client_21.xml" role="data" />
+     <file name="syncml_client_22.xml" role="data" />
+     <file name="syncml_client_23.xml" role="data" />
+     <file name="syncml_client_30.xml" role="data" />
+     <file name="syncml_client_31.xml" role="data" />
+     <file name="syncml_client_32.xml" role="data" />
+     <file name="syncml_client_33.xml" role="data" />
+     <file name="syncml_client_40.xml" role="data" />
+     <file name="syncml_client_41.xml" role="data" />
+     <file name="syncml_client_42.xml" role="data" />
+     <file name="syncml_client_43.xml" role="data" />
+     <file name="syncml_server_10.xml" role="data" />
+     <file name="syncml_server_11.xml" role="data" />
+     <file name="syncml_server_12.xml" role="data" />
+     <file name="syncml_server_13.xml" role="data" />
+     <file name="syncml_server_20.xml" role="data" />
+     <file name="syncml_server_21.xml" role="data" />
+     <file name="syncml_server_22.xml" role="data" />
+     <file name="syncml_server_23.xml" role="data" />
+     <file name="syncml_server_30.xml" role="data" />
+     <file name="syncml_server_31.xml" role="data" />
+     <file name="syncml_server_32.xml" role="data" />
+     <file name="syncml_server_33.xml" role="data" />
+     <file name="syncml_server_40.xml" role="data" />
+     <file name="syncml_server_41.xml" role="data" />
+     <file name="syncml_server_42.xml" role="data" />
+     <file name="syncml_server_43.xml" role="data" />
+    </dir> <!-- /tests/testcase_sync4j_pocketpc_notes -->
+    <dir name="testcase_synthesis_tasks">
+     <file name="syncml_client_10.xml" role="data" />
+     <file name="syncml_client_11.xml" role="data" />
+     <file name="syncml_client_12.xml" role="data" />
+     <file name="syncml_client_20.xml" role="data" />
+     <file name="syncml_client_21.xml" role="data" />
+     <file name="syncml_client_22.xml" role="data" />
+     <file name="syncml_client_30.xml" role="data" />
+     <file name="syncml_client_31.xml" role="data" />
+     <file name="syncml_client_32.xml" role="data" />
+     <file name="syncml_client_40.xml" role="data" />
+     <file name="syncml_client_41.xml" role="data" />
+     <file name="syncml_client_42.xml" role="data" />
+     <file name="syncml_server_10.xml" role="data" />
+     <file name="syncml_server_11.xml" role="data" />
+     <file name="syncml_server_12.xml" role="data" />
+     <file name="syncml_server_20.xml" role="data" />
+     <file name="syncml_server_21.xml" role="data" />
+     <file name="syncml_server_22.xml" role="data" />
+     <file name="syncml_server_30.xml" role="data" />
+     <file name="syncml_server_31.xml" role="data" />
+     <file name="syncml_server_32.xml" role="data" />
+     <file name="syncml_server_40.xml" role="data" />
+     <file name="syncml_server_41.xml" role="data" />
+     <file name="syncml_server_42.xml" role="data" />
+    </dir> <!-- /tests/testcase_synthesis_tasks -->
+    <file name="sif.phpt" role="data" />
+    <file name="testpacket.php" role="php" />
+    <file name="testsync.php" role="php" />
+   </dir> <!-- /tests -->
    <file name="SyncML.php" role="php" />
   </dir> <!-- / -->
  </contents>
@@ -92,22 +573,117 @@ http://pear.php.net/dtd/package-2.0.xsd">
     <name>XML_WBXML</name>
     <channel>pear.horde.org</channel>
    </package>
+   <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
   </required>
  </dependencies>
- <phprelease />
+ <phprelease>
+  <filelist>
+   <install as="locale/Horde_SyncML.pot" name="locale/Horde_SyncML.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_SyncML.mo" name="locale/ar/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_SyncML.po" name="locale/ar/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_SyncML.mo" name="locale/bg/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_SyncML.po" name="locale/bg/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_SyncML.mo" name="locale/bs/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_SyncML.po" name="locale/bs/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_SyncML.mo" name="locale/ca/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_SyncML.po" name="locale/ca/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_SyncML.mo" name="locale/cs/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_SyncML.po" name="locale/cs/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_SyncML.mo" name="locale/da/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_SyncML.po" name="locale/da/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_SyncML.mo" name="locale/de/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_SyncML.po" name="locale/de/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_SyncML.mo" name="locale/el/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_SyncML.po" name="locale/el/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_SyncML.mo" name="locale/en/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_SyncML.po" name="locale/en/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_SyncML.mo" name="locale/es/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_SyncML.po" name="locale/es/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_SyncML.mo" name="locale/et/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_SyncML.po" name="locale/et/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_SyncML.mo" name="locale/eu/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_SyncML.po" name="locale/eu/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_SyncML.mo" name="locale/fa/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_SyncML.po" name="locale/fa/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_SyncML.mo" name="locale/fi/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_SyncML.po" name="locale/fi/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_SyncML.mo" name="locale/fr/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_SyncML.po" name="locale/fr/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_SyncML.mo" name="locale/gl/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_SyncML.po" name="locale/gl/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_SyncML.mo" name="locale/he/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_SyncML.po" name="locale/he/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_SyncML.mo" name="locale/hr/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_SyncML.po" name="locale/hr/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_SyncML.mo" name="locale/hu/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_SyncML.po" name="locale/hu/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_SyncML.mo" name="locale/id/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_SyncML.po" name="locale/id/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_SyncML.mo" name="locale/is/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_SyncML.po" name="locale/is/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_SyncML.mo" name="locale/it/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_SyncML.po" name="locale/it/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_SyncML.mo" name="locale/ja/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_SyncML.po" name="locale/ja/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_SyncML.mo" name="locale/km/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_SyncML.po" name="locale/km/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_SyncML.mo" name="locale/ko/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_SyncML.po" name="locale/ko/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_SyncML.mo" name="locale/lt/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_SyncML.po" name="locale/lt/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_SyncML.mo" name="locale/lv/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_SyncML.po" name="locale/lv/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_SyncML.mo" name="locale/mk/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_SyncML.po" name="locale/mk/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_SyncML.mo" name="locale/nb/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_SyncML.po" name="locale/nb/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_SyncML.mo" name="locale/nl/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_SyncML.po" name="locale/nl/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_SyncML.mo" name="locale/nn/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_SyncML.po" name="locale/nn/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_SyncML.mo" name="locale/pl/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_SyncML.po" name="locale/pl/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_SyncML.mo" name="locale/pt/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_SyncML.po" name="locale/pt/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_SyncML.mo" name="locale/pt_BR/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_SyncML.po" name="locale/pt_BR/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_SyncML.mo" name="locale/ro/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_SyncML.po" name="locale/ro/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_SyncML.mo" name="locale/ru/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_SyncML.po" name="locale/ru/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_SyncML.mo" name="locale/sk/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_SyncML.po" name="locale/sk/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_SyncML.mo" name="locale/sl/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_SyncML.po" name="locale/sl/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_SyncML.mo" name="locale/sv/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_SyncML.po" name="locale/sv/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_SyncML.mo" name="locale/tr/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_SyncML.po" name="locale/tr/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_SyncML.mo" name="locale/uk/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_SyncML.po" name="locale/uk/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_SyncML.mo" name="locale/zh_CN/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_SyncML.po" name="locale/zh_CN/LC_MESSAGES/Horde_SyncML.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_SyncML.mo" name="locale/zh_TW/LC_MESSAGES/Horde_SyncML.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_SyncML.po" name="locale/zh_TW/LC_MESSAGES/Horde_SyncML.po" />
+  </filelist>
+ </phprelease>
  <changelog>
-   <release>
+  <release>
    <version>
-    <release>0.6.0</release>
-    <api>0.6.0</api>
+    <release>0.0.1</release>
+    <api>0.0.1</api>
    </version>
    <stability>
-    <release>beta</release>
-    <api>beta</api>
+    <release>alpha</release>
+    <api>alpha</api>
    </stability>
-   <date>2006-01-01</date>
+   <date>2004-01-19</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Passes all tests of SyncML conformance suite now.
+   <notes>
+Initial implementation
    </notes>
   </release>
   <release>
@@ -121,21 +697,38 @@ http://pear.php.net/dtd/package-2.0.xsd">
    </stability>
    <date>2005-04-23</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Major update
+   <notes>
+Major update
    </notes>
   </release>
   <release>
    <version>
-    <release>0.0.1</release>
-    <api>0.0.1</api>
+    <release>0.6.0</release>
+    <api>0.6.0</api>
    </version>
    <stability>
-    <release>alpha</release>
-    <api>alpha</api>
+    <release>beta</release>
+    <api>beta</api>
    </stability>
-   <date>2004-01-19</date>
+   <date>2006-01-01</date>
+   <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
+   <notes>
+Passes all tests of SyncML conformance suite now.
+   </notes>
+  </release>
+  <release>
+   <version>
+    <release>0.7.0</release>
+    <api>0.7.0</api>
+   </version>
+   <stability>
+    <release>beta</release>
+    <api>beta</api>
+   </stability>
+   <date>2010-10-22</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Initial implementation
+   <notes>
+Make the SyncML package independant from Horde, provide a new Sql backend as a reference implementation for a backend.
    </notes>
   </release>
  </changelog>
index 0fa3870..691b011 100644 (file)
@@ -24,24 +24,12 @@ class Horde_Text_Filter_Base
     protected $_params = array();
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Constructor.
      *
      * @param array $params  Any parameters that the filter instance needs.
      */
     public function __construct($params = array())
     {
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_Text_Filter', dirname(__FILE__) . '/../../../../locale');
-        }
         $this->_params = array_merge($this->_params, $params);
     }
 
index 4b09622..e56c397 100644 (file)
@@ -120,8 +120,8 @@ class Horde_Text_Filter_Html2text extends Horde_Text_Filter_Base
 
         /* Add link list. */
         if (!empty($this->_linkList)) {
-            $text .= "\n\n" . $this->_dict->t("Links") . ":\n" .
-                str_repeat('-', Horde_String::length($this->_dict->t("Links")) + 1) . "\n";
+            $text .= "\n\n" . Horde_Text_Filter_Translation::t("Links") . ":\n" .
+                str_repeat('-', Horde_String::length(Horde_Text_Filter_Translation::t("Links")) + 1) . "\n";
             foreach ($this->_linkList as $key => $val) {
                 $text .= '[' . ($key + 1) . '] ' . $val . "\n";
             }
diff --git a/framework/Text_Filter/lib/Horde/Text/Filter/Translation.php b/framework/Text_Filter/lib/Horde/Text/Filter/Translation.php
new file mode 100644 (file)
index 0000000..e235bcc
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package Text_Filter
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_Text_Filter_Translation is the translation wrapper class for Horde_Text_Filter.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Text_Filter
+ */
+class Horde_Text_Filter_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_Text_Filter';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../../locale' : '@data_dir@/Text_Filter/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_Text_Filter';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../../locale' : '@data_dir@/Text_Filter/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index 0e6129c..ac85d3d 100644 (file)
@@ -23,8 +23,8 @@
   <email>slusarz@horde.org</email>
   <active>yes</active>
  </developer>
- <date>2010-08-15</date>
- <time>15:28:59</time>
+ <date>2010-10-22</date>
+ <time>19:03:03</time>
  <version>
   <release>0.1.0</release>
   <api>0.1.0</api>
@@ -34,7 +34,8 @@
   <api>beta</api>
  </stability>
  <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
- <notes>* Html2text filter will use horde/Text_Filter, if available, to wrap text.
+ <notes>
+* Html2text filter will use horde/Text_Filter, if available, to wrap text.
  * Add callback parameter to the Html2text filter.
  * XSS filter now uses PHP DOM parser to process incoming text.
  * Remove Horde/Core dependency.
@@ -75,6 +76,9 @@
        <file name="Space2html.php" role="php" />
        <file name="Tabs2spaces.php" role="php" />
        <file name="Text2html.php" role="php" />
+       <file name="Translation.php" role="php">
+        <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+       </file>
        <file name="Words.php" role="php" />
        <file name="Xss.php" role="php" />
       </dir> <!-- /lib/Horde/Text/Filter -->
      </dir> <!-- /lib/Horde/Text -->
     </dir> <!-- /lib/Horde -->
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_Text_Filter.mo" role="data" />
+      <file name="Horde_Text_Filter.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_Text_Filter.pot" role="data" />
+   </dir> <!-- /locale -->
    <dir name="test">
     <dir name="Horde">
      <dir name="Text">
    <extension>
     <name>dom</name>
    </extension>
-   <extension>
-    <name>gettext</name>
-   </extension>
+   <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
   </optional>
  </dependencies>
  <phprelease>
    <install as="Horde/Text/Filter/Space2html.php" name="lib/Horde/Text/Filter/Space2html.php" />
    <install as="Horde/Text/Filter/Tabs2spaces.php" name="lib/Horde/Text/Filter/Tabs2spaces.php" />
    <install as="Horde/Text/Filter/Text2html.php" name="lib/Horde/Text/Filter/Text2html.php" />
+   <install as="Horde/Text/Filter/Translation.php" name="lib/Horde/Text/Filter/Translation.php" />
    <install as="Horde/Text/Filter/Words.php" name="lib/Horde/Text/Filter/Words.php" />
    <install as="Horde/Text/Filter/Xss.php" name="lib/Horde/Text/Filter/Xss.php" />
    <install as="Horde/Text/Filter/JavascriptMinify/JsMin.php" name="lib/Horde/Text/Filter/JavascriptMinify/JsMin.php" />
+   <install as="locale/Horde_Text_Filter.pot" name="locale/Horde_Text_Filter.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/ar/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_Text_Filter.po" name="locale/ar/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/bg/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_Text_Filter.po" name="locale/bg/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/bs/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_Text_Filter.po" name="locale/bs/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/ca/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_Text_Filter.po" name="locale/ca/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/cs/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_Text_Filter.po" name="locale/cs/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/da/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_Text_Filter.po" name="locale/da/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/de/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_Text_Filter.po" name="locale/de/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/el/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_Text_Filter.po" name="locale/el/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/en/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_Text_Filter.po" name="locale/en/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/es/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_Text_Filter.po" name="locale/es/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/et/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_Text_Filter.po" name="locale/et/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/eu/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_Text_Filter.po" name="locale/eu/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/fa/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_Text_Filter.po" name="locale/fa/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/fi/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_Text_Filter.po" name="locale/fi/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/fr/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_Text_Filter.po" name="locale/fr/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/gl/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_Text_Filter.po" name="locale/gl/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/he/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_Text_Filter.po" name="locale/he/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/hr/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_Text_Filter.po" name="locale/hr/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/hu/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_Text_Filter.po" name="locale/hu/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/id/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_Text_Filter.po" name="locale/id/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/is/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_Text_Filter.po" name="locale/is/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/it/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_Text_Filter.po" name="locale/it/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/ja/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_Text_Filter.po" name="locale/ja/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/km/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_Text_Filter.po" name="locale/km/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/ko/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_Text_Filter.po" name="locale/ko/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/lt/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_Text_Filter.po" name="locale/lt/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/lv/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_Text_Filter.po" name="locale/lv/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/mk/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_Text_Filter.po" name="locale/mk/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/nb/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_Text_Filter.po" name="locale/nb/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/nl/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_Text_Filter.po" name="locale/nl/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/nn/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_Text_Filter.po" name="locale/nn/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/pl/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_Text_Filter.po" name="locale/pl/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/pt/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_Text_Filter.po" name="locale/pt/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/pt_BR/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_Text_Filter.po" name="locale/pt_BR/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/ro/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_Text_Filter.po" name="locale/ro/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/ru/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_Text_Filter.po" name="locale/ru/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/sk/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_Text_Filter.po" name="locale/sk/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/sl/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_Text_Filter.po" name="locale/sl/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/sv/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_Text_Filter.po" name="locale/sv/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/tr/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_Text_Filter.po" name="locale/tr/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/uk/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_Text_Filter.po" name="locale/uk/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/zh_CN/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_Text_Filter.po" name="locale/zh_CN/LC_MESSAGES/Horde_Text_Filter.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Text_Filter.mo" name="locale/zh_TW/LC_MESSAGES/Horde_Text_Filter.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_Text_Filter.po" name="locale/zh_TW/LC_MESSAGES/Horde_Text_Filter.po" />
    <install as="Horde/Text/Filter/AllTests.php" name="test/Horde/Text/Filter/AllTests.php" />
    <install as="Horde/Text/Filter/Autoload.php" name="test/Horde/Text/Filter/Autoload.php" />
    <install as="Horde/Text/Filter/EmailsTest.php" name="test/Horde/Text/Filter/EmailsTest.php" />
@@ -215,10 +569,12 @@ Initial release as a PEAR package
     <release>beta</release>
     <api>beta</api>
    </stability>
-   <date>2010-08-15</date>
+   <date>2010-10-22</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
    <notes>
-* XSS filter now uses PHP DOM parser to process incoming text.
+* Html2text filter will use horde/Text_Filter, if available, to wrap text.
+ * Add callback parameter to the Html2text filter.
+ * XSS filter now uses PHP DOM parser to process incoming text.
  * Remove Horde/Core dependency.
  * Add Horde_Text_Filter_Exception::.
  * Html2text converter now uses XML parser to generate output.
index 23e0cd5..d8fc0fd 100644 (file)
@@ -84,13 +84,6 @@ class VFS
     protected $_vfsSize = null;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Attempts to return a concrete instance based on $driver.
      *
      * @param mixed $driver  The type of concrete subclass to return. This
@@ -121,11 +114,6 @@ class VFS
      */
     public function __construct($params = array())
     {
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('Horde_VFS', dirname(__FILE__) . '/../locale');
-        }
         $this->setParams(array(
             'user' => '',
             'vfs_quotalimit' => -1,
diff --git a/framework/VFS/lib/VFS/Translation.php b/framework/VFS/lib/VFS/Translation.php
new file mode 100644 (file)
index 0000000..d533498
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package VFS
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_VFS_Translation is the translation wrapper class for Horde_VFS.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package VFS
+ */
+class Horde_VFS_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_VFS';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/VFS/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_VFS';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../../../locale' : '@data_dir@/VFS/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index fc54b42..32fb479 100644 (file)
@@ -570,10 +570,10 @@ class VFS_smb extends VFS
         foreach ($out as $line) {
             if (strpos($line, 'NT_STATUS_NO_SUCH_FILE') !== false ||
                 strpos($line, 'NT_STATUS_OBJECT_NAME_NOT_FOUND') !== false) {
-                $err = $this->_dict->t("No such file");
+                $err = Horde_VFS_Translation::t("No such file");
                 break;
             } elseif (strpos($line, 'NT_STATUS_ACCESS_DENIED') !== false) {
-                $err = $this->_dict->t("Permission Denied");
+                $err = Horde_VFS_Translation::t("Permission Denied");
                 break;
             }
         }
index 0604fc9..154f72b 100644 (file)
@@ -261,7 +261,7 @@ class VFS_sql_file extends VFS_file
 
         if (!@rename($this->_getNativePath($oldpath, $oldname), $this->_getNativePath($newpath, $newname))) {
             $this->_db->query(sprintf('UPDATE %s SET vfs_path = ?, vfs_name = ? WHERE vfs_path = ? AND vfs_name = ?', $this->_params['table']), array($oldpath, $oldname, $newpath, $newname));
-            return PEAR::raiseError($this->_dict->t("Unable to rename VFS file."));
+            return PEAR::raiseError(Horde_VFS_Translation::t("Unable to rename VFS file."));
         }
     }
 
index fa03a43..f367db2 100644 (file)
@@ -1,8 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.4.9" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
-http://pear.php.net/dtd/tasks-1.0.xsd
-http://pear.php.net/dtd/package-2.0
-http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>VFS</name>
  <channel>pear.php.net</channel>
  <summary>Virtual File System API</summary>
@@ -16,9 +13,7 @@ http://pear.php.net/dtd/package-2.0.xsd">
 * SSH2/SFTP
 * IMAP (Kolab)
 
-Reading, writing and listing of files are all supported, and there are both object-based and array-based interfaces to directory listings.
-
- </description>
+Reading, writing and listing of files are all supported, and there are both object-based and array-based interfaces to directory listings.</description>
  <lead>
   <name>Chuck Hagenbuch</name>
   <user>chagenbu</user>
@@ -31,7 +26,8 @@ Reading, writing and listing of files are all supported, and there are both obje
   <email>jan@horde.org</email>
   <active>yes</active>
  </lead>
- <date>2009-12-31</date>
+ <date>2010-10-22</date>
+ <time>19:02:59</time>
  <version>
   <release>0.4.0</release>
   <api>0.4.0</api>
@@ -41,24 +37,20 @@ Reading, writing and listing of files are all supported, and there are both obje
   <api>beta</api>
  </stability>
  <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
- <notes>* Now throws exceptions instead of returning PEAR_Errors. Package now requires PHP 5.</notes>
+ <notes>
+* Now throws exceptions instead of returning PEAR_Errors. Package now requires PHP 5.
+ </notes>
  <contents>
-  <dir name="/">
+  <dir baseinstalldir="/" name="/">
    <dir name="data">
     <dir name="VFS">
      <file name="muvfs.sql" role="data" />
+     <file name="vfs.mssql.sql" role="data" />
      <file name="vfs.oci8.sql" role="data" />
      <file name="vfs.pgsql.sql" role="data" />
      <file name="vfs.sql" role="data" />
     </dir> <!-- /data/VFS -->
    </dir> <!-- /data -->
-   <dir name="scripts">
-    <dir name="VFS">
-     <file name="vfs.php" role="script">
-      <tasks:replace from="@php_bin@" to="php_bin" type="pear-config"/>
-     </file>
-    </dir> <!-- /scripts/VFS -->
-   </dir> <!-- /scripts -->
    <dir name="lib">
     <dir name="VFS">
      <file name="Browser.php" role="php" />
@@ -75,9 +67,291 @@ Reading, writing and listing of files are all supported, and there are both obje
      <file name="sql.php" role="php" />
      <file name="sql_file.php" role="php" />
      <file name="ssh2.php" role="php" />
+     <file name="Translation.php" role="php">
+      <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+     </file>
     </dir> <!-- /lib/VFS -->
     <file name="VFS.php" role="php" />
    </dir> <!-- /lib -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS.mo" role="data" />
+      <file name="Horde_VFS.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_VFS.pot" role="data" />
+   </dir> <!-- /locale -->
+   <dir name="scripts">
+    <dir name="VFS">
+     <file name="vfs.php" role="script">
+      <tasks:replace from="@php_bin@" to="php_bin" type="pear-config" />
+     </file>
+    </dir> <!-- /scripts/VFS -->
+   </dir> <!-- /scripts -->
+   <dir name="test">
+    <dir name="VFS">
+     <dir name="fixtures">
+      <file name="samba1.txt" role="test" />
+      <file name="samba2.txt" role="test" />
+     </dir> <!-- /test/VFS/fixtures -->
+     <file name="AllTests.php" role="test" />
+     <file name="KolabTest.php" role="test" />
+     <file name="SmbTest.php" role="test" />
+    </dir> <!-- /test/VFS -->
+   </dir> <!-- /test -->
   </dir> <!-- / -->
  </contents>
  <dependencies>
@@ -92,102 +366,194 @@ Reading, writing and listing of files are all supported, and there are both obje
     <name>Log</name>
     <channel>pear.php.net</channel>
    </package>
-   <extension>
-    <name>gettext</name>
-   </extension>
+   <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
   </required>
  </dependencies>
  <phprelease>
   <filelist>
-   <install name="scripts/VFS/vfs.php" as="vfs" />
-   <install name="lib/VFS/Browser.php" as="VFS/Browser.php" />
-   <install name="lib/VFS/Exception.php" as="VFS/Exception.php" />
-   <install name="lib/VFS/file.php" as="VFS/file.php" />
-   <install name="lib/VFS/ftp.php" as="VFS/ftp.php" />
-   <install name="lib/VFS/GC.php" as="VFS/GC.php" />
-   <install name="lib/VFS/horde.php" as="VFS/horde.php" />
-   <install name="lib/VFS/ListItem.php" as="VFS/ListItem.php" />
-   <install name="lib/VFS/musql.php" as="VFS/musql.php" />
-   <install name="lib/VFS/Object.php" as="VFS/Object.php" />
-   <install name="lib/VFS/smb.php" as="VFS/smb.php" />
-   <install name="lib/VFS/sql.php" as="VFS/sql.php" />
-   <install name="lib/VFS/sql_file.php" as="VFS/sql_file.php" />
-   <install name="lib/VFS/ssh2.php" as="VFS/ssh2.php" />
-   <install name="lib/VFS.php" as="VFS.php" />
+   <install as="VFS/muvfs.sql" name="data/VFS/muvfs.sql" />
+   <install as="VFS/vfs.mssql.sql" name="data/VFS/vfs.mssql.sql" />
+   <install as="VFS/vfs.oci8.sql" name="data/VFS/vfs.oci8.sql" />
+   <install as="VFS/vfs.pgsql.sql" name="data/VFS/vfs.pgsql.sql" />
+   <install as="VFS/vfs.sql" name="data/VFS/vfs.sql" />
+   <install as="VFS.php" name="lib/VFS.php" />
+   <install as="VFS/Browser.php" name="lib/VFS/Browser.php" />
+   <install as="VFS/Exception.php" name="lib/VFS/Exception.php" />
+   <install as="VFS/file.php" name="lib/VFS/file.php" />
+   <install as="VFS/ftp.php" name="lib/VFS/ftp.php" />
+   <install as="VFS/GC.php" name="lib/VFS/GC.php" />
+   <install as="VFS/horde.php" name="lib/VFS/horde.php" />
+   <install as="VFS/kolab.php" name="lib/VFS/kolab.php" />
+   <install as="VFS/ListItem.php" name="lib/VFS/ListItem.php" />
+   <install as="VFS/musql.php" name="lib/VFS/musql.php" />
+   <install as="VFS/Object.php" name="lib/VFS/Object.php" />
+   <install as="VFS/smb.php" name="lib/VFS/smb.php" />
+   <install as="VFS/sql.php" name="lib/VFS/sql.php" />
+   <install as="VFS/sql_file.php" name="lib/VFS/sql_file.php" />
+   <install as="VFS/ssh2.php" name="lib/VFS/ssh2.php" />
+   <install as="VFS/Translation.php" name="lib/VFS/Translation.php" />
+   <install as="locale/Horde_VFS.pot" name="locale/Horde_VFS.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_VFS.mo" name="locale/ar/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_VFS.po" name="locale/ar/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_VFS.mo" name="locale/bg/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_VFS.po" name="locale/bg/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_VFS.mo" name="locale/bs/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_VFS.po" name="locale/bs/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_VFS.mo" name="locale/ca/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_VFS.po" name="locale/ca/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_VFS.mo" name="locale/cs/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_VFS.po" name="locale/cs/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_VFS.mo" name="locale/da/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_VFS.po" name="locale/da/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_VFS.mo" name="locale/de/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_VFS.po" name="locale/de/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_VFS.mo" name="locale/el/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_VFS.po" name="locale/el/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_VFS.mo" name="locale/en/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_VFS.po" name="locale/en/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_VFS.mo" name="locale/es/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_VFS.po" name="locale/es/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_VFS.mo" name="locale/et/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_VFS.po" name="locale/et/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_VFS.mo" name="locale/eu/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_VFS.po" name="locale/eu/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_VFS.mo" name="locale/fa/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_VFS.po" name="locale/fa/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_VFS.mo" name="locale/fi/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_VFS.po" name="locale/fi/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_VFS.mo" name="locale/fr/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_VFS.po" name="locale/fr/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_VFS.mo" name="locale/gl/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_VFS.po" name="locale/gl/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_VFS.mo" name="locale/he/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_VFS.po" name="locale/he/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_VFS.mo" name="locale/hr/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_VFS.po" name="locale/hr/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_VFS.mo" name="locale/hu/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_VFS.po" name="locale/hu/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_VFS.mo" name="locale/id/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_VFS.po" name="locale/id/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_VFS.mo" name="locale/is/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_VFS.po" name="locale/is/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_VFS.mo" name="locale/it/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_VFS.po" name="locale/it/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_VFS.mo" name="locale/ja/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_VFS.po" name="locale/ja/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_VFS.mo" name="locale/km/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_VFS.po" name="locale/km/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_VFS.mo" name="locale/ko/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_VFS.po" name="locale/ko/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_VFS.mo" name="locale/lt/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_VFS.po" name="locale/lt/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_VFS.mo" name="locale/lv/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_VFS.po" name="locale/lv/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_VFS.mo" name="locale/mk/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_VFS.po" name="locale/mk/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_VFS.mo" name="locale/nb/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_VFS.po" name="locale/nb/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_VFS.mo" name="locale/nl/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_VFS.po" name="locale/nl/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_VFS.mo" name="locale/nn/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_VFS.po" name="locale/nn/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_VFS.mo" name="locale/pl/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_VFS.po" name="locale/pl/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_VFS.mo" name="locale/pt/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_VFS.po" name="locale/pt/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_VFS.mo" name="locale/pt_BR/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_VFS.po" name="locale/pt_BR/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_VFS.mo" name="locale/ro/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_VFS.po" name="locale/ro/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_VFS.mo" name="locale/ru/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_VFS.po" name="locale/ru/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_VFS.mo" name="locale/sk/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_VFS.po" name="locale/sk/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_VFS.mo" name="locale/sl/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_VFS.po" name="locale/sl/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_VFS.mo" name="locale/sv/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_VFS.po" name="locale/sv/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_VFS.mo" name="locale/tr/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_VFS.po" name="locale/tr/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_VFS.mo" name="locale/uk/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_VFS.po" name="locale/uk/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_VFS.mo" name="locale/zh_CN/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_VFS.po" name="locale/zh_CN/LC_MESSAGES/Horde_VFS.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_VFS.mo" name="locale/zh_TW/LC_MESSAGES/Horde_VFS.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_VFS.po" name="locale/zh_TW/LC_MESSAGES/Horde_VFS.po" />
+   <install as="VFS/AllTests.php" name="test/VFS/AllTests.php" />
+   <install as="VFS/KolabTest.php" name="test/VFS/KolabTest.php" />
+   <install as="VFS/SmbTest.php" name="test/VFS/SmbTest.php" />
+   <install as="VFS/fixtures/samba1.txt" name="test/VFS/fixtures/samba1.txt" />
+   <install as="VFS/fixtures/samba2.txt" name="test/VFS/fixtures/samba2.txt" />
   </filelist>
  </phprelease>
  <changelog>
   <release>
-   <date>2009-10-15</date>
    <version>
-    <release>0.3.0</release>
-    <api>0.3.0</api>
+    <release>0.0.1</release>
+    <api>0.0.1</api>
    </version>
    <stability>
-    <release>beta</release>
-    <api>beta</api>
+    <release>alpha</release>
+    <api>alpha</api>
    </stability>
+   <date>2002-09-24</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>* Allow access to files with multiple consecutive dots in the name (valentin.vidic@carnet.hr; Horde Bug #7646).
-* Rename fixes for SMB driver (leena.heino@uta.fi, Horde Bug #7933).
-* Set LC_TIME to C for consistency in date parsing in the SSH2 backend (michael-dev@fami-braun.de, Horde Bug #6396)
-* Pass -n for numeric UIDs/GIDs in the SSH2 backend when mapping to local user ids (Horde Request #6579)
-* Fix readByteRange() (wrong method name) in SQL backend
-* Add readFile() support, with optimizations for file, ftp, ssh2, and smb backends
-* Add readStream() support to backends that can get a stream resource efficiently
-* Add delete() as a shorter name for deleteFile()
-* Add a Kolab VFS driver.
-* Use streams for file transfers in VFS_ssh2 (jives@jives.ixum.net, Horde Request #8323)
-* Check quota when copying files (Horde Bug #8643).</notes>
+   <notes>
+Initial release as a PEAR package
+   </notes>
   </release>
   <release>
    <version>
-    <release>0.2.0</release>
-    <api>0.2.0</api>
+    <release>0.0.2</release>
+    <api>0.0.2</api>
+   </version>
+   <stability>
+    <release>alpha</release>
+    <api>alpha</api>
+   </stability>
+   <date>2002-10-22</date>
+   <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
+   <notes>
+Added an ObjectVFS wrapper class, returns a ListItem on each call to listFolder, until no items are left.
+   </notes>
+  </release>
+  <release>
+   <version>
+    <release>0.0.3</release>
+    <api>0.0.3</api>
    </version>
    <stability>
     <release>beta</release>
     <api>beta</api>
    </stability>
-   <date>2008-02-16</date>
+   <date>2003-07-03</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>* Fix listing of folders with whitespace in the name using the SSH2 VFS driver (Horde Bug #6227).
-* Fix some string parsing on systems that don't have the 'en' or 'en_US' locales installed (Horde Bug #6194).
-* PHP 4.3.0+ is now required and we make unconditional use of file_get_contents().
-* Use strlen() instead of empty() to check for paths and filenames being set, to allow for potential names of 0 (zero).
-* Converted to package.xml 2.0.
-* Fix saving files in the root directory of an SQL backend.
-* Never generate paths with double slashes in them (//) (Horde Bug #5821)
-* Improve Netware FTP support (Horde Bug #5821)
-* Add read stream support to some backends (Horde Bug #5913)
-* Make the smb backend compatible with samba versions after samba-3.0.25-pre2 (felix.leimbach@gmx.net, Horde Bug #5931)</notes>
+   <notes>
+Added a class for providing garbage collection; removed all Horde dependancies.
+   </notes>
   </release>
   <release>
    <version>
-    <release>0.1.0</release>
-    <api>0.1.0</api>
+    <release>0.0.4</release>
+    <api>0.0.4</api>
    </version>
    <stability>
     <release>beta</release>
     <api>beta</api>
    </stability>
-   <date>2006-04-12</date>
+   <date>2003-09-09</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>* SQL drivers now return empty values if the particular parameter does not exist on the server (instead of &apos;-&apos;).
-* Add initial VFS quota support.
-* Fix autocreatePath() to work with directory paths that begin with the base directory.
-* Add &apos;maplocalids&apos; and &apos;timeout&apos; parameters to the FTP driver.
-* In SQL driver, allow &apos;/&apos; to indicate the base directory.
-* Fix return value of deleteFile() in File and SQLFile drivers (PEAR Bug #4425).
-* Fix listFolders() in File driver (PEAR Bug #4533).
-* Add size() and readByteRange(), with File and SQL implementations.
-* Add support for NetWare FTP server listings (Lukas Macura &lt;macura@opf.slu.cz&gt;).
-* Add support for separate read and write DB servers for the SQL driver.
-* Add copy() and move() fallback implementations for all drivers.
-* Add parameters to copy() and move() to automatically create destination directories.
-* Add SSH2/SFTP driver (Cliff Green &lt;green@umdnj.edu&gt;).
-* Let rename() automatically create the destination path.
-* Make sure copy/move doesn&apos;t result in infinite recursion (Horde Bug #3680).
+   <notes>
+* Default ftp driver to port 21.
+* Distinguish between connection and authentication errors in the ftp driver.
+* Clean up temporary files if the FTP driver wasn&apos;t able to retrieve a file.
+* Add exists() method.
+* Add emptyFolder() method.
+* Add $recursive parameter to all deleteFolder() implementations.
+* Add FTPS support.
    </notes>
   </release>
   <release>
@@ -201,7 +567,8 @@ Reading, writing and listing of files are all supported, and there are both obje
    </stability>
    <date>2005-04-07</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>* Fix typo that prevented the sql_file driver to load its parameters.
+   <notes>
+* Fix typo that prevented the sql_file driver to load its parameters.
 * PHP 5 compatibility fixes.
 * Add &apos;pasv&apos; parameter for FTP driver.
 * Add writeData() method to sql_file driver.
@@ -221,64 +588,95 @@ Reading, writing and listing of files are all supported, and there are both obje
   </release>
   <release>
    <version>
-    <release>0.0.4</release>
-    <api>0.0.4</api>
+    <release>0.1.0</release>
+    <api>0.1.0</api>
    </version>
    <stability>
     <release>beta</release>
     <api>beta</api>
    </stability>
-   <date>2003-09-09</date>
+   <date>2006-04-12</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>* Default ftp driver to port 21.
-* Distinguish between connection and authentication errors in the ftp driver.
-* Clean up temporary files if the FTP driver wasn&apos;t able to retrieve a file.
-* Add exists() method.
-* Add emptyFolder() method.
-* Add $recursive parameter to all deleteFolder() implementations.
-* Add FTPS support.
+   <notes>
+* SQL drivers now return empty values if the particular parameter does not exist on the server (instead of &apos;-&apos;).
+* Add initial VFS quota support.
+* Fix autocreatePath() to work with directory paths that begin with the base directory.
+* Add &apos;maplocalids&apos; and &apos;timeout&apos; parameters to the FTP driver.
+* In SQL driver, allow &apos;/&apos; to indicate the base directory.
+* Fix return value of deleteFile() in File and SQLFile drivers (PEAR Bug #4425).
+* Fix listFolders() in File driver (PEAR Bug #4533).
+* Add size() and readByteRange(), with File and SQL implementations.
+* Add support for NetWare FTP server listings (Lukas Macura &lt;macura@opf.slu.cz&gt;).
+* Add support for separate read and write DB servers for the SQL driver.
+* Add copy() and move() fallback implementations for all drivers.
+* Add parameters to copy() and move() to automatically create destination directories.
+* Add SSH2/SFTP driver (Cliff Green &lt;green@umdnj.edu&gt;).
+* Let rename() automatically create the destination path.
+* Make sure copy/move doesn&apos;t result in infinite recursion (Horde Bug #3680).
    </notes>
   </release>
   <release>
    <version>
-    <release>0.0.3</release>
-    <api>0.0.3</api>
+    <release>0.2.0</release>
+    <api>0.2.0</api>
    </version>
    <stability>
     <release>beta</release>
     <api>beta</api>
    </stability>
-   <date>2003-07-03</date>
+   <date>2008-02-16</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Added a class for providing garbage collection; removed all Horde dependancies.
+   <notes>
+* Fix listing of folders with whitespace in the name using the SSH2 VFS driver (Horde Bug #6227).
+* Fix some string parsing on systems that don&apos;t have the &apos;en&apos; or &apos;en_US&apos; locales installed (Horde Bug #6194).
+* PHP 4.3.0+ is now required and we make unconditional use of file_get_contents().
+* Use strlen() instead of empty() to check for paths and filenames being set, to allow for potential names of 0 (zero).
+* Converted to package.xml 2.0.
+* Fix saving files in the root directory of an SQL backend.
+* Never generate paths with double slashes in them (//) (Horde Bug #5821)
+* Improve Netware FTP support (Horde Bug #5821)
+* Add read stream support to some backends (Horde Bug #5913)
+* Make the smb backend compatible with samba versions after samba-3.0.25-pre2 (felix.leimbach@gmx.net, Horde Bug #5931)
    </notes>
   </release>
   <release>
+   <date>2009-10-15</date>
    <version>
-    <release>0.0.2</release>
-    <api>0.0.2</api>
+    <release>0.3.0</release>
+    <api>0.3.0</api>
    </version>
    <stability>
-    <release>alpha</release>
-    <api>alpha</api>
+    <release>beta</release>
+    <api>beta</api>
    </stability>
-   <date>2002-10-22</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Added an ObjectVFS wrapper class, returns a ListItem on each call to listFolder, until no items are left.
+   <notes>
+* Allow access to files with multiple consecutive dots in the name (valentin.vidic@carnet.hr; Horde Bug #7646).
+* Rename fixes for SMB driver (leena.heino@uta.fi, Horde Bug #7933).
+* Set LC_TIME to C for consistency in date parsing in the SSH2 backend (michael-dev@fami-braun.de, Horde Bug #6396)
+* Pass -n for numeric UIDs/GIDs in the SSH2 backend when mapping to local user ids (Horde Request #6579)
+* Fix readByteRange() (wrong method name) in SQL backend
+* Add readFile() support, with optimizations for file, ftp, ssh2, and smb backends
+* Add readStream() support to backends that can get a stream resource efficiently
+* Add delete() as a shorter name for deleteFile()
+* Add a Kolab VFS driver.
+* Use streams for file transfers in VFS_ssh2 (jives@jives.ixum.net, Horde Request #8323)
+* Check quota when copying files (Horde Bug #8643).
    </notes>
   </release>
   <release>
    <version>
-    <release>0.0.1</release>
-    <api>0.0.1</api>
+    <release>0.4.0</release>
+    <api>0.4.0</api>
    </version>
    <stability>
-    <release>alpha</release>
-    <api>alpha</api>
+    <release>beta</release>
+    <api>beta</api>
    </stability>
-   <date>2002-09-24</date>
+   <date>2010-10-22</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Initial release as a PEAR package
+   <notes>
+* Now throws exceptions instead of returning PEAR_Errors. Package now requires PHP 5.
    </notes>
   </release>
  </changelog>
index a199ec4..1ab8911 100644 (file)
@@ -35,13 +35,6 @@ abstract class VFS_ISOWriter
     var $_params = array();
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Constructs a new VFS_ISOWriter object
      *
      * @param array $params  A hash containing parameters.
@@ -51,11 +44,6 @@ abstract class VFS_ISOWriter
         $this->_sourceVfs = &$sourceVfs;
         $this->_targetVfs = &$targetVfs;
         $this->_params = $params;
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('VFS_ISOWriter', dirname(__FILE__) . '/locale');
-        }
     }
 
     /**
@@ -90,7 +78,7 @@ abstract class VFS_ISOWriter
     function &factory(&$sourceVfs, &$targetVfs, $params)
     {
         if (empty($params['targetFile'])) {
-            return PEAR::raiseError($this->_dict->t("Cannot proceed without 'targetFile' parameter."));
+            return PEAR::raiseError(Horde_VFS_ISOWriter_Translation::t("Cannot proceed without 'targetFile' parameter."));
         }
         if (empty($params['sourceRoot'])) {
             $params['sourceRoot'] = '/';
@@ -105,7 +93,7 @@ abstract class VFS_ISOWriter
             return $isowriter;
         }
 
-        return PEAR::raiseError($this->_dict->t("No available strategy for making ISO images."));
+        return PEAR::raiseError(Horde_VFS_ISOWriter_Translation::t("No available strategy for making ISO images."));
     }
 
 }
index 6861a28..e3ccb4b 100644 (file)
@@ -21,28 +21,16 @@ abstract class VFS_ISOWriter_RealInputStrategy {
     var $_sourceVfs = null;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * The root directory within the source VFS
      *
      * @var string
      */
     var $_sourceRoot;
 
-    function VFS_ISOWriter_RealInputStrategy(&$sourceVfs, $sourceRoot, $params = array())
+    function VFS_ISOWriter_RealInputStrategy(&$sourceVfs, $sourceRoot)
     {
         $this->_sourceVfs = &$sourceVfs;
         $this->_sourceRoot = &$sourceRoot;
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('VFS_ISOWriter', dirname(__FILE__) . '/../locale');
-        }
     }
 
     /**
@@ -82,7 +70,7 @@ abstract class VFS_ISOWriter_RealInputStrategy {
         if (class_exists($class)) {
             $strategy = new $class($sourceVfs, $sourceRoot);
         } else {
-            $strategy = PEAR::raiseError(sprintf($this->_dict->t("Could not load strategy \"%s\"."),
+            $strategy = PEAR::raiseError(sprintf(Horde_VFS_ISOWriter_Translation::t("Could not load strategy \"%s\"."),
                                                  $method));
         }
 
index ae8eef2..fd204bc 100644 (file)
@@ -39,7 +39,7 @@ class VFS_ISOWriter_RealInputStrategy_copy extends VFS_ISOWriter_RealInputStrate
             }
 
             if (empty($tmp)) {
-                return PEAR::raiseError($this->_dict->t("Cannot find a temporary directory."));
+                return PEAR::raiseError(Horde_VFS_ISOWriter_Translation::t("Cannot find a temporary directory."));
             }
 
             $this->_tempPath = tempnam($tmp, 'isod');
@@ -63,7 +63,7 @@ class VFS_ISOWriter_RealInputStrategy_copy extends VFS_ISOWriter_RealInputStrate
     {
         $dh = @opendir($path);
         if (!is_resource($dh)) {
-            return PEAR::raiseError(sprintf($this->_dict->t("Could not open directory \"%s\"."),
+            return PEAR::raiseError(sprintf(Horde_VFS_ISOWriter_Translation::t("Could not open directory \"%s\"."),
                                             $path));
         }
         while (($ent = readdir($dh)) !== false) {
@@ -79,7 +79,7 @@ class VFS_ISOWriter_RealInputStrategy_copy extends VFS_ISOWriter_RealInputStrate
                 }
             } else {
                 if (!@unlink($full)) {
-                    return PEAR::raiseError(sprintf($this->_dict->t("Could not unlink \"%s\"."),
+                    return PEAR::raiseError(sprintf(Horde_VFS_ISOWriter_Translation::t("Could not unlink \"%s\"."),
                                                     $full));
                 }
             }
@@ -87,7 +87,7 @@ class VFS_ISOWriter_RealInputStrategy_copy extends VFS_ISOWriter_RealInputStrate
         closedir($dh);
 
         if (!@rmdir($path)) {
-            return PEAR::raiseError(sprintf($this->_dict->t("Could not rmdir \"%s\"."), $full));
+            return PEAR::raiseError(sprintf(Horde_VFS_ISOWriter_Translation::t("Could not rmdir \"%s\"."), $full));
         }
     }
 
@@ -103,7 +103,7 @@ class VFS_ISOWriter_RealInputStrategy_copy extends VFS_ISOWriter_RealInputStrate
                 $target = sprintf('%s/%s', $this->_tempPath, $dir);
             }
             if (!@mkdir($target)) {
-                return PEAR::raiseError(sprintf($this->_dict->t("Could not mkdir \"%s\"."), $target));
+                return PEAR::raiseError(sprintf(Horde_VFS_ISOWriter_Translation::t("Could not mkdir \"%s\"."), $target));
             }
 
             $sourcePath = $this->_sourceRoot;
@@ -132,10 +132,10 @@ class VFS_ISOWriter_RealInputStrategy_copy extends VFS_ISOWriter_RealInputStrate
                     $targetFile = sprintf('%s/%s', $target, $entry['name']);
                     $fh = @fopen($targetFile, 'w');
                     if (!is_resource($fh)) {
-                        return PEAR::raiseError(sprintf($this->_dict->t("Could not open \"%s\" for writing."), $targetFile));
+                        return PEAR::raiseError(sprintf(Horde_VFS_ISOWriter_Translation::t("Could not open \"%s\" for writing."), $targetFile));
                     }
                     if (fwrite($fh, $data) != strlen($data)) {
-                        return PEAR::raiseError(sprintf($this->_dict->t("Error writing \"%s\"."), $targetFile));
+                        return PEAR::raiseError(sprintf(Horde_VFS_ISOWriter_Translation::t("Error writing \"%s\"."), $targetFile));
                     }
                     fclose($fh);
                 }
index ce3b6dc..91638e4 100644 (file)
@@ -27,31 +27,16 @@ abstract class VFS_ISOWriter_RealOutputStrategy {
     var $_targetFile;
 
     /**
-     * Translation provider.
-     *
-     * @var Horde_Translation
-     */
-    protected $_dict;
-
-    /**
      * Constructor
      *
      * @param object &$targetVfs        The VFS to which we will write the
      *                                  file.
      * @param string $targetFile        The path and name of file to write.
-     * @param array $params  Hash with configuration data. Possible values:
-     *                       - 'translation': A translation handler
-     *                                        implementing Horde_Translation.
      */
-    function VFS_ISOWriter_RealOutputStrategy(&$targetVfs, $targetFile, $params = array())
+    function VFS_ISOWriter_RealOutputStrategy(&$targetVfs, $targetFile)
     {
         $this->_targetVfs = &$targetVfs;
         $this->_targetFile = $targetFile;
-        if (isset($params['translation'])) {
-            $this->_dict = $params['translation'];
-        } else {
-            $this->_dict = new Horde_Translation_Gettext('VFS_ISOWriter', dirname(__FILE__) . '/../locale');
-        }
     }
 
     /**
@@ -77,7 +62,7 @@ abstract class VFS_ISOWriter_RealOutputStrategy {
         if (class_exists($class)) {
             $strategy = new $class($targetVfs, $targetFile);
         } else {
-            $strategy = PEAR::raiseError(sprintf($this->_dict->t("Could not load strategy \"%s\"."),
+            $strategy = PEAR::raiseError(sprintf(Horde_VFS_ISOWriter_Translation::t("Could not load strategy \"%s\"."),
                                                  $method));
         }
 
index 5e0be19..3d64a43 100644 (file)
@@ -45,7 +45,7 @@ class VFS_ISOWriter_RealOutputStrategy_copy extends VFS_ISOWriter_RealOutputStra
             }
 
             if (empty($tmp)) {
-                return PEAR::raiseError($this->_dict->t("Cannot find a temporary directory."));
+                return PEAR::raiseError(Horde_VFS_ISOWriter_Translation::t("Cannot find a temporary directory."));
             }
 
             $this->_tempFilename = tempnam($tmp, 'iso');
index 3b2621e..1d430d5 100644 (file)
@@ -23,7 +23,7 @@ class VFS_ISOWriter_RealOutputStrategy_direct extends VFS_ISOWriter_RealOutputSt
         $dir = dirname($filename);
         while (!@is_dir($dir)) {
             if (!@mkdir($dir, 0755)) {
-                return PEAR::raiseError(sprintf($this->_dict->t("Could not mkdir \"%s\"."),
+                return PEAR::raiseError(sprintf(Horde_VFS_ISOWriter_Translation::t("Could not mkdir \"%s\"."),
                                                 $dir));
             }
             $dir = dirname($dir);
diff --git a/framework/VFS_ISOWriter/ISOWriter/Translation.php b/framework/VFS_ISOWriter/ISOWriter/Translation.php
new file mode 100644 (file)
index 0000000..38dd5dc
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @package VFS_ISOWriter
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ */
+
+/**
+ * Horde_VFS_ISOWriter_Translation is the translation wrapper class for Horde_VFS_ISOWriter.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package VFS_ISOWriter
+ */
+class Horde_VFS_ISOWriter_Translation extends Horde_Translation
+{
+    /**
+     * Returns the translation of a message.
+     *
+     * @var string $message  The string to translate.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function t($message)
+    {
+        self::$_domain = 'Horde_VFS_ISOWriter';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../locale' : '@data_dir@/VFS_ISOWriter/locale';
+        return parent::t($message);
+    }
+
+    /**
+     * Returns the plural translation of a message.
+     *
+     * @param string $singular  The singular version to translate.
+     * @param string $plural    The plural version to translate.
+     * @param integer $number   The number that determines singular vs. plural.
+     *
+     * @return string  The string translation, or the original string if no
+     *                 translation exists.
+     */
+    static public function ngettext($singular, $plural, $number)
+    {
+        self::$_domain = 'Horde_VFS_ISOWriter';
+        self::$_directory = '@data_dir@' == '@'.'data_dir'.'@' ? '../locale' : '@data_dir@/VFS_ISOWriter/locale';
+        return parent::ngettext($singular, $plural, $number);
+    }
+}
index 93f6b3c..11a91eb 100644 (file)
@@ -43,10 +43,10 @@ class VFS_ISOWriter_mkisofs extends VFS_ISOWriter {
         }
 
         if ($res === false) {
-            return PEAR::raiseError($this->_dict->t("Unable to run 'mkisofs'."));
+            return PEAR::raiseError(Horde_VFS_ISOWriter_Translation::t("Unable to run 'mkisofs'."));
         }
         if ($ec != 0) {
-            return PEAR::raiseError(sprintf($this->_dict->t("mkisofs error code %d while making ISO."), $ec));
+            return PEAR::raiseError(sprintf(Horde_VFS_ISOWriter_Translation::t("mkisofs error code %d while making ISO."), $ec));
         }
     }
 
index 488af08..3fbdb43 100644 (file)
@@ -1,23 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.4.9" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
-http://pear.php.net/dtd/tasks-1.0.xsd
-http://pear.php.net/dtd/package-2.0
-http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>VFS_ISOWriter</name>
  <channel>pear.horde.org</channel>
  <summary>Virtual File System ISO-writing API</summary>
  <description>This package provides VFS extensions for writing ISO CD images.  It currently has drivers for:
-* mkisofs
-  
- </description>
+* mkisofs</description>
  <lead>
   <name>Jason M. Felice</name>
   <user>eraserhd</user>
   <email>jason.m.felice@gmail.com</email>
   <active>yes</active>
  </lead>
- <date>2006-05-09</date>
- <time>00:06:09</time>
+ <date>2010-10-22</date>
+ <time>19:03:03</time>
  <version>
   <release>0.0.2</release>
   <api>0.0.2</api>
@@ -27,29 +22,309 @@ http://pear.php.net/dtd/package-2.0.xsd">
   <api>alpha</api>
  </stability>
  <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
- <notes>Converted to package.xml 2.0 for pear.horde.org
+ <notes>
+Converted to package.xml 2.0 for pear.horde.org
  </notes>
  <contents>
-  <dir name="/">
+  <dir baseinstalldir="/VFS" name="/">
    <dir name="ISOWriter">
     <dir name="RealInputStrategy">
-     <file baseinstalldir="/VFS" name="copy.php" role="php" />
-     <file baseinstalldir="/VFS" name="direct.php" role="php" />
+     <file name="copy.php" role="php" />
+     <file name="direct.php" role="php" />
     </dir> <!-- /ISOWriter/RealInputStrategy -->
     <dir name="RealOutputStrategy">
-     <file baseinstalldir="/VFS" name="copy.php" role="php" />
-     <file baseinstalldir="/VFS" name="direct.php" role="php" />
+     <file name="copy.php" role="php" />
+     <file name="direct.php" role="php" />
     </dir> <!-- /ISOWriter/RealOutputStrategy -->
-    <file baseinstalldir="/VFS" name="mkisofs.php" role="php" />
-    <file baseinstalldir="/VFS" name="RealInputStrategy.php" role="php" />
-    <file baseinstalldir="/VFS" name="RealOutputStrategy.php" role="php" />
+    <file name="mkisofs.php" role="php" />
+    <file name="RealInputStrategy.php" role="php" />
+    <file name="RealOutputStrategy.php" role="php" />
+    <file name="Translation.php" role="php">
+      <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+    </file>
    </dir> <!-- /ISOWriter -->
+   <dir name="locale">
+    <dir name="ar">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/ar/LC_MESSAGES -->
+    </dir> <!-- /locale/ar -->
+    <dir name="bg">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/bg/LC_MESSAGES -->
+    </dir> <!-- /locale/bg -->
+    <dir name="bs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/bs/LC_MESSAGES -->
+    </dir> <!-- /locale/bs -->
+    <dir name="ca">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/ca/LC_MESSAGES -->
+    </dir> <!-- /locale/ca -->
+    <dir name="cs">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/cs/LC_MESSAGES -->
+    </dir> <!-- /locale/cs -->
+    <dir name="da">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/da/LC_MESSAGES -->
+    </dir> <!-- /locale/da -->
+    <dir name="de">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/de/LC_MESSAGES -->
+    </dir> <!-- /locale/de -->
+    <dir name="el">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/el/LC_MESSAGES -->
+    </dir> <!-- /locale/el -->
+    <dir name="en">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/en/LC_MESSAGES -->
+    </dir> <!-- /locale/en -->
+    <dir name="es">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/es/LC_MESSAGES -->
+    </dir> <!-- /locale/es -->
+    <dir name="et">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/et/LC_MESSAGES -->
+    </dir> <!-- /locale/et -->
+    <dir name="eu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/eu/LC_MESSAGES -->
+    </dir> <!-- /locale/eu -->
+    <dir name="fa">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/fa/LC_MESSAGES -->
+    </dir> <!-- /locale/fa -->
+    <dir name="fi">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/fi/LC_MESSAGES -->
+    </dir> <!-- /locale/fi -->
+    <dir name="fr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/fr/LC_MESSAGES -->
+    </dir> <!-- /locale/fr -->
+    <dir name="gl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/gl/LC_MESSAGES -->
+    </dir> <!-- /locale/gl -->
+    <dir name="he">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/he/LC_MESSAGES -->
+    </dir> <!-- /locale/he -->
+    <dir name="hr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/hr/LC_MESSAGES -->
+    </dir> <!-- /locale/hr -->
+    <dir name="hu">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/hu/LC_MESSAGES -->
+    </dir> <!-- /locale/hu -->
+    <dir name="id">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/id/LC_MESSAGES -->
+    </dir> <!-- /locale/id -->
+    <dir name="is">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/is/LC_MESSAGES -->
+    </dir> <!-- /locale/is -->
+    <dir name="it">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/it/LC_MESSAGES -->
+    </dir> <!-- /locale/it -->
+    <dir name="ja">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/ja/LC_MESSAGES -->
+    </dir> <!-- /locale/ja -->
+    <dir name="km">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/km/LC_MESSAGES -->
+    </dir> <!-- /locale/km -->
+    <dir name="ko">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/ko/LC_MESSAGES -->
+    </dir> <!-- /locale/ko -->
+    <dir name="lt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/lt/LC_MESSAGES -->
+    </dir> <!-- /locale/lt -->
+    <dir name="lv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/lv/LC_MESSAGES -->
+    </dir> <!-- /locale/lv -->
+    <dir name="mk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/mk/LC_MESSAGES -->
+    </dir> <!-- /locale/mk -->
+    <dir name="nb">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/nb/LC_MESSAGES -->
+    </dir> <!-- /locale/nb -->
+    <dir name="nl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/nl/LC_MESSAGES -->
+    </dir> <!-- /locale/nl -->
+    <dir name="nn">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/nn/LC_MESSAGES -->
+    </dir> <!-- /locale/nn -->
+    <dir name="pl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/pl/LC_MESSAGES -->
+    </dir> <!-- /locale/pl -->
+    <dir name="pt">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/pt/LC_MESSAGES -->
+    </dir> <!-- /locale/pt -->
+    <dir name="pt_BR">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/pt_BR/LC_MESSAGES -->
+    </dir> <!-- /locale/pt_BR -->
+    <dir name="ro">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/ro/LC_MESSAGES -->
+    </dir> <!-- /locale/ro -->
+    <dir name="ru">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/ru/LC_MESSAGES -->
+    </dir> <!-- /locale/ru -->
+    <dir name="sk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/sk/LC_MESSAGES -->
+    </dir> <!-- /locale/sk -->
+    <dir name="sl">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/sl/LC_MESSAGES -->
+    </dir> <!-- /locale/sl -->
+    <dir name="sv">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/sv/LC_MESSAGES -->
+    </dir> <!-- /locale/sv -->
+    <dir name="tr">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/tr/LC_MESSAGES -->
+    </dir> <!-- /locale/tr -->
+    <dir name="uk">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/uk/LC_MESSAGES -->
+    </dir> <!-- /locale/uk -->
+    <dir name="zh_CN">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/zh_CN/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_CN -->
+    <dir name="zh_TW">
+     <dir name="LC_MESSAGES">
+      <file name="Horde_VFS_ISOWriter.mo" role="data" />
+      <file name="Horde_VFS_ISOWriter.po" role="data" />
+     </dir> <!-- /locale/zh_TW/LC_MESSAGES -->
+    </dir> <!-- /locale/zh_TW -->
+    <file name="Horde_VFS_ISOWriter.pot" role="data" />
+   </dir> <!-- /locale -->
    <dir name="tests">
-    <file baseinstalldir="/VFS" name="inputstrategy.phpt" role="test" />
-    <file baseinstalldir="/VFS" name="isowriter.phpt" role="test" />
-    <file baseinstalldir="/VFS" name="outputstrategy.phpt" role="test" />
+    <file name="inputstrategy.diff" role="data" />
+    <file name="inputstrategy.exp" role="data" />
+    <file name="inputstrategy.log" role="data" />
+    <file name="inputstrategy.out" role="data" />
+    <file name="inputstrategy.php" role="php" />
+    <file name="inputstrategy.phpt" role="test" />
+    <file name="isowriter.diff" role="data" />
+    <file name="isowriter.exp" role="data" />
+    <file name="isowriter.log" role="data" />
+    <file name="isowriter.out" role="data" />
+    <file name="isowriter.php" role="php" />
+    <file name="isowriter.phpt" role="test" />
+    <file name="outputstrategy.diff" role="data" />
+    <file name="outputstrategy.exp" role="data" />
+    <file name="outputstrategy.log" role="data" />
+    <file name="outputstrategy.out" role="data" />
+    <file name="outputstrategy.php" role="php" />
+    <file name="outputstrategy.phpt" role="test" />
    </dir> <!-- /tests -->
-   <file baseinstalldir="/VFS" name="ISOWriter.php" role="php" />
+   <file name="ISOWriter.php" role="php" />
   </dir> <!-- / -->
  </contents>
  <dependencies>
@@ -61,15 +336,106 @@ http://pear.php.net/dtd/package-2.0.xsd">
     <min>1.4.0b1</min>
    </pearinstaller>
    <package>
+    <name>Translation</name>
+    <channel>pear.horde.org</channel>
+   </package>
+   <package>
     <name>VFS</name>
     <channel>pear.php.net</channel>
    </package>
-   <extension>
-    <name>gettext</name>
-   </extension>
   </required>
  </dependencies>
- <phprelease />
+ <phprelease>
+  <filelist>
+   <install as="locale/Horde_VFS_ISOWriter.pot" name="locale/Horde_VFS_ISOWriter.pot" />
+   <install as="locale/ar/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/ar/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/ar/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/ar/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/bg/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/bg/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/bg/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/bg/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/bs/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/bs/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/bs/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/bs/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/ca/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/ca/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/ca/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/ca/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/cs/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/cs/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/cs/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/cs/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/da/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/da/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/da/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/da/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/de/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/de/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/de/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/de/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/el/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/el/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/el/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/el/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/en/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/en/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/en/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/en/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/es/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/es/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/es/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/es/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/et/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/et/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/et/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/et/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/eu/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/eu/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/eu/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/eu/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/fa/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/fa/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/fa/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/fa/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/fi/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/fi/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/fi/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/fi/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/fr/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/fr/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/fr/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/fr/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/gl/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/gl/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/gl/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/gl/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/he/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/he/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/he/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/he/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/hr/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/hr/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/hr/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/hr/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/hu/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/hu/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/hu/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/hu/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/id/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/id/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/id/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/id/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/is/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/is/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/is/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/is/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/it/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/it/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/it/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/it/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/ja/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/ja/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/ja/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/ja/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/km/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/km/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/km/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/km/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/ko/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/ko/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/ko/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/ko/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/lt/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/lt/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/lt/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/lt/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/lv/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/lv/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/lv/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/lv/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/mk/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/mk/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/mk/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/mk/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/nb/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/nb/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/nb/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/nb/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/nl/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/nl/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/nl/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/nl/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/nn/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/nn/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/nn/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/nn/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/pl/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/pl/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/pl/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/pl/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/pt/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/pt/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/pt/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/pt/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/pt_BR/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/pt_BR/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/pt_BR/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/ro/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/ro/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/ro/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/ro/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/ru/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/ru/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/ru/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/ru/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/sk/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/sk/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/sk/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/sk/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/sl/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/sl/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/sl/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/sl/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/sv/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/sv/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/sv/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/sv/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/tr/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/tr/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/tr/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/tr/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/uk/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/uk/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/uk/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/uk/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/zh_CN/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/zh_CN/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/zh_CN/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_VFS_ISOWriter.mo" name="locale/zh_TW/LC_MESSAGES/Horde_VFS_ISOWriter.mo" />
+   <install as="locale/zh_TW/LC_MESSAGES/Horde_VFS_ISOWriter.po" name="locale/zh_TW/LC_MESSAGES/Horde_VFS_ISOWriter.po" />
+  </filelist>
+ </phprelease>
  <changelog>
   <release>
    <version>
@@ -82,7 +448,23 @@ http://pear.php.net/dtd/package-2.0.xsd">
    </stability>
    <date>2004-10-06</date>
    <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
-   <notes>Initial release as a PEAR package
+   <notes>
+Initial release as a PEAR package
+   </notes>
+  </release>
+  <release>
+   <version>
+    <release>0.0.2</release>
+    <api>0.0.2</api>
+   </version>
+   <stability>
+    <release>alpha</release>
+    <api>alpha</api>
+   </stability>
+   <date>2010-10-22</date>
+   <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
+   <notes>
+Converted to package.xml 2.0 for pear.horde.org
    </notes>
   </release>
  </changelog>