Issue #2195573 by Xano, eiriksm, heddn, ParisLiakos, Les Lim, Pere Orga, dinarcon, xjm, alexpott: Add a dedicated @LanguageNegotiation annotation class
parent
9f4d5e84fe
commit
2f370af9c5
|
@ -0,0 +1,82 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Contains \Drupal\language\Annotation\LanguageNegotiation.
|
||||
*/
|
||||
|
||||
namespace Drupal\language\Annotation;
|
||||
|
||||
use Drupal\Component\Annotation\Plugin;
|
||||
|
||||
/**
|
||||
* Defines a language negotiation annotation object.
|
||||
*
|
||||
* Plugin Namespace: Plugin\LanguageNegotiation
|
||||
*
|
||||
* For a working example, see
|
||||
* \Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationBrowser.
|
||||
*
|
||||
* @see \Drupal\language\LanguageNegotiator
|
||||
* @see \Drupal\language\LanguageNegotiationMethodManager
|
||||
* @see \Drupal\language\LanguageNegotiationMethodInterface
|
||||
* @see hook_language_negotiation_info_alter()
|
||||
* @see plugin_api
|
||||
*
|
||||
* @Annotation
|
||||
*/
|
||||
class LanguageNegotiation extends Plugin {
|
||||
|
||||
/**
|
||||
* The language negotiation plugin ID.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $id;
|
||||
|
||||
/**
|
||||
* An array of allowed language types.
|
||||
*
|
||||
* If a language negotiation plugin does not specify which language types it
|
||||
* should be used with, it will be available for all the configurable
|
||||
* language types.
|
||||
*
|
||||
* @var string[]
|
||||
* An array of language types, such as the
|
||||
* \Drupal\Core\Language\LanguageInterface::TYPE_* constants.
|
||||
*/
|
||||
public $types;
|
||||
|
||||
/**
|
||||
* The default weight of the language negotiation plugin.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $weight;
|
||||
|
||||
/**
|
||||
* The human-readable name of the language negotiation plugin.
|
||||
*
|
||||
* @ingroup plugin_translatable
|
||||
*
|
||||
* @var \Drupal\Core\Annotation\Translation
|
||||
*/
|
||||
public $name;
|
||||
|
||||
/**
|
||||
* The description of the language negotiation plugin.
|
||||
*
|
||||
* @ingroup plugin_translatable
|
||||
*
|
||||
* @var \Drupal\Core\Annotation\Translation
|
||||
*/
|
||||
public $description;
|
||||
|
||||
/**
|
||||
* The route pointing to the plugin's configuration page.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $config_route_name;
|
||||
|
||||
}
|
|
@ -28,7 +28,7 @@ class LanguageNegotiationMethodManager extends DefaultPluginManager {
|
|||
* An object that implements ModuleHandlerInterface
|
||||
*/
|
||||
public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler) {
|
||||
parent::__construct('Plugin/LanguageNegotiation', $namespaces, $module_handler, 'Drupal\language\LanguageNegotiationMethodInterface');
|
||||
parent::__construct('Plugin/LanguageNegotiation', $namespaces, $module_handler, 'Drupal\language\LanguageNegotiationMethodInterface', 'Drupal\language\Annotation\LanguageNegotiation');
|
||||
$this->cacheBackend = $cache_backend;
|
||||
$this->cacheKeyPrefix = 'language_negotiation_plugins';
|
||||
$this->cacheKey = 'language_negotiation_plugins';
|
||||
|
|
|
@ -14,7 +14,7 @@ use Symfony\Component\HttpFoundation\Request;
|
|||
/**
|
||||
* Class for identifying language from the browser Accept-language HTTP header.
|
||||
*
|
||||
* @Plugin(
|
||||
* @LanguageNegotiation(
|
||||
* id = \Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationBrowser::METHOD_ID,
|
||||
* weight = -2,
|
||||
* name = @Translation("Browser"),
|
||||
|
|
|
@ -13,7 +13,7 @@ use Symfony\Component\HttpFoundation\Request;
|
|||
/**
|
||||
* Class for identifying language from a selected language.
|
||||
*
|
||||
* @Plugin(
|
||||
* @LanguageNegotiation(
|
||||
* id = Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationSelected::METHOD_ID,
|
||||
* weight = 12,
|
||||
* name = @Translation("Selected language"),
|
||||
|
|
|
@ -18,7 +18,7 @@ use Symfony\Component\HttpFoundation\Request;
|
|||
/**
|
||||
* Identify language from a request/session parameter.
|
||||
*
|
||||
* @Plugin(
|
||||
* @LanguageNegotiation(
|
||||
* id = Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationSession::METHOD_ID,
|
||||
* weight = -6,
|
||||
* name = @Translation("Session"),
|
||||
|
|
|
@ -13,7 +13,7 @@ use Symfony\Component\HttpFoundation\Request;
|
|||
/**
|
||||
* Identifies the language from the interface text language selected for page.
|
||||
*
|
||||
* @Plugin(
|
||||
* @LanguageNegotiation(
|
||||
* id = Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUI::METHOD_ID,
|
||||
* types = {Drupal\Core\Language\LanguageInterface::TYPE_CONTENT},
|
||||
* weight = 9,
|
||||
|
|
|
@ -19,7 +19,7 @@ use Symfony\Component\HttpFoundation\Request;
|
|||
/**
|
||||
* Class for identifying language via URL prefix or domain.
|
||||
*
|
||||
* @Plugin(
|
||||
* @LanguageNegotiation(
|
||||
* id = \Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUrl::METHOD_ID,
|
||||
* types = {\Drupal\Core\Language\LanguageInterface::TYPE_INTERFACE,
|
||||
* \Drupal\Core\Language\LanguageInterface::TYPE_CONTENT,
|
||||
|
|
|
@ -32,7 +32,7 @@ use Symfony\Component\HttpFoundation\Request;
|
|||
* fixed. This is done by introducing a prefix or domain in the rendered
|
||||
* page matching the detected interface language.
|
||||
*
|
||||
* @Plugin(
|
||||
* @LanguageNegotiation(
|
||||
* id = Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUrlFallback::METHOD_ID,
|
||||
* types = {Drupal\Core\Language\LanguageInterface::TYPE_URL},
|
||||
* weight = 8,
|
||||
|
|
|
@ -13,7 +13,7 @@ use Symfony\Component\HttpFoundation\Request;
|
|||
/**
|
||||
* Class for identifying language from a selected language.
|
||||
*
|
||||
* @Plugin(
|
||||
* @LanguageNegotiation(
|
||||
* id = "test_language_negotiation_method",
|
||||
* weight = -10,
|
||||
* name = @Translation("Test"),
|
||||
|
|
|
@ -12,7 +12,7 @@ use Symfony\Component\HttpFoundation\Request;
|
|||
/**
|
||||
* Class for identifying language from a selected language.
|
||||
*
|
||||
* @Plugin(
|
||||
* @LanguageNegotiation(
|
||||
* id = "test_language_negotiation_method_ts",
|
||||
* weight = -10,
|
||||
* name = @Translation("Type-specific test"),
|
||||
|
|
|
@ -13,7 +13,7 @@ use Symfony\Component\HttpFoundation\Request;
|
|||
/**
|
||||
* Class for identifying language from the user preferences.
|
||||
*
|
||||
* @Plugin(
|
||||
* @LanguageNegotiation(
|
||||
* id = \Drupal\user\Plugin\LanguageNegotiation\LanguageNegotiationUser::METHOD_ID,
|
||||
* weight = -4,
|
||||
* name = @Translation("User"),
|
||||
|
|
|
@ -23,7 +23,7 @@ use Symfony\Component\Routing\Matcher\UrlMatcherInterface;
|
|||
/**
|
||||
* Identifies admin language from the user preferences.
|
||||
*
|
||||
* @Plugin(
|
||||
* @LanguageNegotiation(
|
||||
* id = Drupal\user\Plugin\LanguageNegotiation\LanguageNegotiationUserAdmin::METHOD_ID,
|
||||
* types = {Drupal\Core\Language\LanguageInterface::TYPE_INTERFACE},
|
||||
* weight = -10,
|
||||
|
|
Loading…
Reference in New Issue