browser-extension-settings 0.5.6 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -3
- package/lib/extension-list.ts +2 -2
- package/lib/index.ts +1 -1
- package/lib/messages/de.ts +15 -0
- package/lib/messages/en.ts +1 -0
- package/lib/messages/es.ts +15 -0
- package/lib/messages/fr.ts +15 -0
- package/lib/messages/index.ts +56 -8
- package/lib/messages/it.ts +15 -0
- package/lib/messages/ja.ts +15 -0
- package/lib/messages/ko.ts +15 -0
- package/lib/messages/pt.ts +15 -0
- package/lib/messages/ru.ts +15 -0
- package/lib/messages/vi.ts +15 -0
- package/lib/messages/zh-cn.ts +1 -0
- package/lib/messages/zh-hk.ts +15 -0
- package/lib/messages/zh-tw.ts +15 -0
- package/lib/settings.ts +66 -9
- package/package.json +12 -8
package/README.md
CHANGED
|
@@ -19,6 +19,4 @@ Copyright (c) 2023 [Pipecraft](https://www.pipecraft.net). Licensed under the [M
|
|
|
19
19
|
## >\_
|
|
20
20
|
|
|
21
21
|
[](https://www.pipecraft.net)
|
|
22
|
-
[](https://utags.
|
|
23
|
-
[](https://dto.pipecraft.net)
|
|
24
|
-
[](https://www.bestxtools.com)
|
|
22
|
+
[](https://utags.link)
|
package/lib/extension-list.ts
CHANGED
|
@@ -7,8 +7,8 @@ import {
|
|
|
7
7
|
createHTML,
|
|
8
8
|
removeClass,
|
|
9
9
|
} from "browser-extension-utils"
|
|
10
|
-
import { openButton, openInNewTabButton } from "./common"
|
|
11
|
-
import { i } from "./messages"
|
|
10
|
+
import { openButton, openInNewTabButton } from "./common.js"
|
|
11
|
+
import { i } from "./messages/index.js"
|
|
12
12
|
|
|
13
13
|
type InstalledExtension = {
|
|
14
14
|
id: string
|
package/lib/index.ts
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const messages = {
|
|
2
|
+
"settings.title": "Einstellungen",
|
|
3
|
+
"settings.otherExtensions": "Andere Erweiterungen",
|
|
4
|
+
"settings.locale": "Sprache",
|
|
5
|
+
"settings.displaySettingsButtonInSideMenu": "Einstellungsschaltfläche im Seitenmenü anzeigen",
|
|
6
|
+
"settings.menu.settings": "⚙️ Einstellungen",
|
|
7
|
+
"settings.extensions.utags.title": "🏷️ UTags - Benutzer-Tags zu Links hinzufügen",
|
|
8
|
+
"settings.extensions.links-helper.title": "🔗 Link-Assistent",
|
|
9
|
+
"settings.extensions.v2ex.rep.title": "V2EX.REP - 专注提升 V2EX 主题回复浏览体验",
|
|
10
|
+
"settings.extensions.v2ex.min.title": "v2ex.min - V2EX Minimalistischer Stil",
|
|
11
|
+
"settings.extensions.replace-ugly-avatars.title": "Hässliche Avatare ersetzen",
|
|
12
|
+
"settings.extensions.more-by-pipecraft.title": "Weitere nützliche Benutzerskripte finden",
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export default messages
|
package/lib/messages/en.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const messages = {
|
|
2
2
|
"settings.title": "Settings",
|
|
3
3
|
"settings.otherExtensions": "Other Extensions",
|
|
4
|
+
"settings.locale": "Language",
|
|
4
5
|
"settings.displaySettingsButtonInSideMenu": "Display Settings Button in Side Menu",
|
|
5
6
|
"settings.menu.settings": "⚙️ Settings",
|
|
6
7
|
"settings.extensions.utags.title": "🏷️ UTags - Add usertags to links",
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const messages = {
|
|
2
|
+
"settings.title": "Configuración",
|
|
3
|
+
"settings.otherExtensions": "Otras extensiones",
|
|
4
|
+
"settings.locale": "Idioma",
|
|
5
|
+
"settings.displaySettingsButtonInSideMenu": "Mostrar botón de configuración en el menú lateral",
|
|
6
|
+
"settings.menu.settings": "⚙️ Configuración",
|
|
7
|
+
"settings.extensions.utags.title": "🏷️ UTags - Agregar etiquetas de usuario a los enlaces",
|
|
8
|
+
"settings.extensions.links-helper.title": "🔗 Asistente de enlaces",
|
|
9
|
+
"settings.extensions.v2ex.rep.title": "V2EX.REP - 专注提升 V2EX 主题回复浏览体验",
|
|
10
|
+
"settings.extensions.v2ex.min.title": "v2ex.min - Estilo minimalista V2EX",
|
|
11
|
+
"settings.extensions.replace-ugly-avatars.title": "Reemplazar avatares feos",
|
|
12
|
+
"settings.extensions.more-by-pipecraft.title": "Encontrar más scripts de usuario útiles",
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export default messages
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const messages = {
|
|
2
|
+
"settings.title": "Paramètres",
|
|
3
|
+
"settings.otherExtensions": "Autres extensions",
|
|
4
|
+
"settings.locale": "Langue",
|
|
5
|
+
"settings.displaySettingsButtonInSideMenu": "Afficher le bouton des paramètres dans le menu latéral",
|
|
6
|
+
"settings.menu.settings": "⚙️ Paramètres",
|
|
7
|
+
"settings.extensions.utags.title": "🏷️ UTags - Ajouter des balises utilisateur aux liens",
|
|
8
|
+
"settings.extensions.links-helper.title": "🔗 Assistant de liens",
|
|
9
|
+
"settings.extensions.v2ex.rep.title": "V2EX.REP - 专注提升 V2EX 主题回复浏览体验",
|
|
10
|
+
"settings.extensions.v2ex.min.title": "v2ex.min - Style minimaliste V2EX",
|
|
11
|
+
"settings.extensions.replace-ugly-avatars.title": "Remplacer les avatars laids",
|
|
12
|
+
"settings.extensions.more-by-pipecraft.title": "Trouver plus de scripts utilisateur utiles",
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export default messages
|
package/lib/messages/index.ts
CHANGED
|
@@ -1,8 +1,56 @@
|
|
|
1
|
-
import { initI18n } from "browser-extension-i18n"
|
|
2
|
-
import messagesEn from "./en"
|
|
3
|
-
import messagesZh from "./zh-cn"
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { initAvailableLocales, initI18n, extractLocaleFromNavigator } from "browser-extension-i18n"
|
|
2
|
+
import messagesEn from "./en.js"
|
|
3
|
+
import messagesZh from "./zh-cn.js"
|
|
4
|
+
import messagesZhHk from "./zh-hk.js"
|
|
5
|
+
import messagesZhTw from "./zh-tw.js"
|
|
6
|
+
import messagesRu from "./ru.js"
|
|
7
|
+
import messagesKo from "./ko.js"
|
|
8
|
+
import messagesJa from "./ja.js"
|
|
9
|
+
import messagesFr from "./fr.js"
|
|
10
|
+
import messagesDe from "./de.js"
|
|
11
|
+
import messagesIt from "./it.js"
|
|
12
|
+
import messagesEs from "./es.js"
|
|
13
|
+
import messagesPt from "./pt.js"
|
|
14
|
+
import messagesVi from "./vi.js"
|
|
15
|
+
|
|
16
|
+
const localeMap = {
|
|
17
|
+
en: messagesEn,
|
|
18
|
+
"en-US": messagesEn,
|
|
19
|
+
zh: messagesZh,
|
|
20
|
+
"zh-CN": messagesZh,
|
|
21
|
+
"zh-HK": messagesZhHk,
|
|
22
|
+
"zh-TW": messagesZhTw,
|
|
23
|
+
ru: messagesRu,
|
|
24
|
+
"ru-RU": messagesRu,
|
|
25
|
+
ko: messagesKo,
|
|
26
|
+
"ko-KR": messagesKo,
|
|
27
|
+
ja: messagesJa,
|
|
28
|
+
"ja-JP": messagesJa,
|
|
29
|
+
fr: messagesFr,
|
|
30
|
+
"fr-FR": messagesFr,
|
|
31
|
+
de: messagesDe,
|
|
32
|
+
"de-DE": messagesDe,
|
|
33
|
+
it: messagesIt,
|
|
34
|
+
"it-IT": messagesIt,
|
|
35
|
+
es: messagesEs,
|
|
36
|
+
"es-ES": messagesEs,
|
|
37
|
+
pt: messagesPt,
|
|
38
|
+
"pt-PT": messagesPt,
|
|
39
|
+
"pt-BR": messagesPt,
|
|
40
|
+
vi: messagesVi,
|
|
41
|
+
"vi-VN": messagesVi,
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const locales = Object.keys(localeMap)
|
|
45
|
+
|
|
46
|
+
initAvailableLocales(locales)
|
|
47
|
+
|
|
48
|
+
export const prefferedLocale = extractLocaleFromNavigator() || "en"
|
|
49
|
+
console.log("[settings] prefferedLocale:", prefferedLocale)
|
|
50
|
+
// eslint-disable-next-line import/no-mutable-exports
|
|
51
|
+
export let i = initI18n(localeMap, prefferedLocale)
|
|
52
|
+
|
|
53
|
+
export function resetI18n(locale?: string) {
|
|
54
|
+
console.log("[settings] prefferedLocale:", prefferedLocale, "locale:", locale)
|
|
55
|
+
i = initI18n(localeMap, locale || prefferedLocale)
|
|
56
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const messages = {
|
|
2
|
+
"settings.title": "Impostazioni",
|
|
3
|
+
"settings.otherExtensions": "Altre estensioni",
|
|
4
|
+
"settings.locale": "Lingua",
|
|
5
|
+
"settings.displaySettingsButtonInSideMenu": "Mostra il pulsante delle impostazioni nel menu laterale",
|
|
6
|
+
"settings.menu.settings": "⚙️ Impostazioni",
|
|
7
|
+
"settings.extensions.utags.title": "🏷️ UTags - Aggiungi tag utente ai collegamenti",
|
|
8
|
+
"settings.extensions.links-helper.title": "🔗 Assistente collegamenti",
|
|
9
|
+
"settings.extensions.v2ex.rep.title": "V2EX.REP - 专注提升 V2EX 主题回复浏览体验",
|
|
10
|
+
"settings.extensions.v2ex.min.title": "v2ex.min - Stile minimalista V2EX",
|
|
11
|
+
"settings.extensions.replace-ugly-avatars.title": "Sostituisci avatar brutti",
|
|
12
|
+
"settings.extensions.more-by-pipecraft.title": "Trova più script utente utili",
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export default messages
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const messages = {
|
|
2
|
+
"settings.title": "設定",
|
|
3
|
+
"settings.otherExtensions": "その他の拡張機能",
|
|
4
|
+
"settings.locale": "言語",
|
|
5
|
+
"settings.displaySettingsButtonInSideMenu": "サイドメニューに設定ボタンを表示",
|
|
6
|
+
"settings.menu.settings": "⚙️ 設定",
|
|
7
|
+
"settings.extensions.utags.title": "🏷️ UTags - リンクにユーザータグを追加",
|
|
8
|
+
"settings.extensions.links-helper.title": "🔗 リンクヘルパー",
|
|
9
|
+
"settings.extensions.v2ex.rep.title": "V2EX.REP - 专注提升 V2EX 主题回复浏览体验",
|
|
10
|
+
"settings.extensions.v2ex.min.title": "v2ex.min - V2EX ミニマルスタイル",
|
|
11
|
+
"settings.extensions.replace-ugly-avatars.title": "醜いアバターを置き換える",
|
|
12
|
+
"settings.extensions.more-by-pipecraft.title": "より便利なユーザースクリプトを見つける",
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export default messages
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const messages = {
|
|
2
|
+
"settings.title": "설정",
|
|
3
|
+
"settings.otherExtensions": "다른 확장 프로그램",
|
|
4
|
+
"settings.locale": "언어",
|
|
5
|
+
"settings.displaySettingsButtonInSideMenu": "사이드 메뉴에 설정 버튼 표시",
|
|
6
|
+
"settings.menu.settings": "⚙️ 설정",
|
|
7
|
+
"settings.extensions.utags.title": "🏷️ UTags - 링크에 사용자 태그 추가",
|
|
8
|
+
"settings.extensions.links-helper.title": "🔗 링크 도우미",
|
|
9
|
+
"settings.extensions.v2ex.rep.title": "V2EX.REP - 专注提升 V2EX 主题回复浏览体验",
|
|
10
|
+
"settings.extensions.v2ex.min.title": "v2ex.min - V2EX 미니멀 스타일",
|
|
11
|
+
"settings.extensions.replace-ugly-avatars.title": "못생긴 아바타 교체",
|
|
12
|
+
"settings.extensions.more-by-pipecraft.title": "더 유용한 사용자 스크립트 찾기",
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export default messages
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const messages = {
|
|
2
|
+
"settings.title": "Configurações",
|
|
3
|
+
"settings.otherExtensions": "Outras extensões",
|
|
4
|
+
"settings.locale": "Idioma",
|
|
5
|
+
"settings.displaySettingsButtonInSideMenu": "Exibir botão de configurações no menu lateral",
|
|
6
|
+
"settings.menu.settings": "⚙️ Configurações",
|
|
7
|
+
"settings.extensions.utags.title": "🏷️ UTags - Adicionar tags de usuário aos links",
|
|
8
|
+
"settings.extensions.links-helper.title": "🔗 Assistente de links",
|
|
9
|
+
"settings.extensions.v2ex.rep.title": "V2EX.REP - 专注提升 V2EX 主题回复浏览体验",
|
|
10
|
+
"settings.extensions.v2ex.min.title": "v2ex.min - Estilo minimalista V2EX",
|
|
11
|
+
"settings.extensions.replace-ugly-avatars.title": "Substituir avatares feios",
|
|
12
|
+
"settings.extensions.more-by-pipecraft.title": "Encontrar mais scripts de usuário úteis",
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export default messages
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const messages = {
|
|
2
|
+
"settings.title": "Настройки",
|
|
3
|
+
"settings.otherExtensions": "Другие расширения",
|
|
4
|
+
"settings.locale": "Язык",
|
|
5
|
+
"settings.displaySettingsButtonInSideMenu": "Показать кнопку настроек в боковом меню",
|
|
6
|
+
"settings.menu.settings": "⚙️ Настройки",
|
|
7
|
+
"settings.extensions.utags.title": "🏷️ UTags - Добавить пользовательские теги к ссылкам",
|
|
8
|
+
"settings.extensions.links-helper.title": "🔗 Помощник ссылок",
|
|
9
|
+
"settings.extensions.v2ex.rep.title": "V2EX.REP - 专注提升 V2EX 主题回复浏览体验",
|
|
10
|
+
"settings.extensions.v2ex.min.title": "v2ex.min - V2EX Минималистичный стиль",
|
|
11
|
+
"settings.extensions.replace-ugly-avatars.title": "Заменить некрасивые аватары",
|
|
12
|
+
"settings.extensions.more-by-pipecraft.title": "Найти больше полезных пользовательских скриптов",
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export default messages
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const messages = {
|
|
2
|
+
"settings.title": "Cài đặt",
|
|
3
|
+
"settings.otherExtensions": "Tiện ích mở rộng khác",
|
|
4
|
+
"settings.locale": "Ngôn ngữ",
|
|
5
|
+
"settings.displaySettingsButtonInSideMenu": "Hiển thị nút cài đặt trong menu bên",
|
|
6
|
+
"settings.menu.settings": "⚙️ Cài đặt",
|
|
7
|
+
"settings.extensions.utags.title": "🏷️ UTags - Thêm thẻ người dùng vào liên kết",
|
|
8
|
+
"settings.extensions.links-helper.title": "🔗 Trợ lý liên kết",
|
|
9
|
+
"settings.extensions.v2ex.rep.title": "V2EX.REP - 专注提升 V2EX 主题回复浏览体验",
|
|
10
|
+
"settings.extensions.v2ex.min.title": "v2ex.min - Phong cách tối giản V2EX",
|
|
11
|
+
"settings.extensions.replace-ugly-avatars.title": "Thay thế avatar xấu",
|
|
12
|
+
"settings.extensions.more-by-pipecraft.title": "Tìm thêm script người dùng hữu ích",
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export default messages
|
package/lib/messages/zh-cn.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export const messages = {
|
|
2
2
|
"settings.title": "设置",
|
|
3
3
|
"settings.otherExtensions": "其他扩展",
|
|
4
|
+
"settings.locale": "语言",
|
|
4
5
|
"settings.displaySettingsButtonInSideMenu": "在侧边栏菜单中显示设置按钮",
|
|
5
6
|
"settings.menu.settings": "⚙️ 设置",
|
|
6
7
|
"settings.extensions.utags.title": "🏷️ 小鱼标签 (UTags) - 为链接添加用户标签",
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const messages = {
|
|
2
|
+
"settings.title": "設定",
|
|
3
|
+
"settings.otherExtensions": "其他擴充功能",
|
|
4
|
+
"settings.locale": "語言",
|
|
5
|
+
"settings.displaySettingsButtonInSideMenu": "在側邊欄選單中顯示設定按鈕",
|
|
6
|
+
"settings.menu.settings": "⚙️ 設定",
|
|
7
|
+
"settings.extensions.utags.title": "🏷️ 小魚標籤 (UTags) - 為連結添加用戶標籤",
|
|
8
|
+
"settings.extensions.links-helper.title": "🔗 連結助手",
|
|
9
|
+
"settings.extensions.v2ex.rep.title": "V2EX.REP - 专注提升 V2EX 主题回复浏览体验",
|
|
10
|
+
"settings.extensions.v2ex.min.title": "v2ex.min - V2EX 極簡風格",
|
|
11
|
+
"settings.extensions.replace-ugly-avatars.title": "賜你個頭像吧",
|
|
12
|
+
"settings.extensions.more-by-pipecraft.title": "更多有趣的腳本",
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export default messages
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const messages = {
|
|
2
|
+
"settings.title": "設定",
|
|
3
|
+
"settings.otherExtensions": "其他擴充功能",
|
|
4
|
+
"settings.locale": "語言",
|
|
5
|
+
"settings.displaySettingsButtonInSideMenu": "在側邊欄選單中顯示設定按鈕",
|
|
6
|
+
"settings.menu.settings": "⚙️ 設定",
|
|
7
|
+
"settings.extensions.utags.title": "🏷️ 小魚標籤 (UTags) - 為連結新增使用者標籤",
|
|
8
|
+
"settings.extensions.links-helper.title": "🔗 連結助手",
|
|
9
|
+
"settings.extensions.v2ex.rep.title": "V2EX.REP - 专注提升 V2EX 主题回复浏览体验",
|
|
10
|
+
"settings.extensions.v2ex.min.title": "v2ex.min - V2EX 極簡風格",
|
|
11
|
+
"settings.extensions.replace-ugly-avatars.title": "替換醜陋的頭像",
|
|
12
|
+
"settings.extensions.more-by-pipecraft.title": "更多有趣的腳本",
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export default messages
|
package/lib/settings.ts
CHANGED
|
@@ -18,16 +18,16 @@ import {
|
|
|
18
18
|
runWhenHeadExists,
|
|
19
19
|
} from "browser-extension-utils"
|
|
20
20
|
import styleText from "data-text:./style.scss"
|
|
21
|
-
import { createSwitchOption } from "./switch"
|
|
21
|
+
import { createSwitchOption } from "./switch.js"
|
|
22
22
|
import {
|
|
23
23
|
createExtensionList,
|
|
24
24
|
addCurrentExtension,
|
|
25
25
|
activeExtension,
|
|
26
26
|
activeExtensionList,
|
|
27
27
|
deactiveExtensionList,
|
|
28
|
-
} from "./extension-list"
|
|
29
|
-
import { besVersion, settingButton } from "./common"
|
|
30
|
-
import { i } from "./messages"
|
|
28
|
+
} from "./extension-list.js"
|
|
29
|
+
import { besVersion, settingButton } from "./common.js"
|
|
30
|
+
import { i, prefferedLocale, resetI18n } from "./messages/index.js"
|
|
31
31
|
|
|
32
32
|
const prefix = "browser_extension_settings_"
|
|
33
33
|
|
|
@@ -82,9 +82,9 @@ type SettingsSelectItem = {
|
|
|
82
82
|
title: string
|
|
83
83
|
icon?: string
|
|
84
84
|
type: "select"
|
|
85
|
-
options:
|
|
85
|
+
options: Record<string, string | number>
|
|
86
86
|
group?: number
|
|
87
|
-
defaultValue?:
|
|
87
|
+
defaultValue?: string | number
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
type SettingsTipItem = {
|
|
@@ -181,6 +181,23 @@ export function hideSettings() {
|
|
|
181
181
|
closeModal()
|
|
182
182
|
}
|
|
183
183
|
|
|
184
|
+
function destroySettings() {
|
|
185
|
+
closeModal()
|
|
186
|
+
const settingsContainer = getSettingsContainer()
|
|
187
|
+
if (settingsContainer) {
|
|
188
|
+
settingsContainer.remove()
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
function isSettingsShown() {
|
|
193
|
+
const settingsContainer = getSettingsContainer()
|
|
194
|
+
if (settingsContainer) {
|
|
195
|
+
return settingsContainer.style.display === "block"
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
return false
|
|
199
|
+
}
|
|
200
|
+
|
|
184
201
|
const onDocumentClick = (event: Event) => {
|
|
185
202
|
const target = event.target as HTMLElement
|
|
186
203
|
if (target?.closest(`.${prefix}container`)) {
|
|
@@ -321,7 +338,7 @@ function createSettingsElement() {
|
|
|
321
338
|
})
|
|
322
339
|
|
|
323
340
|
addElement(settingsMain, "a", {
|
|
324
|
-
textContent: "
|
|
341
|
+
textContent: i("settings.title"),
|
|
325
342
|
class: "navigation_go_previous",
|
|
326
343
|
onclick() {
|
|
327
344
|
activeExtensionList()
|
|
@@ -483,7 +500,11 @@ function createSettingsElement() {
|
|
|
483
500
|
})
|
|
484
501
|
break
|
|
485
502
|
}
|
|
503
|
+
|
|
486
504
|
// No default
|
|
505
|
+
default: {
|
|
506
|
+
break
|
|
507
|
+
}
|
|
487
508
|
}
|
|
488
509
|
}
|
|
489
510
|
}
|
|
@@ -551,13 +572,30 @@ function addCommonSettings(settingsTable: SettingsTable) {
|
|
|
551
572
|
}
|
|
552
573
|
}
|
|
553
574
|
|
|
575
|
+
// Switch locale
|
|
576
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
577
|
+
settingsTable.locale = {
|
|
578
|
+
title: i("settings.locale"),
|
|
579
|
+
type: "select",
|
|
580
|
+
defaultValue: prefferedLocale,
|
|
581
|
+
options: {
|
|
582
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
583
|
+
English: "en",
|
|
584
|
+
中文: "zh",
|
|
585
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
586
|
+
Русский: "ru",
|
|
587
|
+
},
|
|
588
|
+
group: ++maxGroup,
|
|
589
|
+
} as SettingsSelectItem
|
|
590
|
+
|
|
591
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
554
592
|
settingsTable.displaySettingsButtonInSideMenu = {
|
|
555
593
|
title: i("settings.displaySettingsButtonInSideMenu"),
|
|
556
594
|
defaultValue: !(
|
|
557
595
|
typeof GM === "object" && typeof GM.registerMenuCommand === "function"
|
|
558
596
|
),
|
|
559
|
-
group: maxGroup
|
|
560
|
-
}
|
|
597
|
+
group: ++maxGroup,
|
|
598
|
+
} as SettingsSwitchItem
|
|
561
599
|
}
|
|
562
600
|
|
|
563
601
|
function handleShowSettingsUrl() {
|
|
@@ -588,12 +626,31 @@ export const initSettings = async (options: SettingsOptions) => {
|
|
|
588
626
|
// console.log(JSON.stringify(settings, null, 2))
|
|
589
627
|
await updateOptions()
|
|
590
628
|
addSideMenu()
|
|
629
|
+
|
|
630
|
+
const newLocale =
|
|
631
|
+
(getSettingsValue("locale") as string | undefined) || prefferedLocale
|
|
632
|
+
console.log("lastLocale:", lastLocale, "newLocale:", newLocale)
|
|
633
|
+
if (lastLocale !== newLocale) {
|
|
634
|
+
const isShown = isSettingsShown()
|
|
635
|
+
destroySettings()
|
|
636
|
+
resetI18n(newLocale)
|
|
637
|
+
lastLocale = newLocale
|
|
638
|
+
if (isShown) {
|
|
639
|
+
setTimeout(showSettings, 100)
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
|
|
591
643
|
if (typeof options.onValueChange === "function") {
|
|
592
644
|
options.onValueChange()
|
|
593
645
|
}
|
|
594
646
|
})
|
|
595
647
|
|
|
596
648
|
settings = await getSettings()
|
|
649
|
+
|
|
650
|
+
let lastLocale =
|
|
651
|
+
(getSettingsValue("locale") as string | undefined) || prefferedLocale
|
|
652
|
+
resetI18n(lastLocale)
|
|
653
|
+
|
|
597
654
|
runWhenHeadExists(() => {
|
|
598
655
|
addStyle(getSettingsStyle())
|
|
599
656
|
})
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "browser-extension-settings",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"description": "Settings module for developing browser extensions and userscripts",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.ts",
|
|
@@ -30,16 +30,19 @@
|
|
|
30
30
|
},
|
|
31
31
|
"homepage": "https://github.com/utags/browser-extension-settings#readme",
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"browser-extension-i18n": "^0.
|
|
33
|
+
"browser-extension-i18n": "^0.1.2",
|
|
34
34
|
"browser-extension-storage": "^0.1.2",
|
|
35
|
-
"browser-extension-utils": "^0.
|
|
35
|
+
"browser-extension-utils": "^0.2.0"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@types/chrome": "^0.
|
|
38
|
+
"@types/chrome": "^0.1.4",
|
|
39
|
+
"@vitest/coverage-v8": "^3.2.4",
|
|
40
|
+
"jsdom": "^26.1.0",
|
|
39
41
|
"npm-run-all": "^4.1.5",
|
|
40
|
-
"prettier": "^3.
|
|
41
|
-
"typescript": "^5.
|
|
42
|
-
"
|
|
42
|
+
"prettier": "^3.6.2",
|
|
43
|
+
"typescript": "^5.9.2",
|
|
44
|
+
"vitest": "^3.2.4",
|
|
45
|
+
"xo": "^0.60.0"
|
|
43
46
|
},
|
|
44
47
|
"files": [
|
|
45
48
|
"lib/",
|
|
@@ -47,12 +50,13 @@
|
|
|
47
50
|
"README.md"
|
|
48
51
|
],
|
|
49
52
|
"engines": {
|
|
50
|
-
"node": "^
|
|
53
|
+
"node": "^18.0.0 || ^20.0.0 || >=22.0.0"
|
|
51
54
|
},
|
|
52
55
|
"xo": {
|
|
53
56
|
"space": 2,
|
|
54
57
|
"prettier": true,
|
|
55
58
|
"globals": [
|
|
59
|
+
"GM",
|
|
56
60
|
"document"
|
|
57
61
|
],
|
|
58
62
|
"rules": {
|