Restructure translation (no functional change)

This commit is contained in:
KOWX712
2024-12-24 15:53:14 +08:00
parent 37467411cf
commit 5347ac29bf
11 changed files with 693 additions and 508 deletions

View File

@@ -7,19 +7,21 @@
<title data-i18n="title">Document</title> <title data-i18n="title">Document</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="/styles.css" type="text/css"> <link rel="stylesheet" href="styles.css" type="text/css">
<link rel="stylesheet" type="text/css" href="/mmrl/insets.css" /> <link rel="stylesheet" type="text/css" href="/mmrl/insets.css" />
<script type="module" crossorigin src="/index.js"></script> <script type="module" crossorigin src="index.js"></script>
</head> </head>
<body> <body>
<!-- Header --> <!-- Header -->
<div class="header-block"></div> <div class="header-block"></div>
<div class="header"> <div class="header">
<div id="title" data-i18n="title"></div> <div id="title" data-i18n="header.title"></div>
<button id="help-button" class="help-button"><svg xmlns="http://www.w3.org/2000/svg" height="21px" viewBox="0 -1060 960 990" width="21px" fill="#6E6E6E"><path d="M478-240q21 0 35.5-14.5T528-290q0-21-14.5-35.5T478-340q-21 0-35.5 14.5T428-290q0 21 14.5 35.5T478-240Zm-36-154h74q0-33 7.5-52t42.5-52q26-26 41-49.5t15-56.5q0-56-41-86t-97-30q-57 0-92.5 30T342-618l66 26q5-18 22.5-39t53.5-21q32 0 48 17.5t16 38.5q0 20-12 37.5T506-526q-44 39-54 59t-10 73Zm38 314q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z"/></svg></button> <button id="help-button" class="help-button">
<svg xmlns="http://www.w3.org/2000/svg" height="21px" viewBox="0 -1060 960 990" width="21px" fill="#6E6E6E"><path d="M478-240q21 0 35.5-14.5T528-290q0-21-14.5-35.5T478-340q-21 0-35.5 14.5T428-290q0 21 14.5 35.5T478-240Zm-36-154h74q0-33 7.5-52t42.5-52q26-26 41-49.5t15-56.5q0-56-41-86t-97-30q-57 0-92.5 30T342-618l66 26q5-18 22.5-39t53.5-21q32 0 48 17.5t16 38.5q0 20-12 37.5T506-526q-44 39-54 59t-10 73Zm38 314q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z" /></svg>
</button>
<div class="no-connection"> <div class="no-connection">
<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -920 960 960" width="20px" fill="#6E6E6E"><path d="M790-56 414-434q-47 11-87.5 33T254-346l-84-86q32-32 69-56t79-42l-90-90q-41 21-76.5 46.5T84-516L0-602q32-32 66.5-57.5T140-708l-84-84 56-56 736 736-58 56Zm-310-64q-42 0-71-29.5T380-220q0-42 29-71t71-29q42 0 71 29t29 71q0 41-29 70.5T480-120Zm236-238-29-29-29-29-144-144q81 8 151.5 41T790-432l-74 74Zm160-158q-77-77-178.5-120.5T480-680q-21 0-40.5 1.5T400-674L298-776q44-12 89.5-18t92.5-6q142 0 265 53t215 145l-84 86Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -920 960 960" width="20px" fill="#6E6E6E"><path d="M790-56 414-434q-47 11-87.5 33T254-346l-84-86q32-32 69-56t79-42l-90-90q-41 21-76.5 46.5T84-516L0-602q32-32 66.5-57.5T140-708l-84-84 56-56 736 736-58 56Zm-310-64q-42 0-71-29.5T380-220q0-42 29-71t71-29q42 0 71 29t29 71q0 41-29 70.5T480-120Zm236-238-29-29-29-29-144-144q81 8 151.5 41T790-432l-74 74Zm160-158q-77-77-178.5-120.5T480-680q-21 0-40.5 1.5T400-674L298-776q44-12 89.5-18t92.5-6q142 0 265 53t215 145l-84 86Z" /></svg>
</div> </div>
<div class="language-dropdown"> <div class="language-dropdown">
<button class="language-button"> <button class="language-button">
@@ -39,23 +41,23 @@
</div> </div>
<!-- Loading Element --> <!-- Loading Element -->
<div class="loading" data-i18n="loading"></div> <div class="loading" data-i18n="loading.loading"></div>
<!-- Prompt Element --> <!-- Prompt Element -->
<div id="prompt" class="prompt"></div> <div id="prompt" class="prompt"></div>
<!-- Floating Button Element --> <!-- Floating Button Element -->
<div class="floating-card"> <div class="floating-card">
<button class="floating-btn" id="save" data-i18n="save_and_update_button"></button> <button class="floating-btn" id="save" data-i18n="functional_button.save_and_update_button"></button>
</div> </div>
<!-- Menu Options --> <!-- Menu Options -->
<div class="search-menu-container"> <div class="search-menu-container">
<div class="search-card"> <div class="search-card">
<span class="search-icon"> <span class="search-icon">
<svg xmlns="http://www.w3.org/2000/svg" height="19px" viewBox="0 -960 960 960" width="24px" fill="#6E6E6E"><path d="M784-120 532-372q-30 24-69 38t-83 14q-109 0-184.5-75.5T120-580q0-109 75.5-184.5T380-840q109 0 184.5 75.5T640-580q0 44-14 83t-38 69l252 252-56 56ZM380-400q75 0 127.5-52.5T560-580q0-75-52.5-127.5T380-760q-75 0-127.5 52.5T200-580q0 75 52.5 127.5T380-400Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="19px" viewBox="0 -960 960 960" width="24px" fill="#6E6E6E"><path d="M784-120 532-372q-30 24-69 38t-83 14q-109 0-184.5-75.5T120-580q0-109 75.5-184.5T380-840q109 0 184.5 75.5T640-580q0 44-14 83t-38 69l252 252-56 56ZM380-400q75 0 127.5-52.5T560-580q0-75-52.5-127.5T380-760q-75 0-127.5 52.5T200-580q0 75 52.5 127.5T380-400Z" /></svg>
</span> </span>
<input type="text" class="search-input" id="search" placeholder="Search" data-i18n="search_placeholder"> <input type="text" class="search-input" id="search" placeholder="" data-i18n="search_bar.search_placeholder">
<button class="clear-btn" id="clear-btn">&#x2715;</button> <button class="clear-btn" id="clear-btn">&#x2715;</button>
</div> </div>
<div class="menu"> <div class="menu">
@@ -65,15 +67,15 @@
</label> </label>
<div id="menu-options" class="menu-options"> <div id="menu-options" class="menu-options">
<ul> <ul>
<li id="refresh" data-i18n="refresh"></li> <li id="refresh" data-i18n="menu.refresh"></li>
<li id="select-all" data-i18n="select_all"></li> <li id="select-all" data-i18n="menu.select_all"></li>
<li id="deselect-all" data-i18n="deselect_all"></li> <li id="deselect-all" data-i18n="menu.deselect_all"></li>
<li id="select-denylist" data-i18n="select_denylist"></li> <li id="select-denylist" data-i18n="menu.select_denylist"></li>
<li id="deselect-unnecessary" data-i18n="deselect_unnecessary"></li> <li id="deselect-unnecessary" data-i18n="menu.deselect_unnecessary"></li>
<li id="aospkb" data-i18n="set_aosp_keybox"></li> <li id="aospkb" data-i18n="menu.set_aosp_keybox"></li>
<li id="extrakb" data-i18n="set_valid_keybox"></li> <li id="extrakb" data-i18n="menu.set_valid_keybox"></li>
<li id="boot-hash" data-i18n="set_verified_boot_hash"></li> <li id="boot-hash" data-i18n="menu.set_verified_boot_hash"></li>
<li id="about" data-i18n="about"></li> <li id="about" data-i18n="menu.about"></li>
</ul> </ul>
</div> </div>
</div> </div>
@@ -83,8 +85,8 @@
<!-- Applist Display --> <!-- Applist Display -->
<div id="apps-list"></div> <div id="apps-list"></div>
<div class="update-card" id="update-card"> <div class="update-card" id="update-card">
<p id="update-available" data-i18n="update_available"></p> <p id="update-available" data-i18n="update_banner.update_available"></p>
<p id="redirect-to-release" data-i18n="redirect_to_release"></p> <p id="redirect-to-release" data-i18n="update_banner.redirect_to_release"></p>
</div> </div>
<template id="app-template"> <template id="app-template">
<div class="card-box"> <div class="card-box">
@@ -102,8 +104,58 @@
<div class="help-menu"> <div class="help-menu">
<button id="close-help" class="close-help">&#x2715;</button> <button id="close-help" class="close-help">&#x2715;</button>
<div class="help-content"> <div class="help-content">
<p data-i18n="help_instructions"></p> <p data-i18n="help.help_instructions"></p>
<ul id="help-list"></ul> <ul id="helpList">
<li id="save_and_update_button">
<strong data-i18n="help.save_and_update"></strong>
<ul>
<li data-i18n="help.save_and_update_description"></li>
</ul>
</li>
<br>
<li id="refresh">
<strong data-i18n="help.refresh"></strong>
<ul>
<li data-i18n="help.refresh_description"></li>
</ul>
</li>
<br>
<li id="select_deselect">
<strong data-i18n="help.select_deselect"></strong>
<ul>
<li data-i18n="help.select_description"></li>
</ul>
</li>
<br>
<li id="select_denylist">
<strong data-i18n="help.select_denylist"></strong>
<ul>
<li data-i18n="help.select_denylist_description"></li>
</ul>
</li>
<br>
<li id="deselect_unnecessary">
<strong data-i18n="help.deselect_unnecessary"></strong>
<ul>
<li data-i18n="help.deselect_unnecessary_description"></li>
</ul>
</li>
<br>
<li id="set_keybox">
<strong data-i18n="help.set_keybox"></strong>
<ul>
<li data-i18n="help.set_keybox_description"></li>
</ul>
</li>
<br>
<li id="set_verified_boot_hash">
<strong data-i18n="help.set_verified_boot_hash"></strong>
<ul>
<li data-i18n="help.set_verified_boot_hash_description"></li>
</ul>
</li>
<br>
</ul>
</div> </div>
</div> </div>
</div> </div>
@@ -111,10 +163,9 @@
<!-- BootHash Input Overlay --> <!-- BootHash Input Overlay -->
<div id="boot-hash-overlay" class="boot-hash-overlay"></div> <div id="boot-hash-overlay" class="boot-hash-overlay"></div>
<div id="boot-hash-card" class="boot-hash-card"> <div id="boot-hash-card" class="boot-hash-card">
<textarea id="boot-hash-input" class="input-box" placeholder="Paste your verified Boot Hash here" <textarea id="boot-hash-input" class="input-box" placeholder="Paste your verified Boot Hash here" data-i18n="reset_vbmeta.boot_hash_input_placeholder"></textarea>
data-i18n="boot_hash_input_placeholder"></textarea>
<div class="button-container"> <div class="button-container">
<button id="boot-hash-save-button" class="boot-hash-save-button" data-i18n="boot_hash_save_button"></button> <button id="boot-hash-save-button" class="boot-hash-save-button" data-i18n="reset_vbmeta.boot_hash_save_button"></button>
</div> </div>
</div> </div>
@@ -123,20 +174,20 @@
<div id="about-menu" class="about-menu"> <div id="about-menu" class="about-menu">
<button id="close-about" class="close-about">&#x2715;</button> <button id="close-about" class="close-about">&#x2715;</button>
<div class="about-content"> <div class="about-content">
<p data-i18n="module_name_line1"></p> <p id="module_name_line1" data-i18n="about.module_name_line1"></p>
<p data-i18n="module_name_line2"></p> <p id="module_name_line2" data-i18n="about.module_name_line2"></p>
<p><span data-i18n="by"></span>KOWX712</p> <p><span id="authored" data-i18n="about.by"></span> KOWX712</p>
<br> <br>
<p data-i18n="disclaimer"></p> <p id="disclaimer" data-i18n="about.disclaimer"></p>
<br> <br>
<p> <p>
<div class="link"> <div class="link">
<i class="fa fa-telegram" id="telegram" aria-hidden="true"> <span id="link-text" data-i18n="telegram_channel"></span></i> <i class="fa fa-telegram" id="telegram" aria-hidden="true"> <span id="link-text" data-i18n="about.telegram_channel"></span></i>
<i class="fa fa-github" id="github" aria-hidden="true"> <span id="link-text" data-i18n="github"></span></i> <i class="fa fa-github" id="github" aria-hidden="true"> <span id="link-text" data-i18n="about.github"></span></i>
</div> </div>
</p> </p>
<br> <br>
<p data-i18n="acknowledgment"></p> <p id="acknowledgment" data-i18n="about.acknowledgment"></p>
<p>j-hc/zygisk-detach: WebUI template</p> <p>j-hc/zygisk-detach: WebUI template</p>
</div> </div>
</div> </div>
@@ -145,8 +196,8 @@
<!-- Footer --> <!-- Footer -->
<div class="footer"> <div class="footer">
<div class="uninstall-container hidden-uninstall"> <div class="uninstall-container hidden-uninstall">
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#FFFFFF"><path d="M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520ZM360-280h80v-360h-80v360Zm160 0h80v-360h-80v360ZM280-720v520-520Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#FFFFFF"><path d="M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520ZM360-280h80v-360h-80v360Zm160 0h80v-360h-80v360ZM280-720v520-520Z" /></svg>
<span data-i18n="uninstall_webui"></span> <span data-i18n="functional_button.uninstall_webui"></span>
</div> </div>
</div> </div>
</body> </body>

