80 |
81 |
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/src/_locales/zh_CN/messages.json:
--------------------------------------------------------------------------------
1 | {
2 | "extension_Name": {
3 | "message": "Chromium Web Store",
4 | "description": "扩展的标题,显示在 Chrome Web Store 中。"
5 | },
6 | "extension_Description": {
7 | "message": "在基于 Chromium 的浏览器上启用对来自 Chrome Web Store (或其它地方)的扩展的安装和半自动更新。",
8 | "description": "扩展的说明,显示在 Chrome Web Store 中。"
9 | },
10 | "options_updateHeading": {
11 | "message": "更新选项",
12 | "description": ""
13 | },
14 | "options_ignoredExtensionsHeading": {
15 | "message": "忽略的扩展",
16 | "description": ""
17 | },
18 | "options_importExportHeading": {
19 | "message": "导入/导出",
20 | "description": ""
21 | },
22 | "options_autoUpdate": {
23 | "message": "自动检查扩展更新",
24 | "description": ""
25 | },
26 | "options_autoUpdateTooltip": {
27 | "message": "点击 Chromium Web Store 标记来执行手动检查",
28 | "description": ""
29 | },
30 | "options_updateWebstore": {
31 | "message": "检查 Chrome Web Store 扩展的更新",
32 | "description": ""
33 | },
34 | "options_updateWebstoreTooltip": {
35 | "message": "将会联系 Google 检查更新",
36 | "description": ""
37 | },
38 | "options_updateNonWebstore": {
39 | "message": "检查非 Chrome Web Store 扩展的更新",
40 | "description": ""
41 | },
42 | "options_updateNonWebstoreTooltip": {
43 | "message": "仅支持自动更新的扩展有效",
44 | "description": ""
45 | },
46 | "options_neverCheckTooltip": {
47 | "message": "从不检查这个扩展的更新",
48 | "description": ""
49 | },
50 | "options_updateDelay": {
51 | "message": "每隔 $delayInMinutes$ 分钟检查一次更新",
52 | "description": "delayInMinutes 将是用户可以编辑的一个字段",
53 | "placeholders": {
54 | "delayInMinutes": {
55 | "content": "$1"
56 | }
57 | }
58 | },
59 | "options_advanced": {
60 | "message": "高级",
61 | "description": ""
62 | },
63 | "options_manuallyInstallTooltip": {
64 | "message": "解除 Chrome 等浏览器对第三方插件源的 'CRX_REQUIRED_PROOF_MISSING' 屏蔽",
65 | "description": ""
66 | },
67 | "options_manuallyInstall": {
68 | "message": "手动安装",
69 | "description": ""
70 | },
71 | "options_importExportInstallAllButton": {
72 | "message": "安装全部",
73 | "description": ""
74 | },
75 | "options_importExportDescription": {
76 | "message": "保存这里的文本到一个用来导出的文件。 要导入则把文本粘贴到这里并按下 $installButton$",
77 | "description": "installButton 是按钮上的文本,在 options_importExportInstallAllButton 中定义",
78 | "placeholders": {
79 | "installButton": {
80 | "content": "$1"
81 | }
82 | }
83 | },
84 | "popup_checkingForUpdates": {
85 | "message": "正在检查更新...",
86 | "description": ""
87 | },
88 | "popup_allUpToDate": {
89 | "message": "所有扩展都是最新的!",
90 | "description": ""
91 | },
92 | "popup_updateFailed": {
93 | "message": "$extName$ 更新失败",
94 | "description": "extName 将是未能更新的扩展的名称。",
95 | "placeholders": {
96 | "extName": {
97 | "content": "$1"
98 | }
99 | }
100 | },
101 | "popup_removedExtensions": {
102 | "message": "下列扩展已从 Chrome Web Store 中移除",
103 | "description": "将会显示在已移除扩展的列表上方。"
104 | },
105 | "popup_removedExtensionsTooltip": {
106 | "message": "这些可能由于违反服务条款而被移除。",
107 | "description": "当悬停在 popup_removedExtensions 时显示。"
108 | },
109 | "contextMenu_updateAll": {
110 | "message": "更新所有扩展",
111 | "description": ""
112 | },
113 | "webstore_addButton": {
114 | "message": "添加到 Chromium",
115 | "description": ""
116 | },
117 | "webstore_removeButton": {
118 | "message": "从 Chromium 中删除",
119 | "description": "MTL"
120 | },
121 | "notify_manuallyInstall_title": {
122 | "message": "插件下载完成!请手动安装:",
123 | "description": ""
124 | },
125 | "notify_manuallyInstall_message": {
126 | "message": "1. 激活“开发者模式”\n2. 拖拽文件",
127 | "description": ""
128 | },
129 | "options_webstoreIntegration": {
130 | "message": "启用 Chrome 网上应用店集成",
131 | "description": "MTL"
132 | },
133 | "options_webstoreIntegrationTooltip": {
134 | "message": "启用 Chrome 网上应用店中的安装/卸载按钮。 (可能会向 Google 公开有关您安装的扩展程序的信息。)",
135 | "description": "MTL"
136 | }
137 | }
138 |
--------------------------------------------------------------------------------
/src/_locales/zh_TW/messages.json:
--------------------------------------------------------------------------------
1 | {
2 | "extension_Name": {
3 | "message": "Chromium 線上應用程式商店",
4 | "description": "The title of the extension, displayed in the Chrome Web Store."
5 | },
6 | "extension_Description": {
7 | "message": "允許在基於 Chromium 的瀏覽器上安裝和半自動更新來自 Chrome 線上應用程式商店(或其他地方)的擴充功能。",
8 | "description": "The description of the extension, displayed in the Chrome Web Store."
9 | },
10 |
11 | "options_updateHeading": {
12 | "message": "更新選項",
13 | "description": ""
14 | },
15 | "options_ignoredExtensionsHeading": {
16 | "message": "已忽略的擴充功能",
17 | "description": ""
18 | },
19 | "options_importExportHeading": {
20 | "message": "匯入/匯出",
21 | "description": ""
22 | },
23 | "options_autoUpdate": {
24 | "message": "自動檢查擴充功能更新",
25 | "description": ""
26 | },
27 | "options_autoUpdateTooltip": {
28 | "message": "點擊 Chromium 線上應用程式商店徽章以執行手動檢查",
29 | "description": ""
30 | },
31 | "options_updateWebstore": {
32 | "message": "檢查 Chrome 線上應用程式商店擴充功能的更新",
33 | "description": ""
34 | },
35 | "options_updateWebstoreTooltip": {
36 | "message": "將接觸 Google 以檢查更新",
37 | "description": ""
38 | },
39 | "options_updateNonWebstore": {
40 | "message": "檢查非 Chrome 線上應用程式商店擴充功能的更新",
41 | "description": ""
42 | },
43 | "options_updateNonWebstoreTooltip": {
44 | "message": "僅當擴充功能支援自動更新時有效",
45 | "description": ""
46 | },
47 | "options_neverCheckTooltip": {
48 | "message": "從不檢查此擴充功能的更新",
49 | "description": ""
50 | },
51 | "options_updateDelay": {
52 | "message": "每 $delayInMinutes$ 分鐘檢查一次更新",
53 | "description": "delayInMinutes will be a field that can be edited by the user",
54 | "placeholders": {
55 | "delayInMinutes": {
56 | "content": "$1"
57 | }
58 | }
59 | },
60 | "options_advanced": {
61 | "message": "進階",
62 | "description": ""
63 | },
64 | "options_manuallyInstallTooltip": {
65 | "message": "如果你遇到「CRX_REQUIRED_PROOF_MISSING」錯誤,請啟用此選項",
66 | "description": ""
67 | },
68 | "options_manuallyInstall": {
69 | "message": "總是下載 CRX 檔案",
70 | "description": ""
71 | },
72 | "options_webstoreIntegrationTooltip": {
73 | "message": "啟用 Chrome 線上應用程式商店中的安裝/解除安裝按鈕。(可能會向 Google 傳送有關你已安裝的擴充功能的資訊。)",
74 | "description": ""
75 | },
76 | "options_webstoreIntegration": {
77 | "message": "啟用 Chrome 線上應用程式商店整合",
78 | "description": ""
79 | },
80 | "options_importExportInstallAllButton": {
81 | "message": "安裝全部",
82 | "description": ""
83 | },
84 | "options_importExportDescription": {
85 | "message": "將此處的文字儲存至檔案以匯出。若要匯入,請將該文字貼上至此處並且點擊「$installButton$」",
86 | "description": "installButton is the text on the button, defined in options_importExportInstallAllButton",
87 | "placeholders": {
88 | "installButton": {
89 | "content": "$1"
90 | }
91 | }
92 | },
93 | "popup_checkingForUpdates": {
94 | "message": "檢查更新中…",
95 | "description": ""
96 | },
97 | "popup_allUpToDate": {
98 | "message": "全部擴充功能都是最新的!",
99 | "description": ""
100 | },
101 | "popup_updateFailed": {
102 | "message": "「$extName$」更新失敗",
103 | "description": "extName will be the name of the extension that failed to update.",
104 | "placeholders": {
105 | "extName": {
106 | "content": "$1"
107 | }
108 | }
109 | },
110 | "popup_removedExtensions": {
111 | "message": "以下擴充功能已從 Chrome 線上應用程式商店中移除",
112 | "description": "Will be shown above list of removed extensions."
113 | },
114 | "popup_removedExtensionsTooltip": {
115 | "message": "這些擴充功能可能因為違反服務條款而被移除。",
116 | "description": "Shown when hovering over popup_removedExtensions."
117 | },
118 | "contextMenu_updateAll": {
119 | "message": "更新全部擴充功能",
120 | "description": ""
121 | },
122 | "webstore_addButton": {
123 | "message": "增加至 Chromium",
124 | "description": ""
125 | },
126 | "webstore_removeButton": {
127 | "message": "從 Chromium 中移除",
128 | "description": ""
129 | },
130 | "notify_manuallyInstall_title": {
131 | "message": "擴充功能已下載!請手動安裝:",
132 | "description": ""
133 | },
134 | "notify_manuallyInstall_message": {
135 | "message": "1. 啟用開發者模式(右上角)\n2.將 .crx 從下載欄拖曳至擴充功能頁面",
136 | "description": ""
137 | }
138 | }
139 |
--------------------------------------------------------------------------------
/src/_locales/ko/messages.json:
--------------------------------------------------------------------------------
1 | {
2 | "extension_Name": {
3 | "message": "Chromium 웹 스토어",
4 | "description": "Chrome 웹 스토어에 표시되는 확장 프로그램의 이름입니다."
5 | },
6 | "extension_Description": {
7 | "message": "Chromium 기반 브라우저에서 Chrome 웹 스토어(또는 다른 곳)를 통해 확장 프로그램을 설치하고 반자동으로 업데이트할 수 있습니다.",
8 | "description": "Chrome 웹 스토어에 표시되는 확장 프로그램의 개요입니다."
9 | },
10 |
11 | "options_updateHeading": {
12 | "message": "업데이트 옵션",
13 | "description": ""
14 | },
15 | "options_ignoredExtensionsHeading": {
16 | "message": "제외할 확장 프로그램",
17 | "description": ""
18 | },
19 | "options_importExportHeading": {
20 | "message": "가져오기/내보내기",
21 | "description": ""
22 | },
23 | "options_autoUpdate": {
24 | "message": "확장 프로그램 업데이트를 자동으로 확인",
25 | "description": ""
26 | },
27 | "options_autoUpdateTooltip": {
28 | "message": "수동으로 확인하려면 Chromium 웹 스토어 배지를 클릭하세요.",
29 | "description": ""
30 | },
31 | "options_updateWebstore": {
32 | "message": "Chrome 웹 스토어에서 설치한 확장 프로그램의 업데이트 확인",
33 | "description": ""
34 | },
35 | "options_updateWebstoreTooltip": {
36 | "message": "업데이트 확인을 위해 Google에 접속합니다.",
37 | "description": ""
38 | },
39 | "options_updateNonWebstore": {
40 | "message": "다른 스토어에서 설치한 확장 프로그램의 업데이트 확인",
41 | "description": ""
42 | },
43 | "options_updateNonWebstoreTooltip": {
44 | "message": "해당 확장 프로그램이 자동 업데이트를 지원해야 합니다.",
45 | "description": ""
46 | },
47 | "options_neverCheckTooltip": {
48 | "message": "이 확장 프로그램의 업데이트를 확인하지 않습니다.",
49 | "description": ""
50 | },
51 | "options_updateDelay": {
52 | "message": "$delayInMinutes$ 분 간격으로 업데이트 확인",
53 | "description": "delayInMinutes는 사용자가 편집할 수 있는 영역입니다.",
54 | "placeholders": {
55 | "delayInMinutes": {
56 | "content": "$1"
57 | }
58 | }
59 | },
60 | "options_advanced": {
61 | "message": "고급",
62 | "description": ""
63 | },
64 | "options_manuallyInstallTooltip": {
65 | "message": "'CRX_REQUIRED_PROOF_MISSING' 오류가 계속 발생하면 이 옵션을 켜세요.",
66 | "description": ""
67 | },
68 | "options_manuallyInstall": {
69 | "message": "항상 CRX 파일을 다운로드",
70 | "description": ""
71 | },
72 | "options_webstoreIntegrationTooltip": {
73 | "message": "Chrome 웹 스토어에서 추가/삭제 버튼을 활성화합니다. (확장 프로그램 설치 정보가 Google에 노출될 수 있습니다.)",
74 | "description": ""
75 | },
76 | "options_webstoreIntegration": {
77 | "message": "Chrome 웹 스토어 통합",
78 | "description": ""
79 | },
80 | "options_importExportInstallAllButton": {
81 | "message": "모두 설치",
82 | "description": ""
83 | },
84 | "options_importExportDescription": {
85 | "message": "내보낼 파일에 이곳의 텍스트를 저장합니다. 가져오려면 해당 텍스트를 여기에 붙여넣고 $installButton$을 누르세요.",
86 | "description": "installButton은 options_importExportInstallAllButton에 정의된 버튼의 텍스트입니다.",
87 | "placeholders": {
88 | "installButton": {
89 | "content": "$1"
90 | }
91 | }
92 | },
93 | "popup_checkingForUpdates": {
94 | "message": "업데이트 확인 중...",
95 | "description": ""
96 | },
97 | "popup_allUpToDate": {
98 | "message": "모든 확장 프로그램이 최신 버전입니다!",
99 | "description": ""
100 | },
101 | "popup_updateFailed": {
102 | "message": "$extName$ 업데이트 실패",
103 | "description": "extName은 업데이트에 실패한 확장 프로그램의 이름입니다.",
104 | "placeholders": {
105 | "extName": {
106 | "content": "$1"
107 | }
108 | }
109 | },
110 | "popup_removedExtensions": {
111 | "message": "다음 확장 프로그램이 Chrome 웹 스토어에서 제거되었습니다.",
112 | "description": "제거된 확장 프로그램 목록 위에 표시됩니다."
113 | },
114 | "popup_removedExtensionsTooltip": {
115 | "message": "서비스 약관 위반으로 인해 제거되었을 수 있습니다.",
116 | "description": "popup_removedExtensions 위로 마우스를 가져가면 표시됩니다."
117 | },
118 | "contextMenu_updateAll": {
119 | "message": "모든 확장 프로그램 업데이트",
120 | "description": ""
121 | },
122 | "webstore_addButton": {
123 | "message": "Chromium에 추가",
124 | "description": ""
125 | },
126 | "webstore_removeButton": {
127 | "message": "Chromium에서 삭제",
128 | "description": ""
129 | },
130 | "notify_manuallyInstall_title": {
131 | "message": "확장 프로그램이 다운로드되었습니다! 수동으로 설치하세요:",
132 | "description": ""
133 | },
134 | "notify_manuallyInstall_message": {
135 | "message": "1. 개발자 모드 활성화(오른쪽 상단)\n2. 다운로드 바에서 확장 프로그램 페이지로 .crx 파일을 드래그하세요.",
136 | "description": ""
137 | }
138 | }
139 |
--------------------------------------------------------------------------------
/src/_locales/pl/messages.json:
--------------------------------------------------------------------------------
1 | {
2 | "extension_Name": {
3 | "message": "Chromium Web Store",
4 | "description": "Nazwa rozszerzenia, pokazywana w Chrome Web Store."
5 | },
6 | "extension_Description": {
7 | "message": "Umożliwia instalację oraz półautomatyczną aktualizację dla rozszerzeń z Chrome Web Store (albo skądś indziej) na przeglądarkach bazujących na Chromium.",
8 | "description": "Opis rozszerzenia, pokazywany w Chrome Web Store."
9 | },
10 | "options_updateHeading": {
11 | "message": "Zaktualizuj opcje",
12 | "description": ""
13 | },
14 | "options_ignoredExtensionsHeading": {
15 | "message": "Ignorowane rozszerzenia",
16 | "description": ""
17 | },
18 | "options_importExportHeading": {
19 | "message": "Import/Eksport",
20 | "description": "MTL"
21 | },
22 | "options_autoUpdate": {
23 | "message": "Automatycznie sprawdzaj aktualizacje rozszerzeń",
24 | "description": ""
25 | },
26 | "options_autoUpdateTooltip": {
27 | "message": "Kliknij na ikonę Chromium Web Store, aby manualnie sprawdzić",
28 | "description": ""
29 | },
30 | "options_updateWebstore": {
31 | "message": "Sprawdź aktualizacje rozszerzeń Chrome Web Store",
32 | "description": ""
33 | },
34 | "options_updateWebstoreTooltip": {
35 | "message": "Skontaktujemy się z Google, aby sprawdzić aktualizacje",
36 | "description": ""
37 | },
38 | "options_updateNonWebstore": {
39 | "message": "Sprawdź aktualizacje dla rozszerzeń spoza Chrome Web Store",
40 | "description": ""
41 | },
42 | "options_updateNonWebstoreTooltip": {
43 | "message": "Działa tylko wtedy, jeżeli rozszerzenie wspiera automatyczne aktualizacje",
44 | "description": ""
45 | },
46 | "options_neverCheckTooltip": {
47 | "message": "Nigdy nie sprawdzaj aktualizacji dla tego rozszerzenia",
48 | "description": ""
49 | },
50 | "options_updateDelay": {
51 | "message": "Sprawdzaj aktualizacje co $delayInMinutes$ minut",
52 | "description": "MTL",
53 | "placeholders": {
54 | "delayInMinutes": {
55 | "content": "$1"
56 | }
57 | }
58 | },
59 | "options_importExportInstallAllButton": {
60 | "message": "Zainstaluj wszystko",
61 | "description": "MTL"
62 | },
63 | "popup_checkingForUpdates": {
64 | "message": "Sprawdzanie aktualizacji...",
65 | "description": ""
66 | },
67 | "popup_allUpToDate": {
68 | "message": "Wszystkie rozszerzenia są aktualne!",
69 | "description": ""
70 | },
71 | "popup_updateFailed": {
72 | "message": "Aktualizacja $extName$ nieudana",
73 | "description": "extName będzie nazwą rozszerzenia, któremu nie udało się zaktualizować.",
74 | "placeholders": {
75 | "extName": {
76 | "content": "$1"
77 | }
78 | }
79 | },
80 | "popup_removedExtensions": {
81 | "message": "Następujące rozszerzenia zostały usunięte z Chrome Web Store",
82 | "description": "MTL"
83 | },
84 | "popup_removedExtensionsTooltip": {
85 | "message": "Mogły zostać usunięte z powodu naruszenia Warunków korzystania z usługi.",
86 | "description": "MTL"
87 | },
88 | "contextMenu_updateAll": {
89 | "message": "Zaktualizuj wszystkie rozszerzenia",
90 | "description": ""
91 | },
92 | "webstore_addButton": {
93 | "message": "Dodaj do Chromium",
94 | "description": ""
95 | },
96 | "webstore_removeButton": {
97 | "message": "Usuń z Chromium",
98 | "description": "MTL"
99 | },
100 | "options_manuallyInstall": {
101 | "message": "Zawsze pobieraj pliki CRX",
102 | "description": "MTL"
103 | },
104 | "notify_manuallyInstall_title": {
105 | "message": "Rozszerzenie pobrane! Zainstaluj ręcznie:",
106 | "description": "MTL"
107 | },
108 | "notify_manuallyInstall_message": {
109 | "message": "1. Włącz tryb programisty (w prawym górnym rogu)\n2. Przeciągnij plik .crx z paska pobierania na stronę rozszerzeń",
110 | "description": "MTL"
111 | },
112 | "options_manuallyInstallTooltip": {
113 | "message": "Przełącz tę opcję, jeśli otrzymujesz błędy „CRX_REQUIRED_PROOF_MISSING”.",
114 | "description": "MTL"
115 | },
116 | "options_importExportDescription": {
117 | "message": "Zapisz tutaj tekst do pliku, który chcesz wyeksportować. Aby zaimportować, wklej tutaj ten tekst i naciśnij $installButton$",
118 | "description": "MTL",
119 | "placeholders": { "installButton": { "content": "$1" } }
120 | },
121 | "options_webstoreIntegration": {
122 | "message": "Włącz integrację ze sklepem Chrome Web Store",
123 | "description": "MTL"
124 | },
125 | "options_webstoreIntegrationTooltip": {
126 | "message": "Włącz przyciski Instaluj/Odinstaluj w sklepie Chrome Web Store. (Może ujawnić Google informacje o zainstalowanych rozszerzeniach).",
127 | "description": "MTL"
128 | },
129 | "options_advanced": { "message": "Zaawansowany", "description": "MTL" }
130 | }
131 |
--------------------------------------------------------------------------------
/src/_locales/pt_BR/messages.json:
--------------------------------------------------------------------------------
1 | {
2 | "extension_Name": {
3 | "message": "Chromium Web Store",
4 | "description": "O título da extensão, exibido na Loja Web de Chrome."
5 | },
6 | "extension_Description": {
7 | "message": "Permite a instalação e atualização semi-automática de extensões da Loja Web de Chrome (ou outra localidade) em navegadores baseados no Chromium.",
8 | "description": "A descrição da extensão, exibida na Loja Web de Chrome."
9 | },
10 | "options_updateHeading": {
11 | "message": "Opções de atualização",
12 | "description": ""
13 | },
14 | "options_ignoredExtensionsHeading": {
15 | "message": "Extensões ignoradas",
16 | "description": ""
17 | },
18 | "options_importExportHeading": {
19 | "message": "Importar/Exportar",
20 | "description": "MTL"
21 | },
22 | "options_autoUpdate": {
23 | "message": "Buscar automaticamente por atualizações de extensões",
24 | "description": ""
25 | },
26 | "options_autoUpdateTooltip": {
27 | "message": "Clique no ícone da Loja Web de Chromium para efectuar uma verificação manual",
28 | "description": ""
29 | },
30 | "options_updateWebstore": {
31 | "message": "Verificar se há atualizações das extensões na Loja Web de Chrome",
32 | "description": ""
33 | },
34 | "options_updateWebstoreTooltip": {
35 | "message": "Conectará ao Google para buscar por atualizações",
36 | "description": ""
37 | },
38 | "options_updateNonWebstore": {
39 | "message": "Buscar por atualizações das extensões fora da Loja Web de Chrome",
40 | "description": ""
41 | },
42 | "options_updateNonWebstoreTooltip": {
43 | "message": "Só funcionará se a extensão suportar a auto-atualização",
44 | "description": ""
45 | },
46 | "options_neverCheckTooltip": {
47 | "message": "Nunca buscar por atualizações para esta extensão",
48 | "description": ""
49 | },
50 | "options_updateDelay": {
51 | "message": "Buscar por atualizações a cada $delayInMinutes$ minutos",
52 | "description": "delayInMinutes será um campo que pode ser editado pelo usuário",
53 | "placeholders": {
54 | "delayInMinutes": {
55 | "content": "$1"
56 | }
57 | }
58 | },
59 | "options_importExportInstallAllButton": {
60 | "message": "Instalar tudo",
61 | "description": "MTL"
62 | },
63 | "popup_checkingForUpdates": {
64 | "message": "buscando por atualizações...",
65 | "description": ""
66 | },
67 | "popup_allUpToDate": {
68 | "message": "Todas as extensões são atualizadas!",
69 | "description": ""
70 | },
71 | "popup_updateFailed": {
72 | "message": "Atualização de $extName$ falhou",
73 | "description": "extName será o nome da extensão que não foi atualizada.",
74 | "placeholders": {
75 | "extName": {
76 | "content": "$1"
77 | }
78 | }
79 | },
80 | "popup_removedExtensions": {
81 | "message": "As seguintes extensões foram removidas da Loja Web de Chrome",
82 | "description": "MTL"
83 | },
84 | "popup_removedExtensionsTooltip": {
85 | "message": "Poderia ter sido devido à violação dos Termos de Serviço.",
86 | "description": "MTL"
87 | },
88 | "contextMenu_updateAll": {
89 | "message": "Atualizar todas as extensões",
90 | "description": ""
91 | },
92 | "webstore_addButton": {
93 | "message": "Adicionar ao Chromium",
94 | "description": ""
95 | },
96 | "webstore_removeButton": {
97 | "message": "Remover do Chromium",
98 | "description": "MTL"
99 | },
100 | "options_manuallyInstallTooltip": {
101 | "message": "Alterne esta opção se você estiver recebendo erros 'CRX_REQUIRED_PROOF_MISSING'",
102 | "description": "MTL"
103 | },
104 | "options_webstoreIntegration": {
105 | "message": "Ativar integração com a Chrome Web Store",
106 | "description": "MTL"
107 | },
108 | "options_advanced": { "message": "Avançado", "description": "MTL" },
109 | "options_importExportDescription": {
110 | "message": "Salve o texto aqui em um arquivo para exportar. Para importar cole esse texto aqui e pressione $installButton$",
111 | "description": "MTL",
112 | "placeholders": { "installButton": { "content": "$1" } }
113 | },
114 | "options_manuallyInstall": {
115 | "message": "Sempre baixe arquivos CRX",
116 | "description": "MTL"
117 | },
118 | "notify_manuallyInstall_message": {
119 | "message": "1. Ative o modo Desenvolvedor (canto superior direito)\n2. Arraste .crx da barra de downloads para a página de extensões",
120 | "description": "MTL"
121 | },
122 | "notify_manuallyInstall_title": {
123 | "message": "Extensão baixada! Instale manualmente:",
124 | "description": "MTL"
125 | },
126 | "options_webstoreIntegrationTooltip": {
127 | "message": "Ative os botões Instalar/Desinstalar na Chrome Web Store. (Poderia expor informações sobre quais extensões você instalou no Google.)",
128 | "description": "MTL"
129 | }
130 | }
131 |
--------------------------------------------------------------------------------
/src/_locales/ru/messages.json:
--------------------------------------------------------------------------------
1 | {
2 | "extension_Name": {
3 | "message": "Chromium Web Store",
4 | "description": "Название расширения, отображаемое в Web Store."
5 | },
6 | "extension_Description": {
7 | "message": "Включает установку и полуавтоматическое обновление расширений из Chrome Web Store (или других сайтов) в браузерах, основанных на Chromium.",
8 | "description": "Описание расширения, отображаемое в Web Store."
9 | },
10 | "options_updateHeading": {
11 | "message": "Настройки обновлений",
12 | "description": ""
13 | },
14 | "options_ignoredExtensionsHeading": {
15 | "message": "Исключенные расширения",
16 | "description": ""
17 | },
18 | "options_importExportHeading": {
19 | "message": "Импорт/Экспорт",
20 | "description": "MTL"
21 | },
22 | "options_autoUpdate": {
23 | "message": "Автоматически проверять обновления расширений",
24 | "description": ""
25 | },
26 | "options_autoUpdateTooltip": {
27 | "message": "Нажмите на ярлык Chromium Web Store, чтобы выполнить ручную проверку",
28 | "description": ""
29 | },
30 | "options_updateWebstore": {
31 | "message": "Проверять обновления расширений из Web Store",
32 | "description": ""
33 | },
34 | "options_updateWebstoreTooltip": {
35 | "message": "Для проверки обновлений требуется подключение к серверам Google",
36 | "description": ""
37 | },
38 | "options_updateNonWebstore": {
39 | "message": "Проверять обновления расширений не из Web Store",
40 | "description": ""
41 | },
42 | "options_updateNonWebstoreTooltip": {
43 | "message": "Работает только в том случае, если расширение поддерживает автоматическое обновление",
44 | "description": ""
45 | },
46 | "options_neverCheckTooltip": {
47 | "message": "Никогда не проверять обновления для этого расширения",
48 | "description": ""
49 | },
50 | "options_updateDelay": {
51 | "message": "Проверять наличие обновлений каждые $delayInMinutes$ минут",
52 | "description": "delayInMinutes - поле, содержимое которого может изменять пользователь",
53 | "placeholders": {
54 | "delayInMinutes": {
55 | "content": "$1"
56 | }
57 | }
58 | },
59 | "options_importExportInstallAllButton": {
60 | "message": "Установить все",
61 | "description": "MTL"
62 | },
63 | "popup_checkingForUpdates": {
64 | "message": "Проверка обновлений...",
65 | "description": ""
66 | },
67 | "popup_allUpToDate": {
68 | "message": "Обновлений расширений нет!",
69 | "description": ""
70 | },
71 | "popup_updateFailed": {
72 | "message": "$extName$: не удалось обновить",
73 | "description": "extName - название расширения, которое не удалось обновить.",
74 | "placeholders": {
75 | "extName": {
76 | "content": "$1"
77 | }
78 | }
79 | },
80 | "popup_removedExtensions": {
81 | "message": "Данные расширения были удалены из Chrome Web Store",
82 | "description": "Отображается вверху списка удаленных расширений."
83 | },
84 | "popup_removedExtensionsTooltip": {
85 | "message": "Они могли быть удалены из-за нарушения Условий использования.",
86 | "description": "Отображается при наведении на popup_removedExtensions."
87 | },
88 | "contextMenu_updateAll": {
89 | "message": "Обновить все расширения",
90 | "description": ""
91 | },
92 | "webstore_addButton": {
93 | "message": "Добавить в Chromium",
94 | "description": ""
95 | },
96 | "webstore_removeButton": {
97 | "message": "Удалить из Chromium",
98 | "description": "MTL"
99 | },
100 | "options_manuallyInstall": {
101 | "message": "Всегда скачивайте файлы CRX",
102 | "description": "MTL"
103 | },
104 | "notify_manuallyInstall_title": {
105 | "message": "Расширение скачано! Пожалуйста, установите вручную:",
106 | "description": "MTL"
107 | },
108 | "options_webstoreIntegration": {
109 | "message": "Включить интеграцию с Интернет-магазином Chrome",
110 | "description": "MTL"
111 | },
112 | "options_manuallyInstallTooltip": {
113 | "message": "Включите эту опцию, если вы получаете ошибки «CRX_REQUIRED_PROOF_MISSING».",
114 | "description": "MTL"
115 | },
116 | "options_importExportDescription": {
117 | "message": "Сохраните текст здесь в файл для экспорта. Чтобы импортировать, вставьте этот текст сюда и нажмите $installButton$.",
118 | "description": "MTL",
119 | "placeholders": { "installButton": { "content": "$1" } }
120 | },
121 | "notify_manuallyInstall_message": {
122 | "message": "1. Включите режим разработчика (вверху справа)\n2. Перетащите .crx с панели загрузок на страницу расширений.",
123 | "description": "MTL"
124 | },
125 | "options_advanced": { "message": "Передовой", "description": "MTL" },
126 | "options_webstoreIntegrationTooltip": {
127 | "message": "Включите кнопки «Установить/Удалить» в Интернет-магазине Chrome. (Может предоставить Google информацию о том, какие расширения вы установили.)",
128 | "description": "MTL"
129 | }
130 | }
131 |
--------------------------------------------------------------------------------
/src/_locales/pt_PT/messages.json:
--------------------------------------------------------------------------------
1 | {
2 | "extension_Name": {
3 | "message": "Chromium Web Store",
4 | "description": "The title of the extension, displayed in the Chrome Web Store."
5 | },
6 | "extension_Description": {
7 | "message": "Permite a instalação e a atualização semi-automática das extensões a partir da Chrome Web Store (ou outra loja), nos navegadores baseados em Chromium.",
8 | "description": "The description of the extension, displayed in the Chrome Web Store."
9 | },
10 | "options_updateHeading": {
11 | "message": "Opções de atualização",
12 | "description": ""
13 | },
14 | "options_ignoredExtensionsHeading": {
15 | "message": "Extensões ignoradas",
16 | "description": ""
17 | },
18 | "options_importExportHeading": {
19 | "message": "Importar/Exportar",
20 | "description": ""
21 | },
22 | "options_autoUpdate": {
23 | "message": "Procurar automaticamente por atualizações das extensões",
24 | "description": ""
25 | },
26 | "options_autoUpdateTooltip": {
27 | "message": "Clique no ícone Chromium Web Store para executar uma verificação manual",
28 | "description": ""
29 | },
30 | "options_updateWebstore": {
31 | "message": "Procurar atualizações na Chrome Web Store",
32 | "description": ""
33 | },
34 | "options_updateWebstoreTooltip": {
35 | "message": "Ao executar esta ação, enviará dados à Google",
36 | "description": ""
37 | },
38 | "options_updateNonWebstore": {
39 | "message": "Procurar atualizações para as extensões que não pertençam à Chrome Web Store",
40 | "description": ""
41 | },
42 | "options_updateNonWebstoreTooltip": {
43 | "message": "Apenas funcional se a extensão permitir a atualização automática",
44 | "description": ""
45 | },
46 | "options_neverCheckTooltip": {
47 | "message": "Nunca procurar atualizações para esta extensão",
48 | "description": ""
49 | },
50 | "options_updateDelay": {
51 | "message": "Procurar por atualizações a cada $delayInMinutes$ minutos",
52 | "description": "delayInMinutes will be a field that can be edited by the user",
53 | "placeholders": {
54 | "delayInMinutes": {
55 | "content": "$1"
56 | }
57 | }
58 | },
59 | "options_importExportInstallAllButton": {
60 | "message": "Instalar tudo",
61 | "description": ""
62 | },
63 | "popup_checkingForUpdates": {
64 | "message": "A procurar atualizações...",
65 | "description": ""
66 | },
67 | "popup_allUpToDate": {
68 | "message": "As suas extensões estão atualizadas!",
69 | "description": ""
70 | },
71 | "popup_updateFailed": {
72 | "message": "Falha ao atualizar $extName$",
73 | "description": "extName will be the name of the extension that failed to update.",
74 | "placeholders": {
75 | "extName": {
76 | "content": "$1"
77 | }
78 | }
79 | },
80 | "popup_removedExtensions": {
81 | "message": "As extensões abaixo indicadas foram removidas da Chrome Web Store",
82 | "description": "Will be shown above list of removed extensions."
83 | },
84 | "popup_removedExtensionsTooltip": {
85 | "message": "As extensões podem ter sido removidas por violarem os Termos do Serviço.",
86 | "description": "Shown when hovering over popup_removedExtensions."
87 | },
88 | "contextMenu_updateAll": {
89 | "message": "Atualizar todas as extensões",
90 | "description": ""
91 | },
92 | "webstore_addButton": {
93 | "message": "Adicionar ao Chromium",
94 | "description": ""
95 | },
96 | "webstore_removeButton": {
97 | "message": "Remover do Chromium",
98 | "description": "MTL"
99 | },
100 | "options_manuallyInstallTooltip": {
101 | "message": "Alterne esta opção se você estiver recebendo erros 'CRX_REQUIRED_PROOF_MISSING'",
102 | "description": "MTL"
103 | },
104 | "options_webstoreIntegration": {
105 | "message": "Ativar integração com a Chrome Web Store",
106 | "description": "MTL"
107 | },
108 | "options_advanced": { "message": "Avançado", "description": "MTL" },
109 | "options_importExportDescription": {
110 | "message": "Salve o texto aqui em um arquivo para exportar. Para importar cole esse texto aqui e pressione $installButton$",
111 | "description": "MTL",
112 | "placeholders": { "installButton": { "content": "$1" } }
113 | },
114 | "options_manuallyInstall": {
115 | "message": "Sempre baixe arquivos CRX",
116 | "description": "MTL"
117 | },
118 | "notify_manuallyInstall_message": {
119 | "message": "1. Ative o modo Desenvolvedor (canto superior direito)\n2. Arraste .crx da barra de downloads para a página de extensões",
120 | "description": "MTL"
121 | },
122 | "notify_manuallyInstall_title": {
123 | "message": "Extensão baixada! Instale manualmente:",
124 | "description": "MTL"
125 | },
126 | "options_webstoreIntegrationTooltip": {
127 | "message": "Ative os botões Instalar/Desinstalar na Chrome Web Store. (Poderia expor informações sobre quais extensões você instalou no Google.)",
128 | "description": "MTL"
129 | }
130 | }
131 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # chromium-web-store
2 |
3 | This extension brings the following functionality to ungoogled-chromium (and other forks that lack web store support):
4 |
5 | - Allows installing extensions directly from chrome web store.
6 | - Automatically checks for updates to your installed extensions and displays them on the badge.
7 | 
8 |
9 | # Read this first
10 |
11 | - **If you are using `ungoogled-chromium`**: You **must** change the flag `chrome://flags/#extension-mime-request-handling` to `Always prompt for install`.
12 | - **If you are NOT using `ungoogled-chromium`**: Ensure the following option is **checked**: Extension Options (chrome://extensions/?options=ocaahdebbfolfmndjeplogmgcagdmblk) > Advanced > `Always download CRX files`
13 | - If you are seeing `CRX_REQUIRED_PROOF_MISSING` or `Apps, extensions and user scripts cannot be added from this website` errors, please be **sure** you have followed the instructions above before opening an issue.
14 | - Some extensions may not update until you restart your browser, see [#4](https://github.com/NeverDecaf/chromium-web-store/issues/4).
15 | - If you do not see the `Add to Chromium` button in the web store, you can use the context menu option instead: Right click > `Add to Chromium`.
16 |
17 | #### Usage
18 |
19 | - Pin the Chromium Web Store badge in your browser's toolbar. (Badges are hidden by default)
20 | - The badge will show a red number indicating available updates.
21 | - Click on the badge, then click the name of any extension to install the latest version.
22 | - This method will work for non-webstore extensions as well if they support it, including chromium web store itself. (See the section at the bottom of this readme if you are an extension developer and don't have your extension listed in the chrome web store.)
23 |
24 | #### Installation
25 | 1. Go to `chrome://flags` and search for the `#extension-mime-request-handling` flag and set it to `Always prompt for install`.
26 | 2. Download the .crx from [Releases](https://github.com/NeverDecaf/chromium-web-store/releases/latest), you should be prompted to install the extension.
27 |
28 | If the above steps do not work for you, try one of the following alternative methods:
29 |
30 | #### Installation (Alternative #1)
31 | 1. Go to `chrome://extensions` and enable developer mode (toggle in top right).
32 | 2. Download the .crx from [Releases](https://github.com/NeverDecaf/chromium-web-store/releases/latest) and drag-and-drop it onto the `chrome://extensions` page.
33 |
34 | #### Installation (Alternative #2)
35 | 1. Download the .crx from [Releases](https://github.com/NeverDecaf/chromium-web-store/releases/latest) and extract the contents to a folder.
36 | 2. Visit `chrome://extensions/` and turn on developer mode (toggle in top right).
37 | 3. Click `Load unpacked` and select the directory you extracted the crx to.
38 |
39 | #### Setup Video
40 |
41 | [](https://chromium.woolyss.com/f/video-extension-chromium-web-store.mp4)
42 | [[Streamable Mirror](https://streamable.com/655nn)] (Thanks [@woolyss](https://github.com/woolyss) for creating & hosting this video.)
43 |
44 | #### Options Notes
45 |
46 | - Right click the badge and choose `Options` from the context menu or access them via `chrome://extensions`.
47 | - "Web Store" extensions refer to any that were obtained from the [Chrome Web Store](https://chrome.google.com/webstore/category/extensions), despite displaying `Source: Not from Chrome Web Store` when checking extension details.
48 | - Please read the note in [Release 1.4](https://github.com/NeverDecaf/chromium-web-store/releases/tag/v1.4.0) if you wish to use the import/export feature.
49 |
50 | #### If you wish to help with localization, follow these steps:
51 |
52 | 1. Create a directory in `_locales` named any supported [locale code](https://developer.chrome.com/webstore/i18n?csw=1#localeTable).
53 | 2. Copy `_locales/en/messages.json` to your newly created directory and edit the "message" fields as necessary, you don't need to change anything else.
54 | 3. Submit a PR or open an issue with your translation and I will merge it.
55 |
56 | #### If you are a chrome extension developer...
57 |
58 | and do not have your extension listed in the Chrome Web Store, you can still enable updates via chromium-web-store by hosting an [update manifest file](https://developer.chrome.com/apps/autoupdate#update_manifest); see [updates.xml](https://github.com/NeverDecaf/chromium-web-store/blob/master/updates.xml) in this repo for an example. You must also specify a url to access this file in your extension's `manifest.json` under the [`update_url`](https://developer.chrome.com/apps/autoupdate#update_url) field; again, see [manifest.json](https://github.com/NeverDecaf/chromium-web-store/blob/master/src/manifest.json) in this repo for an example.
59 |
60 | #### For deployment
61 |
62 | See [#28](https://github.com/NeverDecaf/chromium-web-store/issues/28) and [`managed_storage.json`](https://github.com/NeverDecaf/chromium-web-store/blob/master/src/managed_storage.json)
63 |
--------------------------------------------------------------------------------
/src/_locales/no/messages.json:
--------------------------------------------------------------------------------
1 | {
2 | "extension_Name": {
3 | "message": "Chromium Nettmarked",
4 | "description": "The title of the extension, displayed in the Chrome Web Store."
5 | },
6 | "extension_Description": {
7 | "message": "Aktiverer installasjon og halvautomatisk oppdatering for utvidelser fra Chrome Nettmarked (eller andre steder) for Chromium-baserte nettlesere.",
8 | "description": "The description of the extension, displayed in the Chrome Web Store."
9 | },
10 | "options_updateHeading": {
11 | "message": "Oppdateringsalternativer",
12 | "description": ""
13 | },
14 | "options_ignoredExtensionsHeading": {
15 | "message": "Ignorerte utvidelser",
16 | "description": ""
17 | },
18 | "options_importExportHeading": {
19 | "message": "Importer/Eksporter",
20 | "description": ""
21 | },
22 | "options_autoUpdate": {
23 | "message": "Se etter utvidelsesoppdateringer automatisk",
24 | "description": ""
25 | },
26 | "options_autoUpdateTooltip": {
27 | "message": "Klikk på Chromium Nettmarked-merket for å utføre en manuell sjekk",
28 | "description": ""
29 | },
30 | "options_updateWebstore": {
31 | "message": "Se etter oppdateringer for Chrome Nettmarked-utvidelser",
32 | "description": ""
33 | },
34 | "options_updateWebstoreTooltip": {
35 | "message": "Vil kontakte Google for å se etter oppdateringer",
36 | "description": ""
37 | },
38 | "options_updateNonWebstore": {
39 | "message": "Se etter oppdateringer for utvidelser som ikke er fra Chrome Nettmarked",
40 | "description": ""
41 | },
42 | "options_updateNonWebstoreTooltip": {
43 | "message": "Fungerer bare hvis utvidelsen støtter auto-oppdatering",
44 | "description": ""
45 | },
46 | "options_neverCheckTooltip": {
47 | "message": "Se aldri etter oppdateringer for denne utvidelsen",
48 | "description": ""
49 | },
50 | "options_updateDelay": {
51 | "message": "Se etter oppdateringer hvert $delayInMinutes$ minutt",
52 | "description": "delayInMinutes will be a field that can be edited by the user",
53 | "placeholders": {
54 | "delayInMinutes": {
55 | "content": "$1"
56 | }
57 | }
58 | },
59 | "options_importExportInstallAllButton": {
60 | "message": "Installer alle",
61 | "description": ""
62 | },
63 | "options_importExportDescription": {
64 | "message": "Lagre teksten her til en fil for eksport. For å importere: lim inn teksten her og trykk $installButton$",
65 | "description": "installButton is the text on the button, defined in options_importExportInstallAllButton",
66 | "placeholders": {
67 | "installButton": {
68 | "content": "$1"
69 | }
70 | }
71 | },
72 | "popup_checkingForUpdates": {
73 | "message": "Ser etter oppdateringer...",
74 | "description": ""
75 | },
76 | "popup_allUpToDate": {
77 | "message": "Alle utvidelser er oppdatert!",
78 | "description": ""
79 | },
80 | "popup_updateFailed": {
81 | "message": "$extName$ Oppdatering mislyktes",
82 | "description": "extName will be the name of the extension that failed to update.",
83 | "placeholders": {
84 | "extName": {
85 | "content": "$1"
86 | }
87 | }
88 | },
89 | "popup_removedExtensions": {
90 | "message": "Følgende utvidelser er fjernet fra Chrome Nettmarked",
91 | "description": "Will be shown above list of removed extensions."
92 | },
93 | "popup_removedExtensionsTooltip": {
94 | "message": "Disse kan ha blitt fjernet på grunn av brudd på vilkårene for bruk.",
95 | "description": "Shown when hovering over popup_removedExtensions."
96 | },
97 | "contextMenu_updateAll": {
98 | "message": "Oppdater alle utvidelser",
99 | "description": ""
100 | },
101 | "webstore_addButton": {
102 | "message": "Legg til i Chromium",
103 | "description": ""
104 | },
105 | "webstore_removeButton": {
106 | "message": "Fjern fra Chromium",
107 | "description": ""
108 | },
109 | "options_webstoreIntegrationTooltip": {
110 | "message": "Aktiver Installer/Avinstaller-knapper på Chrome Nettmarked. (Kan avsløre informasjon om hvilke utvidelser du har installert for Google.)",
111 | "description": "MTL"
112 | },
113 | "options_manuallyInstall": {
114 | "message": "Last alltid ned CRX-filer",
115 | "description": "MTL"
116 | },
117 | "options_advanced": { "message": "Avansert", "description": "MTL" },
118 | "notify_manuallyInstall_title": {
119 | "message": "Utvidelsen er lastet ned! Vennligst installer manuelt:",
120 | "description": "MTL"
121 | },
122 | "notify_manuallyInstall_message": {
123 | "message": "1. Aktiver utviklermodus (øverst til høyre)\n2. Dra .crx fra nedlastingslinjen til utvidelsessiden",
124 | "description": "MTL"
125 | },
126 | "options_manuallyInstallTooltip": {
127 | "message": "Slå på dette alternativet hvis du får 'CRX_REQUIRED_PROOF_MISSING'-feil",
128 | "description": "MTL"
129 | },
130 | "options_webstoreIntegration": {
131 | "message": "Aktiver Chrome Nettmarked-integrasjon",
132 | "description": "MTL"
133 | }
134 | }
135 |
--------------------------------------------------------------------------------
/src/_locales/it/messages.json:
--------------------------------------------------------------------------------
1 | {
2 | "extension_Name": {
3 | "message": "Chromium Web Store",
4 | "description": "Il titolo dell'estensione, mostrato nel Chrome Web Store."
5 | },
6 | "extension_Description": {
7 | "message": "Permette di installare ed aggiornare in modo semiautomatico estensioni del Chrome Web Store",
8 | "description": "La descrizione dell'estensione, mostrata nel Chrome Web Store."
9 | },
10 | "options_updateHeading": {
11 | "message": "Opzioni di aggiornamento",
12 | "description": ""
13 | },
14 | "options_ignoredExtensionsHeading": {
15 | "message": "Estensioni ignorate",
16 | "description": ""
17 | },
18 | "options_importExportHeading": {
19 | "message": "Importa/Esporta",
20 | "description": ""
21 | },
22 | "options_autoUpdate": {
23 | "message": "Controlla automaticamente se ci sono aggiornamenti delle estensioni",
24 | "description": ""
25 | },
26 | "options_autoUpdateTooltip": {
27 | "message": "Clicca sul badge del Chromium Web Store per fare un controllo manuale degli aggiornamenti",
28 | "description": ""
29 | },
30 | "options_updateWebstore": {
31 | "message": "Controlla gli aggiornamenti per estensioni del Chrome Web Store",
32 | "description": ""
33 | },
34 | "options_updateWebstoreTooltip": {
35 | "message": "Contatterà Google per controllare gli aggiornamenti",
36 | "description": ""
37 | },
38 | "options_updateNonWebstore": {
39 | "message": "Controlla gli aggiornamenti per estensioni che non vengono dal Chrome Web Store",
40 | "description": ""
41 | },
42 | "options_updateNonWebstoreTooltip": {
43 | "message": "Funziona solo se l'estensione supporta l'auto-aggiornamento",
44 | "description": ""
45 | },
46 | "options_neverCheckTooltip": {
47 | "message": "Non controllare mai se ci sono aggiornamenti per questa estensione",
48 | "description": ""
49 | },
50 | "options_updateDelay": {
51 | "message": "Controlla se ci sono aggiornamenti ogni $delayInMinutes$ minuti",
52 | "description": "delayInMinutes sarà un valore che può essere modificato dall'utente",
53 | "placeholders": {
54 | "delayInMinutes": {
55 | "content": "$1"
56 | }
57 | }
58 | },
59 | "options_importExportInstallAllButton": {
60 | "message": "Installa tutto",
61 | "description": ""
62 | },
63 | "popup_checkingForUpdates": {
64 | "message": "Controllando se ci sono aggiornamenti...",
65 | "description": ""
66 | },
67 | "popup_allUpToDate": {
68 | "message": "Tutte le estensioni sono aggiornate!",
69 | "description": ""
70 | },
71 | "popup_updateFailed": {
72 | "message": "L'aggiornamento di $extName$ non è riuscito",
73 | "description": "extName sarà il nome dell'estensione che non è stato possibile aggiornare.",
74 | "placeholders": {
75 | "extName": {
76 | "content": "$1"
77 | }
78 | }
79 | },
80 | "popup_removedExtensions": {
81 | "message": "Le seguenti estensioni sono state rimosse dal Chrome Web Store",
82 | "description": "Sarà mostrato sopra alla lista delle estensioni rimosse."
83 | },
84 | "popup_removedExtensionsTooltip": {
85 | "message": "Queste potrebbero essere state rimosse per una violazione dei Termini di Servizio",
86 | "description": "Mostrato quando si passa sopra a popup_removedExtensions"
87 | },
88 | "contextMenu_updateAll": {
89 | "message": "Aggiorna tutte le estensioni",
90 | "description": ""
91 | },
92 | "webstore_addButton": {
93 | "message": "Aggiungi a Chromium",
94 | "description": ""
95 | },
96 | "webstore_removeButton": {
97 | "message": "Rimuovere da Chromium",
98 | "description": "MTL"
99 | },
100 | "options_webstoreIntegration": {
101 | "message": "Abilita l'integrazione del Chrome Web Store",
102 | "description": "MTL"
103 | },
104 | "options_manuallyInstall": {
105 | "message": "Scarica sempre i file CRX",
106 | "description": "MTL"
107 | },
108 | "notify_manuallyInstall_title": {
109 | "message": "Estensione scaricata! Si prega di installare manualmente:",
110 | "description": "MTL"
111 | },
112 | "notify_manuallyInstall_message": {
113 | "message": "1. Abilita la modalità sviluppatore (in alto a destra)\n2. Trascina .crx dalla barra dei download sulla pagina delle estensioni",
114 | "description": "MTL"
115 | },
116 | "options_importExportDescription": {
117 | "message": "Salva il testo qui in un file da esportare. Per importare, incolla qui il testo e premi $installButton$",
118 | "description": "MTL",
119 | "placeholders": { "installButton": { "content": "$1" } }
120 | },
121 | "options_webstoreIntegrationTooltip": {
122 | "message": "Abilita i pulsanti Installa/Disinstalla sul Chrome Web Store. (Potrebbe esporre a Google informazioni su quali estensioni hai installato.)",
123 | "description": "MTL"
124 | },
125 | "options_manuallyInstallTooltip": {
126 | "message": "Attiva questa opzione se ricevi errori 'CRX_REQUIRED_PROOF_MISSING'.",
127 | "description": "MTL"
128 | },
129 | "options_advanced": { "message": "Avanzate", "description": "MTL" }
130 | }
131 |
--------------------------------------------------------------------------------
/src/_locales/tr/messages.json:
--------------------------------------------------------------------------------
1 | {
2 | "extension_Name": {
3 | "message": "Chromium Web Mağazası",
4 | "description": "Chrome Web Mağazası'nda görüntülenen uzantının başlığı."
5 | },
6 | "extension_Description": {
7 | "message": "Chromium tabanlı tarayıcılarda Chrome Web Mağazası'ndan (veya başka bir yerden) uzantılar için yükleme ve yarı otomatik güncelleme sağlar.",
8 | "description": "Chrome Web Mağazası'nda görüntülenen uzantının başlığı."
9 | },
10 |
11 | "options_updateHeading": {
12 | "message": "Güncelleme seçenekleri",
13 | "description": ""
14 | },
15 | "options_ignoredExtensionsHeading": {
16 | "message": "Yoksayılan uzantılar",
17 | "description": ""
18 | },
19 | "options_importExportHeading": {
20 | "message": "İçe/Dışa Aktar",
21 | "description": ""
22 | },
23 | "options_autoUpdate": {
24 | "message": "Uzantı güncellemelerini otomatik olarak denetle",
25 | "description": ""
26 | },
27 | "options_autoUpdateTooltip": {
28 | "message": "Elle kontrol yapmak için Chromium Web Mağazası rozetine tıklayın",
29 | "description": ""
30 | },
31 | "options_updateWebstore": {
32 | "message": "Chrome Web Mağazası uzantılarında güncelleme olup olmadığını denetle",
33 | "description": ""
34 | },
35 | "options_updateWebstoreTooltip": {
36 | "message": "Güncellemeleri denetlemek için Google ile iletişime geçilecek",
37 | "description": ""
38 | },
39 | "options_updateNonWebstore": {
40 | "message": "Chrome Web Mağazası'ndan olmayan uzantılara yönelik güncellemeleri denetle",
41 | "description": ""
42 | },
43 | "options_updateNonWebstoreTooltip": {
44 | "message": "Yalnızca uzantı otomatik güncellemeyi destekliyorsa çalışır",
45 | "description": ""
46 | },
47 | "options_neverCheckTooltip": {
48 | "message": "Bu uzantının güncellemelerini asla denetleme",
49 | "description": ""
50 | },
51 | "options_updateDelay": {
52 | "message": "Her $delayInMinutes$ dakikada bir güncellemeleri denetle",
53 | "description": "delayInMinutes kullanıcı tarafından düzenlenebilen bir alan olacaktır",
54 | "placeholders": {
55 | "delayInMinutes": {
56 | "content": "$1"
57 | }
58 | }
59 | },
60 | "options_advanced": {
61 | "message": "Gelişmiş",
62 | "description": ""
63 | },
64 | "options_manuallyInstallTooltip": {
65 | "message": "Eğer 'CRX_REQUIRED_PROOF_MISSING' hataları alıyorsanız, bu seçeneği etkinleştirin",
66 | "description": ""
67 | },
68 | "options_manuallyInstall": {
69 | "message": "CRX dosyalarını her zaman indir",
70 | "description": ""
71 | },
72 | "options_webstoreIntegrationTooltip": {
73 | "message": "Chrome Web Mağazası'nda Yükle/Kaldır düğmelerini etkinleştir. (Google'a hangi uzantıları yüklediğinize dair bilgileri ifşa edebilir.)",
74 | "description": ""
75 | },
76 | "options_webstoreIntegration": {
77 | "message": "Chrome Web Store Bağlantısını Etkinleştir",
78 | "description": ""
79 | },
80 | "options_importExportInstallAllButton": {
81 | "message": "Hepsini Yükle",
82 | "description": ""
83 | },
84 | "options_importExportDescription": {
85 | "message": "Metni dışa aktarmak için buraya bir dosyaya kaydedin. İçe aktarmak için bu metni buraya yapıştırın ve $installButton$'a basın",
86 | "description": "installButton options_importExportInstallAllButton içinde tanımlanan düğme üzerindeki metindir",
87 | "placeholders": {
88 | "installButton": {
89 | "content": "$1"
90 | }
91 | }
92 | },
93 | "popup_checkingForUpdates": {
94 | "message": "Güncellemeler denetleniyor...",
95 | "description": ""
96 | },
97 | "popup_allUpToDate": {
98 | "message": "Tüm uzantılar güncel!",
99 | "description": ""
100 | },
101 | "popup_updateFailed": {
102 | "message": "$extName$ Güncelleme başarısız oldu",
103 | "description": "extName güncellenemeyen uzantının adı olacaktır.",
104 | "placeholders": {
105 | "extName": {
106 | "content": "$1"
107 | }
108 | }
109 | },
110 | "popup_removedExtensions": {
111 | "message": "Aşağıdaki uzantılar Chrome Web Mağazası'ndan kaldırıldı",
112 | "description": "Kaldırılan uzantıların listesinin üstünde gösterilecektir."
113 | },
114 | "popup_removedExtensionsTooltip": {
115 | "message": "Bunlar, Hizmet Koşulları'nın ihlali nedeniyle kaldırılmış olabilir.",
116 | "description": "Popup_removedExtensions'ın üzerine gelindiğinde gösterilir."
117 | },
118 | "contextMenu_updateAll": {
119 | "message": "Tüm uzantıları güncelle",
120 | "description": ""
121 | },
122 | "webstore_addButton": {
123 | "message": "Chromium'a ekle",
124 | "description": ""
125 | },
126 | "webstore_removeButton": {
127 | "message": "Chromium'dan kaldır",
128 | "description": ""
129 | },
130 | "notify_manuallyInstall_title": {
131 | "message": "Eklenti indirildi! Lütfen elle yükleyin:",
132 | "description": ""
133 | },
134 | "notify_manuallyInstall_message": {
135 | "message": "1. Geliştirici Modu'nu etkinleştirin (sağ üstten) \n2. İndirilenler'den .crx dosyasını Uzantılar sayfasına sürükleyin",
136 | "description": ""
137 | }
138 | }
139 |
--------------------------------------------------------------------------------
/src/_locales/es-419/messages.json:
--------------------------------------------------------------------------------
1 | {
2 | "extension_Name": {
3 | "message": "Chromium Web Store",
4 | "description": "The title of the extension, displayed in the Chrome Web Store."
5 | },
6 | "extension_Description": {
7 | "message": "Permite instalar y actualizar de forma semiautomática las extensiones de Chrome Web Store (o de otros sitios) en navegadores basados en Chromium.",
8 | "description": "The description of the extension, displayed in the Chrome Web Store."
9 | },
10 | "options_updateHeading": {
11 | "message": "Opciones de actualización",
12 | "description": ""
13 | },
14 | "options_ignoredExtensionsHeading": {
15 | "message": "Extensiones ignoradas",
16 | "description": ""
17 | },
18 | "options_importExportHeading": {
19 | "message": "Importar/Exportar",
20 | "description": ""
21 | },
22 | "options_autoUpdate": {
23 | "message": "Buscar automáticamente actualizaciones de las extensiones",
24 | "description": ""
25 | },
26 | "options_autoUpdateTooltip": {
27 | "message": "Haz clic en el icono de Chromium Web Store para comprobar las actualizaciones manualmente",
28 | "description": ""
29 | },
30 | "options_updateWebstore": {
31 | "message": "Comprobar actualizaciones de las extensiones de Chrome Web Store",
32 | "description": ""
33 | },
34 | "options_updateWebstoreTooltip": {
35 | "message": "La comprobación de actualizaciones contactará con Google",
36 | "description": ""
37 | },
38 | "options_updateNonWebstore": {
39 | "message": "Comprobar actualizaciones de extensiones ajenas a Chrome Web Store",
40 | "description": ""
41 | },
42 | "options_updateNonWebstoreTooltip": {
43 | "message": "Solo funcionará si la extensión es compatible con las actualizaciones automáticas",
44 | "description": ""
45 | },
46 | "options_neverCheckTooltip": {
47 | "message": "No buscar actualizaciones para esta extensión",
48 | "description": ""
49 | },
50 | "options_updateDelay": {
51 | "message": "Buscar actualizaciones cada $delayInMinutes$ minutos",
52 | "description": "delayInMinutes will be a field that can be edited by the user",
53 | "placeholders": {
54 | "delayInMinutes": {
55 | "content": "$1"
56 | }
57 | }
58 | },
59 | "options_importExportInstallAllButton": {
60 | "message": "Instalar todo",
61 | "description": ""
62 | },
63 | "options_importExportDescription": {
64 | "message": "Guarda este texto en un archivo exportado. Para importar un texto, pega aquí el texto que contiene y pulsa $installButton$",
65 | "description": "installButton is the text on the button, defined in options_importExportInstallAllButton",
66 | "placeholders": {
67 | "installButton": {
68 | "content": "$1"
69 | }
70 | }
71 | },
72 | "popup_checkingForUpdates": {
73 | "message": "Buscando actualizaciones...",
74 | "description": ""
75 | },
76 | "popup_allUpToDate": {
77 | "message": "¡Todas las extensiones están actualizadas!",
78 | "description": ""
79 | },
80 | "popup_updateFailed": {
81 | "message": "No se pudo actualizar $extName$",
82 | "description": "extName will be the name of the extension that failed to update.",
83 | "placeholders": {
84 | "extName": {
85 | "content": "$1"
86 | }
87 | }
88 | },
89 | "popup_removedExtensions": {
90 | "message": "Estas extensiones fueron eliminadas de Chrome Web Store",
91 | "description": "Will be shown above list of removed extensions."
92 | },
93 | "popup_removedExtensionsTooltip": {
94 | "message": "Puede que se eliminaran por incumplir los términos del servicio.",
95 | "description": "Shown when hovering over popup_removedExtensions."
96 | },
97 | "contextMenu_updateAll": {
98 | "message": "Actualizar todas las extensiones",
99 | "description": ""
100 | },
101 | "webstore_addButton": {
102 | "message": "Añadir a Chromium",
103 | "description": ""
104 | },
105 | "webstore_removeButton": {
106 | "message": "Quitar de Chromium",
107 | "description": ""
108 | },
109 | "options_advanced": { "message": "Avanzado", "description": "MTL" },
110 | "notify_manuallyInstall_title": {
111 | "message": "¡Extensión descargada! Instale manualmente:",
112 | "description": "MTL"
113 | },
114 | "options_webstoreIntegrationTooltip": {
115 | "message": "Habilite los botones Instalar/Desinstalar en Chrome Web Store. (Podría exponer información sobre qué extensiones ha instalado en Google).",
116 | "description": "MTL"
117 | },
118 | "notify_manuallyInstall_message": {
119 | "message": "1. Habilite el modo Desarrollador (arriba a la derecha)\n2. Arrastre .crx desde la barra de descargas a la página de extensiones",
120 | "description": "MTL"
121 | },
122 | "options_manuallyInstall": {
123 | "message": "Descargue siempre archivos CRX",
124 | "description": "MTL"
125 | },
126 | "options_manuallyInstallTooltip": {
127 | "message": "Cambie esta opción si recibe errores 'CRX_REQUIRED_PROOF_MISSING'",
128 | "description": "MTL"
129 | },
130 | "options_webstoreIntegration": {
131 | "message": "Habilitar la integración de Chrome Web Store",
132 | "description": "MTL"
133 | }
134 | }
135 |
--------------------------------------------------------------------------------
/src/_locales/es/messages.json:
--------------------------------------------------------------------------------
1 | {
2 | "extension_Name": {
3 | "message": "Chromium Web Store",
4 | "description": "The title of the extension, displayed in the Chrome Web Store."
5 | },
6 | "extension_Description": {
7 | "message": "Permite instalar y actualizar de forma semiautomática las extensiones de Chrome Web Store (o de otros sitios) en navegadores basados en Chromium.",
8 | "description": "The description of the extension, displayed in the Chrome Web Store."
9 | },
10 | "options_updateHeading": {
11 | "message": "Opciones de actualización",
12 | "description": ""
13 | },
14 | "options_ignoredExtensionsHeading": {
15 | "message": "Extensiones ignoradas",
16 | "description": ""
17 | },
18 | "options_importExportHeading": {
19 | "message": "Importar/Exportar",
20 | "description": ""
21 | },
22 | "options_autoUpdate": {
23 | "message": "Buscar automáticamente actualizaciones de las extensiones",
24 | "description": ""
25 | },
26 | "options_autoUpdateTooltip": {
27 | "message": "Haz clic en el icono de Chromium Web Store para comprobar las actualizaciones manualmente",
28 | "description": ""
29 | },
30 | "options_updateWebstore": {
31 | "message": "Comprobar actualizaciones de las extensiones de Chrome Web Store",
32 | "description": ""
33 | },
34 | "options_updateWebstoreTooltip": {
35 | "message": "La comprobación de actualizaciones contactará con Google",
36 | "description": ""
37 | },
38 | "options_updateNonWebstore": {
39 | "message": "Comprobar actualizaciones de extensiones ajenas a Chrome Web Store",
40 | "description": ""
41 | },
42 | "options_updateNonWebstoreTooltip": {
43 | "message": "Solo funcionará si la extensión es compatible con las actualizaciones automáticas",
44 | "description": ""
45 | },
46 | "options_neverCheckTooltip": {
47 | "message": "No buscar actualizaciones para esta extensión",
48 | "description": ""
49 | },
50 | "options_updateDelay": {
51 | "message": "Buscar actualizaciones cada $delayInMinutes$ minutos",
52 | "description": "delayInMinutes will be a field that can be edited by the user",
53 | "placeholders": {
54 | "delayInMinutes": {
55 | "content": "$1"
56 | }
57 | }
58 | },
59 | "options_importExportInstallAllButton": {
60 | "message": "Instalar todo",
61 | "description": ""
62 | },
63 | "options_importExportDescription": {
64 | "message": "Guarda este texto en un archivo exportado. Para importar un texto, pega aquí el texto que contiene y pulsa $installButton$",
65 | "description": "installButton is the text on the button, defined in options_importExportInstallAllButton",
66 | "placeholders": {
67 | "installButton": {
68 | "content": "$1"
69 | }
70 | }
71 | },
72 | "popup_checkingForUpdates": {
73 | "message": "Buscando actualizaciones...",
74 | "description": ""
75 | },
76 | "popup_allUpToDate": {
77 | "message": "¡Todas las extensiones están actualizadas!",
78 | "description": ""
79 | },
80 | "popup_updateFailed": {
81 | "message": "No se ha podido actualizar $extName$",
82 | "description": "extName will be the name of the extension that failed to update.",
83 | "placeholders": {
84 | "extName": {
85 | "content": "$1"
86 | }
87 | }
88 | },
89 | "popup_removedExtensions": {
90 | "message": "Estas extensiones han sido eliminadas de Chrome Web Store",
91 | "description": "Will be shown above list of removed extensions."
92 | },
93 | "popup_removedExtensionsTooltip": {
94 | "message": "Puede que se hayan eliminado por incumplir los términos del servicio.",
95 | "description": "Shown when hovering over popup_removedExtensions."
96 | },
97 | "contextMenu_updateAll": {
98 | "message": "Actualizar todas las extensiones",
99 | "description": ""
100 | },
101 | "webstore_addButton": {
102 | "message": "Añadir a Chromium",
103 | "description": ""
104 | },
105 | "webstore_removeButton": {
106 | "message": "Quitar de Chromium",
107 | "description": ""
108 | },
109 | "options_advanced": { "message": "Avanzado", "description": "MTL" },
110 | "notify_manuallyInstall_title": {
111 | "message": "¡Extensión descargada! Instale manualmente:",
112 | "description": "MTL"
113 | },
114 | "options_webstoreIntegrationTooltip": {
115 | "message": "Habilite los botones Instalar/Desinstalar en Chrome Web Store. (Podría exponer información sobre qué extensiones ha instalado en Google).",
116 | "description": "MTL"
117 | },
118 | "notify_manuallyInstall_message": {
119 | "message": "1. Habilite el modo Desarrollador (arriba a la derecha)\n2. Arrastre .crx desde la barra de descargas a la página de extensiones",
120 | "description": "MTL"
121 | },
122 | "options_manuallyInstall": {
123 | "message": "Descargue siempre archivos CRX",
124 | "description": "MTL"
125 | },
126 | "options_manuallyInstallTooltip": {
127 | "message": "Cambie esta opción si recibe errores 'CRX_REQUIRED_PROOF_MISSING'",
128 | "description": "MTL"
129 | },
130 | "options_webstoreIntegration": {
131 | "message": "Habilitar la integración de Chrome Web Store",
132 | "description": "MTL"
133 | }
134 | }
135 |
--------------------------------------------------------------------------------
/src/_locales/de/messages.json:
--------------------------------------------------------------------------------
1 | {
2 | "extension_Name": {
3 | "message": "Chromium Web Store",
4 | "description": "The title of the extension, displayed in the Chrome Web Store."
5 | },
6 | "extension_Description": {
7 | "message": "Ermöglicht die Installation und die halbautomatische Aktualisierung für Erweiterungen aus dem Chrome Web Store (oder aus anderen Quellen) auf Chromium-basierten Browsern.",
8 | "description": "The description of the extension, displayed in the Chrome Web Store."
9 | },
10 | "options_updateHeading": {
11 | "message": "Aktualisiere Einstellungen",
12 | "description": ""
13 | },
14 | "options_ignoredExtensionsHeading": {
15 | "message": "Ignorierte Erweiterungen",
16 | "description": ""
17 | },
18 | "options_importExportHeading": {
19 | "message": "Import/Export",
20 | "description": "MTL"
21 | },
22 | "options_autoUpdate": {
23 | "message": "Automatisch nach Erweiterungs-Aktualisierung suchen",
24 | "description": ""
25 | },
26 | "options_autoUpdateTooltip": {
27 | "message": "Klicken Sie auf das Chromium Web Store-Abzeichen, um eine manuelle Aktualisierungsprüfung durchzuführen",
28 | "description": ""
29 | },
30 | "options_updateWebstore": {
31 | "message": "Nach Aktualisierung für Chrome Web Store-Erweiterungen suchen",
32 | "description": ""
33 | },
34 | "options_updateWebstoreTooltip": {
35 | "message": "Wird Google kontaktieren, um nach Aktualisierungen zu suchen",
36 | "description": ""
37 | },
38 | "options_updateNonWebstore": {
39 | "message": "Nach Aktualisierung für Erweiterungen suchen, die nicht aus dem Chrome Web Store sind.",
40 | "description": ""
41 | },
42 | "options_updateNonWebstoreTooltip": {
43 | "message": "Funktioniert nur, wenn die Erweiterung automatische Aktualisierungen unterstützt",
44 | "description": ""
45 | },
46 | "options_neverCheckTooltip": {
47 | "message": "Nie nach Aktualisierungen für diese Erweiterung suchen",
48 | "description": ""
49 | },
50 | "options_updateDelay": {
51 | "message": "Alle $delayInMinutes$ Minuten auf Aktualisierungen prüfen",
52 | "description": "delayInMinutes will be a field that can be edited by the user",
53 | "placeholders": {
54 | "delayInMinutes": {
55 | "content": "$1"
56 | }
57 | }
58 | },
59 | "options_importExportInstallAllButton": {
60 | "message": "Alle installieren",
61 | "description": "MTL"
62 | },
63 | "popup_checkingForUpdates": {
64 | "message": "Prüfe auf Aktualisierungen...",
65 | "description": ""
66 | },
67 | "popup_allUpToDate": {
68 | "message": "Alle Erweiterungen sind auf dem neuesten Stand!",
69 | "description": ""
70 | },
71 | "popup_updateFailed": {
72 | "message": "$extName$: Aktualisierung fehlgeschlagen",
73 | "description": "extName will be the name of the extension that failed to update.",
74 | "placeholders": {
75 | "extName": {
76 | "content": "$1"
77 | }
78 | }
79 | },
80 | "popup_removedExtensions": {
81 | "message": "Die folgenden Erweiterungen wurden aus dem Chrome Web Store entfernt",
82 | "description": "Will be shown above list of removed extensions."
83 | },
84 | "popup_removedExtensionsTooltip": {
85 | "message": "Diese Erweiterung könnte aufgrund eines Verstoßes gegen die Nutzungsbedingungen entfernt worden sein.",
86 | "description": "Shown when hovering over popup_removedExtensions."
87 | },
88 | "contextMenu_updateAll": {
89 | "message": "Alle Erweiterungen aktualisieren.",
90 | "description": ""
91 | },
92 | "webstore_addButton": {
93 | "message": "Zu Chromium hinzufügen",
94 | "description": ""
95 | },
96 | "webstore_removeButton": {
97 | "message": "Aus Chromium entfernen",
98 | "description": "MTL"
99 | },
100 | "notify_manuallyInstall_message": {
101 | "message": "1. Entwicklermodus aktivieren (oben rechts)\n2. Ziehen Sie .crx aus der Downloadleiste auf die Erweiterungsseite",
102 | "description": "MTL"
103 | },
104 | "notify_manuallyInstall_title": {
105 | "message": "Erweiterung heruntergeladen! Bitte manuell installieren:",
106 | "description": "MTL"
107 | },
108 | "options_manuallyInstall": {
109 | "message": "Laden Sie immer CRX-Dateien herunter",
110 | "description": "MTL"
111 | },
112 | "options_manuallyInstallTooltip": {
113 | "message": "Schalten Sie diese Option um, wenn Sie „CRX_REQUIRED_PROOF_MISSING“-Fehler erhalten",
114 | "description": "MTL"
115 | },
116 | "options_advanced": { "message": "Fortschrittlich", "description": "MTL" },
117 | "options_webstoreIntegrationTooltip": {
118 | "message": "Aktivieren Sie die Schaltflächen „Installieren/Deinstallieren“ im Chrome Web Store. (Könnte Informationen darüber offenlegen, welche Erweiterungen Sie an Google installiert haben.)",
119 | "description": "MTL"
120 | },
121 | "options_webstoreIntegration": {
122 | "message": "Aktivieren Sie die Chrome Web Store-Integration",
123 | "description": "MTL"
124 | },
125 | "options_importExportDescription": {
126 | "message": "Speichern Sie den Text hier in einer Datei zum Exportieren. Um den Text zu importieren, fügen Sie ihn hier ein und drücken Sie $installButton$",
127 | "description": "MTL",
128 | "placeholders": { "installButton": { "content": "$1" } }
129 | }
130 | }
131 |
--------------------------------------------------------------------------------
/src/_locales/fr/messages.json:
--------------------------------------------------------------------------------
1 | {
2 | "extension_Name": {
3 | "message": "Chromium Web Store",
4 | "description": "Le nom de l'extension, affiché dans le Chrome Web Store."
5 | },
6 | "extension_Description": {
7 | "message": "Active l'installation et la mise à jour semi-automatique des extensions installées depuis le Chrome Web Store (ou d'ailleurs) sur les navigateurs basés sur Chromium.",
8 | "description": "La description de l'extension, affichée dans le Chrome Web Store."
9 | },
10 | "options_updateHeading": {
11 | "message": "Options de mise à jour",
12 | "description": ""
13 | },
14 | "options_ignoredExtensionsHeading": {
15 | "message": "Extensions ignorées",
16 | "description": ""
17 | },
18 | "options_importExportHeading": {
19 | "message": "Importer/Exporter",
20 | "description": "MTL"
21 | },
22 | "options_autoUpdate": {
23 | "message": "Vérifier automatiquement les mises à jour des extensions",
24 | "description": ""
25 | },
26 | "options_autoUpdateTooltip": {
27 | "message": "Cliquez sur le badge Chromium Web Store pour lancer une vérification manuelle",
28 | "description": ""
29 | },
30 | "options_updateWebstore": {
31 | "message": "Rechercher des mises à jour pour les extensions installées depuis le Chrome Web Store",
32 | "description": ""
33 | },
34 | "options_updateWebstoreTooltip": {
35 | "message": "Contactera Google pour rechercher des mises à jour",
36 | "description": ""
37 | },
38 | "options_updateNonWebstore": {
39 | "message": "Recherche des mises à jour pour les extensions installées hors du Chrome Web Store",
40 | "description": ""
41 | },
42 | "options_updateNonWebstoreTooltip": {
43 | "message": "Ne fonctionne que si l'extension supporte les mises à jour automatiques",
44 | "description": ""
45 | },
46 | "options_neverCheckTooltip": {
47 | "message": "Ne jamais rechercher de mise à jour pour cette extension",
48 | "description": ""
49 | },
50 | "options_updateDelay": {
51 | "message": "Rechercher les mises à jour toutes les $delayInMinutes$ minutes",
52 | "description": "delayInMinutes est le champ qui peut être édité par l'utilisateur",
53 | "placeholders": {
54 | "delayInMinutes": {
55 | "content": "$1"
56 | }
57 | }
58 | },
59 | "options_advanced": {
60 | "message": "Avancé",
61 | "decriptions": ""
62 | },
63 | "options_manuallyInstallTooltip": {
64 | "message": "Changez cette option si vous avez des erreurs 'CRX_REQUIRED_PROOF_MISSING'",
65 | "description": ""
66 | },
67 | "options_manuallyInstall": {
68 | "message": "Toujours télécharger les fichiers CRX",
69 | "description": ""
70 | },
71 | "options_webstoreIntegrationTooltip": {
72 | "message": "Activer les boutons Ajouter/Supprimer dans le Chrome Web Store. (Peut exposer les informations sur quel extensions vous avez installer à Google.)",
73 | "description": ""
74 | },
75 | "options_webstoreIntegration": {
76 | "message": "Activer l'integration au Chrome Web Store",
77 | "description": ""
78 | },
79 | "options_importExportInstallAllButton": {
80 | "message": "Tout installer",
81 | "description": "MTL"
82 | },
83 | "options_importExportDescription": {
84 | "message": "Sauvegardez le texte ici dans un fichier à exporter. Pour importer, collez le texte ici et appuyez sur $installButton",
85 | "description": "installButton est le texte sur le bouton, défini dans options_importExportInstallAllButton",
86 | "placeholders": {
87 | "installButton": {
88 | "content": "$1"
89 | }
90 | }
91 | },
92 | "popup_checkingForUpdates": {
93 | "message": "Recherche de mises à jour...",
94 | "description": ""
95 | },
96 | "popup_allUpToDate": {
97 | "message": "Toutes les extensions sont à jour!",
98 | "description": ""
99 | },
100 | "popup_updateFailed": {
101 | "message": "La mise à jour de $extName$ a échouée",
102 | "description": "extName sera le nom de l'extension qui a échoué à être mis à jour.",
103 | "placeholders": {
104 | "extName": {
105 | "content": "$1"
106 | }
107 | }
108 | },
109 | "popup_removedExtensions": {
110 | "message": "Les extensions suivantes ont été retirées du Chrome Web Store",
111 | "description": "Sera affiché au dessus de la liste des extensions retirées."
112 | },
113 | "popup_removedExtensionsTooltip": {
114 | "message": "Ces extensions peuvent avoir été retirées à cause d'une violation des conditions générales d'utilisation.",
115 | "description": "Affiché en survolant popup_removedExtensions."
116 | },
117 | "contextMenu_updateAll": {
118 | "message": "Mettre à jour toutes les extensions",
119 | "description": ""
120 | },
121 | "webstore_addButton": {
122 | "message": "Ajouter à Chromium",
123 | "description": ""
124 | },
125 | "webstore_removeButton": {
126 | "message": "Supprimer de Chromium",
127 | "description": "MTL"
128 | },
129 | "notify_manuallyInstall_title": {
130 | "message": "Extension téléchargées! Merci d'installer manuellement:",
131 | "description": ""
132 | },
133 | "notify_manuallyInstall_message": {
134 | "message": "1. Activez le mode développeur (En haut à droite)\n2. Glissez .crx depuis la bar de téléchargements dans la page extensions",
135 | "description": ""
136 | }
137 | }
--------------------------------------------------------------------------------
/src/_locales/en/messages.json:
--------------------------------------------------------------------------------
1 | {
2 | "extension_Name": {
3 | "message": "Chromium Web Store",
4 | "description": "The title of the extension, displayed in the Chrome Web Store."
5 | },
6 | "extension_Description": {
7 | "message": "Enables installation and semi-automatic updating for extensions from the Chrome Web Store (or elsewhere) on Chromium based browsers.",
8 | "description": "The description of the extension, displayed in the Chrome Web Store."
9 | },
10 |
11 | "options_updateHeading": {
12 | "message": "Update options",
13 | "description": ""
14 | },
15 | "options_ignoredExtensionsHeading": {
16 | "message": "Ignored extensions",
17 | "description": ""
18 | },
19 | "options_importExportHeading": {
20 | "message": "Import/Export",
21 | "description": ""
22 | },
23 | "options_autoUpdate": {
24 | "message": "Automatically check for extension updates",
25 | "description": ""
26 | },
27 | "options_autoUpdateTooltip": {
28 | "message": "Click the Chromium Web Store badge to perform a manual check",
29 | "description": ""
30 | },
31 | "options_updateWebstore": {
32 | "message": "Check for updates to Chrome Web Store extensions",
33 | "description": ""
34 | },
35 | "options_updateWebstoreTooltip": {
36 | "message": "Will contact Google to check for updates",
37 | "description": ""
38 | },
39 | "options_updateNonWebstore": {
40 | "message": "Check for updates to non-Chrome Web Store extensions",
41 | "description": ""
42 | },
43 | "options_updateNonWebstoreTooltip": {
44 | "message": "Only works if extension supports auto-updating",
45 | "description": ""
46 | },
47 | "options_neverCheckTooltip": {
48 | "message": "Never check for updates to this extension",
49 | "description": ""
50 | },
51 | "options_updateDelay": {
52 | "message": "Check for updates every $delayInMinutes$ minutes",
53 | "description": "delayInMinutes will be a field that can be edited by the user",
54 | "placeholders": {
55 | "delayInMinutes": {
56 | "content": "$1"
57 | }
58 | }
59 | },
60 | "options_advanced": {
61 | "message": "Advanced",
62 | "description": ""
63 | },
64 | "options_manuallyInstallTooltip": {
65 | "message": "Toggle this option if you are getting 'CRX_REQUIRED_PROOF_MISSING' errors",
66 | "description": ""
67 | },
68 | "options_manuallyInstall": {
69 | "message": "Always download CRX files",
70 | "description": ""
71 | },
72 | "options_webstoreIntegrationTooltip": {
73 | "message": "Enable Install/Uninstall buttons on the Chrome Web Store. (Could expose information about which extensions you have installed to Google.)",
74 | "description": ""
75 | },
76 | "options_webstoreIntegration": {
77 | "message": "Enable Chrome Web Store Integration",
78 | "description": ""
79 | },
80 | "options_importExportInstallAllButton": {
81 | "message": "Install All",
82 | "description": ""
83 | },
84 | "options_importExportDescription": {
85 | "message": "Save the text here to a file to export. To import paste that text here and press $installButton$",
86 | "description": "installButton is the text on the button, defined in options_importExportInstallAllButton",
87 | "placeholders": {
88 | "installButton": {
89 | "content": "$1"
90 | }
91 | }
92 | },
93 | "popup_checkingForUpdates": {
94 | "message": "Checking for updates...",
95 | "description": ""
96 | },
97 | "popup_allUpToDate": {
98 | "message": "All extensions are up to date!",
99 | "description": ""
100 | },
101 | "popup_updateFailed": {
102 | "message": "$extName$ Update Failed",
103 | "description": "extName will be the name of the extension that failed to update.",
104 | "placeholders": {
105 | "extName": {
106 | "content": "$1"
107 | }
108 | }
109 | },
110 | "popup_removedExtensions": {
111 | "message": "The following extensions have been removed from the Chrome Web Store",
112 | "description": "Will be shown above list of removed extensions."
113 | },
114 | "popup_removedExtensionsTooltip": {
115 | "message": "These may have been removed due to a violation of the Terms of Service.",
116 | "description": "Shown when hovering over popup_removedExtensions."
117 | },
118 | "contextMenu_updateAll": {
119 | "message": "Update all extensions",
120 | "description": ""
121 | },
122 | "webstore_addButton": {
123 | "message": "Add to Chromium",
124 | "description": ""
125 | },
126 | "webstore_removeButton": {
127 | "message": "Remove from Chromium",
128 | "description": ""
129 | },
130 | "notify_manuallyInstall_title": {
131 | "message": "Extension downloaded! Please install manually:",
132 | "description": ""
133 | },
134 | "notify_manuallyInstall_message": {
135 | "message": "1. Enable Developer mode (top right)\n2. Drag .crx from downloads bar onto extensions page",
136 | "description": ""
137 | }
138 | }
139 |
--------------------------------------------------------------------------------
/en_nolocale/scripts/inject.js:
--------------------------------------------------------------------------------
1 | var dlBtn;
2 |
3 | function createButton(newParent, addBtn = true) {
4 | const button_div = document.createElement("div");
5 | button_div.setAttribute("role", "button");
6 | button_div.setAttribute(
7 | "class",
8 | "dd-Va g-c-wb g-eg-ua-Uc-c-za g-c-Oc-td-jb-oa g-c"
9 | );
10 |
11 | button_div.setAttribute("tabindex", "0");
12 | button_div.setAttribute("style", "user-select: none;");
13 | var hf = document.createElement("div");
14 | hf.setAttribute("class", "g-c-Hf");
15 | button_div.appendChild(hf);
16 | var x = document.createElement("div");
17 | x.setAttribute("class", "g-c-x");
18 | hf.appendChild(x);
19 | const r = document.createElement("div");
20 | r.setAttribute("class", "g-c-R webstore-test-button-label");
21 | x.appendChild(r);
22 | button_div.toggleState = function (isInstall) {
23 | isInstall
24 | ? button_div.setAttribute("isInstallBtn", "")
25 | : button_div.removeAttribute("isInstallBtn");
26 | button_div.setAttribute(
27 | "aria-label",
28 | isInstall
29 | ? "Add to Chromium"
30 | : "Remove from Chromium"
31 | );
32 | r.innerHTML = isInstall
33 | ? "Add to Chromium"
34 | : "Remove from Chromium";
35 | };
36 | if (addBtn) button_div.setAttribute("isInstallBtn", "");
37 | button_div.toggleState(addBtn);
38 | let dlurl = buildExtensionUrl(window.location.href);
39 | button_div.id = getExtensionId(window.location.href);
40 | button_div.addEventListener("click", function () {
41 | if (button_div.hasAttribute("isInstallBtn")) {
42 | chrome.runtime.sendMessage({
43 | installExt: getExtensionId(window.location.href),
44 | });
45 | promptInstall(dlurl, true);
46 | } else {
47 | chrome.runtime.sendMessage(
48 | {
49 | uninstallExt: getExtensionId(window.location.href),
50 | },
51 | (resp) => {
52 | if (resp.uninstalled) {
53 | button_div.toggleState(true);
54 | }
55 | }
56 | );
57 | }
58 | });
59 | button_div.addEventListener("mouseover", function () {
60 | this.classList.add("g-c-l");
61 | });
62 | button_div.addEventListener("mouseout", function () {
63 | this.classList.remove("g-c-l");
64 | });
65 | newParent.innerHTML = "";
66 | newParent.appendChild(button_div);
67 | dlBtn = button_div;
68 | }
69 | var modifyButtonObserver = new MutationObserver(function (mutations, observer) {
70 | mutations.forEach(function (mutation) {
71 | if (
72 | mutation.addedNodes.length &&
73 | !mutation.removedNodes.length &&
74 | mutation.nextSibling == null &&
75 | mutation.addedNodes[0].className == "f-rd"
76 | ) {
77 | var container_div = document.querySelector(".h-e-f-Ra-c");
78 | if (container_div && null == container_div.firstChild) {
79 | chrome.runtime.sendMessage(
80 | {
81 | checkExtInstalledId: getExtensionId(
82 | window.location.href
83 | ),
84 | },
85 | (resp) => {
86 | createButton(container_div, !resp.installed);
87 | }
88 | );
89 | }
90 | }
91 | });
92 | });
93 | attachMainObserver = new MutationObserver(function (mutations, observer) {
94 | mutations.forEach(function (mutation) {
95 | modifyButtonObserver.observe(mutation.target.querySelector(".F-ia-k"), {
96 | subtree: true,
97 | childList: true,
98 | });
99 | });
100 | observer.disconnect();
101 | });
102 | if (is_ews.test(window.location.href)) {
103 | new MutationObserver(function (mutations, observer) {
104 | mutations.forEach(function (mutation) {
105 | mutation.target
106 | .querySelectorAll('button[id^="getOrRemoveButton-"][disabled]')
107 | .forEach((btn) => {
108 | btn.classList.remove(
109 | btn.className
110 | .split(" ")
111 | .sort(
112 | (a, b) =>
113 | parseInt(b.slice(1)) - parseInt(a.slice(1))
114 | )[btn.name == "GetButton" ? 1 : 0]
115 | );
116 | btn.removeAttribute("disabled");
117 | btn.addEventListener("click", () => {
118 | promptInstall(
119 | buildExtensionUrl(
120 | window.location.href,
121 | btn.id.split("-")[1]
122 | ),
123 | true,
124 | WEBSTORE.edge
125 | );
126 | });
127 | dlBtn = btn;
128 | });
129 | });
130 | }).observe(document.body, {
131 | childList: true,
132 | subtree: true,
133 | });
134 | }
135 | if (is_cws.test(window.location.href)) {
136 | attachMainObserver.observe(document.body, {
137 | childList: true,
138 | });
139 | }
140 | if (
141 | is_ows.test(window.location.href) &&
142 | document.body.querySelector("#feedback-container") //built-ins don't have a feedback section
143 | ) {
144 | let installDiv = document.body.querySelector(".sidebar .get-opera");
145 | let sidebar = installDiv.parentElement;
146 | let wrapper = document.createElement("div");
147 | wrapper.classList.add("wrapper-install");
148 | dlBtn = document.createElement("a");
149 | dlBtn.classList.add("btn-install");
150 | dlBtn.classList.add("btn-with-plus");
151 | dlBtn.innerHTML = "Add to Chromium";
152 | sidebar.replaceChild(wrapper, installDiv);
153 | wrapper.appendChild(dlBtn);
154 | dlBtn.addEventListener("click", () =>
155 | promptInstall(
156 | buildExtensionUrl(window.location.href),
157 | true,
158 | WEBSTORE.opera
159 | )
160 | );
161 | }
162 | window.onload = () => {
163 | chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
164 | switch (request.action) {
165 | case "extInstalled":
166 | if (request.extId == getExtensionId(window.location.href))
167 | document.getElementById(request.extId).toggleState(false);
168 | break;
169 | }
170 | });
171 | };
172 |
--------------------------------------------------------------------------------
/en_nolocale/scripts/background.js:
--------------------------------------------------------------------------------
1 | importScripts("./util.js");
2 | const nonWebstoreExtensionsDownloading = new Set();
3 | const manualInstallExtensionsDownloading = new Set();
4 | const tabsAwaitingInstall = new Set();
5 | const extensionsTabId = {};
6 | function handleContextClick(info, tab) {
7 | if (info.menuItemId == "updateAll")
8 | checkForUpdates(function (
9 | updateCheck,
10 | installed_versions,
11 | appid,
12 | updatever,
13 | is_webstore
14 | ) {
15 | let crx_url = updateCheck["@codebase"];
16 | promptInstall(crx_url, is_webstore, WEBSTORE.chrome, msgHandler);
17 | });
18 | else if (info.menuItemId == "installExt") {
19 | let store = WEBSTORE.chrome;
20 | [...WEBSTORE_MAP.keys()].some((k) => {
21 | if (k.test(tab.url)) {
22 | store = WEBSTORE_MAP.get(k);
23 | return true;
24 | }
25 | });
26 | promptInstall(buildExtensionUrl(tab.url), true, store, msgHandler);
27 | } else if (info.menuItemId == "cws")
28 | chrome.tabs.create({
29 | url: "https://chrome.google.com/webstore/",
30 | });
31 | }
32 |
33 | function updateBadge(modified_ext_id = null) {
34 | checkForUpdates();
35 | }
36 |
37 | function startupTasks() {
38 | chrome.storage.sync.get(DEFAULT_MANAGEMENT_OPTIONS, function (settings) {
39 | chrome.storage.local.get(
40 | {
41 | badge_display: "",
42 | last_scheduled_update: 0,
43 | },
44 | (localstore) => {
45 | chrome.action.setBadgeText({
46 | text: localstore.badge_display,
47 | });
48 | chrome.alarms.create("cws_check_extension_updates", {
49 | delayInMinutes: Math.max(
50 | 1,
51 | settings.update_period_in_minutes -
52 | Math.floor(
53 | (Date.now() -
54 | localstore.last_scheduled_update) /
55 | 1000 /
56 | 60
57 | )
58 | ),
59 | periodInMinutes: settings.update_period_in_minutes,
60 | });
61 | }
62 | );
63 | });
64 | }
65 | chrome.action.setBadgeBackgroundColor({
66 | color: "#FE0000",
67 | });
68 | chrome.management.onInstalled.addListener(function (ext) {
69 | updateBadge(ext.id);
70 | for (let tabid of tabsAwaitingInstall) {
71 | chrome.tabs.sendMessage(
72 | tabid,
73 | {
74 | action: "extInstalled",
75 | extId: ext.id,
76 | },
77 | () => {
78 | if (chrome.runtime.lastError) tabsAwaitingInstall.delete(tabid);
79 | }
80 | );
81 | }
82 | });
83 | chrome.management.onUninstalled.addListener(function (ext) {
84 | updateBadge(ext.id);
85 | });
86 | chrome.runtime.onStartup.addListener(function () {
87 | startupTasks();
88 | });
89 | chrome.alarms.onAlarm.addListener(function (alarm) {
90 | if (alarm.name == "cws_check_extension_updates")
91 | chrome.storage.sync.get(
92 | DEFAULT_MANAGEMENT_OPTIONS,
93 | function (settings) {
94 | if (settings.auto_update) {
95 | updateBadge();
96 | chrome.storage.local.set({
97 | last_scheduled_update: Date.now(),
98 | });
99 | chrome.alarms.create("cws_check_extension_updates", {
100 | delayInMinutes: settings.update_period_in_minutes,
101 | periodInMinutes: settings.update_period_in_minutes,
102 | });
103 | }
104 | }
105 | );
106 | });
107 | chrome.runtime.onInstalled.addListener(function () {
108 | startupTasks();
109 | chrome.contextMenus.create({
110 | title: "Update all extensions",
111 | id: "updateAll",
112 | contexts: ["action"],
113 | });
114 | chrome.contextMenus.create({
115 | title: "🔗 Chrome Web Store",
116 | id: "cws",
117 | contexts: ["action"],
118 | });
119 | chrome.contextMenus.create({
120 | title: "Add to Chromium",
121 | id: "installExt",
122 | documentUrlPatterns: [
123 | "https://chrome.google.com/webstore/detail/*",
124 | "https://addons.opera.com/*/extensions/details/*",
125 | "https://microsoftedge.microsoft.com/addons/detail/*",
126 | ],
127 | });
128 | });
129 | const msgHandler = function (request, sender, sendResponse) {
130 | if (request.nonWebstoreDownloadUrl) {
131 | chrome.downloads.download(
132 | {
133 | url: request.nonWebstoreDownloadUrl,
134 | },
135 | (dlid) => {
136 | nonWebstoreExtensionsDownloading.add(dlid);
137 | }
138 | );
139 | }
140 | if (request.manualInstallDownloadUrl) {
141 | chrome.downloads.download(
142 | {
143 | url: request.manualInstallDownloadUrl,
144 | saveAs: true, // required to suppress warning: "Apps, extensions and user scripts cannot be added from this website"
145 | },
146 | (dlid) => {
147 | manualInstallExtensionsDownloading.add(dlid);
148 | }
149 | );
150 | }
151 | if (request.newTabUrl) {
152 | chrome.tabs.create({ active: false }, (tab) => {
153 | chrome.tabs.update(tab.id, { url: request.newTabUrl });
154 | });
155 | }
156 | if (request.checkExtInstalledId) {
157 | chrome.management.get(request.checkExtInstalledId, (extinfo) => {
158 | sendResponse({
159 | installed: !(chrome.runtime.lastError && !extinfo),
160 | });
161 | });
162 | return true;
163 | }
164 | if (request.uninstallExt) {
165 | chrome.management.uninstall(request.uninstallExt, () => {
166 | sendResponse({ uninstalled: !chrome.runtime.lastError });
167 | });
168 | return true;
169 | }
170 | if (request.installExt) {
171 | tabsAwaitingInstall.add(sender.tab.id);
172 | }
173 | };
174 | chrome.runtime.onMessage.addListener(msgHandler);
175 | chrome.downloads.onChanged.addListener((d) => {
176 | // open chrome://extensions if user has "Always download CRX files" checked, for easy drag-and-drop installation
177 | if (d.endTime && manualInstallExtensionsDownloading.has(d.id)) {
178 | manualInstallExtensionsDownloading.delete(d.id);
179 | chrome.tabs.get(extensionsTabId?.id ?? 0, (tab) => {
180 | if (!chrome.runtime.lastError)
181 | chrome.tabs.highlight({
182 | tabs: tab.index,
183 | windowId: tab.windowId,
184 | });
185 | else
186 | chrome.tabs.create(
187 | {
188 | url: "chrome://extensions/",
189 | },
190 | (tab) => {
191 | extensionsTabId.id = tab.id;
192 | }
193 | );
194 | });
195 | // chrome.notifications.create("manually_install", {
196 | // type: "basic",
197 | // iconUrl: "assets/icon/icon_128.png",
198 | // title: "Extension downloaded! Please install manually:",
199 | // message: "1. Enable Developer mode (top right)
200 | 2. Drag .crx from downloads bar onto extensions page",
201 | // });
202 | }
203 | });
204 | chrome.contextMenus.onClicked.addListener(handleContextClick);
205 |
--------------------------------------------------------------------------------
/en_nolocale/scripts/options.js:
--------------------------------------------------------------------------------
1 | function load_options() {
2 | var maindiv = document.getElementById("updatetoggle");
3 | var default_options = { ...DEFAULT_MANAGEMENT_OPTIONS };
4 | chrome.management.getAll(function (e) {
5 | e = e.filter((ex) => ex.updateUrl);
6 | installed_extensions = e.map((ex) => ex.id);
7 | e.forEach(function (ex) {
8 | label = document.createElement("label");
9 | label.setAttribute(
10 | "title",
11 | "Never check for updates to this extension"
12 | );
13 | span = document.createElement("span");
14 | div = document.createElement("div");
15 | img = document.createElement("img");
16 | input = document.createElement("input");
17 | input.setAttribute("type", "checkbox");
18 | input.setAttribute("id", ex.id);
19 | if (
20 | Array.from(store_extensions.keys()).some(
21 | (x) =>
22 | x.test(ex.updateUrl) && store_extensions.get(x).ignore
23 | )
24 | ) {
25 | input.checked = true;
26 | input.disabled = true;
27 | }
28 | img.setAttribute("alt", ex.name);
29 | if (ex.icons)
30 | img.setAttribute(
31 | "src",
32 | "chrome://extension-icon/" +
33 | ex.id +
34 | "/" +
35 | ex.icons[0].size +
36 | "/0"
37 | );
38 | else
39 | img.setAttribute(
40 | "src",
41 | "chrome://extension-icon/" + ex.id + "/16/0"
42 | );
43 | span.innerHTML = ex.name;
44 | label.appendChild(input);
45 | label.appendChild(img);
46 | label.appendChild(span);
47 | div.appendChild(label);
48 | maindiv.appendChild(div);
49 | default_options[ex.id] = false;
50 | });
51 | document.getElementById("import_export_list").value = e
52 | .map((ex) => {
53 | for (const [re, updaterOptions] of store_extensions) {
54 | if (re.test(ex.updateUrl)) {
55 | if (!updaterOptions.ignore)
56 | return ex.name + "|" + ex.id;
57 | else return ex.name;
58 | }
59 | }
60 | return ex.name + "|" + ex.id + "|" + ex.updateUrl;
61 | })
62 | .join("\r\n");
63 | document.getElementById("import_all_button").onclick = () => {
64 | let extList = [];
65 | for (const m of document
66 | .getElementById("import_export_list")
67 | .value.matchAll(/^(.*)\|([a-z]{32})(?:\||$)(.*)$/gim)) {
68 | if (installed_extensions.includes(m[2])) continue;
69 | if (m[3])
70 | extList.push({
71 | name: m[1],
72 | id: m[2],
73 | updateUrl: m[3],
74 | version: "0",
75 | });
76 | else
77 | extList.push({
78 | name: m[1],
79 | id: m[2],
80 | updateUrl: googleUpdateUrl,
81 | version: "0",
82 | });
83 | }
84 | checkForUpdates(
85 | function (
86 | updateCheck,
87 | installed_versions,
88 | appid,
89 | updatever,
90 | is_webstore
91 | ) {
92 | let crx_url = updateCheck["@codebase"];
93 | promptInstall(crx_url, is_webstore);
94 | },
95 | null,
96 | null,
97 | extList
98 | );
99 | };
100 | chrome.storage.sync.get(default_options, function (stored_values) {
101 | stored_values["ignored_extensions"] = [];
102 | chrome.storage.managed.get(stored_values, function (items) {
103 | items.ignored_extensions.forEach((ignored_appid) => {
104 | if (ignored_appid in items) items[ignored_appid] = true;
105 | });
106 | delete items.ignored_extensions;
107 | for (const [setting, value] of Object.entries(items)) {
108 | let node = document.getElementById(setting);
109 | if (node) {
110 | if (node.type == "checkbox") {
111 | if (!node.checked) node.checked = value;
112 | node.addEventListener("change", (e) => {
113 | const checked = e.target.checked;
114 | chrome.storage.sync.set(
115 | {
116 | [e.target.id]: checked,
117 | },
118 | function () {
119 | if (chrome.runtime.lastError) {
120 | node.checked = !checked;
121 | }
122 | }
123 | );
124 | });
125 | } else {
126 | node.value = value;
127 | node.addEventListener("input", (e) => {
128 | const val = parseInt(e.target.value) || 60;
129 | chrome.storage.sync.set(
130 | {
131 | [e.target.id]: Math.max(1, val),
132 | },
133 | function () {
134 | if (chrome.runtime.lastError) {
135 | node.value = "60";
136 | }
137 | }
138 | );
139 | });
140 | }
141 | }
142 | }
143 | document.querySelectorAll("label.sub").forEach((node) => {
144 | const target_node = node;
145 | let checkbox_input =
146 | target_node.previousElementSibling.getElementsByTagName(
147 | "input"
148 | )[0];
149 | checkbox_input.addEventListener("change", (e) => {
150 | if (e.target.checked) {
151 | target_node.classList.remove("disabled");
152 | for (let input of target_node.getElementsByTagName(
153 | "input"
154 | ))
155 | input.disabled = false;
156 | } else {
157 | target_node.classList.add("disabled");
158 | for (let input of target_node.getElementsByTagName(
159 | "input"
160 | ))
161 | input.disabled = true;
162 | }
163 | });
164 | if (!checkbox_input.checked) {
165 | target_node.classList.add("disabled");
166 | for (let input of target_node.getElementsByTagName(
167 | "input"
168 | ))
169 | input.disabled = true;
170 | }
171 | });
172 | });
173 | });
174 | });
175 | }
176 |
177 | document.addEventListener("DOMContentLoaded", load_options);
178 |
--------------------------------------------------------------------------------
/src/scripts/options.js:
--------------------------------------------------------------------------------
1 | function load_options() {
2 | var maindiv = document.getElementById("updatetoggle");
3 | var default_options = { ...DEFAULT_MANAGEMENT_OPTIONS };
4 | chrome.management.getAll(function (e) {
5 | e = e.filter((ex) => ex.updateUrl);
6 | installed_extensions = e.map((ex) => ex.id);
7 | e.forEach(function (ex) {
8 | label = document.createElement("label");
9 | label.setAttribute(
10 | "title",
11 | chrome.i18n.getMessage("options_neverCheckTooltip")
12 | );
13 | span = document.createElement("span");
14 | div = document.createElement("div");
15 | img = document.createElement("img");
16 | input = document.createElement("input");
17 | input.setAttribute("type", "checkbox");
18 | input.setAttribute("id", ex.id);
19 | if (
20 | Array.from(store_extensions.keys()).some(
21 | (x) =>
22 | x.test(ex.updateUrl) && store_extensions.get(x).ignore
23 | )
24 | ) {
25 | input.checked = true;
26 | input.disabled = true;
27 | }
28 | img.setAttribute("alt", ex.name);
29 | if (ex.icons)
30 | img.setAttribute(
31 | "src",
32 | "chrome://extension-icon/" +
33 | ex.id +
34 | "/" +
35 | ex.icons[0].size +
36 | "/0"
37 | );
38 | else
39 | img.setAttribute(
40 | "src",
41 | "chrome://extension-icon/" + ex.id + "/16/0"
42 | );
43 | span.innerHTML = ex.name;
44 | label.appendChild(input);
45 | label.appendChild(img);
46 | label.appendChild(span);
47 | div.appendChild(label);
48 | maindiv.appendChild(div);
49 | default_options[ex.id] = false;
50 | });
51 | document.getElementById("import_export_list").value = e
52 | .map((ex) => {
53 | for (const [re, updaterOptions] of store_extensions) {
54 | if (re.test(ex.updateUrl)) {
55 | if (!updaterOptions.ignore)
56 | return ex.name + "|" + ex.id;
57 | else return ex.name;
58 | }
59 | }
60 | return ex.name + "|" + ex.id + "|" + ex.updateUrl;
61 | })
62 | .join("\r\n");
63 | document.getElementById("import_all_button").onclick = () => {
64 | let extList = [];
65 | for (const m of document
66 | .getElementById("import_export_list")
67 | .value.matchAll(/^(.*)\|([a-z]{32})(?:\||$)(.*)$/gim)) {
68 | if (installed_extensions.includes(m[2])) continue;
69 | if (m[3])
70 | extList.push({
71 | name: m[1],
72 | id: m[2],
73 | updateUrl: m[3],
74 | version: "0",
75 | });
76 | else
77 | extList.push({
78 | name: m[1],
79 | id: m[2],
80 | updateUrl: googleUpdateUrl,
81 | version: "0",
82 | });
83 | }
84 | checkForUpdates(
85 | function (
86 | updateCheck,
87 | installed_versions,
88 | appid,
89 | updatever,
90 | is_webstore
91 | ) {
92 | let crx_url = updateCheck["@codebase"];
93 | promptInstall(crx_url, is_webstore);
94 | },
95 | null,
96 | null,
97 | extList
98 | );
99 | };
100 | chrome.storage.sync.get(default_options, function (stored_values) {
101 | stored_values["ignored_extensions"] = [];
102 | chrome.storage.managed.get(stored_values, function (items) {
103 | items.ignored_extensions.forEach((ignored_appid) => {
104 | if (ignored_appid in items) items[ignored_appid] = true;
105 | });
106 | delete items.ignored_extensions;
107 | for (const [setting, value] of Object.entries(items)) {
108 | let node = document.getElementById(setting);
109 | if (node) {
110 | if (node.type == "checkbox") {
111 | if (!node.checked) node.checked = value;
112 | node.addEventListener("change", (e) => {
113 | const checked = e.target.checked;
114 | chrome.storage.sync.set(
115 | {
116 | [e.target.id]: checked,
117 | },
118 | function () {
119 | if (chrome.runtime.lastError) {
120 | node.checked = !checked;
121 | }
122 | }
123 | );
124 | });
125 | } else {
126 | node.value = value;
127 | node.addEventListener("input", (e) => {
128 | const val = parseInt(e.target.value) || 60;
129 | chrome.storage.sync.set(
130 | {
131 | [e.target.id]: Math.max(1, val),
132 | },
133 | function () {
134 | if (chrome.runtime.lastError) {
135 | node.value = "60";
136 | }
137 | }
138 | );
139 | });
140 | }
141 | }
142 | }
143 | document.querySelectorAll("label.sub").forEach((node) => {
144 | const target_node = node;
145 | let checkbox_input =
146 | target_node.previousElementSibling.getElementsByTagName(
147 | "input"
148 | )[0];
149 | checkbox_input.addEventListener("change", (e) => {
150 | if (e.target.checked) {
151 | target_node.classList.remove("disabled");
152 | for (let input of target_node.getElementsByTagName(
153 | "input"
154 | ))
155 | input.disabled = false;
156 | } else {
157 | target_node.classList.add("disabled");
158 | for (let input of target_node.getElementsByTagName(
159 | "input"
160 | ))
161 | input.disabled = true;
162 | }
163 | });
164 | if (!checkbox_input.checked) {
165 | target_node.classList.add("disabled");
166 | for (let input of target_node.getElementsByTagName(
167 | "input"
168 | ))
169 | input.disabled = true;
170 | }
171 | });
172 | });
173 | });
174 | });
175 | }
176 |
177 | document.addEventListener("DOMContentLoaded", load_options);
178 |
--------------------------------------------------------------------------------
/en_nolocale/scripts/popup.js:
--------------------------------------------------------------------------------
1 | const container = document.getElementById("app");
2 | const appcontainer = document.createElement("ul");
3 | const removedcontainer = document.createElement("ul");
4 | const removed_status = document.createElement("div");
5 | const removed_text = document.createElement("p");
6 | const update_status = document.createElement("div");
7 | const update_text = document.createElement("p");
8 | update_text.innerHTML = "Checking for updates...";
9 | update_status.appendChild(update_text);
10 | update_status.setAttribute("class", "message");
11 | update_status.setAttribute("id", "updateStatus");
12 | removed_text.innerHTML = "The following extensions have been removed from the Chrome Web Store";
13 | removed_status.setAttribute(
14 | "title",
15 | "These may have been removed due to a violation of the Terms of Service."
16 | );
17 | removed_status.appendChild(removed_text);
18 | removed_status.setAttribute("id", "removedStatus");
19 | removed_status.setAttribute("class", "message");
20 | removed_status.classList.add("hidden");
21 | container.appendChild(update_status);
22 | container.appendChild(appcontainer);
23 | container.appendChild(removed_status);
24 | container.appendChild(removedcontainer);
25 |
26 | checkForUpdates(
27 | function (updateCheck, installed_versions, appid, updatever, is_webstore) {
28 | let li = document.createElement("li");
29 | li.setAttribute(
30 | "data-enabled",
31 | installed_versions[appid].enabled ? "true" : "false"
32 | );
33 | let img = document.createElement("img");
34 | img.setAttribute("alt", installed_versions[appid].name);
35 | if (installed_versions[appid].icons)
36 | img.setAttribute(
37 | "src",
38 | "chrome://extension-icon/" +
39 | appid +
40 | "/" +
41 | installed_versions[appid].icons[0].size +
42 | "/0"
43 | );
44 | else
45 | img.setAttribute(
46 | "src",
47 | "chrome://extension-icon/" + appid + "/16/0"
48 | );
49 | li.appendChild(img);
50 | span = document.createElement("span");
51 | span.innerHTML = installed_versions[appid].name;
52 | li.appendChild(span);
53 | li.setAttribute(
54 | "title",
55 | installed_versions[appid].version + " ⇒ " + updatever
56 | );
57 | storepage = document.createElement("a");
58 | storepage.setAttribute("target", "_blank");
59 | storepage.innerHTML =
60 | '