mirror of
https://github.com/morluto/rea
synced 2026-10-27 06:33:32 -04:00
32 lines
936 B
JavaScript
32 lines
936 B
JavaScript
const messages = JSON.parse(
|
|
document.getElementById("website-messages")?.textContent ?? "{}",
|
|
);
|
|
|
|
export function t(message, values = {}) {
|
|
const translated = messages[message] ?? message;
|
|
return translated.replace(/\{([a-zA-Z][a-zA-Z0-9_]*)\}/g, (match, key) =>
|
|
Object.hasOwn(values, key) ? String(values[key]) : match,
|
|
);
|
|
}
|
|
|
|
document.querySelectorAll("[data-language]").forEach((link) => {
|
|
link.addEventListener("click", () => {
|
|
const target = new URL(link.href);
|
|
target.hash = window.location.hash;
|
|
link.href = target.href;
|
|
});
|
|
});
|
|
|
|
const picker = document.querySelector(".language-picker");
|
|
if (picker !== null) {
|
|
document.addEventListener("click", (event) => {
|
|
if (!picker.contains(event.target)) picker.open = false;
|
|
});
|
|
picker.addEventListener("keydown", (event) => {
|
|
if (event.key === "Escape") {
|
|
picker.open = false;
|
|
picker.querySelector("summary").focus();
|
|
}
|
|
});
|
|
}
|