統計
| ブランチ: | リビジョン:

pictcode / lib / Cake / Console / Command / I18nShell.php @ 0b1b8047

履歴 | 表示 | アノテート | ダウンロード (3.131 KB)

1
<?php
2
/**
3
 * Internationalization Management Shell
4
 *
5
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
6
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
7
 *
8
 * Licensed under The MIT License
9
 * For full copyright and license information, please see the LICENSE.txt
10
 * Redistributions of files must retain the above copyright notice.
11
 *
12
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
13
 * @link          http://cakephp.org CakePHP(tm) Project
14
 * @since         CakePHP(tm) v 1.2.0.5669
15
 * @license       http://www.opensource.org/licenses/mit-license.php MIT License
16
 */
17

    
18
App::uses('AppShell', 'Console/Command');
19

    
20
/**
21
 * Shell for I18N management.
22
 *
23
 * @package       Cake.Console.Command
24
 */
25
class I18nShell extends AppShell {
26

    
27
/**
28
 * Contains database source to use
29
 *
30
 * @var string
31
 */
32
        public $dataSource = 'default';
33

    
34
/**
35
 * Contains tasks to load and instantiate
36
 *
37
 * @var array
38
 */
39
        public $tasks = array('DbConfig', 'Extract');
40

    
41
/**
42
 * Override startup of the Shell
43
 *
44
 * @return mixed
45
 */
46
        public function startup() {
47
                $this->_welcome();
48
                if (isset($this->params['datasource'])) {
49
                        $this->dataSource = $this->params['datasource'];
50
                }
51

    
52
                if ($this->command && !in_array($this->command, array('help'))) {
53
                        if (!config('database')) {
54
                                $this->out(__d('cake_console', 'Your database configuration was not found. Take a moment to create one.'));
55
                                return $this->DbConfig->execute();
56
                        }
57
                }
58
        }
59

    
60
/**
61
 * Override main() for help message hook
62
 *
63
 * @return void
64
 */
65
        public function main() {
66
                $this->out(__d('cake_console', '<info>I18n Shell</info>'));
67
                $this->hr();
68
                $this->out(__d('cake_console', '[E]xtract POT file from sources'));
69
                $this->out(__d('cake_console', '[I]nitialize i18n database table'));
70
                $this->out(__d('cake_console', '[H]elp'));
71
                $this->out(__d('cake_console', '[Q]uit'));
72

    
73
                $choice = strtolower($this->in(__d('cake_console', 'What would you like to do?'), array('E', 'I', 'H', 'Q')));
74
                switch ($choice) {
75
                        case 'e':
76
                                $this->Extract->execute();
77
                                break;
78
                        case 'i':
79
                                $this->initdb();
80
                                break;
81
                        case 'h':
82
                                $this->out($this->OptionParser->help());
83
                                break;
84
                        case 'q':
85
                                return $this->_stop();
86
                        default:
87
                                $this->out(__d('cake_console', 'You have made an invalid selection. Please choose a command to execute by entering E, I, H, or Q.'));
88
                }
89
                $this->hr();
90
                $this->main();
91
        }
92

    
93
/**
94
 * Initialize I18N database.
95
 *
96
 * @return void
97
 */
98
        public function initdb() {
99
                $this->dispatchShell('schema create i18n');
100
        }
101

    
102
/**
103
 * Gets the option parser instance and configures it.
104
 *
105
 * @return ConsoleOptionParser
106
 */
107
        public function getOptionParser() {
108
                $parser = parent::getOptionParser();
109

    
110
                $parser->description(
111
                        __d('cake_console', 'I18n Shell initializes i18n database table for your application and generates .pot files(s) with translations.')
112
                )->addSubcommand('initdb', array(
113
                        'help' => __d('cake_console', 'Initialize the i18n table.')
114
                ))->addSubcommand('extract', array(
115
                        'help' => __d('cake_console', 'Extract the po translations from your application'),
116
                        'parser' => $this->Extract->getOptionParser()
117
                ));
118

    
119
                return $parser;
120
        }
121

    
122
}