forked from 1b-agent/opencadstudio-upstream
Complete application localization across all supported languages
This commit is contained in:
1 parent
96c794c072
commit
d66e89ca19
78 files changed
+26043
-877
No files matched your search
@@ -43,6 +43,7 @@
|
||||
<link data-trunk rel="copy-file" href="web/ocs-parse-worker.js" />
|
||||
<link data-trunk rel="copy-file" href="web/discussions.json" />
|
||||
<link data-trunk rel="copy-file" href="web/videos.json" />
|
||||
<link data-trunk rel="copy-file" href="web/locale-labels.json" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="loading">
|
||||
@@ -53,6 +54,31 @@
|
||||
<script>
|
||||
(() => {
|
||||
const splash = document.getElementById("loading");
|
||||
fetch("locale-labels.json").then(response => response.json()).then(labels => {
|
||||
let saved;
|
||||
try {
|
||||
saved = JSON.parse(localStorage.getItem("opencadstudio.settings"))?.settings?.language;
|
||||
} catch {}
|
||||
const preferred = navigator.languages?.length ? navigator.languages : [navigator.language];
|
||||
const requested = typeof saved === "string" && saved !== "system" ? [saved, ...preferred] : preferred;
|
||||
const available = Object.keys(labels);
|
||||
let locale = "en-US";
|
||||
for (const candidate of requested) {
|
||||
try {
|
||||
const language = new Intl.Locale(candidate);
|
||||
const match = available.find(value => value.toLowerCase() === language.baseName.toLowerCase())
|
||||
|| (language.language === "zh"
|
||||
? (language.maximize().script === "Hant" ? "zh-TW" : "zh-CN")
|
||||
: available.find(value => value.startsWith(language.language + "-")));
|
||||
if (match) { locale = match; break; }
|
||||
} catch {}
|
||||
}
|
||||
document.title = labels[locale].title;
|
||||
document.documentElement.lang = locale;
|
||||
document.documentElement.dir = locale === "ar-SA" ? "rtl" : "ltr";
|
||||
const caption = splash?.querySelector(".sub");
|
||||
if (caption) caption.textContent = labels[locale].loading;
|
||||
}).catch(() => {});
|
||||
const done = () => {
|
||||
if (!splash) return;
|
||||
splash.classList.add("hide");
|
||||
|
||||
Reference in new issue
Block a user