Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 13 additions & 10 deletions _locales/en/messages.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
{
"extName": {
"message": "ScratchTools"
},
"extDescription": {
"message": "ScratchTools is fully customizable with tons of features, all for making the Scratch website better and easier to use!"
},
"search": {
"message": "search"
}
}
"extName": {
"message": "ScratchTools"
},
"extDescription": {
"message": "ScratchTools is fully customizable with tons of features, all for making the Scratch website better and easier to use!"
},
"search": {
"message": "search"
},
"feature_load_more_forum_posts_loadmore": {
"message": "Load more"
}
}
97 changes: 2 additions & 95 deletions _locales/es/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,100 +8,7 @@
"search": {
"message": "buscar"
},
"unlisted_projects_title": {
"message": "Proyectos Ocultos"
},
"unlisted_projects_description": {
"message": "Te permite generar enlaces para compartir proyectos no compartidos desde el editor."
},
"scroll_project_titles_title": {
"message": "Desplazar Títulos de Proyectos"
},
"scroll_project_titles_description": {
"message": "Te permite desplazar y ver el título completo de proyectos que no son tuyos."
},
"search_context_menus_title": {
"message": "Buscar Menús Contextuales"
},
"search_context_menus_description": {
"message": "Buscar fácilmente menús contextuales para seleccionar más eficiente una opción. También puedes presionar intro para seleccionar la opción superior."
},
"hover_user_cards_title": {
"message": "Tarjetas Flotantes de Usuarios"
},
"hover_user_cards_description": {
"message": "Pon el cursor encima de cualquier nombre de usuario en el sitio web para mostrar su foto de perfil, nombre de usuario y contador de seguidores."
},
"exact_join_date_title": {
"message": "Fecha de Ingreso Exacta"
},
"exact_join_date_description": {
"message": "Muestra en el perfil del usuario el tiempo exacto en el que se unió."
},
"start_stop_hotkeys_title": {
"message": "Atajos para Iniciar y Detener Proyectos"
},
"start_stop_hotkeys_description": {
"message": "Para iniciar y detener un proyecto puedes usar Control+G o Command+G (para usuarios de Mac)."
},
"upload_img_directly_title": {
"message": "Subir imágenes directamente en los foros"
},
"upload_img_directly_description": {
"message": "Te permite subir imagenes en los foros de Scratch para publicaciones y firmas sin tener que usar ningún servicio de subida de imágenes de terceros."
},
"leave_studio_title": {
"message": "Botón de Salir de Estudio"
},
"leave_studio_description": {
"message": "Añade un botón en la página de curadores de cualquier estudio que estés curando o administrando que te permite salir del estudio fácilmente. Primero se mostrará una confirmación."
},
"user_stats_title": {
"message": "Mostrar Estadísticas de Usuario"
},
"user_stats_description": {
"message": "Reemplaza la sección \"Lo que he estado haciendo\" en un página de perfil con las estadísticas del usuario."
},
"frontpage_curator_title": {
"message": "Nombre de Curador en la Página Principal como Enlace"
},
"frontpage_curator_description": {
"message": "Hace que el nombre del curador en la página principal sea un enlace clicable a su perfil."
},
"minimized_remix_credits_title": {
"message": "Créditos por Reinventar Minimizados"
},
"minimized_remix_credits_description": {
"message": "La caja de créditos por reinventar le quita espacio a las Instrucciones del proyecto, entonces esto hace la caja más pequeña."
},
"follows_you_title": {
"message": "Mostrar si Te Sigue en Perfil"
},
"follows_you_description": {
"message": "Si un usuario te está siguiendo, se mostrará al lado de su nombre de usuario cuando visites su perfil."
},
"custom_studio_title": {
"message": "Sección de Estudio Personalizable"
},
"custom_studio_description": {
"message": "En la página principal del sitio web de Scratch, los proyectos más nuevos del estudio que elijas se mostrarán arriba de los Proyectos Destacados."
},
"highlight_unanswered_title": {
"message": "Destacar Temas de Foros Sin Responder"
},
"highlight_unanswered_description": {
"message": "Destaca con azul los temas de foro que no tienen respuestas."
},
"hide_project_tags_title": {
"message": "Esconder Etiquetas en Proyectos"
},
"hide_project_tags_description": {
"message": "Esconde todas las etiquetas con enlaces en las Instrucciones/Notas y Créditos de los proyectos."
},
"terrible_title": {
"message": "Función Terrible"
},
"terrible_description": {
"message": "no activar"
"feature_load_more_forum_posts_loadmore": {
"message": "Cargar más"
}
}
52 changes: 42 additions & 10 deletions extras/background.js
Original file line number Diff line number Diff line change
Expand Up @@ -95,55 +95,59 @@ chrome.tabs.onUpdated.addListener(function (tabId, info) {
ScratchTools.console.log("STARTING.");
var response = await fetch("/features/features.json");
var data = await response.json();
chrome.scripting.executeScript({
var uiLanguage = chrome.i18n.getUILanguage() || "en";
if (uiLanguage.includes("-")) {
uiLanguage = uiLanguage.split("-")[0];
}
await chrome.scripting.executeScript({
target: { tabId: tabId },
files: [`/api/main.js`],
world: "MAIN",
});
ScratchTools.console.log("Injected main API.");
chrome.scripting.executeScript({
await chrome.scripting.executeScript({
target: { tabId: tabId },
files: [`/api/auth.js`],
world: "MAIN",
});
ScratchTools.console.log("Injected auth API.");
chrome.scripting.executeScript({
await chrome.scripting.executeScript({
target: { tabId: tabId },
files: [`/api/logging.js`],
world: "MAIN",
});
ScratchTools.console.log("Injected logging API.");
chrome.scripting.executeScript({
await chrome.scripting.executeScript({
target: { tabId: tabId },
files: [`/api/vm.js`],
world: "MAIN",
});
ScratchTools.console.log("Injected Scratch API.");
chrome.scripting.executeScript({
await chrome.scripting.executeScript({
target: { tabId: tabId },
files: [`/api/cookies.js`],
world: "MAIN",
});
ScratchTools.console.log("Injected cookies API.");
chrome.scripting.executeScript({
await chrome.scripting.executeScript({
target: { tabId: tabId },
files: [`/api/getScratch.js`],
world: "MAIN",
});
ScratchTools.console.log("Injected getScratch API.");
chrome.scripting.executeScript({
await chrome.scripting.executeScript({
target: { tabId: tabId },
files: [`/api/spaces.js`],
world: "MAIN",
});
ScratchTools.console.log("Injected protect spaces API.");
chrome.scripting.executeScript({
await chrome.scripting.executeScript({
target: { tabId: tabId },
files: [`/extras/protect-mention.js`],
world: "MAIN",
});
ScratchTools.console.log("Injected protect mention script.");
chrome.scripting.executeScript({
await chrome.scripting.executeScript({
args: [data],
target: { tabId: tabId },
func: getFeaturesForAPI,
Expand All @@ -154,6 +158,32 @@ chrome.tabs.onUpdated.addListener(function (tabId, info) {
ScratchTools.Features.data = dataFeatures;
}
addData();
var langData = {};
try {
var langDataFetched = await (
await fetch(`/_locales/${uiLanguage}/messages.json`)
).json();
if (langDataFetched) {
langData = langDataFetched;
} else {
langData = {};
}
} catch (err) {
langData = {};
}
chrome.scripting.executeScript({
args: [langData],
target: { tabId: tabId },
func: function (langData) {
ScratchTools.languageData = langData;
ScratchTools.i18n = {
getString: function (string, feature) {
return ScratchTools.languageData["feature_"+feature.replaceAll("-", "_")+"_"+string]?.message || null;
},
};
},
world: "MAIN",
});
async function addData() {
var allStorage = {};
await data.forEach(async function (el) {
Expand Down Expand Up @@ -229,7 +259,9 @@ chrome.alarms.onAlarm.addListener(async function () {
delayInMinutes: 0.5,
periodInMinutes: 0.5,
});
var response = await fetch("https://raw.githubusercontent.com/STForScratch/data/main/disabled.json");
var response = await fetch(
"https://raw.githubusercontent.com/STForScratch/data/main/disabled.json"
);
var data = await response.json();
await chrome.storage.sync.set({ autoDisabled: data });
var obj = await chrome.storage.sync.get("features");
Expand Down
2 changes: 1 addition & 1 deletion features/load-more-forum-posts.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ if (
let page = Number(params.page || "1");
if (page !== lastPost) {
var btn = document.createElement("button");
btn.textContent = "Load More";
btn.textContent = ScratchTools.i18n.getString("loadmore", "load-more-forum-posts") || "Load more";
btn.onclick = getNextPage;
btn.className = "button scratchtoolsLoadMorePosts";
btn.style.paddingLeft = ".5rem";
Expand Down