class Language

Same name in this branch
  1. 11.x core/modules/language/src/Plugin/migrate/source/Language.php \Drupal\language\Plugin\migrate\source\Language
  2. 11.x core/modules/language/src/Plugin/Condition/Language.php \Drupal\language\Plugin\Condition\Language
  3. 11.x core/lib/Drupal/Core/TypedData/Plugin/DataType/Language.php \Drupal\Core\TypedData\Plugin\DataType\Language
  4. 11.x core/lib/Drupal/Core/Language/Language.php \Drupal\Core\Language\Language
Same name and namespace in other branches
  1. 9 core/modules/language/src/Plugin/migrate/source/Language.php \Drupal\language\Plugin\migrate\source\Language
  2. 9 core/modules/language/src/Plugin/Condition/Language.php \Drupal\language\Plugin\Condition\Language
  3. 9 core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/Language.php \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Language
  4. 9 core/modules/ckeditor/src/Plugin/CKEditorPlugin/Language.php \Drupal\ckeditor\Plugin\CKEditorPlugin\Language
  5. 9 core/lib/Drupal/Core/TypedData/Plugin/DataType/Language.php \Drupal\Core\TypedData\Plugin\DataType\Language
  6. 9 core/lib/Drupal/Core/Language/Language.php \Drupal\Core\Language\Language
  7. 8.9.x core/modules/language/src/Plugin/migrate/source/Language.php \Drupal\language\Plugin\migrate\source\Language
  8. 8.9.x core/modules/language/src/Plugin/Condition/Language.php \Drupal\language\Plugin\Condition\Language
  9. 8.9.x core/modules/ckeditor/src/Plugin/CKEditorPlugin/Language.php \Drupal\ckeditor\Plugin\CKEditorPlugin\Language
  10. 8.9.x core/lib/Drupal/Core/TypedData/Plugin/DataType/Language.php \Drupal\Core\TypedData\Plugin\DataType\Language
  11. 8.9.x core/lib/Drupal/Core/Language/Language.php \Drupal\Core\Language\Language
  12. 10 core/modules/language/src/Plugin/migrate/source/Language.php \Drupal\language\Plugin\migrate\source\Language
  13. 10 core/modules/language/src/Plugin/Condition/Language.php \Drupal\language\Plugin\Condition\Language
  14. 10 core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/Language.php \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Language
  15. 10 core/lib/Drupal/Core/TypedData/Plugin/DataType/Language.php \Drupal\Core\TypedData\Plugin\DataType\Language
  16. 10 core/lib/Drupal/Core/Language/Language.php \Drupal\Core\Language\Language

CKEditor 5 Language plugin.

@internal Plugin classes are internal.

Hierarchy

Expanded class hierarchy of Language

1 file declares its use of Language
LanguagePluginTest.php in core/modules/ckeditor5/tests/src/Unit/LanguagePluginTest.php
397 string references to 'Language'
AccountSettingsForm::buildForm in core/modules/user/src/AccountSettingsForm.php
Form constructor.
AssetControllerBase::deliver in core/modules/system/src/Controller/AssetControllerBase.php
Generates an aggregate, given a filename.
block.block.umami_languageswitcher.yml in core/profiles/demo_umami/config/install/block.block.umami_languageswitcher.yml
core/profiles/demo_umami/config/install/block.block.umami_languageswitcher.yml
BlockContentTypeForm::form in core/modules/block_content/src/BlockContentTypeForm.php
Gets the actual form array to be built.
BlockForm::buildVisibilityInterface in core/modules/block/src/BlockForm.php
Helper function for building the visibility UI form.

... See full list

File

core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/Language.php, line 27

Namespace

Drupal\ckeditor5\Plugin\CKEditor5Plugin
View source
class Language extends CKEditor5PluginDefault implements CKEditor5PluginConfigurableInterface, ContainerFactoryPluginInterface {
    use CKEditor5PluginConfigurableTrait;
    
    /**
     * Language constructor.
     *
     * @param array $configuration
     *   A configuration array containing information about the plugin instance.
     * @param string $plugin_id
     *   The plugin_id for the plugin instance.
     * @param \Drupal\ckeditor5\Plugin\CKEditor5PluginDefinition $plugin_definition
     *   The plugin implementation definition.
     * @param \Drupal\Core\Language\LanguageManagerInterface $languageManager
     *   The language manager.
     * @param \Drupal\Core\Routing\RouteProviderInterface $routeProvider
     *   The route provider.
     */
    public function __construct(array $configuration, string $plugin_id, CKEditor5PluginDefinition $plugin_definition, LanguageManagerInterface $languageManager, RouteProviderInterface $routeProvider) {
        parent::__construct($configuration, $plugin_id, $plugin_definition);
    }
    
