web-dev-qa-db-fra.com

Obtenir la langue actuelle de Drupal 8 en javascript?

Comment puis-je obtenir le code ou le nom de la langue à partir de l'objet Drupal javascript dans un script js ??

Je sais que je peux obtenir la langue en utilisant ceci en php:

$ language =\Drupal :: languageManager () -> getCurrentLanguage () -> getId ();

Mais j'ai besoin d'avoir la langue dans mes scripts.

Tout ce que j'ai obtenu jusqu'à présent est la variable Drupal Jquery

Var d = Drupal;

Ce qui, une fois imprimé, ressemble à ceci.

{behaviors: {…}, locale: {…}, throwError: ƒ, attachBehaviors: ƒ, detachBehaviors: ƒ, …}
Ajax:ƒ (base, element, element_settings)
AjaxCommands:ƒ ()
AjaxError:ƒ (xmlhttp, uri, customMessage)
ProgressBar:ƒ (id, updateCallback, method, errorCallback)
Views:{parseQueryString: ƒ, parseViewArgs: ƒ, pathPortion: ƒ, getPath: ƒ}
ajax:ƒ (settings)
attachBehaviors:ƒ (context, settings)
behaviors:{autologout: {…}, drupalDisplace: {…}, responsiveImageAJAX: {…}, AJAX: {…}, activeLinks: {…}, …}
checkPlain:ƒ (str)
debounce:ƒ (func, wait, immediate)
detachBehaviors:ƒ (context, settings, trigger)
dialog:ƒ (element, options)
displace:ƒ displace(broadcast)
encodePath:ƒ (item)
formatPlural:ƒ (count, singular, plural, args, options)
formatString:ƒ (str, args)
history:{fetchTimestamps: ƒ, getLastRead: ƒ, markAsRead: ƒ, needsServerCheck: ƒ}
locale:{}
stringReplace:ƒ (str, args, keys)
t:ƒ (str, args, options)
theme:ƒ (func)
throwError:ƒ (error)
url:ƒ (path)
views:{instances: {…}, ajaxView: ƒ}
__proto__:Object
5
Bassem Mohamed

Vous pouvez ajouter ce que vous voulez au javascript via votre THEMENAME.theme:

function THEMENAME_preprocess_page(array &$variables) {
    $variables['#attached']['drupalSettings']['language'] = $language;
}

Après cela, vous pouvez l'appeler dans javascript:

console.log(drupalSettings.language);

Modifier

Vous devez activer drupalSettings comme dépendance dans votre THEMENAME.libraries.yml:

frontend:
  dependencies:
    - core/drupalSettings
6
btemperli

Dans les pages avec la bibliothèque core/drupalSettings incluse, elle semble être assez fiable via le chemin:

var langCode = drupalSettings.path.currentLanguage;
14
Clive