protected function LocaleConfigManager::processTranslatableData in Drupal 9
Same name and namespace in other branches
- 8 core/modules/locale/src/LocaleConfigManager.php \Drupal\locale\LocaleConfigManager::processTranslatableData()
- 10 core/modules/locale/src/LocaleConfigManager.php \Drupal\locale\LocaleConfigManager::processTranslatableData()
Process the translatable data array with a given language.
If the given language is translatable, will return the translated copy which will only contain strings that had translations. If the given language is English and is not translatable, will return a simplified array of the English source strings only.
Parameters
string $name: The configuration name.
array $active: The active configuration data.
array|\Drupal\Core\StringTranslation\TranslatableMarkup[] $translatable: The translatable array structure. A nested array matching the exact structure under of the default configuration for $name with only the elements that are translatable wrapped into a TranslatableMarkup.
string $langcode: The language code to process the array with.
Return value
array Processed translatable data array. Will only contain translations different from source strings or in case of untranslatable English, the source strings themselves.
See also
1 call to LocaleConfigManager::processTranslatableData()
- LocaleConfigManager::updateConfigTranslations in core/
modules/ locale/ src/ LocaleConfigManager.php - Updates all configuration translations for the names / languages provided.
File
- core/
modules/ locale/ src/ LocaleConfigManager.php, line 215
Class
- LocaleConfigManager
- Manages configuration supported in part by interface translation.
Namespace
Drupal\localeCode
protected function processTranslatableData($name, array $active, array $translatable, $langcode) {
$translated = [];
foreach ($translatable as $key => $item) {
if (!isset($active[$key])) {
continue;
}
if (is_array($item)) {
// Only add this key if there was a translated value underneath.
$value = $this
->processTranslatableData($name, $active[$key], $item, $langcode);
if (!empty($value)) {
$translated[$key] = $value;
}
}
else {
if (locale_is_translatable($langcode)) {
$value = $this
->translateString($name, $langcode, $item
->getUntranslatedString(), $item
->getOption('context'));
}
else {
$value = $item
->getUntranslatedString();
}
if (!empty($value)) {
$translated[$key] = $value;
}
}
}
return $translated;
}