diff --git a/composer.libraries.json b/composer.libraries.json
index 3b3bd20cd..975d36ae2 100644
--- a/composer.libraries.json
+++ b/composer.libraries.json
@@ -199,13 +199,13 @@
             "type": "package",
             "package": {
                 "name": "jquery/intl-tel-input",
-                "version": "17.0.19",
+                "version": "24.1.1",
                 "type": "drupal-library",
                 "extra": {
                     "installer-name": "jquery.intl-tel-input"
                 },
                 "dist": {
-                    "url": "https://github.com/jackocnr/intl-tel-input/archive/refs/tags/v17.0.19.zip",
+                    "url": "https://github.com/jackocnr/intl-tel-input/archive/refs/tags/v24.1.1.zip",
                     "type": "zip"
                 },
                 "license": "MIT"
diff --git a/js/webform.element.telephone.js b/js/webform.element.telephone.js
index 4011fe850..be0010ba5 100644
--- a/js/webform.element.telephone.js
+++ b/js/webform.element.telephone.js
@@ -19,11 +19,11 @@
    */
   Drupal.behaviors.webformTelephoneInternational = {
     attach: function (context) {
-      if (!$.fn.intlTelInput) {
+      if (!window.intlTelInput) {
         return;
       }
 
-      $(once('webform-telephone-international', 'input.js-webform-telephone-international', context)).each(function () {
+      $(once('webform-telephone-international', 'input.js-webform-telephone-international', context)).each(async function () {
         var $telephone = $(this);
 
         // Add error message container.
@@ -46,8 +46,20 @@
           options.preferredCountries = JSON.parse($telephone.attr('data-webform-telephone-international-preferred-countries'));
         }
 
+        var localization = 'en';
+        if ($telephone.attr('data-webform-telephone-international-i18n-use-site-language')) {
+          localization = drupalSettings.langcode;
+        }
+        else if ($telephone.attr('data-webform-telephone-international-i18n')) {
+          localization = $telephone.attr('data-webform-telephone-international-i18n');
+        }
+
+        const module = await import(drupalSettings.webform.intlTelInput.i18nPath + localization + '/index.js');
+        options.i18n = module.default;
+
         options = $.extend(options, Drupal.webform.intlTelInput.options);
-        $telephone.intlTelInput(options);
+        window.intlTelInput(this, options);
+        const iti = intlTelInput.getInstance(this);
 
         var reset = function () {
           $telephone.removeClass('error');
@@ -56,7 +68,7 @@
 
         var validate = function () {
           if ($.trim($telephone.val())) {
-            if (!$telephone.intlTelInput('isValidNumber')) {
+            if (!iti.isValidNumber()) {
               $telephone.addClass('error');
               var placeholder = $telephone.attr('placeholder');
               var message;
diff --git a/src/Plugin/WebformElement/Telephone.php b/src/Plugin/WebformElement/Telephone.php
index ec6bc1cab..fdf0b1823 100644
--- a/src/Plugin/WebformElement/Telephone.php
+++ b/src/Plugin/WebformElement/Telephone.php
@@ -62,12 +62,14 @@ class Telephone extends TextBase {
    */
   protected function defineDefaultProperties() {
     $properties = [
-      'input_hide' => FALSE,
-      'multiple' => FALSE,
-      'international' => FALSE,
-      'international_initial_country' => '',
-      'international_preferred_countries' => [],
-    ] + parent::defineDefaultProperties() + $this->defineDefaultMultipleProperties();
+        'input_hide' => FALSE,
+        'multiple' => FALSE,
+        'international' => FALSE,
+        'international_initial_country' => '',
+        'international_preferred_countries' => [],
+        'international_i18n_use_site_language' => FALSE,
+        'international_i18n' => '',
+      ] + parent::defineDefaultProperties() + $this->defineDefaultMultipleProperties();
     // Add support for telephone_validation.module.
     if ($this->moduleHandler->moduleExists('telephone_validation')) {
       $properties += [
@@ -97,16 +99,25 @@ class Telephone extends TextBase {
     // Add international library and classes.
     if (!empty($element['#international']) && $this->librariesManager->isIncluded('jquery.intl-tel-input')) {
       $element['#attached']['library'][] = 'webform/webform.element.telephone';
-
+      
       $element['#attributes']['class'][] = 'js-webform-telephone-international';
       $element['#attributes']['class'][] = 'webform-webform-telephone-international';
-
+      
       if (!empty($element['#international_initial_country'])) {
         $element['#attributes']['data-webform-telephone-international-initial-country'] = $element['#international_initial_country'];
       }
       if (!empty($element['#international_preferred_countries'])) {
         $element['#attributes']['data-webform-telephone-international-preferred-countries'] = Json::encode($element['#international_preferred_countries']);
       }
+      if (!empty($element['#international_i18n_use_site_language'])) {
+        $element['#attributes']['data-webform-telephone-international-i18n-use-site-language'] = strval($element['#international_i18n_use_site_language']);
+      }
+      if (!empty($element['#international_i18n'])) {
+        $element['#attributes']['data-webform-telephone-international-i18n'] = $element['#international_i18n'];
+      }
+      else {
+        $element['#attributes']['data-webform-telephone-international-i18n'] = 'en';
+      }
 
       // The utilsScript is fetched when the page has finished loading to
       // prevent blocking.
@@ -118,11 +129,14 @@ class Telephone extends TextBase {
         $intl_tel_input_library = $this->libraryDiscovery->getLibraryByName('webform', 'libraries.jquery.intl-tel-input');
         $cdn = reset($intl_tel_input_library['cdn']);
         $utils_script = $cdn . 'build/js/utils.js';
+        $i18n_path = $cdn . 'build/js/i18n/';
       }
       else {
         $utils_script = base_path() . $library_path . '/build/js/utils.js';
+        $i18n_path = base_path() . $library_path . '/build/js/i18n/';
       }
       $element['#attached']['drupalSettings']['webform']['intlTelInput']['utilsScript'] = $utils_script;
+      $element['#attached']['drupalSettings']['webform']['intlTelInput']['i18nPath'] = $i18n_path;
     }
 
     if ($this->moduleHandler->moduleExists('telephone_validation')) {
@@ -183,12 +197,35 @@ class Telephone extends TextBase {
       ],
     ];
     $this->elementManager->processElement($form['telephone']['international_preferred_countries']);
+    $form['telephone']['international_i18n_use_site_language'] = [
+      '#type' => 'checkbox',
+      '#title' => $this->t('Use selected site language for localization of country names'),
+      '#description' => $this->t('Specify whether to use the currently selected site language for country localization. If not set, use the language code entered below.'),
+      '#return_value' => TRUE,
+      '#states' => [
+        'visible' => [':input[name="properties[international]"]' => ['checked' => TRUE]],
+      ],
+    ];
+    $form['telephone']['international_i18n'] = [
+      '#title' => $this->t('Code language for localization of country names'),
+      '#type' => 'textfield',
+      '#size' => 5,
+      '#description' => $this->t('Specify existing code language from intl-tel-input library. If not set, use English.'),
+      '#states' => [
+        'visible' => [':input[name="properties[international]"]' => ['checked' => TRUE],
+        'and',
+        ':input[name="properties[international_i18n_use_site_language]"]' => ['checked' => FALSE]],
+      ],
+    ];
+    $this->elementManager->processElement($form['telephone']['international_i18n']);
 
     if ($this->librariesManager->isExcluded('jquery.intl-tel-input')) {
       $form['telephone']['#access'] = FALSE;
       $form['telephone']['international']['#access'] = FALSE;
       $form['telephone']['international_initial_country']['#access'] = FALSE;
       $form['telephone']['international_preferred_countries']['#access'] = FALSE;
+      $form['telephone']['international_i18n_use_site_language']['#access'] = FALSE;
+      $form['telephone']['international_i18n']['#access'] = FALSE;
     }
 
     // Add support for telephone_validation.module.
diff --git a/src/WebformLibrariesManager.php b/src/WebformLibrariesManager.php
index c1c6fea3c..e640be14d 100644
--- a/src/WebformLibrariesManager.php
+++ b/src/WebformLibrariesManager.php
@@ -352,8 +352,8 @@ class WebformLibrariesManager implements WebformLibrariesManagerInterface {
       'description' => $this->t("A jQuery plugin for entering and validating international telephone numbers. It adds a flag dropdown to any input, detects the user's country, displays a relevant placeholder and provides formatting/validation methods."),
       'notes' => $this->t('International Telephone Input is used by the Telephone element.'),
       'homepage_url' => Url::fromUri('https://github.com/jackocnr/intl-tel-input'),
-      'download_url' => Url::fromUri('https://github.com/jackocnr/intl-tel-input/archive/refs/tags/v17.0.19.zip'),
-      'version' => '17.0.19',
+      'download_url' => Url::fromUri('https://github.com/jackocnr/intl-tel-input/archive/refs/tags/v24.1.1.zip'),
+      'version' => '24.1.1',
       'license' => 'MIT',
     ];
     $libraries['jquery.rateit'] = [
diff --git a/tests/modules/webform_test/config/install/webform.webform.test_element_telephone.yml b/tests/modules/webform_test/config/install/webform.webform.test_element_telephone.yml
index 8bd2de416..d403e8131 100644
--- a/tests/modules/webform_test/config/install/webform.webform.test_element_telephone.yml
+++ b/tests/modules/webform_test/config/install/webform.webform.test_element_telephone.yml
@@ -46,6 +46,16 @@ elements: |
     '#international': true
     '#international_preferred_countries':
       - ZW
+  tel_i18n:
+    '#type': tel
+    '#title': tel_i18n
+    '#international': true
+    '#international_i18n': 'en'
+  tel_i18n_use_site_language:
+    '#type': tel
+    '#title': tel_i18n_use_site_language
+    '#international': true
+    '#international_i18n_use_site_language': true
 css: ''
 javascript: ''
 settings:
diff --git a/tests/src/Functional/Element/WebformElementPluginPropertiesTest.php b/tests/src/Functional/Element/WebformElementPluginPropertiesTest.php
index 48ac9277f..e35afd1c8 100644
--- a/tests/src/Functional/Element/WebformElementPluginPropertiesTest.php
+++ b/tests/src/Functional/Element/WebformElementPluginPropertiesTest.php
@@ -1520,6 +1520,8 @@ tel:
   international: false
   international_initial_country: ''
   international_preferred_countries: {  }
+  international_i18n: ''
+  international_i18n_use_site_language: false
   label_attributes: {  }
   maxlength: null
   minlength: null
diff --git a/webform.libraries.yml b/webform.libraries.yml
index 18392ebf2..95ee61824 100644
--- a/webform.libraries.yml
+++ b/webform.libraries.yml
@@ -840,7 +840,7 @@ webform.element.states:
 
 webform.element.telephone:
   js:
-    js/webform.element.telephone.js: {}
+    js/webform.element.telephone.js: { attributes: { type: module } }
   dependencies:
     - core/drupal
     - core/jquery
@@ -1056,20 +1056,20 @@ libraries.jquery.inputmask:
 
 libraries.jquery.intl-tel-input:
   remote: https://github.com/jackocnr/intl-tel-input
-  version: 'v17.0.19'
+  version: 'v24.1.1'
   license:
     name: MIT
     url: https://github.com/jackocnr/intl-tel-input/blob/master/LICENSE
     gpl-compatible: true
   directory: jquery.intl-tel-input
   cdn:
-    /libraries/jquery.intl-tel-input/: https://cdn.jsdelivr.net/gh/jackocnr/intl-tel-input@v17.0.19/
+    /libraries/jquery.intl-tel-input/: https://cdn.jsdelivr.net/gh/jackocnr/intl-tel-input@v24.1.1/
   css:
     component:
       /libraries/jquery.intl-tel-input/build/css/intlTelInput.min.css: { minified: true }
   js:
     /libraries/jquery.intl-tel-input/build/js/intlTelInput.min.js: { minified: true }
-    /libraries/jquery.intl-tel-input/build/js/intlTelInput-jquery.min.js: { minified: true }
+    /libraries/jquery.intl-tel-input/build/js/intlTelInputWithUtils.min.js: { minified: true }
 
   dependencies:
     - core/jquery
diff --git a/webform.module b/webform.module
index 363e8f52e..e51a714f7 100644
--- a/webform.module
+++ b/webform.module
@@ -605,6 +605,9 @@ function webform_page_attachments(array &$attachments) {
     }
   }
 
+  // Send along current langcode for proper translation.
+  $attachments['#attached']['drupalSettings']['langcode'] = \Drupal::languageManager()->getCurrentLanguage()->getId();
+
   // Attach webform more element to token token help.
   // @see webform_token_info_alter()
   if ($route_name === 'help.page' && \Drupal::routeMatch()->getRawParameter('name') === 'token') {
