diff --git a/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
index cd951db5721033e5f039c3f1c44f44e6cc45c2f7..9a5a1e98042fba6f11437a85a84005e5f1801466 100755
--- a/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
+++ b/modules/oe_whitelabel_multilingual/oe_whitelabel_multilingual.module
@@ -7,6 +7,8 @@
 
 declare(strict_types =  1);
 
+use Drupal\Component\Utility\Html;
+
 /**
  * Implements hook_preprocess_links().
  */
@@ -57,6 +59,9 @@ function oe_whitelabel_multilingual_preprocess_links__oe_multilingual_content_la
       ],
     ];
   }
+
+  // Generate required ids.
+  $variables['expandable_id'] = Html::getUniqueId('bcl-expandable');
 }
 
 /**
diff --git a/templates/overrides/navigation/links--oe-multilingual-content-language-block.html.twig b/templates/overrides/navigation/links--oe-multilingual-content-language-block.html.twig
index 1250046bb7e7f0c83c70850379bc90083ca10076..784fbbf2f9324630b427745ad00fbc88dbf4d79f 100644
--- a/templates/overrides/navigation/links--oe-multilingual-content-language-block.html.twig
+++ b/templates/overrides/navigation/links--oe-multilingual-content-language-block.html.twig
@@ -4,7 +4,7 @@
   _id, _message and _expandable are overwritten.
   @todo Call include once BCL 0.20 is available.
   #}
-  {% set _id = "dropdown-languages" %}
+  {% set _id = expandable_id %}
   {% set _message = {
     message: "This page is not available in @language."|t({'@language': unavailable_language}),
     path: bcl_icon_path,
diff --git a/tests/src/Kernel/ContentLanguageSwitcherTest.php b/tests/src/Kernel/ContentLanguageSwitcherTest.php
index 33881e7815d1098755a8033153cf44a209b64c7f..49c72b792642ca7b70fc5614f2d389164e03b4f5 100644
--- a/tests/src/Kernel/ContentLanguageSwitcherTest.php
+++ b/tests/src/Kernel/ContentLanguageSwitcherTest.php
@@ -109,7 +109,7 @@ class ContentLanguageSwitcherTest extends KernelTestBase {
     $crawler = new Crawler($html);
 
     // Make sure that content language switcher block is present.
-    $actual = $crawler->filter('#dropdown-languages');
+    $actual = $crawler->filter('div.collapse.mt-3');
     $this->assertCount(1, $actual);
 
     // Warning message doesn't contain the unavailable language, the translation
@@ -154,7 +154,7 @@ class ContentLanguageSwitcherTest extends KernelTestBase {
    */
   protected function assertSelectedLanguage(Crawler $crawler, string $expected): void {
     // The selected language link will contain a svg, so we target that.
-    $actual = $crawler->filter('#dropdown-languages > div > a > svg')->parents()->first()->text();
+    $actual = $crawler->filter('div.collapse.mt-3 > div > a > svg')->parents()->first()->text();
     $this->assertEquals($expected, trim($actual));
   }
 
@@ -180,7 +180,7 @@ class ContentLanguageSwitcherTest extends KernelTestBase {
    *   The labels of the translations that should be rendered as links.
    */
   protected function assertTranslationLinks(Crawler $crawler, array $expected): void {
-    $elements = $crawler->filter('#dropdown-languages > div > a');
+    $elements = $crawler->filter('div.collapse.mt-3 > div > a');
     // Filter out the selected language.
     $elements = $elements->reduce(function (Crawler $crawler) {
       return $crawler->filter('svg')->count() === 0;