/** * Extracts i18n strings. * * This class must be implemented by subclasses. */ public function extract() { // Extract from PHP files to find __() calls in actions/ lib/ and templates/ directories $moduleDir = sfConfig::get('sf_app_module_dir') . '/' . $this->module; $this->extractFromPhpFiles(array($moduleDir . '/actions', $moduleDir . '/lib', $moduleDir . '/templates')); // Extract from generator.yml files $generator = $moduleDir . '/config/generator.yml'; if (file_exists($generator)) { $yamlExtractor = new sfI18nYamlGeneratorExtractor(); $this->updateMessages($yamlExtractor->extract(file_get_contents($generator))); } // Extract from validate/*.yml files $validateFiles = glob($moduleDir . '/validate/*.yml'); if (is_array($validateFiles)) { foreach ($validateFiles as $validateFile) { $yamlExtractor = new sfI18nYamlValidateExtractor(); $this->updateMessages($yamlExtractor->extract(file_get_contents($validateFile))); } } }
$e = new sfI18nYamlGeneratorExtractor(); $t->ok($e instanceof sfI18nExtractorInterface, 'sfI18nYamlGeneratorExtractor implements the sfI18nExtractorInterface interface'); // ->extract(); $t->diag('->extract()'); $content = <<<EOF generator: param: config: fields: name: { name: "Global Field Name", help: "Global Help for Name" } list: title: List title fields: name: { name: "List Field Name", help: "List Help for Name" } edit: title: Edit title display: NONE: [] First category: [] Last category: [] fields: name: { name: "Edit Field Name", help: "Edit Help for Name" } EOF; $t->is($e->extract($content), array('List title', 'Edit title', 'Global Field Name', 'Global Help for Name', 'List Field Name', 'List Help for Name', 'Edit Field Name', 'Edit Help for Name', 'First category', 'Last category'), '->extract() extracts strings from generator.yml files'); $content = <<<EOF generator: param: edit: display: [first_name, last_name] EOF; $t->is($e->extract($content), array(), '->extract() extracts strings from generator.yml files');
name: { name: "Global Field Name", help: "Global Help for Name" } list: title: List title fields: name: { name: "List Field Name", help: "List Help for Name" } edit: title: Edit title display: NONE: [] First category: [] Last category: [] fields: name: { name: "Edit Field Name", help: "Edit Help for Name" } EOF; $t->is($e->extract($content), array( 'List title', 'Edit title', 'Global Field Name', 'Global Help for Name', 'List Field Name', 'List Help for Name', 'Edit Field Name', 'Edit Help for Name', 'First category', 'Last category', ), '->extract() extracts strings from generator.yml files'); $content = <<<EOF generator: param: