Skip to content

Commit 6bd3af0

Browse files
committed
Start other language supports
1 parent 0bbe5e4 commit 6bd3af0

11 files changed

Lines changed: 209 additions & 13 deletions

File tree

Public/_locales/en/messages.json

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"save_script": {"message": "Save Script"},
3+
"unsaved_changes": {"message": "Unsaved Changes"},
4+
"script_information": {"message": "Script Information"},
5+
"gm_api_access": {"message": "GM API Access"},
6+
"required_scripts": {"message": "Required Scripts"},
7+
"script_resources": {"message": "Script Resources"},
8+
"execution_settings": {"message": "Execution Settings"},
9+
"script_name": {"message": "Script Name"},
10+
"author": {"message": "Author"},
11+
"version": {"message": "Version"},
12+
"description": {"message": "Description"},
13+
"license": {"message": "License"},
14+
"target_urls": {"message": "Target URLs"},
15+
"pattern_builder": {"message": "Pattern Builder"},
16+
"run_timing": {"message": "Run Timing"},
17+
"generate": {"message": "Generate"},
18+
"insert": {"message": "Insert"},
19+
"help_shortcuts": {"message": "Help & Shortcuts"},
20+
"editor_settings": {"message": "Editor Settings"},
21+
"dashboard": {"message": "Dashboard"},
22+
"create": {"message": "Create"},
23+
"browse_scripts": {"message": "Browse Scripts"},
24+
"new_script": {"message": "New Script"},
25+
"scripts_tab": {"message": "Scripts"},
26+
"settings_tab": {"message": "Settings"},
27+
"about_tab": {"message": "About"}
28+
}

Public/_locales/es/messages.json

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"save_script": {"message": "Guardar Script"},
3+
"unsaved_changes": {"message": "Cambios sin guardar"},
4+
"script_information": {"message": "Información del Script"},
5+
"gm_api_access": {"message": "Acceso GM API"},
6+
"required_scripts": {"message": "Scripts Requeridos"},
7+
"script_resources": {"message": "Recursos del Script"},
8+
"execution_settings": {"message": "Configuración de Ejecución"},
9+
"script_name": {"message": "Nombre del Script"},
10+
"author": {"message": "Autor"},
11+
"version": {"message": "Versión"},
12+
"description": {"message": "Descripción"},
13+
"license": {"message": "Licencia"},
14+
"target_urls": {"message": "URLs Objetivo"},
15+
"pattern_builder": {"message": "Generador de Patrones"},
16+
"run_timing": {"message": "Momento de Ejecución"},
17+
"generate": {"message": "Generar"},
18+
"insert": {"message": "Insertar"},
19+
"help_shortcuts": {"message": "Ayuda y Atajos"},
20+
"editor_settings": {"message": "Configuración del Editor"},
21+
"dashboard": {"message": "Panel"},
22+
"create": {"message": "Crear"},
23+
"browse_scripts": {"message": "Explorar Scripts"},
24+
"new_script": {"message": "Nuevo Script"},
25+
"scripts_tab": {"message": "Scripts"},
26+
"settings_tab": {"message": "Configuraciones"},
27+
"about_tab": {"message": "Acerca de"}
28+
}

Public/_locales/hi/messages.json

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"save_script": {"message": "स्क्रिप्ट सहेजें"},
3+
"unsaved_changes": {"message": "असहेजे गए परिवर्तन"},
4+
"script_information": {"message": "स्क्रिप्ट जानकारी"},
5+
"gm_api_access": {"message": "GM API एक्सेस"},
6+
"required_scripts": {"message": "आवश्यक स्क्रिप्ट्स"},
7+
"script_resources": {"message": "स्क्रिप्ट संसाधन"},
8+
"execution_settings": {"message": "निष्पादन सेटिंग्स"},
9+
"script_name": {"message": "स्क्रिप्ट नाम"},
10+
"author": {"message": "लेखक"},
11+
"version": {"message": "संस्करण"},
12+
"description": {"message": "विवरण"},
13+
"license": {"message": "लाइसेंस"},
14+
"target_urls": {"message": "लक्ष्य URL"},
15+
"pattern_builder": {"message": "पैटर्न बिल्डर"},
16+
"run_timing": {"message": "रन समय"},
17+
"generate": {"message": "जनरेट करें"},
18+
"insert": {"message": "डालें"},
19+
"help_shortcuts": {"message": "सहायता और शॉर्टकट"},
20+
"editor_settings": {"message": "संपादक सेटिंग्स"},
21+
"dashboard": {"message": "डैशबोर्ड"},
22+
"create": {"message": "बनाएं"},
23+
"browse_scripts": {"message": "स्क्रिप्ट ब्राउज़ करें"},
24+
"new_script": {"message": "नई स्क्रिप्ट"},
25+
"scripts_tab": {"message": "स्क्रिप्ट्स"},
26+
"settings_tab": {"message": "सेटिंग्स"},
27+
"about_tab": {"message": "बारे में"}
28+
}

