Gildas 1 год назад
Родитель
Сommit
22068715fc
2 измененных файлов с 31 добавлено и 4 удалено
  1. 30 3
      src/ui/bg/ui-options.js
  2. 1 1
      src/ui/pages/options.html

+ 30 - 3
src/ui/bg/ui-options.js

@@ -24,7 +24,8 @@
 /* global browser, window, document, localStorage, FileReader, location, fetch, TextDecoder, DOMParser, HTMLElement, MouseEvent */
 
 const HELP_ICON_URL = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABIUlEQVQ4y+2TsarCMBSGvxTBRdqiUZAWOrhJB9EXcPKFfCvfQYfulUKHDqXg4CYUJSioYO4mSDX3ttzt3n87fMlHTpIjlsulxpDZbEYYhgghSNOUOI5Ny2mZYBAELBYLer0eAJ7ncTweKYri4x7LJJRS0u12n7XrukgpjSc0CpVSXK/XZ32/31FKNW85z3PW6zXT6RSAJEnIsqy5UGvNZrNhu90CcDqd+C6tT6J+v//2Th+PB2VZ1hN2Oh3G4zGTyQTbtl/YbrdjtVpxu91+Ljyfz0RRhG3bzOfzF+Y4TvNXvlwuaK2pE4tfzr/wzwsty0IIURlL0998KxRCMBqN8H2/wlzXJQxD2u12vVkeDoeUZUkURRU+GAw4HA7s9/sK+wK6CWHasQ/S/wAAAABJRU5ErkJggg==";
-const HELP_PAGE_PATH = "/src/ui/pages/help.html";
+const HELP_PAGE_PATH_PREFIX = "/src/ui/pages/help";
+const HELP_PAGE_PATH_DEFAULT = "/src/ui/pages/help.html";
 let DEFAULT_PROFILE_NAME,
 	DISABLED_PROFILE_NAME,
 	CURRENT_PROFILE_NAME,
@@ -1485,7 +1486,9 @@ async function prompt(message, positionY, defaultValue = "") {
 }
 
 async function getHelpContents() {
-	const helpPage = await fetch(browser.runtime.getURL(HELP_PAGE_PATH));
+	const helpPageURL = await getHelpPageURL();
+	helpLabel.href = helpPageURL;
+	const helpPage = await fetch(helpPageURL);
 	const content = new TextDecoder().decode(await helpPage.arrayBuffer());
 	const doc = (new DOMParser()).parseFromString(content, "text/html");
 	const items = doc.querySelectorAll("[data-options-label]");
@@ -1528,7 +1531,7 @@ async function getHelpContents() {
 			helpContent.querySelectorAll("a[href]").forEach(linkElement => {
 				const hrefValue = linkElement.getAttribute("href");
 				if (hrefValue.startsWith("#")) {
-					linkElement.href = browser.runtime.getURL(HELP_PAGE_PATH + linkElement.getAttribute("href"));
+					linkElement.href = helpPageURL + hrefValue;
 					linkElement.target = "_blank";
 				}
 			});
@@ -1537,6 +1540,30 @@ async function getHelpContents() {
 	});
 }
 
+async function getHelpPageURL() {
+	const language = browser.i18n.getUILanguage().replace(/-/g, "_");
+	try {
+		const url = browser.runtime.getURL(HELP_PAGE_PATH_PREFIX + "_" + language + ".html");
+		await (await fetch(url)).arrayBuffer();
+		return url;
+	} catch (_error) {
+		try {
+			const url = browser.runtime.getURL(HELP_PAGE_PATH_PREFIX + "_" + language.split("_")[0] + ".html");
+			await (await fetch(url)).arrayBuffer();
+			return url;
+		} catch (_error) {
+			try {
+				const url = browser.runtime.getURL(HELP_PAGE_PATH_PREFIX + "_" + language.split("_")[1] + ".html");
+				await (await fetch(url)).arrayBuffer();
+				return url;
+			}
+			catch (_error) {
+				return browser.runtime.getURL(HELP_PAGE_PATH_DEFAULT);
+			}
+		}
+	}
+}
+
 function getLocalStorageItem(key) {
 	try {
 		return localStorage.getItem(key);

+ 1 - 1
src/ui/pages/options.html

@@ -604,7 +604,7 @@
 			</div>
 		</details>
 		<div class="option bottom">
-			<a href="help.html" target="SingleFileHelpPage" id="helpLabel"></a>
+			<a target="SingleFileHelpPage" id="helpLabel"></a>
 			<div class="buttons">
 				<div class="sync-input">
 					<input type="checkbox" id="synchronizeInput">