    /**
     * {@inheritdoc}
     */
    public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
        return new static($configuration, $plugin_id, $plugin_definition, $container->get('language_manager'), $container->get('router.route_provider'));
    }
    
    /**
     * {@inheritdoc}
     */
    public function getDynamicPluginConfig(array $static_plugin_config, EditorInterface $editor) : array {
        $languages = NULL;
        switch ($this->configuration['language_list']) {
            case 'site_configured':
                $configured_languages = $this->languageManager
                    ->getLanguages();
                $languages = [];
                foreach ($configured_languages as $language) {
                    $languages[$language->getId()] = [
                        $language->getName(),
                        '',
                        $language->getDirection(),
                    ];
                }
                break;
            case 'all':
                $languages = LanguageManager::getStandardLanguageList();
                break;
            case 'un':
                $languages = LanguageManager::getUnitedNationsLanguageList();
        }
        // Generate the language_list setting as expected by the CKEditor Language
        // plugin, but key the values by the full language name so that we can sort
        // them later on.
        $language_list = [];
        foreach ($languages as $langcode => $language) {
            $english_name = $language[0];
            $direction = empty($language[2]) ? NULL : $language[2];
            $language_list[$english_name] = [
                'title' => $english_name,
                'languageCode' => $langcode,
            ];
            if ($direction === LanguageInterface::DIRECTION_RTL) {
                $language_list[$english_name]['textDirection'] = 'rtl';
            }
        }
        // Sort on full language name.
        ksort($language_list);
        $dynamic_plugin_config = $static_plugin_config;
        $dynamic_plugin_config['language']['textPartLanguage'] = array_values($language_list);
        return $dynamic_plugin_config;
    }
    
    /**
     * {@inheritdoc}
     *
     * @see editor_image_upload_settings_form()
     */
    public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
        $configured = count($this->languageManager
            ->getLanguages());
        $predefined = count(LanguageManager::getStandardLanguageList());
        $united_nations = count(LanguageManager::getUnitedNationsLanguageList());
        $language_list_description_args = [
            ':united-nations-official' => 'https://www.un.org/en/sections/about-un/official-languages',
            '@count_predefined' => $predefined,
            '@count_united_nations' => $united_nations,
            '@count_configured' => $configured,
        ];
        // If Language is enabled, link to the configuration route.
        if ($this->routeProvider
            ->getRoutesByNames([
            'entity.configurable_language.collection',
        ])) {
            $language_list_description = $this->t('The list of languages in the CKEditor "Language" dropdown can present the <a href=":united-nations-official">@count_united_nations official languages of the UN</a>, all @count_predefined languages predefined in Drupal, or the <a href=":admin-configure-languages">@count_configured languages configured for this site</a>.', $language_list_description_args + [
                ':admin-configure-languages' => Url::fromRoute('entity.configurable_language.collection')->toString(),
            ]);
        }
        else {
            $language_list_description = $this->t('The list of languages in the CKEditor "Language" dropdown can present the <a href=":united-nations-official">@count_united_nations official languages of the UN</a>, all @count_predefined languages predefined in Drupal, or the languages configured for this site.', $language_list_description_args);
        }
        $form['language_list'] = [
            '#title' => $this->t('Language list'),
            '#title_display' => 'invisible',
            '#type' => 'select',
            '#options' => [
                'un' => $this->t("United Nations' official languages (@count)", [
                    '@count' => $united_nations,
                ]),
                'all' => $this->t('Drupal predefined languages (@count)', [
                    '@count' => $predefined,
                ]),
                'site_configured' => $this->t("Site-configured languages (@count)", [
                    '@count' => $configured,
                ]),
            ],
            '#default_value' => $this->configuration['language_list'],
            '#description' => $language_list_description,
        ];
        return $form;
    }
    
    /**
     * {@inheritdoc}
     */
    public function validateConfigurationForm(array &$form, FormStateInterface $form_state) {
    }
    
    /**
     * {@inheritdoc}
     */
    public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
        $this->configuration['language_list'] = $form_state->getValue('language_list');
    }
    
    /**
     * {@inheritdoc}
     */
    public function defaultConfiguration() {
        return [
            'language_list' => 'un',
        ];
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
CKEditor5PluginConfigurableTrait::getConfiguration public function
CKEditor5PluginConfigurableTrait::setConfiguration public function
Language::buildConfigurationForm public function
Language::create public static function Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface::create
Language::defaultConfiguration public function
Language::getDynamicPluginConfig public function Allows a plugin to modify its static configuration. Overrides CKEditor5PluginDefault::getDynamicPluginConfig
Language::submitConfigurationForm public function
Language::validateConfigurationForm public function
Language::__construct public function Language constructor. Overrides CKEditor5PluginDefault::__construct
PluginInspectionInterface::getPluginDefinition public function Gets the definition of the plugin implementation. 6
PluginInspectionInterface::getPluginId public function Gets the plugin_id of the plugin instance. 2

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