Public/_locales/zh/messages.json

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"save_script": {"message": "保存脚本"},
3+
"unsaved_changes": {"message": "未保存的更改"},
4+
"script_information": {"message": "脚本信息"},
5+
"gm_api_access": {"message": "GM API 访问"},
6+
"required_scripts": {"message": "所需脚本"},
7+
"script_resources": {"message": "脚本资源"},
8+
"execution_settings": {"message": "执行设置"},
9+
"script_name": {"message": "脚本名称"},
10+
"author": {"message": "作者"},
11+
"version": {"message": "版本"},
12+
"description": {"message": "描述"},
13+
"license": {"message": "许可证"},
14+
"target_urls": {"message": "目标 URL"},
15+
"pattern_builder": {"message": "模式生成器"},
16+
"run_timing": {"message": "运行时机"},
17+
"generate": {"message": "生成"},
18+
"insert": {"message": "插入"},
19+
"help_shortcuts": {"message": "帮助与快捷键"},
20+
"editor_settings": {"message": "编辑器设置"},
21+
"dashboard": {"message": "仪表板"},
22+
"create": {"message": "创建"},
23+
"browse_scripts": {"message": "浏览脚本"},
24+
"new_script": {"message": "新建脚本"},
25+
"scripts_tab": {"message": "脚本"},
26+
"settings_tab": {"message": "设置"},
27+
"about_tab": {"message": "关于"}
28+
}

Public/dashboard.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
/>
1010
<title>CodeTweak Dashboard</title>
1111
<link rel="stylesheet" href="styles/dashboard.css" />
12+
<script defer src="utils/i18n.js"></script>
1213
</head>
1314
<body>
1415
<div class="container">

Public/editor.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
<link rel="stylesheet" href="codemirror/theme/default.css">
1717
<link rel="stylesheet" href="codemirror/addon/scroll/simplescrollbars.css">
1818
<link rel="stylesheet" href="codemirror/addon/lint/lint.css">
19+
<script defer src="utils/i18n.js"></script>
1920
</head>
2021
<body>
2122
<div class="app-container">

Public/manifest.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"name": "CodeTweak",
44
"version": "1.0.0",
55
"description": "Inject custom JavaScript code into specific websites based on user-defined settings",
6+
"default_locale": "en",
67
"permissions": [
78
"storage",
89
"tabs",

Public/offscreen.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
<html>
33
<head>
44
<meta charset="utf-8">
5+
<script src="./utils/i18n.js"></script>
56
</head>
67
<body>
78
<script src="./utils/offscreen.js"></script>

Public/popup.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
66
<title>CodeTweak</title>
77
<link rel="stylesheet" href="styles/popup.css" />
8+
<script defer src="utils/i18n.js"></script>
89
</head>
910
<body>
1011
<header>

Public/utils/i18n.js

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
// utils/i18n.js
2+
/* global chrome */
3+
// Simple runtime internationalisation handler for CodeTweak UI pages.
4+
// Looks up visible English strings and attributes and swaps them with
5+
// the user-locale translation using chrome.i18n.
6+
// Only strings present in the map will be translated.
7+
8+
(function () {
9+
if (!('i18n' in chrome)) {
10+
return; // Not running inside extension context
11+
}
12+
13+
// Map of English UI strings -> i18n message keys.
14+
const textToKey = {
15+
'Save Script': 'save_script',
16+
'Unsaved Changes': 'unsaved_changes',
17+
'Script Information': 'script_information',
18+
'GM API Access': 'gm_api_access',
19+
'Required Scripts': 'required_scripts',
20+
'Script Resources': 'script_resources',
21+
'Execution Settings': 'execution_settings',
22+
'Script Name': 'script_name',
23+
'Author': 'author',
24+
'Version': 'version',
25+
'Description': 'description',
26+
'License': 'license',
27+
'Target URLs': 'target_urls',
28+
'Pattern Builder': 'pattern_builder',
29+
'Run Timing': 'run_timing',
30+
'Generate': 'generate',
31+
'Insert': 'insert',
32+
'Help & Shortcuts': 'help_shortcuts',
33+
'Editor Settings': 'editor_settings',
34+
'Dashboard': 'dashboard',
35+
'Create': 'create',
36+
'Browse Scripts': 'browse_scripts',
37+
'New Script': 'new_script',
38+
'Scripts': 'scripts_tab',
39+
'Settings': 'settings_tab',
40+
'About': 'about_tab'
41+
};
42+
43+
function translateNodeText(node) {
44+
const orig = node.textContent.trim();
45+
const key = textToKey[orig];
46+
if (key) {
47+
const msg = chrome.i18n.getMessage(key);
48+
if (msg) node.textContent = msg;
49+
}
50+
}
51+
52+
function translateAttributes(el, attr) {
53+
const val = el.getAttribute(attr);
54+
if (!val) return;
55+
const key = textToKey[val.trim()];
56+
if (key) {
57+
const msg = chrome.i18n.getMessage(key);
58+
if (msg) el.setAttribute(attr, msg);
59+
}
60+
}
61+
62+
function runTranslation() {
63+
// Translate text content of all text nodes
64+
const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null);
65+
let n;
66+
while ((n = walker.nextNode())) {
67+
translateNodeText(n);
68+
}
69+
70+
// Translate common attributes
71+
document.querySelectorAll('[title], [placeholder], [aria-label]').forEach((el) => {
72+
['title', 'placeholder', 'aria-label'].forEach((attr) => translateAttributes(el, attr));
73+
});
74+
}
75+
76+
document.addEventListener('DOMContentLoaded', runTranslation);
77+
})();

0 commit comments

Comments
 (0)