View File

@@ -103,16 +103,16 @@ async function loadTranslations(lang) {
// Function to apply translations to all elements with data-i18n attributes // Function to apply translations to all elements with data-i18n attributes
function applyTranslations() { function applyTranslations() {
document.querySelectorAll("[data-i18n]").forEach((el) => { document.querySelectorAll("[data-i18n]").forEach((el) => {
const key = el.getAttribute("data-i18n"); const keyString = el.getAttribute("data-i18n");
if (translations[key]) { const translation = keyString.split('.').reduce((acc, key) => acc && acc[key], translations);
if (translation) {
if (el.hasAttribute("placeholder")) { if (el.hasAttribute("placeholder")) {
el.setAttribute("placeholder", translations[key]); el.setAttribute("placeholder", translation);
} else { } else {
el.textContent = translations[key]; el.textContent = translation;
} }
} }
}); });
updateHelpMenu();
} }
// Language selection event listener // Language selection event listener
@@ -191,33 +191,6 @@ clearBtn.addEventListener("click", () => {
}); });
}); });
// Function to dynamically update the help menu
function updateHelpMenu() {
helpList.innerHTML = "";
const helpSections = [
{ title: "save_and_update_button", description: "save_and_update_description" },
{ title: "refresh", description: "refresh_description" },
{ title: "select_deselect", description: "select_description" },
{ title: "select_denylist", description: "select_denylist_description" },
{ title: "deselect_unnecessary", description: "deselect_unnecessary_description" },
{ title: "set_keybox", description: "set_aosp_keybox_description" },
{ title: "set_verified_boot_hash", description: "set_verified_boot_hash_description" }
];
helpSections.forEach((section) => {
const listItem = document.createElement("li");
listItem.innerHTML = `<strong data-i18n="${section.title}">${translations[section.title]}</strong>`;
const description = document.createElement("ul");
const descriptionItem = document.createElement("li");
descriptionItem.textContent = translations[section.description] || `[Missing: ${section.description}]`;
description.appendChild(descriptionItem);
listItem.appendChild(description);
helpList.appendChild(listItem);
const emptyLine = document.createElement("li");
emptyLine.innerHTML = "<br>";
helpList.appendChild(emptyLine);
});
}
// Function to setup the help menu // Function to setup the help menu
function setupHelpOverlay() { function setupHelpOverlay() {
helpButton.addEventListener("click", () => { helpButton.addEventListener("click", () => {
@@ -358,7 +331,7 @@ async function updateCheck() {
noConnection.style.display = "none"; noConnection.style.display = "none";
if (output.includes("update")) { if (output.includes("update")) {
console.log("Update detected from extra script."); console.log("Update detected from extra script.");
showPrompt("new_update"); showPrompt("prompt.new_update");
updateCard.style.display = "flex"; updateCard.style.display = "flex";
await execCommand(` await execCommand(`
su -c " su -c "
@@ -377,7 +350,7 @@ async function updateCheck() {
} }
} catch (error) { } catch (error) {
console.error("Failed to execute update script:", error); console.error("Failed to execute update script:", error);
showPrompt("no_internet", false); showPrompt("prompt.no_internet", false);
noConnection.style.display = "flex"; noConnection.style.display = "flex";
} }
} }
@@ -463,10 +436,10 @@ async function aospkb() {
const destinationPath = "/data/adb/tricky_store/keybox.xml"; const destinationPath = "/data/adb/tricky_store/keybox.xml";
await execCommand(`xxd -r -p ${sourcePath} | base64 -d > ${destinationPath}`); await execCommand(`xxd -r -p ${sourcePath} | base64 -d > ${destinationPath}`);
console.log("AOSP keybox copied successfully."); console.log("AOSP keybox copied successfully.");
showPrompt("aosp_key_set"); showPrompt("prompt.aosp_key_set");
} catch (error) { } catch (error) {
console.error("Failed to copy AOSP keybox:", error); console.error("Failed to copy AOSP keybox:", error);
showPrompt("key_set_error", false); showPrompt("prompt.key_set_error", false);
} }
} }
@@ -485,11 +458,11 @@ async function extrakb() {
} }
await execCommand(`xxd -r -p ${sourcePath} | base64 -d > ${destinationPath}`); await execCommand(`xxd -r -p ${sourcePath} | base64 -d > ${destinationPath}`);
console.log("Valid keybox copied successfully."); console.log("Valid keybox copied successfully.");
showPrompt("valid_key_set"); showPrompt("prompt.valid_key_set");
} catch (error) { } catch (error) {
console.error("Failed to copy valid keybox:", error); console.error("Failed to copy valid keybox:", error);
await aospkb(); await aospkb();
showPrompt("no_valid_fallback", false); showPrompt("prompt.no_valid_fallback", false);
} }
} }
@@ -529,11 +502,11 @@ async function setBootHash() {
try { try {
await execCommand(`echo "${inputValue}" > /data/adb/boot_hash`); await execCommand(`echo "${inputValue}" > /data/adb/boot_hash`);
await execCommand(`su -c resetprop -n ro.boot.vbmeta.digest ${inputValue}`); await execCommand(`su -c resetprop -n ro.boot.vbmeta.digest ${inputValue}`);
showPrompt("boot_hash_set"); showPrompt("prompt.boot_hash_set");
closeCard(); closeCard();
} catch (error) { } catch (error) {
console.error("Failed to update boot_hash:", error); console.error("Failed to update boot_hash:", error);
showPrompt("boot_hash_set_error", false); showPrompt("prompt.boot_hash_set_error", false);
} }
}); });
bootHashOverlay.addEventListener("click", (event) => { bootHashOverlay.addEventListener("click", (event) => {
@@ -680,7 +653,7 @@ function toggleableCheckbox() {
// Function to show the prompt with a success or error message // Function to show the prompt with a success or error message
function showPrompt(key, isSuccess = true) { function showPrompt(key, isSuccess = true) {
const message = translations[key] || key; const message = key.split('.').reduce((acc, k) => acc && acc[k], translations) || key;
prompt.textContent = message; prompt.textContent = message;
prompt.classList.toggle('error', !isSuccess); prompt.classList.toggle('error', !isSuccess);
if (window.promptTimeout) { if (window.promptTimeout) {
@@ -693,7 +666,7 @@ function showPrompt(key, isSuccess = true) {
prompt.classList.remove('visible'); prompt.classList.remove('visible');
prompt.classList.add('hidden'); prompt.classList.add('hidden');
}, 3000); }, 3000);
}, 500); }, 200);
} }
// Save configure // Save configure
@@ -709,10 +682,10 @@ document.getElementById("save").addEventListener("click", async () => {
const updatedTargetContent = finalAppsList.join("\n"); const updatedTargetContent = finalAppsList.join("\n");
await execCommand(`echo "${updatedTargetContent}" > /data/adb/tricky_store/target.txt`); await execCommand(`echo "${updatedTargetContent}" > /data/adb/tricky_store/target.txt`);
console.log("target.txt updated successfully."); console.log("target.txt updated successfully.");
showPrompt("saved_target"); showPrompt("prompt.saved_target");
} catch (error) { } catch (error) {
console.error("Failed to update target.txt:", error); console.error("Failed to update target.txt:", error);
showPrompt("save_error", false); showPrompt("prompt.save_error", false);
} }
await refreshAppList(); await refreshAppList();
}); });
@@ -733,11 +706,11 @@ document.querySelector(".uninstall-container").addEventListener("click", async (
fi fi
" "
`); `);
showPrompt("uninstall_prompt"); showPrompt("prompt.uninstall_prompt");
} catch (error) { } catch (error) {
console.error("Failed to execute uninstall command:", error); console.error("Failed to execute uninstall command:", error);
console.log("Error message:", error.message); console.log("Error message:", error.message);
showPrompt("uninstall_failed", false); showPrompt("prompt.uninstall_failed", false);
} }
}); });

View File

@@ -1,54 +1,74 @@
{ {
"title": "Tricky Addon - Update Target List", "header": {
"search_placeholder": "Search", "title": "Tricky Addon - Update Target List"
"save_and_update_button": "Save", },
"boot_hash_save_button": "Save", "help": {
"loading": "Loading...", "help_instructions": "Instructions",
"boot_hash_input_placeholder": "Paste your verified Boot Hash here", "save_and_update": "Save",
"uninstall_webui": "Uninstall WebUI", "save_and_update_description": "Save current configure to target.txt.",
"refresh": "Refresh",
"update_available": "A new version is ready", "refresh_description": "Refresh app list and exclude list.",
"redirect_to_release": "tap to download the latest version", "select_deselect": "Select & Deselect All",
"select_description": "Select or deselect all apps in the current interface.",
"refresh": "Refresh", "select_denylist": "Select From DenyList",
"select_all": "Select All", "select_denylist_description": "Available in Magisk only, select apps that are in the DenyList. Recommended.",
"deselect_all": "Deselect All", "deselect_unnecessary": "Deselect Unnecessary",
"select_denylist": "Select From DenyList", "deselect_unnecessary_description": "Unnecessary category: Xposed module, root manager, root-related apps, and general apps that never check bootloader status. This option requires an Internet connection.",
"deselect_unnecessary": "Deselect Unnecessary", "set_keybox": "Set AOSP & Valid Keybox",
"set_aosp_keybox": "Set AOSP Keybox", "set_keybox_description": "Replace tricky store keybox.xml. AOSP keybox will be replaced if there's no more valid keybox. Valid keybox option requires Internet connection.",
"set_valid_keybox": "Set Valid Keybox", "set_verified_boot_hash": "Set Verified Boot Hash",
"set_verified_boot_hash": "Set Verified Boot Hash", "set_verified_boot_hash_description": "Get verifiedBootHash value from Key Attestation Demo. Fix abnormal boot state by resetting ro.boot.vbmeta.digest."
"about": "About", },
"update_banner": {
"help_instructions": "Instructions", "update_available": "A new version is ready",
"save_and_update_description": "Save current configure to target.txt.", "redirect_to_release": "tap to download the latest version"
"refresh_description": "Refresh app list and exclude list.", },
"select_deselect": "Select & Deselect All", "search_bar": {
"select_description": "Select or deselect all apps in the current interface.", "search_placeholder": "Search"
"select_denylist_description": "Available in Magisk only, select apps that are in the DenyList. Recommended.", },
"deselect_unnecessary_description": "Unnecessary category: Xposed module, root manager, root-related apps, and general apps that never check bootloader status. This option requires an Internet connection.", "functional_button": {
"set_keybox": "Set AOSP & Valid Keybox", "save_and_update_button": "Save",
"set_aosp_keybox_description": "Replace tricky store keybox.xml. AOSP keybox will be replaced if there's no more valid keybox. Valid keybox option requires Internet connection.", "uninstall_webui": "Uninstall WebUI"
"set_verified_boot_hash_description": "Get verifiedBootHash value from Key Attestation Demo. Fix abnormal boot state by resetting ro.boot.vbmeta.digest.", },
"loading": {
"module_name_line1": "Tricky Addon", "loading": "Loading..."
"module_name_line2": "Update Target List", },
"by": "by ", "menu": {
"telegram_channel": "Telegram Channel", "refresh": "Refresh",
"github": "GitHub", "select_all": "Select All",
"disclaimer": "This module is not a part of the Tricky Store module. DO NOT report any issues to Tricky Store if encountered.", "deselect_all": "Deselect All",
"acknowledgment": "Acknowledgment", "select_denylist": "Select From DenyList",
"deselect_unnecessary": "Deselect Unnecessary",
"no_internet": "Please check your Internet connection", "set_aosp_keybox": "Set AOSP Keybox",
"aosp_key_set": "AOSP keybox set successfully", "set_valid_keybox": "Set Valid Keybox",
"key_set_error": "Failed to update keybox", "set_verified_boot_hash": "Set Verified Boot Hash",
"valid_key_set": "Valid keybox set successfully", "about": "About"
"no_valid_fallback": "No valid keybox found, replaced with AOSP keybox.", },
"boot_hash_set": "Verified Boot Hash saved successfully", "reset_vbmeta": {
"boot_hash_set_error": "Failed to update Verified Boot Hash", "boot_hash_input_placeholder": "Paste your verified Boot Hash here",
"saved_target": "Config saved to target.txt", "boot_hash_save_button": "Save"
"save_error": "Failed to save config", },
"uninstall_prompt": "WebUI will be removed after reboot", "about": {
"uninstall_failed": "Failed to uninstall WebUI", "module_name_line1": "Tricky Addon",
"new_update": "A new update is available!" "module_name_line2": "Update Target List",
"by": "by",
"telegram_channel": "Telegram Channel",
"github": "GitHub",
"disclaimer": "This module is not a part of the Tricky Store module. DO NOT report any issues to Tricky Store if encountered.",
"acknowledgment": "Acknowledgment"
},
"prompt": {
"no_internet": "Please check your Internet connection",
"aosp_key_set": "AOSP keybox set successfully",
"key_set_error": "Failed to update keybox",
"valid_key_set": "Valid keybox set successfully",
"no_valid_fallback": "No valid keybox found, replaced with AOSP keybox.",
"boot_hash_set": "Verified Boot Hash saved successfully",
"boot_hash_set_error": "Failed to update Verified Boot Hash",
"saved_target": "Config saved to target.txt",
"save_error": "Failed to save config",
"uninstall_prompt": "WebUI will be removed after reboot",
"uninstall_failed": "Failed to uninstall WebUI",
"new_update": "A new update is available!"
}
} }

View File

@@ -1,54 +1,74 @@
{ {
"title": "Tricky Addon - Update Target List", "header": {
"search_placeholder": "Search", "title": "Tricky Addon - Update Target List"
"save_and_update_button": "Save", },
"boot_hash_save_button": "Save", "help": {
"loading": "Loading...", "help_instructions": "Instructions",
"boot_hash_input_placeholder": "Paste your verified Boot Hash here", "save_and_update": "Save",
"uninstall_webui": "Uninstall WebUI", "save_and_update_description": "Save current configure to target.txt.",
"refresh": "Refresh",
"update_available": "A new version is ready", "refresh_description": "Refresh app list and exclude list.",
"redirect_to_release": "tap to download the latest version", "select_deselect": "Select & Deselect All",
"select_description": "Select or deselect all apps in the current interface.",
"refresh": "Refresh", "select_denylist": "Select From DenyList",
"select_all": "Select All", "select_denylist_description": "Available in Magisk only, select apps that are in the DenyList. Recommended.",
"deselect_all": "Deselect All", "deselect_unnecessary": "Deselect Unnecessary",
"select_denylist": "Select From DenyList", "deselect_unnecessary_description": "Unnecessary category: Xposed module, root manager, root-related apps, and general apps that never check bootloader status. This option requires an Internet connection.",
"deselect_unnecessary": "Deselect Unnecessary", "set_keybox": "Set AOSP & Valid Keybox",
"set_aosp_keybox": "Set AOSP Keybox", "set_keybox_description": "Replace tricky store keybox.xml. AOSP keybox will be replaced if there's no more valid keybox. Valid keybox option requires Internet connection.",
"set_valid_keybox": "Set Valid Keybox", "set_verified_boot_hash": "Set Verified Boot Hash",
"set_verified_boot_hash": "Set Verified Boot Hash", "set_verified_boot_hash_description": "Get verifiedBootHash value from Key Attestation Demo. Fix abnormal boot state by resetting ro.boot.vbmeta.digest."
"about": "About", },
"update_banner": {
"help_instructions": "Instructions", "update_available": "A new version is ready",
"save_and_update_description": "Save current configure to target.txt.", "redirect_to_release": "tap to download the latest version"
"refresh_description": "Refresh app list and exclude list.", },
"select_deselect": "Select & Deselect All", "search_bar": {
"select_description": "Select or deselect all apps in the current interface.", "search_placeholder": "Search"
"select_denylist_description": "Available in Magisk only, select apps that are in the DenyList. Recommended.", },
"deselect_unnecessary_description": "Unnecessary category: Xposed module, root manager, root-related apps, and general apps that never check bootloader status. This option requires an Internet connection.", "functional_button": {
"set_keybox": "Set AOSP & Valid Keybox", "save_and_update_button": "Save",
"set_aosp_keybox_description": "Replace tricky store keybox.xml. AOSP keybox will be replaced if there's no more valid keybox. Valid keybox option requires Internet connection.", "uninstall_webui": "Uninstall WebUI"
"set_verified_boot_hash_description": "Get verifiedBootHash value from Key Attestation Demo. Fix abnormal boot state by resetting ro.boot.vbmeta.digest.", },
"loading": {
"module_name_line1": "Tricky Addon", "loading": "Loading..."
"module_name_line2": "Update Target List", },
"by": "by ", "menu": {
"telegram_channel": "Telegram Channel", "refresh": "Refresh",
"github": "GitHub", "select_all": "Select All",
"disclaimer": "This module is not a part of the Tricky Store module. DO NOT report any issues to Tricky Store if encountered.", "deselect_all": "Deselect All",
"acknowledgment": "Acknowledgment", "select_denylist": "Select From DenyList",
"deselect_unnecessary": "Deselect Unnecessary",
"no_internet": "Please check your Internet connection", "set_aosp_keybox": "Set AOSP Keybox",
"aosp_key_set": "AOSP keybox set successfully", "set_valid_keybox": "Set Valid Keybox",
"key_set_error": "Failed to update keybox", "set_verified_boot_hash": "Set Verified Boot Hash",
"valid_key_set": "Valid keybox set successfully", "about": "About"
"no_valid_fallback": "No valid keybox found, replaced with AOSP keybox.", },
"boot_hash_set": "Verified Boot Hash saved successfully", "reset_vbmeta": {
"boot_hash_set_error": "Failed to update Verified Boot Hash", "boot_hash_input_placeholder": "Paste your verified Boot Hash here",
"saved_target": "Config saved to target.txt", "boot_hash_save_button": "Save"
"save_error": "Failed to save config", },
"uninstall_prompt": "WebUI will be removed after reboot", "about": {
"uninstall_failed": "Failed to uninstall WebUI", "module_name_line1": "Tricky Addon",
"new_update": "A new update is available!" "module_name_line2": "Update Target List",
"by": "by",
"telegram_channel": "Telegram Channel",
"github": "GitHub",
"disclaimer": "This module is not a part of the Tricky Store module. DO NOT report any issues to Tricky Store if encountered.",
"acknowledgment": "Acknowledgment"
},
"prompt": {
"no_internet": "Please check your Internet connection",
"aosp_key_set": "AOSP keybox set successfully",
"key_set_error": "Failed to update keybox",
"valid_key_set": "Valid keybox set successfully",
"no_valid_fallback": "No valid keybox found, replaced with AOSP keybox.",
"boot_hash_set": "Verified Boot Hash saved successfully",
"boot_hash_set_error": "Failed to update Verified Boot Hash",
"saved_target": "Config saved to target.txt",
"save_error": "Failed to save config",
"uninstall_prompt": "WebUI will be removed after reboot",
"uninstall_failed": "Failed to uninstall WebUI",
"new_update": "A new update is available!"
}
} }

View File

@@ -1,54 +1,74 @@
{ {
"title": "Tricky Addon - Update Target List", "header": {
"search_placeholder": "Buscar", "title": "Tricky Addon - Update Target List"
"save_and_update_button": "Guardar", },
"boot_hash_save_button": "Guardar", "help": {
"loading": "Cargando...", "help_instructions": "Instrucciones",
"boot_hash_input_placeholder": "Pega tu Boot Hash verificado aquí", "save_and_update": "Guardar",
"uninstall_webui": "Desinstalar WebUI", "save_and_update_description": "Guardar la configuración actual en target.txt.",
"refresh": "Actualizar",
"update_available": "Una nueva versión disponible", "refresh_description": "Actualizar lista de aplicaciones y lista de exclusión.",
"redirect_to_release": "Haz clic aquí para descargar la última versión.", "select_deselect": "Seleccionar y Deseleccionar Todo",
"select_description": "Seleccionar o deseleccionar todas las aplicaciones en la interfaz actual.",
"refresh": "Actualizar", "select_denylist": "Seleccionar desde DenyList",
"select_all": "Seleccionar Todo", "select_denylist_description": "Disponible solo en Magisk, selecciona aplicaciones que están en la DenyList. Recomendado.",
"deselect_all": "Deseleccionar Todo", "deselect_unnecessary": "Deseleccionar innecesarios",
"select_denylist": "Seleccionar desde DenyList", "deselect_unnecessary_description": "Categorías innecesarias: módulos Xposed, gestores de root, aplicaciones relacionadas con root y aplicaciones generales que nunca verifican el estado del bootloader. Esta opción requiere conexión a Internet.",
"deselect_unnecessary": "Deseleccionar innecesarios", "set_keybox": "Configurar AOSP y Keybox Válido",
"set_aosp_keybox": "Configurar AOSP Keybox", "set_keybox_description": "Reemplazar el archivo keybox.xml de Tricky Store. El AOSP Keybox será reemplazado si no hay un keybox válido. Esta opción requiere conexión a Internet.",
"set_valid_keybox": "Configurar Keybox Válido", "set_verified_boot_hash": "Configurar Boot Hash Verificado",
"set_verified_boot_hash": "Configurar Boot Hash Verificado", "set_verified_boot_hash_description": "Obtén el valor de verifiedBootHash del Key Attestation Demo. Corrige un estado de arranque anormal reiniciando ro.boot.vbmeta.digest."
"about": "Acerca de", },
"update_banner": {
"help_instructions": "Instrucciones", "update_available": "Una nueva versión está lista",
"save_and_update_description": "Guardar la configuración actual en target.txt.", "redirect_to_release": "toca para descargar la última versión"
"refresh_description": "Actualizar lista de aplicaciones y lista de exclusión.", },
"select_deselect": "Seleccionar y deseleccionar todo", "search_bar": {
"select_description": "Seleccionar o deseleccionar todas las aplicaciones en la interfaz actual.", "search_placeholder": "Buscar"
"select_denylist_description": "Disponible solo en Magisk, selecciona aplicaciones que están en la DenyList. Recomendado.", },
"deselect_unnecessary_description": "Categorías innecesarias: módulos Xposed, administradores de root, aplicaciones relacionadas con root y aplicaciones generales que nunca verifican el estado del bootloader. Esta opción requiere conexión a Internet.", "functional_button": {
"set_keybox": "Configurar AOSP y Keybox Válido", "save_and_update_button": "Guardar",
"set_aosp_keybox_description": "Reemplazar el archivo keybox.xml de Tricky Store. Se utilizará el AOSP Keybox si no se encuentra un keybox válido. Esta opción requiere conexión a Internet.", "uninstall_webui": "Desinstalar WebUI"
"set_verified_boot_hash_description": "Obtén el valor de verifiedBootHash a través de Key Attestation Demo. Corrige un estado de arranque anormal restableciendo el valor de ro.boot.vbmeta.digest.", },
"loading": {
"module_name_line1": "Tricky Addon", "loading": "Cargando..."
"module_name_line2": "Update Target List", },
"by": "por ", "menu": {
"telegram_channel": "Canal de Telegram", "refresh": "Actualizar",
"github": "GitHub", "select_all": "Seleccionar Todo",
"disclaimer": "Este módulo no forma parte del módulo Tricky Store. NO reportes problemas al autor de Tricky Store en caso de encontrarlos.", "deselect_all": "Deseleccionar Todo",
"acknowledgment": "Agradecimientos", "select_denylist": "Seleccionar desde DenyList",
"deselect_unnecessary": "Deseleccionar innecesarios",
"no_internet": "Por favor, verifica que tu conexión a Internet esté activa.", "set_aosp_keybox": "Configurar AOSP Keybox",
"aosp_key_set": "AOSP Keybox configurado correctamente", "set_valid_keybox": "Configurar Keybox Válido",
"key_set_error": "Error al actualizar el Keybox", "set_verified_boot_hash": "Configurar Boot Hash Verificado",
"valid_key_set": "Keybox válido configurado correctamente", "about": "Acerca de"
"no_valid_fallback": "No se encontró un keybox válido, reemplazado con AOSP Keybox.", },
"boot_hash_set": "Boot Hash verificado guardado correctamente", "reset_vbmeta": {
"boot_hash_set_error": "Error al actualizar el Boot Hash verificado", "boot_hash_input_placeholder": "Pega aquí tu Boot Hash verificado",
"saved_target": "Configuración guardada en target.txt", "boot_hash_save_button": "Guardar"
"save_error": "Error al guardar la configuración", },
"uninstall_prompt": "El WebUI se eliminará después de reiniciar", "about": {
"uninstall_failed": "Error al desinstalar el WebUI", "module_name_line1": "Tricky Addon",
"new_update": "¡Una nueva actualización está disponible!" "module_name_line2": "Update Target List",
"by": "por",
"telegram_channel": "Canal de Telegram",
"github": "GitHub",
"disclaimer": "Este módulo no es parte del módulo Tricky Store. NO reportes problemas al autor de Tricky Store si los encuentras.",
"acknowledgment": "Agradecimientos"
},
"prompt": {
"no_internet": "Por favor, verifica tu conexión a Internet",
"aosp_key_set": "AOSP Keybox configurado correctamente",
"key_set_error": "Error al actualizar el Keybox",
"valid_key_set": "Keybox válido configurado correctamente",
"no_valid_fallback": "No se encontró un keybox válido, reemplazado con AOSP Keybox.",
"boot_hash_set": "Boot Hash verificado guardado correctamente",
"boot_hash_set_error": "Error al actualizar el Boot Hash verificado",
"saved_target": "Configuración guardada en target.txt",
"save_error": "Error al guardar la configuración",
"uninstall_prompt": "El WebUI se eliminará después de reiniciar",
"uninstall_failed": "Error al desinstalar el WebUI",
"new_update": "¡Una nueva actualización está disponible!"
}
} }

View File

@@ -1,54 +1,74 @@
{ {
"title": "Tricky Addon - Update Target List", "header": {
"search_placeholder": "検索", "title": "Tricky Addon - Update Target List"
"save_and_update_button": "保存", },
"boot_hash_save_button": "保存", "help": {
"loading": "読み込み中...", "help_instructions": "使い方",
"boot_hash_input_placeholder": "確認付きブートハッシュをここに貼り付け", "save_and_update": "保存",
"uninstall_webui": "WebUI をアンインストール", "save_and_update_description": "現在の設定を target.txt に保存します。",
"refresh": "更新",
"update_available": "新しいバージョンの準備完了", "refresh_description": "アプリリストと除外リストを更新します。",
"redirect_to_release": "タップで最新のバージョンをダウンロード", "select_deselect": "すべてを選択と解除",
"select_description": "現在のインターフェースのすべてのアプリを選択または解除します。",
"refresh": "更新", "select_denylist": "DenyList から選択",
"select_all": "すべて選択", "select_denylist_description": "Magisk の環境でのみ使用可能です。Deny List 内のアプリを選択します(推奨)。",
"deselect_all": "すべての選択を解除", "deselect_unnecessary": "不要な選択を解除",
"select_denylist": "DenyList から選択", "deselect_unnecessary_description": "不要なカテゴリー: Xposed モジュール、root マネージャー、root 関連アプリ、Bootloader の状態を確認しない一般的なアプリです。このオプションはインターネット接続が必要です。",
"deselect_unnecessary": "不要な選択を解除", "set_keybox": "AOSP と 有効な Keybox",
"set_aosp_keybox": "AOSP Keybox を設定", "set_keybox_description": "Tricky Store の keybox.xml を置き換えます。有効な Keybox がなくなった場合は、AOSP Keybox に置き換えられます。インターネット接続が必要です。",
"set_valid_keybox": "有効な Keybox を設定", "set_verified_boot_hash": "確認付きブートハッシュを設定",
"set_verified_boot_hash": "確認付きブートハッシュを設定", "set_verified_boot_hash_description": "Key Attestation Demo から確認付きブートハッシュの値を取得します。ro.boot.vbmeta.digest をリセットして異常なブート状態を修正します。"
"about": "このアドオンについて", },
"update_banner": {
"help_instructions": "使い方", "update_available": "新しいバージョンの準備完了",
"save_and_update_description": "現在の設定を target.txt に保存します。", "redirect_to_release": "タップで最新のバージョンをダウンロード"
"refresh_description": "アプリリストと除外リストを更新します。", },
"select_deselect": "すべてを選択と解除", "search_bar": {
"select_description": "現在のインターフェースのすべてのアプリを選択または解除します。", "search_placeholder": "検索"
"select_denylist_description": "Magisk の環境でのみ使用可能です。Deny List 内のアプリを選択します(推奨)。", },
"deselect_unnecessary_description": "不要なカテゴリー: Xposed モジュール、root マネージャー、root 関連アプリ、Bootloader の状態を確認しない一般的なアプリです。このオプションはインターネット接続が必要です。", "functional_button": {
"set_keybox": "AOSP と 有効な Keybox", "save_and_update_button": "保存",
"set_aosp_keybox_description": "Tricky Store の keybox.xml を置き換えます。有効な Keybox がなくなった場合は、AOSP Keybox に置き換えられます。インターネット接続が必要です。", "uninstall_webui": "WebUI をアンインストール"
"set_verified_boot_hash_description": "Key Attestation Demo から確認付きブートハッシュの値を取得します。ro.boot.vbmeta.digest をリセットして異常なブート状態を修正します。", },
"loading": {
"module_name_line1": "Tricky Addon", "loading": "読み込み中..."
"module_name_line2": "Update Target List", },
"by": "開発者: ", "menu": {
"telegram_channel": "Telegram チャンネル", "refresh": "更新",
"github": "GitHub", "select_all": "すべて選択",
"disclaimer": "このモジュールは、Tricky Store モジュールの一部ではありません。Tricky Store 公式に問題を報告しないでください。", "deselect_all": "すべての選択を解除",
"acknowledgment": "謝辞", "select_denylist": "DenyList から選択",
"deselect_unnecessary": "不要な選択を解除",
"no_internet": "インターネット接続を確認してください。", "set_aosp_keybox": "AOSP Keybox を設定",
"aosp_key_set": "AOSP Keybox 設定に成功しました。", "set_valid_keybox": "有効な Keybox 設定",
"key_set_error": "Keybox の更新に失敗しました。", "set_verified_boot_hash": "確認付きブートハッシュを設定",
"valid_key_set": "有効な Keybox の設定に成功しました。", "about": "このアドオンについて"
"no_valid_fallback": "有効な Keybox がありません。AOSP Keybox に置き換えます。", },
"boot_hash_set": "確認付きブートハッシュの更新に成功しました。", "reset_vbmeta": {
"boot_hash_set_error": "確認付きブートハッシュの更新に失敗しました。", "boot_hash_input_placeholder": "確認付きブートハッシュをここに貼り付け",
"saved_target": "設定を target.txt に保存しました。", "boot_hash_save_button": "保存"
"save_error": "設定の保存に失敗しました。", },
"uninstall_prompt": "WebUI は再起動後に削除されます。", "about": {
"uninstall_failed": "WebUI のアンインストールに失敗しました。", "module_name_line1": "Tricky Addon",
"new_update": "新しいバージョンがあります!" "module_name_line2": "Update Target List",
"by": "開発者: ",
"telegram_channel": "Telegram チャンネル",
"github": "GitHub",
"disclaimer": "このモジュールは、Tricky Store モジュールの一部ではありません。Tricky Store 公式に問題を報告しないでください。",
"acknowledgment": "謝辞"
},
"prompt": {
"no_internet": "インターネット接続を確認してください。",
"aosp_key_set": "AOSP Keybox の設定に成功しました。",
"key_set_error": "Keybox の更新に失敗しました。",
"valid_key_set": "有効な Keybox の設定に成功しました。",
"no_valid_fallback": "有効な Keybox がありません。AOSP Keybox に置き換えます。",
"boot_hash_set": "確認付きブートハッシュの更新に成功しました。",
"boot_hash_set_error": "確認付きブートハッシュの更新に失敗しました。",
"saved_target": "設定を target.txt に保存しました。",
"save_error": "設定の保存に失敗しました。",
"uninstall_prompt": "WebUI は再起動後に削除されます。",
"uninstall_failed": "WebUI のアンインストールに失敗しました。",
"new_update": "新しいバージョンがあります!"
}
} }

View File

@@ -1,54 +1,74 @@
{ {
"title": "Tricky Addon - Обновить список целей", "header": {
"search_placeholder": "Поиск", "title": "Tricky Addon - Обновить список целей"
"save_and_update_button": "Сохранить", },
"boot_hash_save_button": "Сохранить", "help": {
"loading": "Загрузка...", "help_instructions": "Инструкции",
"boot_hash_input_placeholder": "Вставьте свой проверенный Boot Hash сюда", "save_and_update": "Сохранить",
"uninstall_webui": "Удалить WebUI", "save_and_update_description": "Сохранить текущую конфигурацию в target.txt.",
"refresh": "Обновить",
"update_available": "Доступна новая версия", "refresh_description": "Обновить список приложений и список исключений.",
"redirect_to_release": "нажмите, чтобы скачать последнюю версию", "select_deselect": "Выбрать и отменить выбор всех",
"select_description": "Выбрать или отменить выбор всех приложений в текущем интерфейсе.",
"refresh": "Обновить", "select_denylist": "Выбрать из DenyList",
"select_all": "Выбрать все", "select_denylist_description": "Доступно только в Magisk, выберите приложения, которые находятся в DenyList. Рекомендуется.",
"deselect_all": "Отменить выбор всех", "deselect_unnecessary": "Отменить выбор ненужных",
"select_denylist": "Выбрать из DenyList", "deselect_unnecessary_description": "Ненужные категории: модули Xposed, менеджеры root, приложения, связанные с root, и общие приложения, которые никогда не проверяют статус загрузчика. Этот параметр требует подключения к интернету.",
"deselect_unnecessary": "Отменить выбор ненужных", "set_keybox": "Установить AOSP и действующий Keybox",
"set_aosp_keybox": "Установить AOSP Keybox", "set_keybox_description": "Замените tricky store keybox.xml. AOSP keybox будет заменен, если не будет найден действующий keybox. Опция с действующим keybox требует подключения к интернету.",
"set_valid_keybox": "Установить действующий Keybox", "set_verified_boot_hash": "Установить Verified Boot Hash",
"set_verified_boot_hash": "Установить Verified Boot Hash", "set_verified_boot_hash_description": "Получите значение verifiedBootHash из Key Attestation Demo. Исправьте аномальное состояние загрузки, сбросив ro.boot.vbmeta.digest."
"about": "О программе", },
"update_banner": {
"help_instructions": "Инструкции", "update_available": "Доступна новая версия",
"save_and_update_description": "Сохранить текущую конфигурацию в target.txt.", "redirect_to_release": "нажмите, чтобы скачать последнюю версию"
"refresh_description": "Обновить список приложений и список исключений.", },
"select_deselect": "Выбрать и отменить выбор всех", "search_bar": {
"select_description": "Выбрать или отменить выбор всех приложений в текущем интерфейсе.", "search_placeholder": "Поиск"
"select_denylist_description": "Доступно только в Magisk, выберите приложения, которые находятся в DenyList. Рекомендуется.", },
"deselect_unnecessary_description": "Ненужные категории: модули Xposed, менеджеры root, приложения, связанные с root, и общие приложения, которые никогда не проверяют статус загрузчика. Этот параметр требует подключения к интернету.", "functional_button": {
"set_keybox": "Установить AOSP и действующий Keybox", "save_and_update_button": "Сохранить",
"set_aosp_keybox_description": "Замените tricky store keybox.xml. AOSP keybox будет заменен, если не будет найден действующий keybox. Опция с действующим keybox требует подключения к интернету.", "uninstall_webui": "Удалить WebUI"
"set_verified_boot_hash_description": "Получите значение verifiedBootHash из Key Attestation Demo. Исправьте аномальное состояние загрузки, сбросив ro.boot.vbmeta.digest.", },
"loading": {
"module_name_line1": "Tricky Addon", "loading": "Загрузка..."
"module_name_line2": "Обновить список целей", },
"by": "от ", "menu": {
"telegram_channel": "Канал в Telegram", "refresh": "Обновить",
"github": "GitHub", "select_all": "Выбрать все",
"disclaimer": "Этот WebUI не является частью Tricky Store, НЕ сообщайте автору Tricky Store о любых возникающих проблемах.", "deselect_all": "Отменить выбор всех",
"acknowledgment": "Благодарности", "select_denylist": "Выбрать из DenyList",
"deselect_unnecessary": "Отменить выбор ненужных",
"no_internet": "Пожалуйста, проверьте ваше подключение к интернету", "set_aosp_keybox": "Установить AOSP Keybox",
"aosp_key_set": "AOSP keybox успешно установлен", "set_valid_keybox": "Установить действующий Keybox",
"key_set_error": "Не удалось обновить keybox", "set_verified_boot_hash": "Установить Verified Boot Hash",
"valid_key_set": "Действующий keybox успешно установлен", "about": "О программе"
"no_valid_fallback": "Не найден действующий keybox, заменен на AOSP keybox.", },
"boot_hash_set": "Verified Boot Hash успешно сохранен", "reset_vbmeta": {
"boot_hash_set_error": "Не удалось обновить Verified Boot Hash", "boot_hash_input_placeholder": "Вставьте свой проверенный Boot Hash сюда",
"saved_target": "Конфигурация сохранена в target.txt", "boot_hash_save_button": "Сохранить"
"save_error": "Не удалось сохранить конфигурацию", },
"uninstall_prompt": "WebUI будет удален после перезагрузки", "about": {
"uninstall_failed": "Не удалось удалить WebUI", "module_name_line1": "Tricky Addon",
"new_update": "Доступно новое обновление!" "module_name_line2": "Обновить список целей",
"by": "от",
"telegram_channel": "Канал в Telegram",
"github": "GitHub",
"disclaimer": "Этот WebUI не является частью Tricky Store, НЕ сообщайте автору Tricky Store о любых возникающих проблемах.",
"acknowledgment": "Благодарности"
},
"prompt": {
"no_internet": "Пожалуйста, проверьте ваше подключение к интернету",
"aosp_key_set": "AOSP keybox успешно установлен",
"key_set_error": "Не удалось обновить keybox",
"valid_key_set": "Действующий keybox успешно установлен",
"no_valid_fallback": "Не найден действующий keybox, заменен на AOSP keybox.",
"boot_hash_set": "Verified Boot Hash успешно сохранен",
"boot_hash_set_error": "Не удалось обновить Verified Boot Hash",
"saved_target": "Конфигурация сохранена в target.txt",
"save_error": "Не удалось сохранить конфигурацию",
"uninstall_prompt": "WebUI будет удален после перезагрузки",
"uninstall_failed": "Не удалось удалить WebUI",
"new_update": "Доступно новое обновление!"
}
} }

View File

@@ -1,54 +1,74 @@
{ {
"title": "Tricky Addon - I-update ang Target List", "header": {
"search_placeholder": "Maghanap", "title": "Tricky Addon - I-update ang Target List"
"save_and_update_button": "I-save", },
"boot_hash_save_button": "I-save", "help": {
"loading": "Naglo-load...", "help_instructions": "Mga Tagubilin",
"boot_hash_input_placeholder": "I-paste ang iyong verified Boot Hash dito", "save_and_update": "I-save",
"uninstall_webui": "I-uninstall ang WebUI", "save_and_update_description": "I-save ang kasalukuyang configuration sa target.txt.",
"refresh": "I-refresh",
"update_available": "Handa na ang bagong bersyon", "refresh_description": "I-refresh ang listahan ng apps at exclude list.",
"redirect_to_release": "i-tap para i-download ang pinakabagong bersyon", "select_deselect": "Piliin & Huwag Pumili ng Lahat",
"select_description": "Piliin o huwag piliin ang lahat ng apps sa kasalukuyang interface.",
"refresh": "I-refresh", "select_denylist": "Piliin mula sa DenyList",
"select_all": "Piliin Lahat", "select_denylist_description": "Available lang sa Magisk, piliin ang mga app na nasa DenyList. Inirerekomenda.",
"deselect_all": "Huwag Pumili ng Lahat", "deselect_unnecessary": "Huwag Pumili ng Hindi Kinakailangan",
"select_denylist": "Piliin mula sa DenyList", "deselect_unnecessary_description": "Hindi kinakailangang kategorya: Xposed module, root manager, root-related apps, at mga karaniwang apps na hindi kailanman nire-refresh ang bootloader status. Nangangailangan ng koneksyon sa internet.",
"deselect_unnecessary": "Huwag Pumili ng Hindi Kinakailangan", "set_keybox": "I-set ang AOSP at Valid Keybox",
"set_aosp_keybox": "I-set ang AOSP Keybox", "set_keybox_description": "Palitan ang tricky store keybox.xml. Palitan ang AOSP keybox kung walang valid keybox. Nangangailangan ng koneksyon sa internet ang valid keybox option.",
"set_valid_keybox": "I-set ang Valid Keybox", "set_verified_boot_hash": "I-set ang Verified Boot Hash",
"set_verified_boot_hash": "I-set ang Verified Boot Hash", "set_verified_boot_hash_description": "Kunin ang verifiedBootHash mula sa Key Attestation Demo. Ayusin ang abnormal na boot state sa pamamagitan ng pag-reset ng ro.boot.vbmeta.digest."
"about": "Tungkol", },
"update_banner": {
"help_instructions": "Mga Tagubilin", "update_available": "Handa na ang bagong bersyon",
"save_and_update_description": "I-save ang kasalukuyang configuration sa target.txt.", "redirect_to_release": "i-tap para i-download ang pinakabagong bersyon"
"refresh_description": "I-refresh ang listahan ng apps at exclude list.", },
"select_deselect": "Piliin & Huwag Pumili ng Lahat", "search_bar": {
"select_description": "Piliin o huwag piliin ang lahat ng apps sa kasalukuyang interface.", "search_placeholder": "Maghanap"
"select_denylist_description": "Available lang sa Magisk, piliin ang mga app na nasa DenyList. Inirerekomenda.", },
"deselect_unnecessary_description": "Hindi kinakailangang kategorya: Xposed module, root manager, root-related apps, at mga karaniwang apps na hindi kailanman nire-refresh ang bootloader status. Nangangailangan ng koneksyon sa internet.", "functional_button": {
"set_keybox": "I-set ang AOSP at Valid Keybox", "save_and_update_button": "I-save",
"set_aosp_keybox_description": "Palitan ang tricky store keybox.xml. Palitan ang AOSP keybox kung walang valid keybox. Nangangailangan ng koneksyon sa internet ang valid keybox option.", "uninstall_webui": "I-uninstall ang WebUI"
"set_verified_boot_hash_description": "Kunin ang verifiedBootHash mula sa Key Attestation Demo. Ayusin ang abnormal na boot state sa pamamagitan ng pag-reset ng ro.boot.vbmeta.digest.", },
"loading": {
"module_name_line1": "Tricky Addon", "loading": "Naglo-load..."
"module_name_line2": "I-update ang Target List", },
"by": "ni ", "menu": {
"telegram_channel": "Telegram Channel", "refresh": "I-refresh",
"github": "GitHub", "select_all": "Piliin Lahat",
"disclaimer": "Ang WebUI na ito ay hindi bahagi ng Tricky Store, HUWAG i-report sa may-akda ng Tricky Store kung makaranas ka ng anumang isyu.", "deselect_all": "Huwag Pumili ng Lahat",
"acknowledgment": "Pagkilala", "select_denylist": "Piliin mula sa DenyList",
"deselect_unnecessary": "Huwag Pumili ng Hindi Kinakailangan",
"no_internet": "Pakitingnan ang iyong koneksyon sa Internet", "set_aosp_keybox": "I-set ang AOSP Keybox",
"aosp_key_set": "Matagumpay na na-set ang AOSP Keybox", "set_valid_keybox": "I-set ang Valid Keybox",
"key_set_error": "Nabigong i-update ang keybox", "set_verified_boot_hash": "I-set ang Verified Boot Hash",
"valid_key_set": "Matagumpay na na-set ang Valid Keybox", "about": "Tungkol"
"no_valid_fallback": "Walang valid na keybox na natagpuan, pinalitan ng AOSP keybox.", },
"boot_hash_set": "Matagumpay na na-save ang Verified Boot Hash", "reset_vbmeta": {
"boot_hash_set_error": "Nabigong i-update ang Verified Boot Hash", "boot_hash_input_placeholder": "I-paste ang iyong verified Boot Hash dito",
"saved_target": "Na-save ang configuration sa target.txt", "boot_hash_save_button": "I-save"
"save_error": "Nabigong i-save ang config", },
"uninstall_prompt": "Mawawala ang WebUI pagkatapos ng reboot", "about": {
"uninstall_failed": "Nabigong i-uninstall ang WebUI", "module_name_line1": "Tricky Addon",
"new_update": "May bagong update na available!" "module_name_line2": "I-update ang Target List",
"by": "ni",
"telegram_channel": "Telegram Channel",
"github": "GitHub",
"disclaimer": "Ang WebUI na ito ay hindi bahagi ng Tricky Store, HUWAG i-report sa may-akda ng Tricky Store kung makaranas ka ng anumang isyu.",
"acknowledgment": "Pagkilala"
},
"prompt": {
"no_internet": "Pakitingnan ang iyong koneksyon sa Internet",
"aosp_key_set": "Matagumpay na na-set ang AOSP Keybox",
"key_set_error": "Nabigong i-update ang keybox",
"valid_key_set": "Matagumpay na na-set ang Valid Keybox",
"no_valid_fallback": "Walang valid na keybox na natagpuan, pinalitan ng AOSP keybox.",
"boot_hash_set": "Matagumpay na na-save ang Verified Boot Hash",
"boot_hash_set_error": "Nabigong i-update ang Verified Boot Hash",
"saved_target": "Na-save ang configuration sa target.txt",
"save_error": "Nabigong i-save ang config",
"uninstall_prompt": "Mawawala ang WebUI pagkatapos ng reboot",
"uninstall_failed": "Nabigong i-uninstall ang WebUI",
"new_update": "May bagong update na available!"
}
} }

View File

@@ -1,54 +1,74 @@
{ {
"title": "TS插件 - 更新目标列表", "header": {
"search_placeholder": "搜索", "title": "TS插件 - 更新目标列表"
"save_and_update_button": "保存", },
"boot_hash_save_button": "保存", "help": {
"loading": "加载中...", "help_instructions": "使用指南",
"boot_hash_input_placeholder": "在此粘贴您的哈希值", "save_and_update": "保存",
"uninstall_webui": "卸载 WebUI", "save_and_update_description": "保存当前配置到目标列表target.txt",
"refresh": "刷新",
"update_available": "发现新的版本", "refresh_description": "刷新应用列表和排除列表。",
"redirect_to_release": "点击跳转 GitHub 下载最新版本", "select_deselect": "全选 & 取消全选",
"select_description": "选择或取消选择当前界面中的所有应用。",
"refresh": "刷新", "select_denylist": "从排除列表中选择",
"select_all": "全选", "select_denylist_description": "仅适用于 Magisk选择在排除列表中的应用。推荐使用。",
"deselect_all": "取消选", "deselect_unnecessary": "取消选择非必应用",
"select_denylist": "从排除列表中选择", "deselect_unnecessary_description": "非必要分类Xposed 模块、root 管理器、与 root 相关的应用,以及从不检查 bootloader 状态的通用应用。此功能需连网使用。",
"deselect_unnecessary": "取消选择非必应用", "set_keybox": "设置 AOSP & 有效密钥",
"set_aosp_keybox": "设置 AOSP 密钥", "set_keybox_description": "替换 Tricky Store 的密钥keybox.xml。如果没有有效密钥将替换为 AOSP 密钥。有效密钥选项需连网使用。",
"set_valid_keybox": "设置有效密钥", "set_verified_boot_hash": "设置哈希值",
"set_verified_boot_hash": "设置哈希值", "set_verified_boot_hash_description": "从 Key Attestation Demo 获取 verifiedBootHash哈希值。通过重置 ro.boot.vbmeta.digest 修复异常 boot 状态。"
"about": "关于", },
"update_banner": {
"help_instructions": "使用指南", "update_available": "发现新的版本",
"save_and_update_description": "保存当前配置到目标列表target.txt。", "redirect_to_release": "点击跳转 GitHub 下载最新版本"
"refresh_description": "刷新应用列表和排除列表。", },
"select_deselect": "全选 & 取消全选", "search_bar": {
"select_description": "选择或取消选择当前界面中的所有应用。", "search_placeholder": "搜索"
"select_denylist_description": "仅适用于 Magisk选择在排除列表中的应用。推荐使用。", },
"deselect_unnecessary_description": "非必要分类Xposed 模块、root 管理器、与 root 相关的应用,以及从不检查 bootloader 状态的通用应用。此功能需连网使用。", "functional_button": {
"set_keybox": "设置 AOSP & 有效密钥", "save_and_update_button": "保存",
"set_aosp_keybox_description": "替换 Tricky Store 的密钥keybox.xml。如果没有有效密钥将替换为 AOSP 密钥。有效密钥选项需连网使用。", "uninstall_webui": "卸载 WebUI"
"set_verified_boot_hash_description": "从 Key Attestation Demo 获取 verifiedBootHash哈希值。通过重置 ro.boot.vbmeta.digest 修复异常 boot 状态。", },
"loading": {
"module_name_line1": "TS插件", "loading": "加载中..."
"module_name_line2": "更新目标列表", },
"by": "作者:", "menu": {
"telegram_channel": "TG频道", "refresh": "刷新",
"github": "GitHub", "select_all": "全选",
"disclaimer": "此 WebUI 不是 Tricky Store 的一部分,遇到任何问题请勿向 Tricky Store 作者反馈。", "deselect_all": "取消全选",
"acknowledgment": "特别鸣谢", "select_denylist": "从排除列表中选择",
"deselect_unnecessary": "取消选择非必应用",
"no_internet": "请检查您的网络连接", "set_aosp_keybox": "设置 AOSP 密钥",
"aosp_key_set": "成功设置 AOSP 密钥", "set_valid_keybox": "设置有效密钥",
"key_set_error": "更新密钥失败", "set_verified_boot_hash": "设置哈希值",
"valid_key_set": "成功设置有效密钥", "about": "关于"
"no_valid_fallback": "未找到有效密钥,已替换为 AOSP 密钥。", },
"boot_hash_set": "哈希值重置成功", "reset_vbmeta": {
"boot_hash_set_error": "哈希值重置失败", "boot_hash_input_placeholder": "在此粘贴您的哈希值",
"saved_target": "成功保存配置", "boot_hash_save_button": "保存"
"save_error": "保存配置失败", },
"uninstall_prompt": "WebUI 将在重启后被移除", "about": {
"uninstall_failed": "卸载 WebUI 失败", "module_name_line1": "TS插件",
"new_update": "发现新的版本!" "module_name_line2": "更新目标列表",
"by": "作者:",
"telegram_channel": "TG频道",
"github": "GitHub",
"disclaimer": "此 WebUI 不是 Tricky Store 的一部分,遇到任何问题请勿向 Tricky Store 作者反馈。",
"acknowledgment": "特别鸣谢"
},
"prompt": {
"no_internet": "请检查您的网络连接",
"aosp_key_set": "成功设置 AOSP 密钥",
"key_set_error": "更新密钥失败",
"valid_key_set": "成功设置有效密钥",
"no_valid_fallback": "未找到有效密钥,已替换为 AOSP 密钥。",
"boot_hash_set": "哈希值重置成功",
"boot_hash_set_error": "哈希值重置失败",
"saved_target": "成功保存配置",
"save_error": "保存配置失败",
"uninstall_prompt": "WebUI 将在重启后被移除",
"uninstall_failed": "卸载 WebUI 失败",
"new_update": "发现新的版本!"
}
} }

View File

@@ -1,54 +1,74 @@
{ {
"title": "TS插件 - 更新目標列表", "header": {
"search_placeholder": "搜尋", "title": "TS插件 - 更新目標列表"
"save_and_update_button": "保存", },
"boot_hash_save_button": "保存", "help": {
"loading": "加載中...", "help_instructions": "使用指南",
"boot_hash_input_placeholder": "在此粘貼您的哈希值", "save_and_update": "保存",
"uninstall_webui": "卸載 WebUI", "save_and_update_description": "保存當前配置到目標列表target.txt",
"refresh": "刷新",
"update_available": "發現新的版本", "refresh_description": "刷新應用列表和排除列表。",
"redirect_to_release": "點擊跳轉至 GitHub 下載最新版本", "select_deselect": "全選 & 取消全選",
"select_description": "選擇或取消選擇當前界面中的所有應用。",
"refresh": "刷新", "select_denylist": "從排除列表中選擇",
"select_all": "全選", "select_denylist_description": "僅適用於 Magisk選擇在排除列表中的應用。推薦使用。",
"deselect_all": "取消選", "deselect_unnecessary": "取消選擇非必應用",
"select_denylist": "從排除列表中選擇", "deselect_unnecessary_description": "非必要分類Xposed 模塊、root 管理器、與 root 相關的應用,以及從不檢查 bootloader 狀態的通用應用。此功能需連網使用。",
"deselect_unnecessary": "取消選擇非必應用", "set_keybox": "設置 AOSP & 有效密鑰",
"set_aosp_keybox": "設置 AOSP 密鑰", "set_keybox_description": "替換 Tricky Store 的密鑰keybox.xml。如果沒有有效密鑰將替換為 AOSP 密鑰。有效密鑰選項需連網使用。",
"set_valid_keybox": "設置有效密鑰", "set_verified_boot_hash": "設置哈希值",
"set_verified_boot_hash": "設置哈希值", "set_verified_boot_hash_description": "從 Key Attestation Demo 獲取 verifiedBootHash哈希值。通過重置 ro.boot.vbmeta.digest 修復異常 boot 狀態。"
"about": "關於", },
"update_banner": {
"help_instructions": "使用指南", "update_available": "發現新的版本",
"save_and_update_description": "保存當前配置到目標列表target.txt。", "redirect_to_release": "點擊跳轉至 GitHub 下載最新版本"
"refresh_description": "刷新應用列表和排除列表。", },
"select_deselect": "全選 & 取消全選", "search_bar": {
"select_description": "選擇或取消選擇當前界面中的所有應用。", "search_placeholder": "搜尋"
"select_denylist_description": "僅適用於 Magisk選擇在排除列表中的應用。推薦使用。", },
"deselect_unnecessary_description": "非必要分類Xposed 模塊、root 管理器、與 root 相關的應用,以及從不檢查 bootloader 狀態的通用應用。此功能需連網使用。", "functional_button": {
"set_keybox": "設置 AOSP & 有效密鑰", "save_and_update_button": "保存",
"set_aosp_keybox_description": "替換 Tricky Store 的密鑰keybox.xml。如果沒有有效密鑰將替換為 AOSP 密鑰。有效密鑰選項需連網使用。", "uninstall_webui": "卸載 WebUI"
"set_verified_boot_hash_description": "從 Key Attestation Demo 獲取 verifiedBootHash哈希值。通過重置 ro.boot.vbmeta.digest 修復異常 boot 狀態。", },
"loading": {
"module_name_line1": "TS插件", "loading": "加載中..."
"module_name_line2": "更新目標列表", },
"by": "作者:", "menu": {
"telegram_channel": "TG頻道", "refresh": "刷新",
"github": "GitHub", "select_all": "全選",
"disclaimer": "此 WebUI 不是 Tricky Store 的一部分,遇到任何問題請勿向 Tricky Store 作者反饋。", "deselect_all": "取消全選",
"acknowledgment": "特別鳴謝", "select_denylist": "從排除列表中選擇",
"deselect_unnecessary": "取消選擇非必應用",
"no_internet": "請檢查您的網路連接", "set_aosp_keybox": "設置 AOSP 密鑰",
"aosp_key_set": "成功設置 AOSP 密鑰", "set_valid_keybox": "設置有效密鑰",
"key_set_error": "更新密鑰失敗", "set_verified_boot_hash": "設置哈希值",
"valid_key_set": "成功設置有效密鑰", "about": "關於"
"no_valid_fallback": "未找到有效密鑰,已替換為 AOSP 密鑰。", },
"boot_hash_set": "哈希值重置成功", "reset_vbmeta": {
"boot_hash_set_error": "哈希值重置失敗", "boot_hash_input_placeholder": "在此粘貼您的哈希值",
"saved_target": "成功保存配置", "boot_hash_save_button": "保存"
"save_error": "保存配置失敗", },
"uninstall_prompt": "WebUI 將在重啟後被移除", "about": {
"uninstall_failed": "卸載 WebUI 失敗", "module_name_line1": "TS插件",
"new_update": "發現新的版本!" "module_name_line2": "更新目標列表",
"by": "作者:",
"telegram_channel": "TG頻道",
"github": "GitHub",
"disclaimer": "此 WebUI 不是 Tricky Store 的一部分,遇到任何問題請勿向 Tricky Store 作者反饋。",
"acknowledgment": "特別鳴謝"
},
"prompt": {
"no_internet": "請檢查您的網路連接",
"aosp_key_set": "成功設置 AOSP 密鑰",
"key_set_error": "更新密鑰失敗",
"valid_key_set": "成功設置有效密鑰",
"no_valid_fallback": "未找到有效密鑰,已替換為 AOSP 密鑰。",
"boot_hash_set": "哈希值重置成功",
"boot_hash_set_error": "哈希值重置失敗",
"saved_target": "成功保存配置",
"save_error": "保存配置失敗",
"uninstall_prompt": "WebUI 將在重啟後被移除",
"uninstall_failed": "卸載 WebUI 失敗",
"new_update": "發現新的版本!"
}
} }

View File

@@ -150,10 +150,10 @@ body {
.help-menu { .help-menu {
position: relative; position: relative;
width: 75vw; width: 90vw;
max-width: 800px; max-width: 800px;
background-color: white; background-color: white;
padding: 0 10px; padding: 10px 0;
border-radius: 15px; border-radius: 15px;
text-align: left; text-align: left;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
@@ -171,7 +171,7 @@ body {
.help-content { .help-content {
max-height: 85vh; max-height: 85vh;
padding: 0 20px; padding: 0 30px;
overflow-y: auto; overflow-y: auto;
} }
@@ -327,23 +327,23 @@ body {
text-align: left; text-align: left;
} }
.about-content p[data-i18n="module_name_line1"] { #module_name_line1 {
font-size: 26px; font-size: 26px;
} }
.about-content p[data-i18n="module_name_line2"] { #module_name_line2 {
font-size: 22px; font-size: 22px;
} }
.about-content p span[data-i18n="by"] { #authored {
font-size: 14px; font-size: 14px;
} }
.about-content p[data-i18n="disclaimer"] { #disclaimer {
font-style: italic; font-style: italic;
} }
.about-content p[data-i18n="acknowledgment"] { #acknowledgment {
font-weight: bold; font-weight: bold;
font-size: 18px; font-size: 18px;
} }
@@ -618,11 +618,12 @@ body {
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
color: white; color: white;
font-size: 15px; font-size: 15px;
padding: 5px 15px; padding: 5px 10px;
z-index: 2000; z-index: 2000;
width: auto;
max-width: calc(100% - 40px);
transform: translateY(100%); transform: translateY(100%);
transition: transform 0.5s ease; transition: transform 0.5s ease;
white-space: nowrap;
} }
.prompt.visible { .prompt.visible {