function _potx_parse_shipped_configuration in Translation template extractor 8
Same name and namespace in other branches
- 6.3 potx.inc \_potx_parse_shipped_configuration()
- 7.3 potx.inc \_potx_parse_shipped_configuration()
- 7.2 potx.inc \_potx_parse_shipped_configuration()
Parse shipped configuration for translatables. Drupal 8+.
Parameters
string $save_callback: Callback function used to save strings.
int $api_version: Drupal API version to work with.
2 calls to _potx_parse_shipped_configuration()
- PotxTest::testDrupal8ShippedConfiguration in tests/
src/ Kernel/ PotxTest.php - Test parsing of Drupal 8 shipped configuration files.
- potx_finish_processing in ./
potx.inc - Executes tasks that need to happen after all the files have been processed.
File
- ./
potx.inc, line 2781 - Extraction API used by the web and command line interface.
Code
function _potx_parse_shipped_configuration($save_callback = '_potx_save_string', $api_version = POTX_API_CURRENT) {
global $_potx_module_metadata;
global $_potx_processed_schema;
global $_potx_processed_modules;
global $_potx_callbacks;
foreach ($_potx_module_metadata as $module_name => $module_metadata) {
// Reset the processed schema for every module.
$_potx_processed_modules = [];
$_potx_processed_schema = [
'translatables' => [],
'types' => [],
'mappings' => [],
'contexts' => [],
];
// "core" contains the base data type and translatable definitions.
_potx_process_module_schemas([
'core',
]);
_potx_process_module_schemas([
$module_name,
]);
if (isset($module_metadata['config']['install'])) {
foreach ($module_metadata['config']['install'] as $config_paths) {
$parsed_config = _potx_parse_yaml($config_paths[1]);
if ($parsed_config === NULL) {
continue;
}
// Dependencies defined in a config file itself should not be visible
// to other config files. So, make a temp copy here, and revert after
// parsing the config file.
$temp = $_potx_processed_schema;
if (isset($parsed_config['dependencies']['module'])) {
_potx_process_module_schemas($parsed_config['dependencies']['module']);
}
// Find the schema that matches the config file.
$path_info = pathinfo($config_paths[1]);
$config_name = $path_info['filename'];
$schema = _potx_find_matching_schema($config_name);
if ($schema !== NULL) {
_potx_find_shipped_config_translatables($parsed_config, $schema, NULL, NULL, $config_paths[0], $save_callback);
}
$_potx_processed_schema = $temp;
}
}
if (isset($module_metadata['config']['optional'])) {
// Optional configs are different, since they do not explicitly specify
// which module they belong to.
foreach ($module_metadata['config']['optional'] as $config_paths) {
$_potx_processed_modules = [];
$_potx_processed_schema = [
'translatables' => [],
'types' => [],
'mappings' => [],
'contexts' => [],
];
_potx_process_module_schemas([
'core',
]);
// Find the schema that matches the config file.
$path_info = pathinfo($config_paths[1]);
$config_name = $path_info['filename'];
$parsed_config = _potx_parse_yaml($config_paths[1]);
if ($parsed_config === NULL) {
continue;
}
$match_candidates = _potx_find_matching_schema_candidates($config_name);
$matched = $_potx_callbacks['schema_reverse_lookup']($match_candidates);
if ($matched === NULL) {
continue;
}
_potx_process_module_schemas([
$matched,
]);
if (isset($parsed_config['dependencies']['module'])) {
_potx_process_module_schemas($parsed_config['dependencies']['module']);
}
$schema = _potx_find_matching_schema($config_name);
_potx_find_shipped_config_translatables($parsed_config, $schema, NULL, NULL, $config_paths[0], $save_callback);
}
}
}
}