class Horde_Cli
{
/**
+ * The location of the data directory which contains locale information.
+ * This contains @data_dir@ if the package has not been installed via
+ * PEAR.
+ */
+ const LOCALE_DIR = '@data_dir@/locale';
+
+ /**
* Are we running on a console?
*
* @var boolean
/**
* 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) {
}
$this->writeln($this->red('===================='));
$this->writeln();
- $this->writeln($this->red($this->_dict->t("Fatal Error:")));
+ $this->writeln($this->red($this->_t("Fatal Error:")));
$this->writeln($this->red($error));
$this->writeln();
$this->writeln((string)$backtrace);
foreach ($choices as $key => $choice) {
$this->writeln($this->indent('(' . $this->bold($key) . ') ' . $choice));
}
- $this->writeln($this->_dict->t("Type your choice: "), true);
+ $this->writeln($this->_t("Type your choice: "), true);
@ob_flush();
// Get the user choice.
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($this->_t("\"%s\" is not a valid choice."), $response)));
}
} else {
@ob_flush();
* none. Also initialize a few variables in $_SERVER that aren't present
* from the CLI.
*
- * You must not call init() statically before calling the constructor.
- * 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.
+ * @param Horde_Translation_Factory $t A translation factory that
+ * generates a Horde_Translation
+ * instance.
*
* @return Horde_Cli A Horde_Cli instance.
*/
- static public function init($dict = null)
+ static public function init(Horde_Translation_Factory $t = null)
{
/* 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();
+ $cli->initTranslation($t);
@set_time_limit(0);
ob_implicit_flush(true);
}
/**
+ * Try to initialize the translation system.
+ *
+ * @param Horde_Translation_Factory $t A translation factory that
+ * generates a Horde_Translation
+ * instance.
+ *
+ * @return Horde_Cli A Horde_Cli instance.
+ */
+ public function initTranslation(Horde_Translation_Factory $t = null)
+ {
+ if ($t === null && class_exists('Horde_Translation_Factory_Gettext')) {
+ $t = new Horde_Translation_Factory_Gettext();
+ }
+ if ($t !== null) {
+ $this->_dict = $t->createTranslation('Horde_Cli', self::LOCALE_DIR, dirname(__FILE__) . '/../../locale');
+ } else {
+ $this->_dict = false;
+ }
+ }
+
+ /**
+ * Returns the translation of a message.
+ *
+ * @param string $message The string to translate.
+ *
+ * @return string The string translation, or the original string if no
+ * translation exists.
+ */
+ private function _t($message)
+ {
+ if ($this->_dict === false) {
+ return $message;
+ } else if ($this->_dict === null) {
+ $this->initTranslation();
+ return $this->_t($message);
+ }
+ return $this->_dict->t($message);
+ }
+
+ /**
* Make sure we're being called from the command line, and not via
* the web.
*
<email>jan@horde.org</email>
<active>yes</active>
</lead>
- <date>2010-08-15</date>
- <time>15:33:56</time>
+ <date>2010-10-18</date>
+ <time>14:33:41</time>
<version>
<release>0.2.0</release>
<api>0.2.0</api>
</dir> <!-- /doc -->
<dir name="lib">
<dir name="Horde">
- <file name="Cli.php" role="php" />
+ <file name="Cli.php" role="php">
+ <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
+ </file>
</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>Support</name>
<channel>pear.horde.org</channel>
</package>
+ </required>
+ <optional>
<package>
<name>Translation</name>
<channel>pear.horde.org</channel>
</package>
- <extension>
- <name>gettext</name>
- </extension>
- </required>
+ </optional>
</dependencies>
<phprelease>
<filelist>
<release>beta</release>
<api>beta</api>
</stability>
- <date>2010-08-15</date>
+ <date>2010-10-18</date>
<license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
<notes>
* Horde_CLI:: -> Horde_Cli::