function LocaleConfigManager::getTranslatableData

Same name in other branches
  1. 9 core/modules/locale/src/LocaleConfigManager.php \Drupal\locale\LocaleConfigManager::getTranslatableData()
  2. 8.9.x core/modules/locale/src/LocaleConfigManager.php \Drupal\locale\LocaleConfigManager::getTranslatableData()
  3. 10 core/modules/locale/src/LocaleConfigManager.php \Drupal\locale\LocaleConfigManager::getTranslatableData()

Gets translatable configuration data for a typed configuration element.

Parameters

\Drupal\Core\TypedData\TypedDataInterface $element: Typed configuration element.

Return value

array|\Drupal\Core\StringTranslation\TranslatableMarkup A nested array matching the exact structure under $element with only the elements that are translatable wrapped into a TranslatableMarkup. If the provided $element is not traversable, the return value is a single TranslatableMarkup.

2 calls to LocaleConfigManager::getTranslatableData()
LocaleConfigManager::getTranslatableDefaultConfig in core/modules/locale/src/LocaleConfigManager.php
Gets array of translated strings for Locale translatable configuration.
LocaleConfigManager::updateDefaultConfigLangcodes in core/modules/locale/src/LocaleConfigManager.php
Updates default configuration when new modules or themes are installed.

File

core/modules/locale/src/LocaleConfigManager.php, line 163

Class

LocaleConfigManager
Manages configuration supported in part by interface translation.

Namespace

Drupal\locale

Code

protected function getTranslatableData(TypedDataInterface $element) {
    $translatable = [];
    if ($element instanceof TraversableTypedDataInterface) {
        foreach ($element as $key => $property) {
            $value = $this->getTranslatableData($property);
            if (!empty($value)) {
                $translatable[$key] = $value;
            }
        }
    }
    else {
        // Something is only translatable by Locale if there is a string in the
        // first place.
        $value = $element->getValue();
        $definition = $element->getDataDefinition();
        if (!empty($definition['translatable']) && $value !== '' && $value !== NULL) {
            $options = [];
            if (isset($definition['translation context'])) {
                $options['context'] = $definition['translation context'];
            }
            return new TranslatableMarkup($value, [], $options);
        }
    }
    return $translatable;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.