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
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
Dans les pages avec la bibliothèque core/drupalSettings incluse, elle semble être assez fiable via le chemin:
var langCode = drupalSettings.path.currentLanguage;