1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
18:
19: App::uses('AppShell', 'Console/Command');
20:
21: 22: 23: 24: 25:
26: class I18nShell extends AppShell {
27:
28: 29: 30: 31: 32:
33: public $dataSource = 'default';
34:
35: 36: 37: 38: 39:
40: public $tasks = array('DbConfig', 'Extract');
41:
42: 43: 44: 45: 46:
47: public function startup() {
48: $this->_welcome();
49: if (isset($this->params['datasource'])) {
50: $this->dataSource = $this->params['datasource'];
51: }
52:
53: if ($this->command && !in_array($this->command, array('help'))) {
54: if (!config('database')) {
55: $this->out(__d('cake_console', 'Your database configuration was not found. Take a moment to create one.'), true);
56: return $this->DbConfig->execute();
57: }
58: }
59: }
60:
61: 62: 63: 64: 65:
66: public function main() {
67: $this->out(__d('cake_console', '<info>I18n Shell</info>'));
68: $this->hr();
69: $this->out(__d('cake_console', '[E]xtract POT file from sources'));
70: $this->out(__d('cake_console', '[I]nitialize i18n database table'));
71: $this->out(__d('cake_console', '[H]elp'));
72: $this->out(__d('cake_console', '[Q]uit'));
73:
74: $choice = strtolower($this->in(__d('cake_console', 'What would you like to do?'), array('E', 'I', 'H', 'Q')));
75: switch ($choice) {
76: case 'e':
77: $this->Extract->execute();
78: break;
79: case 'i':
80: $this->initdb();
81: break;
82: case 'h':
83: $this->out($this->OptionParser->help());
84: break;
85: case 'q':
86: exit(0);
87: break;
88: default:
89: $this->out(__d('cake_console', 'You have made an invalid selection. Please choose a command to execute by entering E, I, H, or Q.'));
90: }
91: $this->hr();
92: $this->main();
93: }
94:
95: 96: 97: 98: 99:
100: public function initdb() {
101: $this->dispatchShell('schema create i18n');
102: }
103:
104: 105: 106: 107: 108:
109: public function getOptionParser() {
110: $parser = parent::getOptionParser();
111: return $parser->description(
112: __d('cake_console', 'I18n Shell initializes i18n database table for your application and generates .pot files(s) with translations.')
113: )->addSubcommand('initdb', array(
114: 'help' => __d('cake_console', 'Initialize the i18n table.')
115: ))->addSubcommand('extract', array(
116: 'help' => __d('cake_console', 'Extract the po translations from your application'),
117: 'parser' => $this->Extract->getOptionParser()
118: ));
119: }
120:
121: }
122: