Problem/Motivation
A lot of code uses just langcodes everywhere.
The url generator code still requires the full language object. This issue exists to reduce the code complexity for developers and themers when building Drupal\Core\Url
or Drupal\Core\Render\Element\Link
objects.
Proposed resolution
Allow to specify 'language' as a langcode string such as "de" or "en". This langcode will be used to load the proper Language
object internally.
For example, the only way to link to a language that is not current LanguageInterface::TYPE_URL
used to be before this issue:
$language_manager = \Drupal::service('language_manager');
$url = Url::fromRoute( 'user.register', [], ['language' => $language_manager->getLanguage('it')]);
$link = Link::createFromRoute($text, 'user.register', [], ['language' => $language_manager->getLanguage('de')]);
This issue proposes to add this additional way:
$url = Url::fromRoute( 'user.register', [], ['language' => 'it']);
$link = Link::createFromRoute($text, 'user.register', [], ['language' => 'de']);
Remaining tasks
Review
User interface changes
None.
API changes
Besides setting $options = ['language' => where_do_we_get_language_object_from()]
there is now
a simple $options = ['language' => 'en']
when you generate a URL.
Issue category | Task, because it just improves existing APIs |
---|---|
Issue priority | Normal, given how often you have to explicitly generate URLs for a given language. |
Disruption | Not disruptive, but it makes the API work more like expected |