diff --git a/landing/app.js b/landing/app.js
index 94e3e6a79..9cf7df37b 100644
--- a/landing/app.js
+++ b/landing/app.js
@@ -12,23 +12,31 @@
const toggle = document.querySelector('[data-menu-toggle]');
const links = document.querySelector('[data-nav-links]');
+ const isIndonesian = document.documentElement.lang === 'id';
+ const menuLabel = isIndonesian
+ ? { open: 'Buka navigasi', close: 'Tutup navigasi' }
+ : { open: 'Open navigation', close: 'Close navigation' };
+ links?.setAttribute('aria-label', isIndonesian ? 'Navigasi utama' : 'Primary navigation');
+ toggle?.setAttribute('aria-label', menuLabel.open);
const closeMenu = () => {
if (!toggle || !links) return;
links.classList.remove('open');
toggle.setAttribute('aria-expanded', 'false');
- toggle.setAttribute('aria-label', 'Open navigation');
+ toggle.setAttribute('aria-label', menuLabel.open);
};
if (toggle && links) {
toggle.addEventListener('click', () => {
const isOpen = links.classList.toggle('open');
toggle.setAttribute('aria-expanded', String(isOpen));
- toggle.setAttribute('aria-label', isOpen ? 'Close navigation' : 'Open navigation');
+ toggle.setAttribute('aria-label', isOpen ? menuLabel.close : menuLabel.open);
});
links.addEventListener('click', event => {
- if (event.target instanceof HTMLAnchorElement) closeMenu();
+ // Localized link labels contain spans; taps on their text must also close the menu.
+ const target = event.target instanceof Element ? event.target.closest('a[href]') : null;
+ if (target instanceof HTMLAnchorElement && links.contains(target)) closeMenu();
});
document.addEventListener('keydown', event => {
diff --git a/landing/partials/header.html b/landing/partials/header.html
index 935561531..1bba475cb 100644
--- a/landing/partials/header.html
+++ b/landing/partials/header.html
@@ -1,21 +1,26 @@
-Skip to content
+Skip to contentLangsung ke konten
\ No newline at end of file
diff --git a/tests/ARSAS.Tests/WebsiteHeroLocalizationRegressionTests.cs b/tests/ARSAS.Tests/WebsiteHeroLocalizationRegressionTests.cs
index b8aa06904..d5343dc4e 100644
--- a/tests/ARSAS.Tests/WebsiteHeroLocalizationRegressionTests.cs
+++ b/tests/ARSAS.Tests/WebsiteHeroLocalizationRegressionTests.cs
@@ -138,6 +138,28 @@ public void GuidedDemo_UsesActualV1642CapturesWithOriginalPngLinks(string path)
}
}
+ [Fact]
+ public void PublicNavigation_UsesLocaleSpecificDestinationsAndAccessibleMenuLabels()
+ {
+ var header = Read("landing/partials/header.html");
+ var css = Read("landing/audit.css");
+ var app = Read("landing/app.js");
+
+ Assert.Contains("Langsung ke konten", header, StringComparison.Ordinal);
+ Assert.Contains("href=\"id.html\" data-nav-page=\"overview\" data-lang=\"id\"", header, StringComparison.Ordinal);
+ Assert.Contains("href=\"pusat-belajar-iec61850.html\" data-nav-page=\"learn\" data-lang=\"id\"", header, StringComparison.Ordinal);
+ Assert.Contains("href=\"panduan.html\" data-nav-page=\"guides\" data-lang=\"id\"", header, StringComparison.Ordinal);
+ Assert.Contains("href=\"unduh.html\" data-nav-page=\"download\"", header, StringComparison.Ordinal);
+ Assert.Contains("href=\"./\" lang=\"en\" hreflang=\"en\"", header, StringComparison.Ordinal);
+ Assert.Contains("aria-controls=\"arsas-primary-nav\"", header, StringComparison.Ordinal);
+ Assert.Contains("[data-lang=\"id\"] { display: none; }", css, StringComparison.Ordinal);
+ Assert.Contains("html[lang=\"id\"] [data-lang=\"en\"] { display: none; }", css, StringComparison.Ordinal);
+ Assert.Contains("Buka navigasi", app, StringComparison.Ordinal);
+ Assert.Contains("Tutup navigasi", app, StringComparison.Ordinal);
+ Assert.Contains("Navigasi utama", app, StringComparison.Ordinal);
+ Assert.Contains("menuLabel.close : menuLabel.open", app, StringComparison.Ordinal);
+ }
+
[Fact]
public void CssArchitecture_ReplacesPhaseOverridesWithSemanticScopedLayers()
{