Compare commits

34 Commits
v4.0 ... v4.1

Author SHA1 Message Date
KOWX712
9cc603f36a v4.1 release 2025-07-25 10:51:45 +00:00
KOWX712
4dfa542940 fix: wrong link localization guide 2025-07-23 21:36:47 +08:00
KOWX712
176a4c1654 misc: update .extra 2025-07-23 01:25:04 +08:00
Dakkshesh
e91bd510e9 feat: add support for Dakkshesh's TrickyStore fork (#93)
- This fork is based on qwq233's version and includes both their name and mine in module.prop.
- Unlike qwq233's fork, this version aligns more closely with the official implementation and supports security_patch.txt.
- Updated the author name check to ensure the module is only classified as qwq233's fork if my name is not present.

TrickyStore OSS: https://github.com/beakthoven/TrickyStore

Signed-off-by: Dakkshesh <dakkshesh5@gmail.com>
2025-07-23 00:10:22 +08:00
KOWX712
976ff21141 opt: use gh cli instead of github api 2025-07-20 09:32:15 +08:00
KOWX712
ae12fe8b28 feat: add device props support for qwq233' TS fork
ref: bab87cef90
2025-07-18 15:18:06 +08:00
KOWX712
36325fc241 misc: update .extra 2025-07-16 01:28:01 +08:00
KOWX712
9b4cf45887 misc: update translation guide 2025-07-15 08:52:48 +08:00
KOWX712
276d5fc4fc opt: sync translation from Crowdin (#82)
Co-Authored-By: Crowdin Bot <support+bot@crowdin.com>
Co-Authored-By: Re*Index. (ot_inc) <32851879+reindex-ot@users.noreply.github.com>
2025-07-15 08:46:16 +08:00
KOWX712
f1de41bd2f misc: wait for next 2025-07-15 08:19:20 +08:00
KOWX712
aa7b5b7573 feat: auto security patch support for pif.prop 2025-07-13 19:01:39 +08:00
Peace
c9ae860ae2 misc: update readme (#88)
Replace MMRL with WebUI X
2025-07-11 13:47:43 +08:00
KOWX712
1b8fff9347 misc: update .extra 2025-07-11 01:28:08 +08:00
KOWX712
f904ed2bec misc: add translation contributor list 2025-07-10 03:51:17 +08:00
KOWX712
023af806b1 fix: handle condition when app name contain newline charater 2025-07-07 00:29:17 +08:00
KOWX712
311124f3cf opt: handle get applist error 2025-07-06 00:15:31 +08:00
KOWX712
18a9d41fde opt: update kernelsu.js 2025-07-06 00:15:31 +08:00
KOWX712
3668cfe033 misc: update issue placeholder
xml format is unsupported attachment format
2025-07-05 00:18:52 +08:00
KOWX712
df0dfefaa2 opt: applist cache method
grep exact match pattern
2025-07-04 03:26:58 +08:00
KOWX712
c21aa9994b feat: add support for new ksu package manager api 2025-07-04 03:26:58 +08:00
KOWX712
b58397da61 misc: drop homescreen shortcut button
this feature is no longer needed since you can add shortcut from webui-x manager.
2025-07-03 20:56:28 +08:00
KOWX712
e4f1c7fcc8 misc: update WebUI-X css import address 2025-07-02 20:35:54 +08:00
KOWX712
9c8cb9b6c2 opt: handle error when failed to fetch applist.json 2025-07-02 15:20:48 +08:00
github-actions[bot]
8d2cb81ae6 deps: update OpenSSL binaries 2025-07-02 06:44:31 +00:00
KOWX712
7220ab62b4 opt: sync translation from Crowdin (#74)
Russian translation update by: https://crowdin.com/profile/deflecta
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-Authored-By: Re*Index. (ot_inc) <32851879+reindex-ot@users.noreply.github.com>
Co-Authored-By: ZGX089ッ <159061718+ZG089@users.noreply.github.com>
Co-Authored-By: xxOrdulu52xx <34343052+xxordulu52xx@users.noreply.github.com>
2025-07-02 14:44:22 +08:00
KOWX712
c1860c0d0b misc: remove auto approve imported 2025-07-02 14:36:51 +08:00
KOWX712
425b8f72bf misc: wait for next 2025-07-01 14:20:24 +08:00
xxOrdulu52xx
a1df41bd01 feat: add German translation (#78) 2025-06-27 18:23:46 +08:00
KOWX712
46e4e68dc2 misc: update .extra 2025-06-25 23:05:25 +08:00
KOWX712
453198c888 fix: typo 2025-06-24 23:35:36 +08:00
KOWX712
b3bf8bdde8 opt: sync translation from Crowdin (#72)
Co-Authored-By: cvnertnc <148134890+cvnertnc@users.noreply.github.com>
Co-Authored-By: GRgabrix <103899172+grgabrix@users.noreply.github.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-23 16:24:27 +08:00
KOWX712
b0025ea5d5 feat: add rtl language ui support 2025-06-20 13:51:56 +08:00
KOWX712
38848fa891 misc: update instruction 2025-06-20 03:08:34 +08:00
KOWX712
4cd2083b94 fix: typo 2025-06-19 21:09:05 +08:00
52 changed files with 873 additions and 194 deletions

2
.extra

File diff suppressed because one or more lines are too long

View File

@@ -33,6 +33,6 @@ body:
attributes:
label: Upload translated file (optional)
description: Upload translated file based on template.xml if you have translated it
placeholder: translate the template in module/webui/locales/template.xml (optional)
placeholder: translate the template in module/webui/locales/template.xml (compress in zip format before upload)
validations:
required: false

View File

@@ -11,6 +11,9 @@ on:
- 'module/**'
workflow_dispatch:
env:
GH_TOKEN: ${{ github.token }}
jobs:
build:
name: build
@@ -46,7 +49,7 @@ jobs:
curl -Ls https://cdn.jsdelivr.net/npm/marked/marked.min.js > module/webui/scripts/assets/marked.min.js
# OpenSSL
wget -q $(curl -Ls https://api.github.com/repos/KOWX712/openssl-static-build/releases/latest | jq -r '.assets[].browser_download_url') -O openssl.tar.gz
gh release download -R KOWX712/openssl-static-build -p "*.tar.gz" -O openssl.tar.gz
tar -xzf openssl.tar.gz
mv openssl-arm64 module/bin/arm64-v8a/openssl
mv openssl-arm32 module/bin/armeabi-v7a/openssl

View File

@@ -1,4 +1,4 @@
name: Crowdin Action
name: crowdin
on:
push:
@@ -21,7 +21,6 @@ jobs:
with:
upload_sources: true
upload_translations: true
auto_approve_imported: true
download_translations: true
skip_untranslated_files: false
skip_untranslated_strings: true

1
.gitignore vendored
View File

@@ -1,3 +1,4 @@
__MACOSX
.DS_Store
applist.json
changelog_draft.md

View File

@@ -16,7 +16,7 @@ Configure Tricky Store target.txt with KSU WebUI.
### Magisk
- Action button to open WebUI
- Support [KSUWebUIStandalone](https://github.com/5ec1cff/KsuWebUIStandalone) and [MMRL](https://github.com/MMRLApp/MMRL)
- Support [KSUWebUIStandalone](https://github.com/5ec1cff/KsuWebUIStandalone) and [WebUI X](https://github.com/MMRLApp/WebUI-X-Portable)
- Automatic KSUWebUIStandalone install if none of them are installed.
### What Can This Module Do

View File

@@ -8,14 +8,23 @@ GitHub release: [Tricky Addon: Update Target List](https://github.com/KOWX712/Tr
Telegram channel: [KOW's Little World](https://t.me/kowchannel)
## Changelog
### v4.1
- **WebUI:** Added right-to-left language support in UI.
- **WebUI:** Fixed 'Failed to fetch applist' in certain condition.
- **Script:** Added auto security patch support for pif.prop.
- **WebUI:** Added support for Dakkshesh's TrickyStore fork [(GitHub@beakthoven/TrickyStore)](https://github.com/beakthoven/TrickyStore).
- **WebUI:** Added device props support for qwq233's TrickyStore fork (this will not modify system prop automatically).
- **WebUI:** Added German (#78, @xxOrdulu52xx), Bengali, Persian translation.
- **WebUI:** Updated Turkish, Italian, Japanese, Arabic translation. (@cvnertnc, @GRgabrix, @reindex-ot, @ZG089)
### v4.0
- **WebUI:** Fixed `Failed to fetch secutiry patch` issue in most condition.
- **WebUI:** Fixed `Failed to fetch security patch` issue in most condition.
- **WebUI:** Added support for [qwq233's TrickyStore fork](https://github.com/qwq233/TrickyStore).
- **WebUI:** Provide option to download latest canary version in about menu.
- **action:** Removed MMRL from action redirect WebUI since MMRL no longer provide built-in WebUI. (#66, @ThanhCN0)
- **WebUI:** Unknown keybox option no longer rely on internet connection.
- **WebUI:** Fixed built-in update mechanism might fail in some condition. (@backslashxx)
- **WebUI:** Translation service now is avaible on crowdin, view [translation guide](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/main/module/webui/locales/GUIDE.md) for more detail. You can reach our crowdin website in the WebUI langauge menu too.
- **WebUI:** Translation service now is available on crowdin, view [translation guide](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/main/module/webui/locales/GUIDE.md) for more detail. You can reach our crowdin website in the WebUI language menu too.
- **WebUI:** Added Ukrainian (#43, @StepanSad), Greek (#61, @Goku818) translation.
- **WebUI:** Updated Japanese, Indonesian, Arabic, Polish, French, Portuguese, Ukrainian translation. (@reindex-ot, @Rem01Gaming, @ZG089, @Bladius2024, @GhostFRR, @SecretGogeta, [crowdin@IlliaS](https://crowdin.com/profile/illias))

Binary file not shown.

Binary file not shown.

View File

@@ -118,12 +118,24 @@ release_note() {
}
set_security_patch() {
# Find pif.json
[ -f "/data/adb/modules/playintegrityfix/pif.json" ] && PIF="/data/adb/modules/playintegrityfix/pif.json"
[ -f "/data/adb/pif.json" ] && PIF="/data/adb/pif.json"
[ -f "/data/adb/modules/playintegrityfix/custom.pif.json" ] && PIF="/data/adb/modules/playintegrityfix/custom.pif.json"
# Look for security patch from PIF
if [ -f "/data/adb/modules/playintegrityfix/pif.json" ]; then
PIF="/data/adb/modules/playintegrityfix/pif.json"
[ -f "/data/adb/pif.json" ] && PIF="/data/adb/pif.json"
elif [ -f "/data/adb/modules/playintegrityfix/pif.prop" ]; then
PIF="/data/adb/modules/playintegrityfix/pif.prop"
[ -f "/data/adb/pif.prop" ] && PIF="/data/adb/pif.prop"
elif [ -f "/data/adb/modules/playintegrityfix/custom.pif.json" ]; then
PIF="/data/adb/modules/playintegrityfix/custom.pif.json"
fi
security_patch=$(grep '"SECURITY_PATCH"' "$PIF" | sed 's/.*: "//; s/".*//')
if [ -n "$PIF" ]; then
if echo "$PIF" | grep -q "prop"; then
security_patch=$(grep 'SECURITY_PATCH' "$PIF" | cut -d'=' -f2 | tr -d '\n')
else
security_patch=$(grep '"SECURITY_PATCH"' "$PIF" | sed 's/.*: "//; s/".*//')
fi
fi
[ -z "$security_patch" ] && security_patch=$(getprop ro.build.version.security_patch) # Fallback
formatted_security_patch=$(echo "$security_patch" | sed 's/-//g')
@@ -131,19 +143,23 @@ set_security_patch() {
TODAY=$(date +%Y%m%d)
if [ -n "$formatted_security_patch" ] && [ "$TODAY" -lt "$security_patch_after_1y" ]; then
TS_version=$(grep "versionCode=" "/data/adb/modules/tricky_store/module.prop" | cut -d'=' -f2)
# Official TrickyStore which supports custom security patch
if [ "$TS_version" -ge 158 ]; then
SECURITY_PATCH_FILE="/data/adb/tricky_store/security_patch.txt"
printf "system=prop\nboot=%s\nvendor=%s\n" "$security_patch" "$security_patch" > "$SECURITY_PATCH_FILE"
chmod 644 "$SECURITY_PATCH_FILE"
# James Clef's TrickyStore fork (GitHub@qwq233/TrickyStore)
elif grep -q "James" "/data/adb/modules/tricky_store/module.prop"; then
if grep -q "James" "/data/adb/modules/tricky_store/module.prop" && ! grep -q "beakthoven" "/data/adb/modules/tricky_store/module.prop"; then
SECURITY_PATCH_FILE="/data/adb/tricky_store/devconfig.toml"
if grep -q "^securityPatch" "$SECURITY_PATCH_FILE"; then
sed -i "s/^securityPatch .*/securityPatch = \"$security_patch\"/" "$SECURITY_PATCH_FILE"
else
echo "securityPatch = \"$security_patch\"" >> "$SECURITY_PATCH_FILE"
if ! grep -q "^\\[deviceProps\\]" "$SECURITY_PATCH_FILE"; then
echo "securityPatch = \"$security_patch\"" >> "$SECURITY_PATCH_FILE"
else
sed -i "s/^\[deviceProps\]/securityPatch = \"$security_patch\"\n&/" "$SECURITY_PATCH_FILE"
fi
fi
# Dakkshesh's fork (GitHub@beakthoven/TrickyStore) or Official TrickyStore which supports custom security patch
elif [ "$TS_version" -ge 158 ] || grep -q "beakthoven" "/data/adb/modules/tricky_store/module.prop"; then
SECURITY_PATCH_FILE="/data/adb/tricky_store/security_patch.txt"
printf "system=prop\nboot=%s\nvendor=%s\n" "$security_patch" "$security_patch" > "$SECURITY_PATCH_FILE"
chmod 644 "$SECURITY_PATCH_FILE"
# Other
else
resetprop ro.vendor.build.security_patch "$security_patch"

View File

@@ -1,7 +1,7 @@
id=TA_utl
name=Tricky Addon - Update Target List
version=v4.0
versionCode=538
version=v4.1
versionCode=572
author=KOWX712
description=A WebUI to conifgure tricky store target.txt
updateJson=https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/update.json

View File

@@ -108,12 +108,12 @@ echo "# This file is generated from service.sh to speed up load time" > "$OUTPUT
# Get list of third party apps and specific system apps, then cache app name
# Check Xposed module
{
pm list packages -3 2>/dev/null
pm list packages -s | grep -E "$SYSTEM_APP" 2>/dev/null || true
} | awk -F: '{print $2}' | while read -r PACKAGE; do
pm list packages -3 </dev/null 2>&1 | cat | awk -F: '{print $2}' 2>/dev/null
pm list packages -s </dev/null 2>&1 | cat | awk -F: '{print $2}' | grep -Ex "$SYSTEM_APP" 2>/dev/null || true
} | while read -r PACKAGE; do
# Get APK path for the package
APK_PATH=$(pm path "$PACKAGE" 2>/dev/null | head -n1 | awk -F: '{print $2}')
APP_NAME=$(aapt dump badging "$APK_PATH" 2>/dev/null | grep "application-label:" | sed "s/application-label://g; s/'//g")
APP_NAME=$(aapt dump badging "$APK_PATH" 2>/dev/null | grep "application-label:" | sed "s/application-label://g; s/'//g" | tr -d '\n')
[ -z "$APP_NAME" ] && APP_NAME="$PACKAGE"
echo " {\"app_name\": \"$APP_NAME\", \"package_name\": \"$PACKAGE\"}," >> "$OUTPUT_APP"

View File

@@ -27,16 +27,14 @@
<div class="header">
<div id="title" data-i18n="header_title"></div><span id="module-version"></span>
<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>
<svg xmlns="http://www.w3.org/2000/svg" height="21px" viewBox="0 -960 960 960" width="21px"><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">
<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 -960 960 960" width="20px"><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 class="language-dropdown">
<button class="language-button">
<i class="language-icon">
<svg xmlns="http://www.w3.org/2000/svg" height="22px" viewBox="0 -960 960 960" width="22px"><path d="M480-80q-82 0-155-31.5t-127.5-86Q143-252 111.5-325T80-480q0-83 31.5-155.5t86-127Q252-817 325-848.5T480-880q83 0 155.5 31.5t127 86q54.5 54.5 86 127T880-480q0 82-31.5 155t-86 127.5q-54.5 54.5-127 86T480-80Zm0-82q26-36 45-75t31-83H404q12 44 31 83t45 75Zm-104-16q-18-33-31.5-68.5T322-320H204q29 50 72.5 87t99.5 55Zm208 0q56-18 99.5-55t72.5-87H638q-9 38-22.5 73.5T584-178ZM170-400h136q-3-20-4.5-39.5T300-480q0-21 1.5-40.5T306-560H170q-5 20-7.5 39.5T160-480q0 21 2.5 40.5T170-400Zm216 0h188q3-20 4.5-39.5T580-480q0-21-1.5-40.5T574-560H386q-3 20-4.5 39.5T380-480q0 21 1.5 40.5T386-400Zm268 0h136q5-20 7.5-39.5T800-480q0-21-2.5-40.5T790-560H654q3 20 4.5 39.5T660-480q0 21-1.5 40.5T654-400Zm-16-240h118q-29-50-72.5-87T584-782q18 33 31.5 68.5T638-640Zm-234 0h152q-12-44-31-83t-45-75q-26 36-45 75t-31 83Zm-200 0h118q9-38 22.5-73.5T376-782q-56 18-99.5 55T204-640Z"/></svg>
</i>
<svg xmlns="http://www.w3.org/2000/svg" height="22px" viewBox="0 -960 960 960" width="22px"><path d="M480-80q-82 0-155-31.5t-127.5-86Q143-252 111.5-325T80-480q0-83 31.5-155.5t86-127Q252-817 325-848.5T480-880q83 0 155.5 31.5t127 86q54.5 54.5 86 127T880-480q0 82-31.5 155t-86 127.5q-54.5 54.5-127 86T480-80Zm0-82q26-36 45-75t31-83H404q12 44 31 83t45 75Zm-104-16q-18-33-31.5-68.5T322-320H204q29 50 72.5 87t99.5 55Zm208 0q56-18 99.5-55t72.5-87H638q-9 38-22.5 73.5T584-178ZM170-400h136q-3-20-4.5-39.5T300-480q0-21 1.5-40.5T306-560H170q-5 20-7.5 39.5T160-480q0 21 2.5 40.5T170-400Zm216 0h188q3-20 4.5-39.5T580-480q0-21-1.5-40.5T574-560H386q-3 20-4.5 39.5T380-480q0 21 1.5 40.5T386-400Zm268 0h136q5-20 7.5-39.5T800-480q0-21-2.5-40.5T790-560H654q3 20 4.5 39.5T660-480q0 21-1.5 40.5T654-400Zm-16-240h118q-29-50-72.5-87T584-782q18 33 31.5 68.5T638-640Zm-234 0h152q-12-44-31-83t-45-75q-26 36-45 75t-31 83Zm-200 0h118q9-38 22.5-73.5T376-782q-56 18-99.5 55T204-640Z"/></svg>
</button>
<div class="language-menu blur-box"></div>
<div id="language-overlay" class="language-overlay"></div>
@@ -84,7 +82,6 @@
<li class="ripple-element" id="customkb" data-i18n="menu_set_custom_keybox"></li>
<li class="ripple-element" id="boot-hash" data-i18n="menu_set_verified_boot_hash"></li>
<li class="ripple-element" id="security-patch" data-i18n="menu_set_security_patch"></li>
<li class="ripple-element" id="shortcut" data-i18n="menu_shortcut"></li>
<li class="ripple-element" id="about" data-i18n="menu_about"></li>
</ul>
</div>
@@ -293,14 +290,54 @@
</div>
<!-- James' fork input -->
<div id="james-mode-inputs" class="normal-mode-inputs hidden">
<div id="devconfig-mode-inputs" class="normal-mode-inputs hidden">
<div class="input-group">
<label id="security_patch-james">Security Patch</label>
<input type="text" id="james-patch" placeholder="2025-01-01" autocapitalize="none" oninput="formatDate(this)" maxlength="10">
<label>Security Patch</label>
<input type="text" id="devconfig-securityPatch" placeholder="2025-01-01" autocapitalize="none" oninput="formatDate(this)" maxlength="10">
</div>
<div class="input-group">
<label id="os-james">OS Version</label>
<input type="text" id="james-os" placeholder="34" maxlength="2" autocapitalize="none">
<label>OS Version</label>
<input type="text" id="devconfig-osVersion" placeholder="34" maxlength="2" autocapitalize="none">
</div>
<div class="input-group">
<br>
<label>Device Property</label>
</div>
<div class="input-group">
<label>brand</label>
<input type="text" id="devconfig-brand" placeholder="google" autocapitalize="none">
</div>
<div class="input-group">
<label>device</label>
<input type="text" id="devconfig-device" placeholder="oriole" autocapitalize="none">
</div>
<div class="input-group">
<label>product</label>
<input type="text" id="devconfig-product" placeholder="oriole_beta" autocapitalize="none">
</div>
<div class="input-group">
<label>manufacturer</label>
<input type="text" id="devconfig-manufacturer" placeholder="Google" autocapitalize="none">
</div>
<div class="input-group">
<label>model</label>
<input type="text" id="devconfig-model" placeholder="Pixel 6" autocapitalize="none">
</div>
<div class="input-group">
<label>serial</label>
<input type="text" id="devconfig-serial" placeholder="5e043839" autocapitalize="none">
</div>
<div class="input-group">
<label>meid</label>
<input type="text" id="devconfig-meid" placeholder="32b6af4d93aca6" autocapitalize="none">
</div>
<div class="input-group">
<label>imei</label>
<input type="text" id="devconfig-imei" placeholder="73598126407" autocapitalize="none">
</div>
<div class="input-group">
<label>imei2</label>
<input type="text" id="devconfig-imei2" placeholder="77983102465" autocapitalize="none">
</div>
</div>

View File

@@ -0,0 +1,89 @@
# Translation Contributor List
## Arabic
- [ZG089](https://github.com/ZG089)
---
## Azerbaijani
- [mnasibzade](https://github.com/mnasibzade)
---
## Chinese (Simplified)
- [xiaokuqwq](https://github.com/xiaokuqwq)
---
## French
- [anaelle-dev](https://github.com/anaelle-dev)
- [GhostFRR](https://github.com/GhostFRR)
---
## German
- [xxOrdulu52xx](https://github.com/xxOrdulu52xx)
---
## Greek
- [Goku818](https://github.com/Goku818)
---
## Indonesian
- [chisewaguri](https://github.com/chisewaguri)
- [Rem01Gaming](https://github.com/Rem01Gaming)
---
## Italian
- [luigimak](https://github.com/luigimak)
- [GRgabrix](https://github.com/GRgabrix)
---
## Japanese
- [reindex-ot](https://github.com/reindex-ot)
---
### Polish
- [Bladius2024](https://github.com/Bladius2024)
---
## Portuguese (Brazilian)
- [JeanxPereira](https://github.com/JeanxPereira)
- [SecretGogeta](https://github.com/SecretGogeta)
---
## Spanish
- [Keinta15](https://github.com/Keinta15)
---
## Turkish
- [berkmirsatk](https://github.com/berkmirsatk)
- [cvnertnc](https://github.com/cvnertnc)
---
## Ukrainian
- [StepanSad](https://github.com/StepanSad)
- [IlliaS](https://github.com/IlliaS)

View File

@@ -3,11 +3,11 @@
## Update Existing Language
- Update translation in [Crowdin](https://crowdin.com/project/TA_utl).
- Since crowdin didn't preserve authorship, you can also leave a message in comment section of the pull request that opened by crowdin bot so I can give credit.
- Add your name to [translation contibutor list](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/main/module/webui/locales/CONTRIBUTOR.md) (Issue/Pull Request).
---
## Add a New Language
- Create you translation based on [template](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/main/module/webui/locales/template.xml).
- Create an [issues](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/issues/new/choose) for language request and upload translated file.
- Create an [issues](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/issues/new/choose) for language request and upload translated file in zip format (compressed).

View File

@@ -1,14 +1,17 @@
{
"ar": "العربية",
"az": "Azərbaycanca",
"bn": "বাংলা",
"de": "Deutsch",
"el": "Ελληνικά",
"en": "English",
"es": "Español",
"es-ES": "Español",
"fa": "فارسی",
"fr": "Français",
"id": "Bahasa Indonesia",
"it": "Italiano",
"ja": "日本語",
"pt": "Português",
"pt-BR": "Português",
"pl": "Polski",
"ru": "Русский",
"tl": "Filipino",

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="system_default">الإعدادات الافتراضية للنظام</string>
<string name="more_language">المزيد</string>
<!-- Header -->
<string name="header_title">Tricky Addon</string>
<!-- Help Menu-->
@@ -18,7 +19,7 @@
<string name="help_add_system_app">إضافة تطبيق نظام</string>
<string name="help_add_system_app_description">إضافة تطبيق نظام محدد إلى قائمة التطبيقات.</string>
<string name="help_set_keybox">تعيين AOSP و Keybox صالح</string>
<string name="help_set_keybox_description">استبدال tricky store keybox.xml. سيتم استبدال keybox AOSP إذا لم يكن هناك keybox صالح آخر. يتطلب خيار keybox الصالح اتصالاً بالإنترنت.</string>
<string name="help_set_keybox_description">استبدال tricky store keybox.xml. يتطلب خيار keybox الصالح اتصالاً بالإنترنت.</string>
<string name="help_set_custom_keybox">تعيين Keybox مخصص</string>
<string name="help_set_custom_keybox_description">استيراد keybox من تخزين جهازك. يدعم فقط ملف xml.</string>
<string name="help_set_security_patch">تعيين تصحيح الأمان</string>
@@ -52,7 +53,6 @@
<string name="menu_set_verified_boot_hash">تعيين تجزئة التمهيد الموثوق</string>
<string name="menu_set_security_patch">تعيين تصحيح الأمان</string>
<string name="menu_about">حول</string>
<string name="menu_shortcut">إنشاء اختصار على الشاشة الرئيسية</string>
<!-- Boot Hash -->
<string name="boot_hash_title">تجزئة التمهيد</string>
<string name="boot_hash_input_placeholder">الصق تجزئة التمهيد الموثوق هنا</string>
@@ -62,6 +62,7 @@
<string name="about_module_name_line2">تحديث قائمة الأهداف</string>
<string name="about_by">بواسطة</string>
<string name="about_telegram_channel">قناة التليجرام</string>
<string name="about_canary_update">تحديث إلى أحدث إصدار تجريبي</string>
<string name="about_disclaimer">هذه الوحدة ليست جزءًا من وحدة Tricky Store. لا تقم بالإبلاغ عن أي مشاكل إلى Tricky Store إذا واجهت أيًا منها.</string>
<string name="about_acknowledgment">شكر وتقدير</string>
<!-- Prompt -->
@@ -77,7 +78,9 @@
<string name="prompt_save_error">فشل في حفظ التكوين</string>
<string name="prompt_uninstall_prompt">سيتم إزالة WebUI بعد إعادة التشغيل</string>
<string name="prompt_uninstall_failed">فشل في إلغاء تثبيت WebUI</string>
<string name="prompt_checking_update">جار التحقق من التحديثات...</string>
<string name="prompt_new_update">تحديث جديد متاح!</string>
<string name="prompt_no_update">لا توجد تحديثات متوفرة حاليا</string>
<string name="prompt_downloading">جارٍ تنزيل التحديث الجديد...</string>
<string name="prompt_downloaded">اكتمل التنزيل</string>
<string name="prompt_download_fail">فشل في تنزيل التحديث</string>
@@ -91,7 +94,6 @@
<string name="prompt_no_file_selected">لم يتم اختيار أي ملف</string>
<string name="prompt_system_app_not_found">لم يتم العثور على تطبيق النظام</string>
<string name="prompt_system_app_error">فشل في إضافة تطبيق النظام</string>
<string name="prompt_shortcut_created">تم إنشاء اختصار على الشاشة الرئيسية</string>
<!-- Security Patch -->
<string name="security_patch_title">تصحيح الأمان</string>
<string name="security_patch_advanced_mode">متقدم</string>

View File

@@ -18,7 +18,7 @@
<string name="help_add_system_app">Sistem Tətbiqi Əlavə et</string>
<string name="help_add_system_app_description">Müəyyən bir sistem tətbiqini tətbiq siyahısına əlavə et.</string>
<string name="help_set_keybox">AOSP &amp; Etibarlı Keybox təyin et</string>
<string name="help_set_keybox_description">Tricky store keybox.xml-ni dəyişdir. Əgər etibarlı keybox yoxdursa, AOSP keybox dəyişdiriləcək. Etibarlı keybox seçimi İnternet bağlantısı tələb edir.</string>
<string name="help_set_keybox_description">Tricky store keybox.xml-ni dəyişdir. Etibarlı keybox seçimi İnternet bağlantısı tələb edir.</string>
<string name="help_set_custom_keybox">Özəl Keybox təyin et</string>
<string name="help_set_custom_keybox_description">Keybox-u cihaz yaddaşından idxal et. Yalnız xml faylını dəstəkləyir.</string>
<string name="help_set_security_patch">Təhlükəsizlik Təkmilləşdirməsini təyin et</string>
@@ -52,7 +52,6 @@
<string name="menu_set_verified_boot_hash">Təsdiqlənmiş Boot Hash təyin et</string>
<string name="menu_set_security_patch">Təhlükəsizlik Təkmilləşdirməsini təyin et</string>
<string name="menu_about">Haqqında</string>
<string name="menu_shortcut">Ana ekran qısayolu yarat</string>
<!-- Boot Hash -->
<string name="boot_hash_title">Boot Hash</string>
<string name="boot_hash_input_placeholder">Təsdiqlənmiş Boot Hash-ı buraya yapışdırın</string>
@@ -91,7 +90,6 @@
<string name="prompt_no_file_selected">Fayl seçilməyib</string>
<string name="prompt_system_app_not_found">Sistem tətbiqi tapılmadı</string>
<string name="prompt_system_app_error">Sistem tətbiqini əlavə etmək mümkün olmadı</string>
<string name="prompt_shortcut_created">Ana ekran qısayolu yaradıldı</string>
<!-- Security Patch -->
<string name="security_patch_title">Təhlükəsizlik Təkmilləşdirməsi</string>
<string name="security_patch_advanced_mode">Ətraflı</string>

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="system_default">সিস্টেম পূর্ব-নির্ধারিত</string>
<string name="more_language">আরো</string>
<!-- Header -->
<!-- Help Menu-->
<string name="help_help_instructions">নির্দেশনা</string>
<string name="help_save_and_update">সেভ করুন</string>
<string name="help_save_and_update_description">বর্তমান কনফিগারেশন target.txt এ সেভ করুন।</string>
<string name="help_refresh">রিফ্রেশ</string>
<string name="help_refresh_description">অ্যাপ তালিকা এবং এক্সক্লুড তালিকা রিফ্রেশ করুন।</string>
<string name="help_select_deselect">সব নির্বাচন করুন এবং নির্বাচন প্রত্যাহার করুন</string>
<string name="help_select_description">বর্তমান ইন্টারফেসে সব অ্যাপ নির্বাচন করুন বা নির্বাচন প্রত্যাহার করুন।</string>
<string name="help_select_denylist">DenyList থেকে নির্বাচন করুন</string>
<string name="help_select_denylist_description">শুধুমাত্র Magisk এ উপলব্ধ, DenyList এ থাকা অ্যাপগুলি নির্বাচন করুন। সুপারিশকৃত।</string>
<string name="help_deselect_unnecessary">অপ্রয়োজনীয় নির্বাচন প্রত্যাহার করুন</string>
<string name="help_deselect_unnecessary_description">অপ্রয়োজনীয় বিভাগ: Xposed মডিউল, root ম্যানেজার, root-সম্পর্কিত অ্যাপ, এবং সাধারণ অ্যাপ যা কখনও bootloader স্ট্যাটাস চেক করে না। এই অপশন ইন্টারনেট সংযোগ প্রয়োজন।</string>
<string name="help_add_system_app">সিস্টেম অ্যাপ যোগ করুন</string>
<string name="help_add_system_app_description">অ্যাপ তালিকায় নির্দিষ্ট সিস্টেম অ্যাপ যোগ করুন।</string>
<string name="help_set_keybox">AOSP এবং Valid Keybox সেট করুন</string>
<string name="help_set_keybox_description">Tricky store keybox.xml প্রতিস্থাপন করুন। Valid keybox অপশন ইন্টারনেট সংযোগ প্রয়োজন এবং সবসময় উপলব্ধ নয়।</string>
<string name="help_set_custom_keybox">Custom Keybox সেট করুন</string>
<string name="help_set_custom_keybox_description">আপনার ডিভাইস স্টোরেজ থেকে keybox ইমপোর্ট করুন। শুধুমাত্র xml ফাইল সমর্থন করে।</string>
<string name="help_set_security_patch">Security Patch সেট করুন</string>
<string name="help_set_security_patch_description">Custom security patch spoof সেট করুন। Auto config PIF মডিউল থেকে security patch ব্যবহার করবে। খালি রাখুন এবং সেভ করুন auto config নিষ্ক্রিয় করতে।</string>
<string name="help_set_verified_boot_hash">Verified Boot Hash সেট করুন</string>
<string name="help_set_verified_boot_hash_description">Key Attestation Demo থেকে verifiedBootHash মান পান। ro.boot.vbmeta.digest রিসেট করে অস্বাভাবিক boot state ঠিক করুন।</string>
<!-- Update -->
<string name="update_update_available">একটি নতুন সংস্করণ প্রস্তুত</string>
<string name="update_redirect_to_release">সর্বশেষ সংস্করণ ডাউনলোড করতে ট্যাপ করুন</string>
<string name="update_changelog">পরিবর্তন তালিকা</string>
<string name="update_install">ইনস্টল করুন</string>
<string name="update_reboot">রিবুট</string>
<!-- Search -->
<string name="search_bar_search_placeholder">খুঁজুন</string>
<!-- Functional Button -->
<string name="functional_button_save_and_update_button">সেভ করুন</string>
<string name="functional_button_uninstall_webui">WebUI আনইনস্টল করুন</string>
<!-- Loading -->
<string name="loading_loading">লোড হচ্ছে...</string>
<!-- Menu -->
<string name="menu_refresh">রিফ্রেশ</string>
<string name="menu_select_all">সব নির্বাচন করুন</string>
<string name="menu_deselect_all">সমস্ত নির্বাচন প্রত্যাহার করুন</string>
<string name="menu_select_denylist">DenyList থেকে নির্বাচন করুন</string>
<string name="menu_deselect_unnecessary">অপ্রয়োজনীয় নির্বাচন প্রত্যাহার করুন</string>
<string name="menu_add_system_app">সিস্টেম অ্যাপ যোগ করুন</string>
<string name="menu_set_aosp_keybox">AOSP Keybox সেট করুন</string>
<string name="menu_set_unknown_keybox">Unknown Keybox সেট করুন</string>
<string name="menu_set_valid_keybox">Valid Keybox সেট করুন</string>
<string name="menu_set_custom_keybox">Custom Keybox সেট করুন</string>
<string name="menu_set_verified_boot_hash">Verified Boot Hash সেট করুন</string>
<string name="menu_set_security_patch">Security Patch সেট করুন</string>
<string name="menu_about">সম্পর্কে</string>
<!-- Boot Hash -->
<string name="boot_hash_input_placeholder">আপনার verified Boot Hash এখানে পেস্ট করুন</string>
<string name="boot_hash_save_button">সেভ করুন</string>
<!-- About -->
<string name="about_by">দ্বারা</string>
<string name="about_telegram_channel">টেলিগ্রাম চ্যানেল</string>
<string name="about_canary_update">সর্বশেষ canary সংস্করণে আপডেট করুন</string>
<string name="about_disclaimer">এই মডিউলটি Tricky Store মডিউলের অংশ নয়। সমস্যা হলে Tricky Store এ রিপোর্ট করবেন না।</string>
<string name="about_acknowledgment">কৃতজ্ঞতা স্বীকার</string>
<!-- Prompt -->
<string name="prompt_no_internet">অনুগ্রহ করে আপনার ইন্টারনেট সংযোগ চেক করুন।</string>
<string name="prompt_aosp_key_set">AOSP keybox সফলভাবে সেট হয়েছে</string>
<string name="prompt_key_set_error">Keybox আপডেট করতে ব্যর্থ</string>
<string name="prompt_unknown_key_set">Unknown keybox সফলভাবে সেট হয়েছে</string>
<string name="prompt_valid_key_set">Valid keybox সফলভাবে সেট হয়েছে</string>
<string name="prompt_no_valid">কোন valid keybox পাওয়া যায়নি।</string>
<string name="prompt_boot_hash_set">Verified Boot Hash সফলভাবে সেভ হয়েছে</string>
<string name="prompt_boot_hash_set_error">Verified Boot Hash আপডেট করতে ব্যর্থ</string>
<string name="prompt_saved_target">কনফিগ target.txt এ সেভ হয়েছে</string>
<string name="prompt_save_error">কনফিগ সেভ করতে ব্যর্থ</string>
<string name="prompt_uninstall_prompt">রিবুটের পর WebUI সরানো হবে</string>
<string name="prompt_uninstall_failed">WebUI আনইনস্টল করতে ব্যর্থ</string>
<string name="prompt_checking_update">হালনাগাদের জন্য পরীক্ষা করা হচ্ছে...</string>
<string name="prompt_new_update">একটি নতুন আপডেট উপলব্ধ</string>
<string name="prompt_no_update">বর্তমানে কোন আপডেট উপলব্ধ নেই</string>
<string name="prompt_downloading">নতুন আপডেট ডাউনলোড হচ্ছে...</string>
<string name="prompt_downloaded">ডাউনলোড সম্পন্ন হয়েছে</string>
<string name="prompt_download_fail">আপডেট ডাউনলোড করতে ব্যর্থ</string>
<string name="prompt_installing">আপডেট ইন্সটল হচ্ছে...</string>
<string name="prompt_installed">সফলভাবে ইন্সটল হয়েছে, এখন রিবুট করুন।</string>
<string name="prompt_install_fail">ইন্সটল করতে ব্যর্থ, অনুগ্রহ করে ম্যানুয়ালি আপডেট করুন</string>
<string name="prompt_rebooting">রিবুট হচ্ছে...</string>
<string name="prompt_reboot_fail">রিবুট করতে ব্যর্থ, অনুগ্রহ করে ম্যানুয়ালি রিবুট করুন</string>
<string name="prompt_custom_key_set">Custom keybox সফলভাবে সেট হয়েছে</string>
<string name="prompt_custom_key_set_error">Custom keybox সেট করতে ব্যর্থ</string>
<string name="prompt_no_file_selected">কোনো ফাইল সিলেক্ট করা হয় নি</string>
<string name="prompt_system_app_not_found">সিস্টেম অ্যাপ পাওয়া যায়নি</string>
<string name="prompt_system_app_error">সিস্টেম অ্যাপ যোগ করতে ব্যর্থ</string>
<!-- Security Patch -->
<string name="security_patch_advanced_mode">অগ্রসর</string>
<string name="security_patch_get_date">Security Patch Date পান</string>
<string name="security_patch_auto">অটো</string>
<string name="security_patch_save">সেভ করুন</string>
<string name="security_patch_fetching">আনয়ন হচ্ছে...</string>
<string name="security_patch_fetched">সম্পন্ন</string>
<string name="security_patch_get_failed">Security patch date আনয়ন করতে ব্যর্থ</string>
<string name="security_patch_unable_to_connect">source.android.com এর সাথে সংযোগ করতে অক্ষম</string>
<string name="security_patch_auto_success">Auto config সফলভাবে সক্রিয় হয়েছে</string>
<string name="security_patch_auto_failed">Auto config সক্রিয় করতে ব্যর্থ</string>
<string name="security_patch_save_success">Security patch সফলভাবে সেভ হয়েছে</string>
<string name="security_patch_save_failed">Security patch সেভ করতে ব্যর্থ</string>
<string name="security_patch_value_empty">Security patch কনফিগারেশন নিষ্ক্রিয়</string>
<string name="security_patch_invalid_all">অবৈধ ফর্ম্যাট</string>
<string name="security_patch_invalid_boot">অবৈধ boot ফর্ম্যাট</string>
<string name="security_patch_invalid_system">অবৈধ system ফর্ম্যাট</string>
<string name="security_patch_invalid_vendor">অবৈধ vendor ফর্ম্যাট</string>
<!-- Add System App -->
<string name="add_system_app_title">সিস্টেম অ্যাপ যোগ করুন</string>
<string name="add_system_app_add">যোগ করুন</string>
<string name="add_system_app_current_list">বর্তমান সিস্টেম অ্যাপ তালিকা</string>
<!-- Uninstall confirmation -->
<string name="confirmation_uninstall_title">আনইনস্টল নিশ্চিত করুন?</string>
<string name="confirmation_uninstall_message">আপনি কি নিশ্চিত যে আপনি Tricky Addon আনইনস্টল করতে চান</string>
<string name="confirmation_uninstall_cancel">ক্যানসেল করুন</string>
<string name="confirmation_uninstall_confirm">নিশ্চিত করুন</string>
</resources>

View File

@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="system_default">Systemstandard</string>
<string name="more_language">Mehr</string>
<!-- Header -->
<!-- Help Menu-->
<string name="help_help_instructions">Anleitung</string>
<string name="help_save_and_update">Speichern</string>
<string name="help_save_and_update_description">Aktuelle Konfiguration in target.txt speichern.</string>
<string name="help_refresh">Aktualisieren</string>
<string name="help_refresh_description">App-Liste und Ausschlussliste aktualisieren.</string>
<string name="help_select_deselect">Alle auswählen &amp; abwählen</string>
<string name="help_select_description">Alle Apps in der aktuellen Ansicht auswählen oder abwählen.</string>
<string name="help_select_denylist">Aus DenyList auswählen</string>
<string name="help_select_denylist_description">Nur in Magisk verfügbar, wähle Apps aus der DenyList aus. Empfohlen.</string>
<string name="help_deselect_unnecessary">Unnötige abwählen</string>
<string name="help_deselect_unnecessary_description">Unnötige Kategorie: Xposed-Module, Root-Manager, Root-bezogene Apps und allgemeine Apps, die den Bootloader-Status nie prüfen. Diese Option benötigt eine Internetverbindung.</string>
<string name="help_add_system_app">System-App hinzufügen</string>
<string name="help_add_system_app_description">Füge eine bestimmte System-App zur App-Liste hinzu.</string>
<string name="help_set_keybox">AOSP- &amp; gültige Keybox setzen</string>
<string name="help_set_keybox_description">Ersetze tricky store keybox.xml. Die gültige Keybox-Option benötigt eine Internetverbindung und ist nicht immer verfügbar.</string>
<string name="help_set_custom_keybox">Benutzerdefinierte Keybox setzen</string>
<string name="help_set_custom_keybox_description">Importiere eine Keybox aus dem Gerätespeicher. Nur XML-Dateien werden unterstützt.</string>
<string name="help_set_security_patch">Sicherheitspatch setzen</string>
<string name="help_set_security_patch_description">Benutzerdefiniertes Sicherheitspatch-Spoofing setzen. Auto-Konfiguration verwendet den Sicherheitspatch vom PIF-Modul. Leer lassen und speichern, um Auto-Konfiguration zu deaktivieren.</string>
<string name="help_set_verified_boot_hash">Verifizierten Boot-Hash setzen</string>
<string name="help_set_verified_boot_hash_description">Wert „verifiedBootHash“ aus der Key Attestation Demo abrufen. Behebt einen abnormalen Bootzustand durch Zurücksetzen von ro.boot.vbmeta.digest.</string>
<!-- Update -->
<string name="update_update_available">Eine neue Version ist verfügbar</string>
<string name="update_redirect_to_release">Tippe, um die neueste Version herunterzuladen</string>
<string name="update_changelog">Änderungsprotokoll</string>
<string name="update_install">Installieren</string>
<string name="update_reboot">Neustart</string>
<!-- Search -->
<string name="search_bar_search_placeholder">Suchen</string>
<!-- Functional Button -->
<string name="functional_button_save_and_update_button">Speichern</string>
<string name="functional_button_uninstall_webui">WebUI deinstallieren</string>
<!-- Loading -->
<string name="loading_loading">Lädt...</string>
<!-- Menu -->
<string name="menu_refresh">Aktualisieren</string>
<string name="menu_select_all">Alle auswählen</string>
<string name="menu_deselect_all">Auswahl aufheben</string>
<string name="menu_select_denylist">Aus DenyList auswählen</string>
<string name="menu_deselect_unnecessary">Unnötige abwählen</string>
<string name="menu_add_system_app">System-App hinzufügen</string>
<string name="menu_set_aosp_keybox">AOSP-Keybox setzen</string>
<string name="menu_set_unknown_keybox">Unbekannte Keybox setzen</string>
<string name="menu_set_valid_keybox">Gültige Keybox setzen</string>
<string name="menu_set_custom_keybox">Benutzerdefinierte Keybox setzen</string>
<string name="menu_set_verified_boot_hash">Verifizierten Boot-Hash setzen</string>
<string name="menu_set_security_patch">Sicherheitspatch setzen</string>
<string name="menu_about">Über</string>
<!-- Boot Hash -->
<string name="boot_hash_title">Boot-Hash</string>
<string name="boot_hash_input_placeholder">Füge hier deinen verifizierten Boot-Hash ein</string>
<string name="boot_hash_save_button">Speichern</string>
<!-- About -->
<string name="about_module_name_line2">Ziel-Liste aktualisieren</string>
<string name="about_by">von</string>
<string name="about_telegram_channel">Telegram-Kanal</string>
<string name="about_canary_update">Auf die neueste Canary-Version aktualisieren</string>
<string name="about_disclaimer">Dieses Modul ist kein Teil des Tricky Store Moduls. BITTE melde keine Probleme an Tricky Store.</string>
<string name="about_acknowledgment">Danksagung</string>
<!-- Prompt -->
<string name="prompt_no_internet">Bitte überprüfe deine Internetverbindung</string>
<string name="prompt_aosp_key_set">AOSP-Keybox erfolgreich gesetzt</string>
<string name="prompt_key_set_error">Fehler beim Aktualisieren der Keybox</string>
<string name="prompt_unknown_key_set">Unbekannte Keybox erfolgreich gesetzt</string>
<string name="prompt_valid_key_set">Gültige Keybox erfolgreich gesetzt</string>
<string name="prompt_no_valid">Keine gültige Keybox gefunden.</string>
<string name="prompt_boot_hash_set">Verifizierter Boot-Hash erfolgreich gespeichert</string>
<string name="prompt_boot_hash_set_error">Fehler beim Speichern des verifizierten Boot-Hash</string>
<string name="prompt_saved_target">Konfiguration in target.txt gespeichert</string>
<string name="prompt_save_error">Fehler beim Speichern der Konfiguration</string>
<string name="prompt_uninstall_prompt">WebUI wird nach dem Neustart entfernt</string>
<string name="prompt_uninstall_failed">Fehler bei der Deinstallation der WebUI</string>
<string name="prompt_checking_update">Suche nach Updates...</string>
<string name="prompt_new_update">Ein neues Update ist verfügbar!</string>
<string name="prompt_no_update">Derzeit sind keine Updates verfügbar</string>
<string name="prompt_downloading">Neues Update wird heruntergeladen...</string>
<string name="prompt_downloaded">Download abgeschlossen</string>
<string name="prompt_download_fail">Fehler beim Herunterladen des Updates</string>
<string name="prompt_installing">Update wird installiert...</string>
<string name="prompt_installed">Erfolgreich installiert, jetzt neu starten.</string>
<string name="prompt_install_fail">Fehler bei der Installation, bitte manuell aktualisieren</string>
<string name="prompt_rebooting">Neustart...</string>
<string name="prompt_reboot_fail">Neustart fehlgeschlagen, bitte manuell neu starten</string>
<string name="prompt_custom_key_set">Benutzerdefinierte Keybox erfolgreich gesetzt</string>
<string name="prompt_custom_key_set_error">Fehler beim Setzen der benutzerdefinierten Keybox</string>
<string name="prompt_no_file_selected">Keine Datei ausgewählt</string>
<string name="prompt_system_app_not_found">System-App nicht gefunden</string>
<string name="prompt_system_app_error">Fehler beim Hinzufügen der System-App</string>
<!-- Security Patch -->
<string name="security_patch_title">Sicherheitspatch</string>
<string name="security_patch_advanced_mode">Erweitert</string>
<string name="security_patch_get_date">Sicherheitspatch-Datum abrufen</string>
<string name="security_patch_auto">Automatisch</string>
<string name="security_patch_save">Speichern</string>
<string name="security_patch_fetching">Abrufen...</string>
<string name="security_patch_fetched">Fertig</string>
<string name="security_patch_get_failed">Fehler beim Abrufen des Sicherheitspatch-Datums</string>
<string name="security_patch_unable_to_connect">Keine Verbindung zu source.android.com möglich</string>
<string name="security_patch_auto_success">Automatische Konfiguration erfolgreich aktiviert</string>
<string name="security_patch_auto_failed">Fehler beim Aktivieren der automatischen Konfiguration</string>
<string name="security_patch_save_success">Sicherheitspatch erfolgreich gespeichert</string>
<string name="security_patch_save_failed">Fehler beim Speichern des Sicherheitspatch</string>
<string name="security_patch_value_empty">Sicherheitspatch-Konfiguration ist deaktiviert</string>
<string name="security_patch_invalid_all">Ungültiges Format</string>
<string name="security_patch_invalid_boot">Ungültiges Boot-Format</string>
<string name="security_patch_invalid_system">Ungültiges System-Format</string>
<string name="security_patch_invalid_vendor">Ungültiges Vendor-Format</string>
<!-- Add System App -->
<string name="add_system_app_title">System-App hinzufügen</string>
<string name="add_system_app_add">Hinzufügen</string>
<string name="add_system_app_current_list">Aktuelle Liste der System-Apps</string>
<!-- Uninstall confirmation -->
<string name="confirmation_uninstall_title">Deinstallation bestätigen?</string>
<string name="confirmation_uninstall_message">Möchtest du Tricky Addon wirklich deinstallieren?</string>
<string name="confirmation_uninstall_cancel">Abbrechen</string>
<string name="confirmation_uninstall_confirm">Bestätigen</string>
</resources>

View File

@@ -18,7 +18,7 @@
<string name="help_add_system_app">Πρόσθεσε Εφαρμογή Συστήματος</string>
<string name="help_add_system_app_description">Πρόσθεσε συγκεκριμένη εφαρμογή συστήματος στη λίστα εφαρμογών.</string>
<string name="help_set_keybox">Όρισε AOSP &amp; Έγκυρο Keybox</string>
<string name="help_set_keybox_description">Αντικατέστησε το tricky store keybox.xml. Το AOSP keybox θα αντικατασταθεί αν δεν υπάρχει έγκυρο keybox. Η επιλογή valid keybox απαιτεί σύνδεση Internet.</string>
<string name="help_set_keybox_description">Αντικατέστησε το tricky store keybox.xml. Η επιλογή valid keybox απαιτεί σύνδεση Internet.</string>
<string name="help_set_custom_keybox">Όρισε Custom Keybox</string>
<string name="help_set_custom_keybox_description">Εισήγαγε keybox από τη συσκευή σου. Υποστηρίζεται μόνο αρχείο xml.</string>
<string name="help_set_security_patch">Όρισε Security Patch</string>
@@ -52,7 +52,6 @@
<string name="menu_set_verified_boot_hash">Όρισε Verified Boot Hash</string>
<string name="menu_set_security_patch">Όρισε Security Patch</string>
<string name="menu_about">Σχετικά</string>
<string name="menu_shortcut">Δημιουργία συντόμευσης στην αρχική οθόνη</string>
<!-- Boot Hash -->
<string name="boot_hash_title">Boot Hash</string>
<string name="boot_hash_input_placeholder">Επικόλλησε εδώ το Verified Boot Hash σου</string>
@@ -91,7 +90,6 @@
<string name="prompt_no_file_selected">Δεν επιλέχθηκε αρχείο</string>
<string name="prompt_system_app_not_found">Η εφαρμογή συστήματος δεν βρέθηκε</string>
<string name="prompt_system_app_error">Αποτυχία προσθήκης εφαρμογής συστήματος</string>
<string name="prompt_shortcut_created">Η συντόμευση στην αρχική οθόνη δημιουργήθηκε</string>
<!-- Security Patch -->
<string name="security_patch_title">Security Patch</string>
<string name="security_patch_advanced_mode">Προχωρημένο</string>

View File

@@ -19,7 +19,7 @@
<string name="help_add_system_app">Add System App</string>
<string name="help_add_system_app_description">Add specific system app to app list.</string>
<string name="help_set_keybox">Set AOSP &amp; Valid Keybox</string>
<string name="help_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.</string>
<string name="help_set_keybox_description">Replace tricky store keybox.xml. Valid keybox option requires Internet connection and not always available.</string>
<string name="help_set_custom_keybox">Set Custom Keybox</string>
<string name="help_set_custom_keybox_description">Import keybox from your device storage. Only support xml file.</string>
<string name="help_set_security_patch">Set Security Patch</string>
@@ -52,8 +52,8 @@
<string name="menu_set_custom_keybox">Set Custom Keybox</string>
<string name="menu_set_verified_boot_hash">Set Verified Boot Hash</string>
<string name="menu_set_security_patch">Set Security Patch</string>
<string name="menu_set_devconfig">Set DevConfig</string>
<string name="menu_about">About</string>
<string name="menu_shortcut">Create home screen shortcut</string>
<!-- Boot Hash -->
<string name="boot_hash_title">Boot Hash</string>
<string name="boot_hash_input_placeholder">Paste your verified Boot Hash here</string>
@@ -79,7 +79,7 @@
<string name="prompt_save_error">Failed to save config</string>
<string name="prompt_uninstall_prompt">WebUI will be removed after reboot</string>
<string name="prompt_uninstall_failed">Failed to uninstall WebUI</string>
<string name="prompt_checking_update">Checking udpate...</string>
<string name="prompt_checking_update">Checking update...</string>
<string name="prompt_new_update">A new update is available!</string>
<string name="prompt_no_update">There are currently no updates available</string>
<string name="prompt_downloading">Downloading new update...</string>
@@ -95,7 +95,6 @@
<string name="prompt_no_file_selected">No file selected</string>
<string name="prompt_system_app_not_found">System app not found</string>
<string name="prompt_system_app_error">Failed to add system app</string>
<string name="prompt_shortcut_created">Home screen shortcut created</string>
<!-- Security Patch -->
<string name="security_patch_title">Security Patch</string>
<string name="security_patch_advanced_mode">Advanced</string>

View File

@@ -18,7 +18,7 @@
<string name="help_add_system_app">Agregar Aplicación del Sistema</string>
<string name="help_add_system_app_description">Agregar una aplicación del sistema específica a la lista de aplicaciones.</string>
<string name="help_set_keybox">Configurar AOSP y Keybox Válido</string>
<string name="help_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.</string>
<string name="help_set_keybox_description">Reemplazar el archivo keybox.xml de Tricky Store. Esta opción requiere conexión a Internet.</string>
<string name="help_set_custom_keybox">Establecer Keybox Personalizado</string>
<string name="help_set_custom_keybox_description">Importar keybox desde el almacenamiento de tu dispositivo. Solo soporta archivos xml.</string>
<string name="help_set_security_patch">Configurar Parche de Seguridad</string>
@@ -52,7 +52,6 @@
<string name="menu_set_verified_boot_hash">Configurar Boot Hash Verificado</string>
<string name="menu_set_security_patch">Configurar Parche de Seguridad</string>
<string name="menu_about">Acerca de</string>
<string name="menu_shortcut">Crear acceso directo en la pantalla de inicio</string>
<!-- Boot Hash -->
<string name="boot_hash_title">Boot Hash</string>
<string name="boot_hash_input_placeholder">Pega aquí tu Boot Hash verificado</string>
@@ -91,7 +90,6 @@
<string name="prompt_no_file_selected">Ningún archivo seleccionado</string>
<string name="prompt_system_app_not_found">Aplicación del sistema no encontrada</string>
<string name="prompt_system_app_error">Error al agregar la aplicación del sistema</string>
<string name="prompt_shortcut_created">Acceso directo creado en la pantalla de inicio</string>
<!-- Security Patch -->
<string name="security_patch_title">Parche de Seguridad</string>
<string name="security_patch_advanced_mode">Avanzado</string>

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="system_default">پیش فرض سیستم</string>
<string name="more_language">بیشتر</string>
<!-- Header -->
<!-- Help Menu-->
<string name="help_help_instructions">راهنما</string>
<string name="help_save_and_update">ذخیره</string>
<string name="help_save_and_update_description">پیکربندی فعلی را در target.txt ذخیره کنید.</string>
<string name="help_refresh">تازه سازی</string>
<string name="help_refresh_description">لیست برنامه‌ها و لیست حذف را تازه کنید.</string>
<string name="help_select_deselect">انتخاب همه و لغو انتخاب</string>
<string name="help_select_description">همه برنامه‌ها را در رابط فعلی انتخاب کنید یا لغو انتخاب کنید.</string>
<string name="help_select_denylist">انتخاب از DenyList</string>
<string name="help_select_denylist_description">فقط در Magisk موجود است، برنامه‌هایی که در DenyList هستند را انتخاب کنید. توصیه شده.</string>
<string name="help_deselect_unnecessary">لغو انتخاب غیرضروری</string>
<string name="help_deselect_unnecessary_description">دسته غیرضروری: ماژول Xposed، مدیر root، برنامه‌های مرتبط با root، و برنامه‌های عمومی که هرگز وضعیت bootloader را بررسی نمی‌کنند. این گزینه نیاز به اتصال اینترنت دارد.</string>
<string name="help_add_system_app">افزودن برنامه سیستمی</string>
<string name="help_add_system_app_description">برنامه سیستمی خاص را به لیست برنامه‌ها اضافه کنید.</string>
<string name="help_set_keybox">تنظیم AOSP و Valid Keybox</string>
<string name="help_set_keybox_description">keybox.xml ذخیره tricky را جایگزین کنید. گزینه Valid keybox نیاز به اتصال اینترنت دارد و همیشه موجود نیست.</string>
<string name="help_set_custom_keybox">تنظیم Custom Keybox</string>
<string name="help_set_custom_keybox_description">keybox را از ذخیره‌سازی دستگاه خود وارد کنید. فقط فایل xml پشتیبانی می‌شود.</string>
<string name="help_set_security_patch">تنظیم Security Patch</string>
<string name="help_set_security_patch_description">Custom security patch spoof تنظیم کنید. Auto config از security patch ماژول PIF استفاده خواهد کرد. خالی بگذارید و ذخیره کنید تا auto config غیرفعال شود.</string>
<string name="help_set_verified_boot_hash">تنظیم Verified Boot Hash</string>
<string name="help_set_verified_boot_hash_description">مقدار verifiedBootHash را از Key Attestation Demo دریافت کنید. وضعیت boot غیرعادی را با بازنشانی ro.boot.vbmeta.digest برطرف کنید.</string>
<!-- Update -->
<string name="update_update_available">نسخه جدید آماده است</string>
<string name="update_redirect_to_release">برای دانلود آخرین نسخه ضربه بزنید</string>
<string name="update_changelog">تاریخچه تغییرات</string>
<string name="update_install">نصب</string>
<string name="update_reboot">راه‌اندازی مجدد</string>
<!-- Search -->
<string name="search_bar_search_placeholder">جُستجو</string>
<!-- Functional Button -->
<string name="functional_button_save_and_update_button">ذخیره</string>
<string name="functional_button_uninstall_webui">حذف WebUI</string>
<!-- Loading -->
<string name="loading_loading">در حال بارگیری...</string>
<!-- Menu -->
<string name="menu_refresh">رفرش</string>
<string name="menu_select_all">انتخاب همه</string>
<string name="menu_deselect_all">لغو انتخاب همه</string>
<string name="menu_select_denylist">انتخاب از DenyList</string>
<string name="menu_deselect_unnecessary">لغو انتخاب غیرضروری</string>
<string name="menu_add_system_app">افزودن برنامه سیستمی</string>
<string name="menu_set_aosp_keybox">تنظیم AOSP Keybox</string>
<string name="menu_set_unknown_keybox">تنظیم Unknown Keybox</string>
<string name="menu_set_valid_keybox">تنظیم Valid Keybox</string>
<string name="menu_set_custom_keybox">تنظیم Custom Keybox</string>
<string name="menu_set_verified_boot_hash">تنظیم Verified Boot Hash</string>
<string name="menu_set_security_patch">تنظیم Security Patch</string>
<string name="menu_about">درباره</string>
<!-- Boot Hash -->
<string name="boot_hash_input_placeholder">Verified Boot Hash خود را اینجا بچسبانید</string>
<string name="boot_hash_save_button">ذخیره</string>
<!-- About -->
<string name="about_by">از</string>
<string name="about_telegram_channel">کانال تلگرام</string>
<string name="about_canary_update">به‌روزرسانی به آخرین نسخه canary</string>
<string name="about_disclaimer">این ماژول بخشی از ماژول Tricky Store نیست. در صورت بروز مشکل، به Tricky Store گزارش ندهید.</string>
<string name="about_acknowledgment">تقدیر و تشکر</string>
<!-- Prompt -->
<string name="prompt_no_internet">اتصال به اینترنت خود را بررسی کنید</string>
<string name="prompt_aosp_key_set">AOSP keybox با موفقیت تنظیم شد</string>
<string name="prompt_key_set_error">به‌روزرسانی keybox ناموفق بود</string>
<string name="prompt_unknown_key_set">Unknown keybox با موفقیت تنظیم شد</string>
<string name="prompt_valid_key_set">Valid keybox با موفقیت تنظیم شد</string>
<string name="prompt_no_valid">هیچ valid keybox یافت نشد.</string>
<string name="prompt_boot_hash_set">Verified Boot Hash با موفقیت ذخیره شد</string>
<string name="prompt_boot_hash_set_error">به‌روزرسانی Verified Boot Hash ناموفق بود</string>
<string name="prompt_saved_target">پیکربندی در target.txt ذخیره شد</string>
<string name="prompt_save_error">ذخیره پیکربندی ناموفق بود</string>
<string name="prompt_uninstall_prompt">WebUI پس از راه‌اندازی مجدد حذف خواهد شد</string>
<string name="prompt_uninstall_failed">حذف WebUI ناموفق بود</string>
<string name="prompt_checking_update">بررسی به روز رسانی...</string>
<string name="prompt_new_update">یک بروزرسانی جدید دردسترس می‌باشد!</string>
<string name="prompt_no_update">در حال حاضر هیچ به‌روزرسانی موجود نیست</string>
<string name="prompt_downloading">دانلود به‌روزرسانی جدید...</string>
<string name="prompt_downloaded">بارگیری کامل شد</string>
<string name="prompt_download_fail">به روزرسانی بارگیری نشد</string>
<string name="prompt_installing">در حال نصب به‌روزرسانی...</string>
<string name="prompt_installed">با موفقیت نصب شد، اکنون راه‌اندازی مجدد کنید.</string>
<string name="prompt_install_fail">نصب ناموفق بود، لطفاً به صورت دستی به‌روزرسانی کنید</string>
<string name="prompt_rebooting">در حال راه اندازی مجدد…</string>
<string name="prompt_reboot_fail">راه‌اندازی مجدد ناموفق بود، لطفاً به صورت دستی راه‌اندازی مجدد کنید</string>
<string name="prompt_custom_key_set">Custom keybox با موفقیت تنظیم شد</string>
<string name="prompt_custom_key_set_error">تنظیم Custom keybox ناموفق بود</string>
<string name="prompt_no_file_selected">هیچ پرونده‌ای گزیده نشده</string>
<string name="prompt_system_app_not_found">برنامه سیستمی یافت نشد</string>
<string name="prompt_system_app_error">افزودن برنامه سیستمی ناموفق بود</string>
<!-- Security Patch -->
<string name="security_patch_advanced_mode">پیشرفته</string>
<string name="security_patch_get_date">دریافت تاریخ Security Patch</string>
<string name="security_patch_auto">خودکار</string>
<string name="security_patch_save">ذخیره</string>
<string name="security_patch_fetching">در حال دریافت...</string>
<string name="security_patch_fetched">انجام شده</string>
<string name="security_patch_get_failed">دریافت تاریخ security patch ناموفق بود</string>
<string name="security_patch_unable_to_connect">عدم امکان اتصال به source.android.com</string>
<string name="security_patch_auto_success">Auto config با موفقیت فعال شد</string>
<string name="security_patch_auto_failed">فعال‌سازی Auto config ناموفق بود</string>
<string name="security_patch_save_success">Security patch با موفقیت ذخیره شد</string>
<string name="security_patch_save_failed">ذخیره Security patch ناموفق بود</string>
<string name="security_patch_value_empty">پیکربندی Security patch غیرفعال است</string>
<string name="security_patch_invalid_all">قالب نامعتبر</string>
<string name="security_patch_invalid_boot">قالب boot نامعتبر</string>
<string name="security_patch_invalid_system">قالب system نامعتبر</string>
<string name="security_patch_invalid_vendor">قالب vendor نامعتبر</string>
<!-- Add System App -->
<string name="add_system_app_title">افزودن برنامه سیستمی</string>
<string name="add_system_app_add">افزودن</string>
<string name="add_system_app_current_list">لیست فعلی برنامه‌های سیستمی</string>
<!-- Uninstall confirmation -->
<string name="confirmation_uninstall_title">تأیید حذف؟</string>
<string name="confirmation_uninstall_message">آیا مطمئن هستید که می‌خواهید Tricky Addon را حذف کنید</string>
<string name="confirmation_uninstall_cancel">لغو</string>
<string name="confirmation_uninstall_confirm">تایید</string>
</resources>

View File

@@ -19,7 +19,7 @@
<string name="help_add_system_app">Ajouter une application système</string>
<string name="help_add_system_app_description">Ajouter une application système spécifique à la liste.</string>
<string name="help_set_keybox">Définir une Keybox AOSP &amp; Valide</string>
<string name="help_set_keybox_description">Remplacer le fichier keybox.xml de Tricky Store. La keybox AOSP sera remplacée s&apos;il n&apos;y a plus de keybox valide. L&apos;option keybox valide nécessite une connexion Internet.</string>
<string name="help_set_keybox_description">Remplacer le fichier keybox.xml de Tricky Store. L&apos;option keybox valide nécessite une connexion Internet.</string>
<string name="help_set_custom_keybox">Définir une Keybox personnalisée</string>
<string name="help_set_custom_keybox_description">Importer une keybox depuis le stockage de votre appareil. Seuls les fichiers XML sont pris en charge.</string>
<string name="help_set_security_patch">Définir le patch de sécurité</string>
@@ -53,7 +53,6 @@
<string name="menu_set_verified_boot_hash">Définir le hash Verified Boot</string>
<string name="menu_set_security_patch">Définir le patch de sécurité</string>
<string name="menu_about">À propos</string>
<string name="menu_shortcut">Créer un raccourci sur l&apos;écran d&apos;accueil</string>
<!-- Boot Hash -->
<string name="boot_hash_title">Hash de démarrage</string>
<string name="boot_hash_input_placeholder">Collez votre hash Verified Boot ici</string>
@@ -95,7 +94,6 @@
<string name="prompt_no_file_selected">Aucun fichier sélectionné</string>
<string name="prompt_system_app_not_found">Application système introuvable</string>
<string name="prompt_system_app_error">Échec de l&apos;ajout de l&apos;application système</string>
<string name="prompt_shortcut_created">Raccourci créé sur l&apos;écran d&apos;accueil</string>
<!-- Security Patch -->
<string name="security_patch_title">Patch de sécurité</string>
<string name="security_patch_advanced_mode">Avancé</string>

View File

@@ -18,7 +18,7 @@
<string name="help_add_system_app">Tambahkan Aplikasi Sistem</string>
<string name="help_add_system_app_description">Tambahkan aplikasi sistem tertentu ke daftar aplikasi.</string>
<string name="help_set_keybox">Ganti Keybox AOSP &amp; Valid</string>
<string name="help_set_keybox_description">Ganti file keybox.xml bawaan. Jika tidak ada keybox valid, maka keybox AOSP akan digunakan. Opsi ini memerlukan koneksi internet.</string>
<string name="help_set_keybox_description">Ganti file keybox.xml bawaan. Opsi ini memerlukan koneksi internet.</string>
<string name="help_set_custom_keybox">Gunakan Keybox Kustom</string>
<string name="help_set_custom_keybox_description">Impor keybox dari penyimpanan perangkat. Hanya mendukung file XML.</string>
<string name="help_set_security_patch">Atur Patch Keamanan</string>
@@ -52,7 +52,6 @@
<string name="menu_set_verified_boot_hash">Atur Verified Boot Hash</string>
<string name="menu_set_security_patch">Atur Patch Keamanan</string>
<string name="menu_about">Tentang</string>
<string name="menu_shortcut">Buat pintasan di layar utama</string>
<!-- Boot Hash -->
<string name="boot_hash_title">Verified Boot Hash</string>
<string name="boot_hash_input_placeholder">Tempel Verified Boot Hash Anda di sini</string>
@@ -91,7 +90,6 @@
<string name="prompt_no_file_selected">Tidak ada file yang dipilih</string>
<string name="prompt_system_app_not_found">Aplikasi sistem tidak ditemukan</string>
<string name="prompt_system_app_error">Gagal menambahkan aplikasi sistem</string>
<string name="prompt_shortcut_created">Pintasan layar utama telah dibuat</string>
<!-- Security Patch -->
<string name="security_patch_title">Patch Keamanan</string>
<string name="security_patch_advanced_mode">Mode Lanjutan</string>

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="system_default">Predefinito di sistema</string>
<string name="more_language">Altro</string>
<!-- Header -->
<string name="header_title">Tricky Addon</string>
<!-- Help Menu-->
@@ -18,7 +19,7 @@
<string name="help_add_system_app">Aggiungi App di Sistema</string>
<string name="help_add_system_app_description">Aggiungi app di sistema specifiche all&apos;elenco delle app.</string>
<string name="help_set_keybox">Imposta AOSP &amp; Keybox Valida</string>
<string name="help_set_keybox_description">Sostituisci tricky store keybox.xml. La keybox AOSP verrà sostituita se non ci sono più keybox valide. L&apos;opzione valida per la keybox richiede una connessione Internet.</string>
<string name="help_set_keybox_description">Sostituisci tricky store keybox.xml. L&apos;opzione valida per la keybox richiede una connessione Internet.</string>
<string name="help_set_custom_keybox">Imposta Keybox Personalizzata</string>
<string name="help_set_custom_keybox_description">Importa keybox dalla memoria del tuo dispositivo. Supporta solo file xml.</string>
<string name="help_set_security_patch">Imposta Patch di Sicurezza</string>
@@ -28,7 +29,7 @@
<!-- Update -->
<string name="update_update_available">È pronta una nuova versione</string>
<string name="update_redirect_to_release">tocca per scaricare l&apos;ultima versione</string>
<string name="update_changelog">Changelog</string>
<string name="update_changelog">Registro delle modifiche</string>
<string name="update_install">Installa</string>
<string name="update_reboot">Riavvio</string>
<!-- Search -->
@@ -51,8 +52,7 @@
<string name="menu_set_custom_keybox">Imposta Keybox Personalizzata</string>
<string name="menu_set_verified_boot_hash">Imposta Boot Hash Verificato</string>
<string name="menu_set_security_patch">Imposta Patch di Sicurezza</string>
<string name="menu_about">About</string>
<string name="menu_shortcut">Crea collegamento nella schermata iniziale</string>
<string name="menu_about">Informazioni</string>
<!-- Boot Hash -->
<string name="boot_hash_title">Boot Hash</string>
<string name="boot_hash_input_placeholder">Incolla qui il tuo Boot Hash verificato</string>
@@ -62,6 +62,7 @@
<string name="about_module_name_line2">Aggiorna Target List</string>
<string name="about_by">by</string>
<string name="about_telegram_channel">Canale Telegram</string>
<string name="about_canary_update">Aggiornato all&apos;ultima versione canary</string>
<string name="about_disclaimer">Questo modulo non fa parte del modulo Tricky Store. NON segnalare eventuali problemi a Tricky Store se riscontrati.</string>
<string name="about_acknowledgment">Riconoscimento</string>
<!-- Prompt -->
@@ -77,7 +78,9 @@
<string name="prompt_save_error">Impossibile salvare la configurazione</string>
<string name="prompt_uninstall_prompt">WebUI verrà rimosso dopo il riavvio</string>
<string name="prompt_uninstall_failed">Impossibile disinstallare WebUI</string>
<string name="prompt_checking_update">Controllo aggiornamento...</string>
<string name="prompt_new_update">È disponibile un nuovo aggiornamento!</string>
<string name="prompt_no_update">Al momento non ci sono aggiornamenti disponibili</string>
<string name="prompt_downloading">Download nuovo aggiornamento...</string>
<string name="prompt_downloaded">Download completato</string>
<string name="prompt_download_fail">Impossibile scaricare l&apos;aggiornamento</string>
@@ -91,7 +94,6 @@
<string name="prompt_no_file_selected">Nessun file selezionato</string>
<string name="prompt_system_app_not_found">App di sistema non trovata</string>
<string name="prompt_system_app_error">Impossibile aggiungere l&apos;app di sistema</string>
<string name="prompt_shortcut_created">Collegamento creato nella schermata iniziale</string>
<!-- Security Patch -->
<string name="security_patch_title">Patch di sicurezza</string>
<string name="security_patch_advanced_mode">Avanzato</string>
@@ -101,6 +103,7 @@
<string name="security_patch_fetching">Recupero...</string>
<string name="security_patch_fetched">Fatto</string>
<string name="security_patch_get_failed">Impossibile recuperare la data della patch di sicurezza</string>
<string name="security_patch_unable_to_connect">Impossibile connettersi a source.android.com</string>
<string name="security_patch_auto_success">Configurazione automatica abilitata correttamente</string>
<string name="security_patch_auto_failed">Impossibile abilitare la configurazione automatica</string>
<string name="security_patch_save_success">Patch di sicurezza salvata correttamente</string>

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="system_default">システムのデフォルト</string>
<string name="more_language">詳細</string>
<!-- Header -->
<string name="header_title">Tricky Addon</string>
<!-- Help Menu-->
@@ -18,7 +19,7 @@
<string name="help_add_system_app">システムアプリを追加</string>
<string name="help_add_system_app_description">特定のシステムアプリをアプリリストに追加します。</string>
<string name="help_set_keybox">AOSP と有効な Keybox</string>
<string name="help_set_keybox_description">Tricky Store の keybox.xml を置き換えます。有効な Keybox がなくなった場合は、AOSP Keybox に置き換えられます。インターネット接続が必要です。</string>
<string name="help_set_keybox_description">Tricky Store の keybox.xml を置き換えます。インターネット接続が必要です。</string>
<string name="help_set_custom_keybox">カスタム Keybox を設定</string>
<string name="help_set_custom_keybox_description">デバイスのストレージからカスタム Keybox ファイルをインポートします。インポートは xml ファイルのみ対応しています。</string>
<string name="help_set_security_patch">セキュリティパッチを設定</string>
@@ -52,7 +53,6 @@
<string name="menu_set_verified_boot_hash">確認付きブートハッシュを設定</string>
<string name="menu_set_security_patch">セキュリティパッチを設定</string>
<string name="menu_about">このアドオンについて</string>
<string name="menu_shortcut">ホーム画面にショートカットを作成</string>
<!-- Boot Hash -->
<string name="boot_hash_title">ブートハッシュ</string>
<string name="boot_hash_input_placeholder">確認付きブートハッシュをここに貼り付け</string>
@@ -62,6 +62,7 @@
<string name="about_module_name_line2">ターゲットリストを更新</string>
<string name="about_by">開発者: </string>
<string name="about_telegram_channel">Telegram チャンネル</string>
<string name="about_canary_update">最新の Canary バージョンに更新</string>
<string name="about_disclaimer">このモジュールは、Tricky Store モジュールの一部ではありません。Tricky Store 公式に問題を報告しないでください。</string>
<string name="about_acknowledgment">謝辞</string>
<!-- Prompt -->
@@ -75,9 +76,11 @@
<string name="prompt_boot_hash_set_error">確認付きブートハッシュの更新に失敗しました。</string>
<string name="prompt_saved_target">設定を target.txt に保存しました。</string>
<string name="prompt_save_error">設定の保存に失敗しました。</string>
<string name="prompt_uninstall_prompt">WebUI 再起動後に削除されます。</string>
<string name="prompt_uninstall_prompt">WebUI 再起動後に削除されます。</string>
<string name="prompt_uninstall_failed">WebUI のアンインストールに失敗しました。</string>
<string name="prompt_checking_update">更新を確認しています...</string>
<string name="prompt_new_update">新しいバージョンがあります!</string>
<string name="prompt_no_update">利用可能な更新はありません。</string>
<string name="prompt_downloading">新しい更新をダウンロード中...</string>
<string name="prompt_downloaded">ダウンロードが完了しました</string>
<string name="prompt_download_fail">更新のダウンロードに失敗しました</string>
@@ -91,7 +94,6 @@
<string name="prompt_no_file_selected">ファイルが選択されていません</string>
<string name="prompt_system_app_not_found">システムアプリが見つかりません</string>
<string name="prompt_system_app_error">システムアプリの追加に失敗しました</string>
<string name="prompt_shortcut_created">ホーム画面にショートカットが作成されました</string>
<!-- Security Patch -->
<string name="security_patch_title">セキュリティパッチ</string>
<string name="security_patch_advanced_mode">高度</string>

View File

@@ -19,7 +19,7 @@
<string name="help_add_system_app">Dodaj aplikację systemową</string>
<string name="help_add_system_app_description">Dodaj konkretną aplikację systemową do listy aplikacji.</string>
<string name="help_set_keybox">Ustaw działający klucz AOSP</string>
<string name="help_set_keybox_description">Zastąp klucz keybox.xml. Klucz AOSP zostanie zastosowany, jeśli nie będzie więcej działających kluczy. Funkcja wymaga połączenia internetowego.</string>
<string name="help_set_keybox_description">Zastąp klucz keybox.xml. Funkcja wymaga połączenia internetowego.</string>
<string name="help_set_custom_keybox">Ustaw niestandardowy klucz</string>
<string name="help_set_custom_keybox_description">Importuj klucz z pamięci urządzenia. Obsługuje tylko pliki xml.</string>
<string name="help_set_security_patch">Ustaw poprawkę zabezpieczeń</string>
@@ -53,7 +53,6 @@
<string name="menu_set_verified_boot_hash">Ustaw zweryfikowany skrót rozruchowy</string>
<string name="menu_set_security_patch">Ustaw poprawkę zabezpieczeń</string>
<string name="menu_about">O Tricky Addon</string>
<string name="menu_shortcut">Utwórz skrót do ekranu głównego</string>
<!-- Boot Hash -->
<string name="boot_hash_title">Skrót rozruchowy</string>
<string name="boot_hash_input_placeholder">Wklej tutaj zweryfikowany skrót rozruchowy</string>
@@ -95,7 +94,6 @@
<string name="prompt_no_file_selected">Nie wybrano pliku</string>
<string name="prompt_system_app_not_found">Nie znaleziono aplikacji systemowej</string>
<string name="prompt_system_app_error">Nie udało się dodać aplikacji systemowej</string>
<string name="prompt_shortcut_created">Utworzono skrót do ekranu głównego</string>
<!-- Security Patch -->
<string name="security_patch_title">Poprawka zabezpieczeń</string>
<string name="security_patch_advanced_mode">Zaawansowane</string>

View File

@@ -19,7 +19,7 @@
<string name="help_add_system_app">Adicionar app do sistema</string>
<string name="help_add_system_app_description">Adicionar app do sistema específico à lista de aplicativos.</string>
<string name="help_set_keybox">Definir AOSP &amp; Keybox Válida</string>
<string name="help_set_keybox_description">Substitua keybox.xml de tricky store. AOSP keybox será substituído se não houver mais a keybox válida. A opção Keybox válida requer conexão à Internet.</string>
<string name="help_set_keybox_description">Substitua keybox.xml de tricky store. A opção Keybox válida requer conexão à Internet.</string>
<string name="help_set_custom_keybox">Definir uma Keybox personalizada</string>
<string name="help_set_custom_keybox_description">Importar Keybox do armazenamento do seu dispositivo. Suporta apenas o arquivo XML.</string>
<string name="help_set_security_patch">Definir patch de segurança</string>
@@ -53,7 +53,6 @@
<string name="menu_set_verified_boot_hash">Definir Hash de Boot Verificado</string>
<string name="menu_set_security_patch">Definir Patch de segurança</string>
<string name="menu_about">Sobre</string>
<string name="menu_shortcut">Criar atalho na tela inicial</string>
<!-- Boot Hash -->
<string name="boot_hash_title">Boot Hash</string>
<string name="boot_hash_input_placeholder">Cole o seu Boot Hash verificado aqui</string>
@@ -95,7 +94,6 @@
<string name="prompt_no_file_selected">Nenhum arquivo selecionado</string>
<string name="prompt_system_app_not_found">App do sistema não encontrado</string>
<string name="prompt_system_app_error">Falha ao adicionar app do sistema</string>
<string name="prompt_shortcut_created">Atalho na tela inicial criado com sucesso</string>
<!-- Security Patch -->
<string name="security_patch_title">Patch de segurança</string>
<string name="security_patch_advanced_mode">Avançado</string>

View File

@@ -17,13 +17,13 @@
<string name="help_deselect_unnecessary_description">Ненужные категории: модули Xposed, менеджеры root, приложения, связанные с root, и общие приложения, которые никогда не проверяют статус загрузчика. Этот параметр требует подключения к интернету.</string>
<string name="help_add_system_app">Добавить системное приложение</string>
<string name="help_add_system_app_description">Добавить конкретное системное приложение в список приложений.</string>
<string name="help_set_keybox">Установить AOSP и действующий Keybox</string>
<string name="help_set_keybox_description">Замените tricky store keybox.xml. AOSP keybox будет заменен, если не будет найден действующий keybox. Опция с действующим keybox требует подключения к интернету.</string>
<string name="help_set_custom_keybox">Установить пользовательский Keybox</string>
<string name="help_set_custom_keybox_description">Импортируйте файл keybox из вашего устройства в хранилище. Поддерживаются только xml файлы.</string>
<string name="help_set_security_patch">Установить Security Patch</string>
<string name="help_set_keybox">Установить AOSP &amp; и действующий keybox</string>
<string name="help_set_keybox_description">Замените tricky store keybox.xml. Опция с действующим keybox требует подключения к интернету.</string>
<string name="help_set_custom_keybox">Установить свой keybox</string>
<string name="help_set_custom_keybox_description">Импортируйте файл keybox из памяти своего устройства. Поддерживаются только файлы XML.</string>
<string name="help_set_security_patch">Установить патч безопасности</string>
<string name="help_set_security_patch_description">Установите пользовательский патч безопасности. Автоматическая настройка будет использовать патч безопасности из модуля PIF. Оставьте пустым и сохраните, чтобы отключить автоматическую настройку.</string>
<string name="help_set_verified_boot_hash">Установить Verified Boot Hash</string>
<string name="help_set_verified_boot_hash">Установить verified boot hash</string>
<string name="help_set_verified_boot_hash_description">Получите значение verifiedBootHash из Key Attestation Demo. Исправьте аномальное состояние загрузки, сбросив ro.boot.vbmeta.digest.</string>
<!-- Update -->
<string name="update_update_available">Доступна новая версия</string>
@@ -45,14 +45,13 @@
<string name="menu_select_denylist">Выбрать из DenyList</string>
<string name="menu_deselect_unnecessary">Отменить выбор ненужных</string>
<string name="menu_add_system_app">Добавить системное приложение</string>
<string name="menu_set_aosp_keybox">Установить AOSP Keybox</string>
<string name="menu_set_unknown_keybox">Установить неизвестный Keybox</string>
<string name="menu_set_aosp_keybox">Установить keybox AOSP</string>
<string name="menu_set_unknown_keybox">Установить неизвестный keybox</string>
<string name="menu_set_valid_keybox">Установить действующий Keybox</string>
<string name="menu_set_custom_keybox">Установить пользовательский Keybox</string>
<string name="menu_set_verified_boot_hash">Установить Verified Boot Hash</string>
<string name="menu_set_security_patch">Установить Security Patch</string>
<string name="menu_set_custom_keybox">Установить свой keybox</string>
<string name="menu_set_verified_boot_hash">Установить verified boot hash</string>
<string name="menu_set_security_patch">Установить security patch</string>
<string name="menu_about">О программе</string>
<string name="menu_shortcut">Создать ярлык на главном экране</string>
<!-- Boot Hash -->
<string name="boot_hash_title">Boot Hash</string>
<string name="boot_hash_input_placeholder">Вставьте свой проверенный Boot Hash сюда</string>
@@ -91,7 +90,6 @@
<string name="prompt_no_file_selected">Файл не выбран</string>
<string name="prompt_system_app_not_found">Системное приложение не найдено</string>
<string name="prompt_system_app_error">Не удалось добавить системное приложение</string>
<string name="prompt_shortcut_created">Ярлык на главном экране создан</string>
<!-- Security Patch -->
<string name="security_patch_title">Патч безопасности</string>
<string name="security_patch_advanced_mode">Расширенный</string>

View File

@@ -18,7 +18,7 @@
<string name="help_add_system_app">Magdagdag ng System App</string>
<string name="help_add_system_app_description">Magdagdag ng tiyak na system app sa listahan ng apps.</string>
<string name="help_set_keybox">I-set ang AOSP at Valid Keybox</string>
<string name="help_set_keybox_description">Palitan ang tricky store keybox. Palitan ang AOSP keybox kung walang valid keybox. Nangangailangan ng koneksyon sa internet ang valid keybox option.</string>
<string name="help_set_keybox_description">Palitan ang tricky store keybox. Nangangailangan ng koneksyon sa internet ang valid keybox option.</string>
<string name="help_set_custom_keybox">I-set ang Custom Keybox</string>
<string name="help_set_custom_keybox_description">Mag-import ng custom keybox mula sa iyong device storage. Sumusuporta lamang ng xml file.</string>
<string name="help_set_security_patch">I-set ang Security Patch</string>
@@ -52,7 +52,6 @@
<string name="menu_set_verified_boot_hash">I-set ang Verified Boot Hash</string>
<string name="menu_set_security_patch">I-set ang Security Patch</string>
<string name="menu_about">Tungkol</string>
<string name="menu_shortcut">Gumawa ng shortcut sa home screen</string>
<!-- Boot Hash -->
<string name="boot_hash_title">Boot Hash</string>
<string name="boot_hash_input_placeholder">I-paste ang iyong verified Boot Hash dito</string>
@@ -91,7 +90,6 @@
<string name="prompt_no_file_selected">Walang napiling file</string>
<string name="prompt_system_app_not_found">Walang natagpuan na system app</string>
<string name="prompt_system_app_error">Nabigong dagdag ang system app</string>
<string name="prompt_shortcut_created">Matagumpay na nagawa ang shortcut sa home screen</string>
<!-- Security Patch -->
<string name="security_patch_title">Security Patch</string>
<string name="security_patch_advanced_mode">Advanced</string>

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="system_default">Sistem Varsayılanı</string>
<string name="more_language">Daha Fazla</string>
<!-- Header -->
<string name="header_title">Tricky Addon</string>
<!-- Help Menu-->
@@ -18,7 +19,7 @@
<string name="help_add_system_app">Sistem Uygulaması Ekle</string>
<string name="help_add_system_app_description">Belirli bir sistem uygulamasını uygulama listesine ekleyin.</string>
<string name="help_set_keybox">AOSP &amp; Geçerli Keybox Ayarla</string>
<string name="help_set_keybox_description">Tricky Store&apos;daki keybox.xml dosyasını değiştirir. Eğer geçerli bir keybox yoksa AOSP keybox ile değiştirilecektir. Geçerli keybox seçeneği internet bağlantısı gerektirir.</string>
<string name="help_set_keybox_description">Tricky Store&apos;daki keybox.xml dosyasını değiştirir. Geçerli keybox seçeneği internet bağlantısı gerektirir.</string>
<string name="help_set_custom_keybox">Özel Keybox Ayarla</string>
<string name="help_set_custom_keybox_description">Cihaz depolamasından bir keybox dosyasını içe aktarın. Sadece xml dosyaları desteklenir.</string>
<string name="help_set_security_patch">Güvenlik Yaması Ayarla</string>
@@ -52,7 +53,6 @@
<string name="menu_set_verified_boot_hash">Doğrulanmış Boot Hash Ayarla</string>
<string name="menu_set_security_patch">Güvenlik Yaması Ayarla</string>
<string name="menu_about">Hakkında</string>
<string name="menu_shortcut">Ana ekrana kısayol oluştur</string>
<!-- Boot Hash -->
<string name="boot_hash_title">Boot Hash</string>
<string name="boot_hash_input_placeholder">Doğrulanmış Boot Hash&apos;inizi buraya yapıştırın</string>
@@ -62,6 +62,7 @@
<string name="about_module_name_line2">Target List&apos;i Güncelle</string>
<string name="about_by">tarafından</string>
<string name="about_telegram_channel">Telegram Kanalı</string>
<string name="about_canary_update">En son canary sürümüne güncelleyin</string>
<string name="about_disclaimer">Bu modül, Tricky Store modülünün bir parçası değildir. Herhangi bir sorun yaşarsanız, lütfen bunu Tricky Store&apos;a rapor etmeyin.</string>
<string name="about_acknowledgment">Teşekkürler</string>
<!-- Prompt -->
@@ -77,7 +78,9 @@
<string name="prompt_save_error">Yapılandırma kaydedilemedi</string>
<string name="prompt_uninstall_prompt">WebUI yeniden başlatma sonrasında kaldırılacak</string>
<string name="prompt_uninstall_failed">WebUI kaldırılamadı</string>
<string name="prompt_checking_update">Güncelleme kontrol ediliyor...</string>
<string name="prompt_new_update">Yeni bir güncelleme mevcut!</string>
<string name="prompt_no_update">Şu anda hiçbir güncelleme mevcut değil</string>
<string name="prompt_downloading">Yeni güncelleme indiriliyor...</string>
<string name="prompt_downloaded">İndirme tamamlandı</string>
<string name="prompt_download_fail">Güncelleme indirilemedi</string>
@@ -91,7 +94,6 @@
<string name="prompt_no_file_selected">Dosya seçilmedi</string>
<string name="prompt_system_app_not_found">Sistem uygulaması bulunamadı</string>
<string name="prompt_system_app_error">Sistem uygulaması ekleme hatası</string>
<string name="prompt_shortcut_created">Ana ekran kısayolu oluşturuldu</string>
<!-- Security Patch -->
<string name="security_patch_title">Güvenlik Yaması</string>
<string name="security_patch_advanced_mode">Gelişmiş</string>
@@ -101,6 +103,7 @@
<string name="security_patch_fetching">Alınıyor...</string>
<string name="security_patch_fetched">Tamamlandı</string>
<string name="security_patch_get_failed">Güvenlik yaması tarihi alınamadı</string>
<string name="security_patch_unable_to_connect">Source.android.com\'a bağlanılamıyor</string>
<string name="security_patch_auto_success">Otomatik yapılandırma başarıyla etkinleştirildi</string>
<string name="security_patch_auto_failed">Otomatik yapılandırma etkinleştirilemedi</string>
<string name="security_patch_save_success">Güvenlik yaması başarıyla kaydedildi</string>

View File

@@ -18,7 +18,7 @@
<string name="help_add_system_app">Додати системний застосунок</string>
<string name="help_add_system_app_description">Додати конкретний системний застосунок до списку.</string>
<string name="help_set_keybox">Встановити AOSP та валідний ключ</string>
<string name="help_set_keybox_description">Замінити tricky store keybox.xml. Ключа буде замінено на AOSP, якщо не буде валідного. Для використання валідного ключа потрібне з&apos;єднання з інтернетом.</string>
<string name="help_set_keybox_description">Замінити tricky store keybox.xml. Для використання валідного ключа потрібне з&apos;єднання з інтернетом.</string>
<string name="help_set_custom_keybox">Встановити власний ключ</string>
<string name="help_set_custom_keybox_description">Імпортувати ключі зі сховища вашого пристрою. Підтримуються лише xml файли.</string>
<string name="help_set_security_patch">Встановити патч безпеки</string>
@@ -52,7 +52,6 @@
<string name="menu_set_verified_boot_hash">Встановити перевірений хеш завантаження</string>
<string name="menu_set_security_patch">Встановити патч безпеки</string>
<string name="menu_about">Деталі</string>
<string name="menu_shortcut">Створити значок на домашньому екрані</string>
<!-- Boot Hash -->
<string name="boot_hash_title">Хеш завантаження</string>
<string name="boot_hash_input_placeholder">Вставте перевірений хеш завантаження сюди</string>
@@ -94,7 +93,6 @@
<string name="prompt_no_file_selected">Не вибрано жодного файлу</string>
<string name="prompt_system_app_not_found">Системний застосунок не знайдено</string>
<string name="prompt_system_app_error">Не вдалося додати системний застосунок</string>
<string name="prompt_shortcut_created">Створено значок на домашньому екрані</string>
<!-- Security Patch -->
<string name="security_patch_title">Патч безпеки</string>
<string name="security_patch_advanced_mode">Розширені</string>

View File

@@ -19,7 +19,7 @@
<string name="help_add_system_app">添加系统应用</string>
<string name="help_add_system_app_description">添加特定系统应用到应用列表。</string>
<string name="help_set_keybox">设置 AOSP &amp; 有效密钥</string>
<string name="help_set_keybox_description">替换 Tricky Store 的密钥keybox.xml如果没有有效密钥,将替换为 AOSP 密钥。有效密钥选项需连网使用。</string>
<string name="help_set_keybox_description">替换 Tricky Store 的密钥keybox.xml。有效密钥选项需连网使用,不保证能一直提供</string>
<string name="help_set_custom_keybox">设置自定义密钥</string>
<string name="help_set_custom_keybox_description">从设备存储导入自定义密钥。仅支持 xml 文件。</string>
<string name="help_set_security_patch">设置安全补丁</string>
@@ -53,7 +53,6 @@
<string name="menu_set_verified_boot_hash">设置哈希值</string>
<string name="menu_set_security_patch">设置安全补丁</string>
<string name="menu_about">关于</string>
<string name="menu_shortcut">创建桌面快捷方式</string>
<!-- Boot Hash -->
<string name="boot_hash_title">哈希值</string>
<string name="boot_hash_input_placeholder">在此粘贴您的哈希值</string>
@@ -95,7 +94,6 @@
<string name="prompt_no_file_selected">未选择文件</string>
<string name="prompt_system_app_not_found">未找到该系统应用</string>
<string name="prompt_system_app_error">系统应用添加失败</string>
<string name="prompt_shortcut_created">桌面快捷方式已创建</string>
<!-- Security Patch -->
<string name="security_patch_title">安全补丁</string>
<string name="security_patch_advanced_mode">高级</string>

View File

@@ -19,7 +19,7 @@
<string name="help_add_system_app">添加系統應用</string>
<string name="help_add_system_app_description">添加特定系統應用到應用列表。</string>
<string name="help_set_keybox">設置 AOSP &amp; 有效密鑰</string>
<string name="help_set_keybox_description">替換 Tricky Store 的密鑰keybox.xml如果沒有有效密鑰,將替換為 AOSP 密鑰。有效密鑰選項需連網使用。</string>
<string name="help_set_keybox_description">替換 Tricky Store 的密鑰keybox.xml。有效密鑰選項需連網使用,不保證能一直提供</string>
<string name="help_set_custom_keybox">設置自定義密鑰</string>
<string name="help_set_custom_keybox_description">從設備存儲導入自定義密鑰。僅支持 xml 文件。</string>
<string name="help_set_security_patch">設置安全補丁</string>
@@ -53,7 +53,6 @@
<string name="menu_set_verified_boot_hash">設置哈希值</string>
<string name="menu_set_security_patch">設置安全補丁</string>
<string name="menu_about">關於</string>
<string name="menu_shortcut">建立主畫面捷徑</string>
<!-- Boot Hash -->
<string name="boot_hash_title">哈希值</string>
<string name="boot_hash_input_placeholder">在此貼上您的哈希值</string>
@@ -95,7 +94,6 @@
<string name="prompt_no_file_selected">未選擇文件</string>
<string name="prompt_system_app_not_found">未找到該系統應用</string>
<string name="prompt_system_app_error">系統應用添加失敗</string>
<string name="prompt_shortcut_created">主畫面捷徑已建立</string>
<!-- Security Patch -->
<string name="security_patch_title">安全補丁</string>
<string name="security_patch_advanced_mode">進階</string>

View File

@@ -19,7 +19,7 @@
<string name="help_add_system_app">Add System App</string>
<string name="help_add_system_app_description">Add specific system app to app list.</string>
<string name="help_set_keybox">Set AOSP &amp; Valid Keybox</string>
<string name="help_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.</string>
<string name="help_set_keybox_description">Replace tricky store keybox.xml. Valid keybox option requires Internet connection and not always available.</string>
<string name="help_set_custom_keybox">Set Custom Keybox</string>
<string name="help_set_custom_keybox_description">Import keybox from your device storage. Only support xml file.</string>
<string name="help_set_security_patch">Set Security Patch</string>
@@ -52,8 +52,8 @@
<string name="menu_set_custom_keybox">Set Custom Keybox</string>
<string name="menu_set_verified_boot_hash">Set Verified Boot Hash</string>
<string name="menu_set_security_patch">Set Security Patch</string>
<string name="menu_set_devconfig">Set DevConfig</string>
<string name="menu_about">About</string>
<string name="menu_shortcut">Create home screen shortcut</string>
<!-- Boot Hash -->
<string name="boot_hash_title">Boot Hash</string>
<string name="boot_hash_input_placeholder">Paste your verified Boot Hash here</string>
@@ -79,7 +79,7 @@
<string name="prompt_save_error">Failed to save config</string>
<string name="prompt_uninstall_prompt">WebUI will be removed after reboot</string>
<string name="prompt_uninstall_failed">Failed to uninstall WebUI</string>
<string name="prompt_checking_update">Checking udpate...</string>
<string name="prompt_checking_update">Checking update...</string>
<string name="prompt_new_update">A new update is available!</string>
<string name="prompt_no_update">There are currently no updates available</string>
<string name="prompt_downloading">Downloading new update...</string>
@@ -95,7 +95,6 @@
<string name="prompt_no_file_selected">No file selected</string>
<string name="prompt_system_app_not_found">System app not found</string>
<string name="prompt_system_app_error">Failed to add system app</string>
<string name="prompt_shortcut_created">Home screen shortcut created</string>
<!-- Security Patch -->
<string name="security_patch_title">Security Patch</string>
<string name="security_patch_advanced_mode">Advanced</string>

View File

@@ -1,6 +1,5 @@
import { linkRedirect, basePath, showPrompt } from './main.js';
import { translations } from './language.js';
import { spawn, toast } from './assets/kernelsu.js';
import { spawn } from './assets/kernelsu.js';
const aboutOverlay = document.getElementById('about-overlay');
const aboutContent = document.querySelector('.about-menu');

View File

@@ -32,29 +32,46 @@ export async function fetchAppList() {
});
// Fetch cached applist
const response = await fetch('applist.json');
const appList = await response.json();
const appNameMap = appList.reduce((map, app) => {
map[app.package_name] = app.app_name;
return map;
}, {});
let appList = [], appNameMap = {};
try {
const response = await fetch('applist.json');
appList = await response.json();
appNameMap = appList.reduce((map, app) => {
map[app.package_name] = app.app_name;
return map;
}, {});
} catch (error) {
console.warn("Failed to fetch applist.json:", error);
appList = [];
appNameMap = {};
}
// Get installed packages
let appEntries = [], installedPackages = [];
const output = spawn('sh', [`${basePath}/common/get_extra.sh`, '--applist']);
const output = spawn('sh', [`${basePath}/common/get_extra.sh`, '--applist'], { cwd: "/data/local/tmp" });
output.stdout.on('data', (data) => {
if (data.trim() === "") return;
installedPackages.push(data);
});
output.stderr.on('data', (data) => {
console.error("Error fetching applist: ", data);
});
output.on('exit', async () => {
// Create appEntries array contain { appName, packageName }
appEntries = await Promise.all(installedPackages.map(async (packageName) => {
if (appNameMap[packageName]) {
if (appNameMap[packageName] && appNameMap[packageName].trim() !== '') {
return {
appName: appNameMap[packageName],
appName: appNameMap[packageName].trim(),
packageName
};
}
if (typeof ksu.getPackagesInfo === 'function') {
const info = JSON.parse(ksu.getPackagesInfo(`[${packageName}]`));
return {
appName: info[0].appLabel,
packageName
}
}
if (typeof $packageManager !== 'undefined') {
const info = $packageManager.getApplicationInfo(packageName, 0, 0);
return {
@@ -67,7 +84,7 @@ export async function fetchAppList() {
{ env: { PATH: `$PATH:${basePath}/common:/data/data/com.termux/files/usr/bin` } });
output.stdout.on('data', (data) => {
resolve({
appName: data,
appName: data.trim() === '' ? packageName : data.trim(),
packageName
});
});
@@ -98,6 +115,10 @@ function renderAppList(data) {
loadingIndicator.style.display = "none";
hideFloatingBtn(false);
if (updateCard) appListContainer.appendChild(updateCard);
let showIcon = false;
if (typeof $packageManager !== 'undefined' || typeof ksu.getPackagesIcons === 'function') {
showIcon = true;
}
// Append app
const appendApps = (index) => {
@@ -108,9 +129,7 @@ function renderAppList(data) {
setupModeMenu();
updateCheckboxColor();
applyRippleEffect();
if (typeof $packageManager !== 'undefined') {
setupIconIntersectionObserver();
}
if (showIcon) setupIconIntersectionObserver();
return;
}
@@ -140,7 +159,7 @@ function renderAppList(data) {
const nameElement = appElement.querySelector(".name");
nameElement.innerHTML = `
<div class="app-icon-container" style="display:${typeof $packageManager !== 'undefined' ? 'flex' : 'none'};">
<div class="app-icon-container" style="display:${showIcon ? 'flex' : 'none'};">
<div class="loader" data-package="${packageName}"></div>
<img src="" class="app-icon" data-package="${packageName}" />
</div>
@@ -198,7 +217,14 @@ function loadIcons(packageName) {
imgElement.src = iconCache.get(packageName);
loader.style.display = 'none';
imgElement.style.opacity = '1';
} else {
} else if (typeof ksu.getPackagesIcons === 'function') {
const app = JSON.parse(ksu.getPackagesIcons(`[${packageName}]`, 100));
console.log(app);
iconCache.set(packageName, app[0].icon);
imgElement.src = app[0].icon;
loader.style.display = 'none';
imgElement.style.opacity = '1';
} else if (typeof $packageManager !== 'undefined') {
const stream = $packageManager.getApplicationIcon(packageName, 0, 0);
wrapInputStream(stream)
.then(r => r.arrayBuffer())

View File

@@ -33,7 +33,11 @@ export function exec(command, options = {}) {
delete window[successName];
}
try {
ksu.exec(command, JSON.stringify(options), callbackFuncName);
if (typeof ksu !== 'undefined') {
ksu.exec(command, JSON.stringify(options), callbackFuncName);
} else {
resolve({ errno: 1, stdout: "", stderr: "ksu is not defined" });
}
} catch (error) {
reject(error);
cleanup(callbackFuncName);
@@ -96,7 +100,14 @@ export function spawn(command, args = [], options = {}) {
window[callbackName] = child;
child.on("exit", () => delete window[callbackName]);
try {
ksu.spawn(command, JSON.stringify(args), JSON.stringify(options), callbackName);
if (typeof ksu !== 'undefined') {
ksu.spawn(command, JSON.stringify(args), JSON.stringify(options), callbackName);
} else {
setTimeout(() => {
child.emit("error", "ksu is not defined");
child.emit("exit", 1);
}, 0);
}
} catch (error) {
child.emit("error", error);
delete window[callbackName];
@@ -111,7 +122,11 @@ export function spawn(command, args = [], options = {}) {
*/
export function toast(message) {
try {
ksu.toast(message);
if (typeof ksu !== 'undefined') {
ksu.toast(message);
} else {
console.log(message);
}
} catch (error) {
console.error("Error displaying toast:", error);
}

View File

@@ -4,6 +4,17 @@ const languageButton = document.querySelector('.language-button');
const languageMenu = document.querySelector('.language-menu');
const languageOptions = document.querySelectorAll('.language-option');
const languageOverlay = document.getElementById('language-overlay');
const rtlLang = [
'ar', // Arabic
'fa', // Persian
'he', // Hebrew
'ur', // Urdu
'ps', // Pashto
'sd', // Sindhi
'ku', // Kurdish
'yi', // Yiddish
'dv', // Dhivehi
];
export let translations = {};
let baseTranslations = {};
@@ -88,6 +99,25 @@ export async function loadTranslations() {
translations = baseTranslations;
}
// Support for rtl language
const isRTL = rtlLang.includes(lang.split('-')[0]);
if (isRTL) {
document.documentElement.setAttribute('dir', 'rtl');
document.documentElement.setAttribute('lang', lang);
// Load extra rtl css
fetch('styles/rtl_styles.css')
.then(res => res.text())
.then(css => {
const style = document.createElement('style');
style.textContent = css;
document.head.appendChild(style);
});
} else {
document.documentElement.setAttribute('dir', 'ltr');
document.documentElement.setAttribute('lang', lang);
}
// Generate language menu
await generateLanguageMenu();
} catch (error) {
@@ -155,10 +185,10 @@ export function setupLanguageMenu() {
languageMenu.addEventListener("click", async (e) => {
if (e.target.classList.contains("language-option")) {
const lang = e.target.getAttribute("data-lang");
localStorage.setItem('trickyAddonLanguage', lang);
closeLanguageMenu();
await new Promise(resolve => setTimeout(resolve, 200));
loadTranslations();
if (lang) {
localStorage.setItem('trickyAddonLanguage', lang);
window.location.reload();
}
}
});
}

View File

@@ -205,14 +205,6 @@ function checkMMRL() {
if (window.$tricky_store && Object.keys($tricky_store).length > 0) {
// Set status bars theme based on device theme
$tricky_store.setLightStatusBars(!window.matchMedia('(prefers-color-scheme: dark)').matches)
// Create home screen shortcut
const shortcutButton = document.getElementById('shortcut');
shortcutButton.style.display = 'flex';
shortcutButton.addEventListener('click', () => {
$tricky_store.createShortcut();
showPrompt("prompt_shortcut_created", true);
});
}
}

View File

@@ -1,5 +1,6 @@
import { exec, spawn } from './assets/kernelsu.js';
import { basePath, showPrompt } from './main.js';
import { translations } from './language.js';
let jamesFork = false;
@@ -9,17 +10,31 @@ const advancedToggleElement = document.querySelector('.advanced-toggle');
const advancedToggle = document.getElementById('advanced-mode');
const normalInputs = document.getElementById('normal-mode-inputs');
const advancedInputs = document.getElementById('advanced-mode-inputs');
const jamesInputs = document.getElementById('james-mode-inputs');
const devconfigInputs = document.getElementById('devconfig-mode-inputs');
const allPatchInput = document.getElementById('all-patch');
const bootPatchInput = document.getElementById('boot-patch');
const systemPatchInput = document.getElementById('system-patch');
const vendorPatchInput = document.getElementById('vendor-patch');
const jamesPatchInput = document.getElementById('james-patch');
const jamesOsInput = document.getElementById('james-os');
const devconfigPatchInput = document.getElementById('devconfig-securityPatch');
const getButton = document.getElementById('get-patch');
const autoButton = document.getElementById('auto-config');
const saveButton = document.getElementById('save-patch');
// Configurable options in james' fork
const devconfigOption = [
'securityPatch',
'osVersion',
'brand',
'device',
'product',
'manufacturer',
'model',
'serial',
'meid',
'imei',
'imei2'
];
// Hide security patch dialog
const hideSecurityPatchDialog = () => {
document.body.classList.remove("no-scroll");
@@ -32,7 +47,8 @@ const hideSecurityPatchDialog = () => {
/**
* Save the security patch configuration to file
* @param {string} mode - 'disable', 'manual'
* @param {string} mode - 'disable',
'manual'
* @param {string} value - The security patch value to save, if mode is 'manual'.
*/
function handleSecurityPatch(mode, value = null) {
@@ -69,13 +85,14 @@ async function loadCurrentConfig() {
if (stdout.trim() !== '') {
const lines = stdout.split('\n');
for (const line of lines) {
if (line.startsWith('securityPatch =')) {
const jamesPatchValue = line.split('=')[1].trim().replace(/"/g, '');
if (jamesPatchValue !== '') jamesPatchInput.value = jamesPatchValue;
}
if (line.startsWith('osVersion =')) {
const jamesOsVersionValue = line.split('=')[1].trim().replace(/"/g, '');
if (jamesOsVersionValue !== '') jamesOsInput.value = jamesOsVersionValue;
for (const option of devconfigOption) {
if (line.startsWith(`${option} =`)) {
const value = line.split('=')[1].trim().replace(/"/g, '');
document.getElementById(`devconfig-${option}`).value = value;
}
if (!stdout.includes(option)) {
document.getElementById(`devconfig-${option}`).value = '';
}
}
}
}
@@ -218,13 +235,14 @@ function isValid8Digit(value) {
// Initialize event listeners
export function securityPatch() {
exec(`grep -q "James" "/data/adb/modules/tricky_store/module.prop"`)
exec(`grep -q "James" "/data/adb/modules/tricky_store/module.prop" && ! grep -q "beakthoven" "/data/adb/modules/tricky_store/module.prop"`)
.then(({ errno }) => {
if (errno === 0) {
jamesFork = true;
document.getElementById('security-patch').textContent = translations.menu_set_devconfig;
advancedToggleElement.style.display = 'none';
normalInputs.classList.add('hidden');
jamesInputs.classList.remove('hidden');
devconfigInputs.classList.remove('hidden');
}
});
document.getElementById("security-patch").addEventListener("click", () => {
@@ -282,19 +300,45 @@ export function securityPatch() {
// Save button
saveButton.addEventListener('click', async () => {
if (jamesFork) {
const securityPatchValue = jamesPatchInput.value.trim();
const osVersionValue = jamesOsInput.value.trim();
const devconfig = new Map();
for (const option of devconfigOption) {
const input = document.getElementById(`devconfig-${option}`);
if (input.value.trim() === '') continue;
devconfig.set(option, input.value.trim());
}
if (!securityPatchValue) handleSecurityPatch('disable');
if (!securityPatchValue && !osVersionValue) {
if (devconfig.size === 0) {
handleSecurityPatch('disable');
hideSecurityPatchDialog();
return;
}
const config = [
securityPatchValue ? `securityPatch = \\"${securityPatchValue}\\"` : '',
osVersionValue ? `osVersion = ${osVersionValue}` : ''
].filter(Boolean).join('\n');
if (!devconfig.has('securityPatch')) {
exec('rm -f /data/adb/tricky_store/security_patch_auto_config || true');
}
// Separate top-level and deviceProps
const topLevelKeys = ['securityPatch', 'osVersion'];
const topLevel = [];
const deviceProps = [];
for (const [key, value] of devconfig.entries()) {
if (topLevelKeys.includes(key)) {
if (key === 'osVersion') {
topLevel.push(`${key} = ${value}`);
} else {
topLevel.push(`${key} = \\"${value}\\"`);
}
} else {
deviceProps.push(`${key} = \\"${value}\\"`);
}
}
let config = topLevel.join('\n');
if (deviceProps.length > 0) {
config += `\n[deviceProps]\n` + deviceProps.join('\n');
}
handleSecurityPatch('manual', config);
} else if (!advancedToggle.checked) {
// Normal mode validation
@@ -356,6 +400,7 @@ export function securityPatch() {
allPatchInput.value = '';
}
}
overlayContent.scrollTop = 0;
hideSecurityPatchDialog();
loadCurrentConfig();
});
@@ -373,7 +418,7 @@ export function securityPatch() {
systemPatchInput.value = 'prop';
bootPatchInput.value = data;
vendorPatchInput.value = data;
jamesPatchInput.value = data;
devconfigPatchInput.value = data;
});
output.stderr.on('data', (data) => {
if (data.includes("failed")) {

View File

@@ -20,7 +20,6 @@
.about-menu p {
margin: 0;
font-size: 16px;
text-align: left;
}
#module_name_line1 {
@@ -55,10 +54,9 @@
.link-icon {
font-size: 17px;
font-weight: bold;
min-height: calc(1em + 15px);
min-height: calc(1em + 20px);
padding: 3px 10px;
color: #fff;
fill: #fff;
user-select: none;
display: inline-flex;
align-items: center;
@@ -69,6 +67,7 @@
transition: background-color 0.2s ease;
svg {
fill: #fff;
padding-right: 3px;
}
}

View File

@@ -273,7 +273,6 @@
display: inline-block;
width: 20px;
height: 20px;
margin-left: auto;
}
.checkbox {

View File

@@ -71,12 +71,12 @@
position: relative;
overflow: hidden;
user-select: none;
}
.file-item svg {
flex-shrink: 0;
margin-right: 10px;
fill: var(--text-secondary);
svg {
flex-shrink: 0;
margin-right: 10px;
fill: var(--text-secondary);
}
}
.file-item span {

View File

@@ -1,5 +1,5 @@
@import url('https://mui.kernelsu.org/mmrl/insets.css');
@import url('https://mui.kernelsu.org/mmrl/colors.css');
@import url('https://mui.kernelsu.org/internal/insets.css');
@import url('https://mui.kernelsu.org/internal/colors.css');
:root {
--top-inset: var(--window-inset-top, 0px);

View File

@@ -1,7 +1,7 @@
.header {
display: flex;
align-items: center;
justify-content: space-between;
justify-content: flex-start;
position: fixed;
top: 0;
left: 0;
@@ -27,26 +27,34 @@
}
.no-connection {
padding: 0;
height: 100%;
display: flex;
align-items: center;
display: none;
margin-right: 0px;
background: none;
border: none;
svg {
fill: var(--border-color);
}
}
.language-dropdown {
margin-left: auto;
position: relative;
display: inline-block;
}
.language-button {
padding-top: 5px;
height: 100%;
display: flex;
align-items: center;
background: none;
border: none;
}
.language-icon {
fill: var(--text-primary);
svg {
fill: var(--text-primary);
}
}
.language-menu {
@@ -121,10 +129,16 @@
}
.help-button {
padding-left: 5px;
margin-right: auto;
height: 100%;
display: flex;
align-items: center;
padding: 5px;
background: none;
border: none;
svg {
fill: var(--border-color);
}
}
.help-overlay {
@@ -139,7 +153,6 @@
background-color: var(--bg-secondary);
padding: 30px;
border-radius: 15px;
text-align: left;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
}
@@ -148,7 +161,9 @@
flex-direction: column;
gap: 20px;
max-height: calc(85vh - 60px);
padding-bottom: 20px;
overflow-y: auto;
mask-image: linear-gradient(black 0%, black calc(100% - 20px), transparent 100%);
}
.help-content-header {

View File

@@ -0,0 +1,57 @@
#module-version,
#title {
padding-left: unset;
padding-right: 5px;
}
.language-dropdown {
margin-left: unset;
margin-right: auto;
}
.language-menu {
right: unset;
left: 5px;
transform-origin: top left;
}
.close-btn {
right: unset;
left: 12px;
}
.search-icon {
left: unset;
right: 15px;
}
.search-card {
left: unset;
right: 0;
}
.menu {
right: unset;
left: 0;
}
.menu-options {
right: unset;
left: 0;
transform: translateX(-120%);
}
.app-icon-container {
margin-right: unset;
margin-left: 10px;
}
.link-icon svg {
padding-right: unset;
padding-left: 3px;
}
.file-item svg {
margin-right: unset;
margin-left: 10px;
}

View File

@@ -113,7 +113,6 @@
user-select: none;
}
#shortcut,
#select-denylist,
#security-patch {
display: none;
@@ -133,7 +132,6 @@
.menu-options li {
padding: 12px 15px;
text-align: left;
}
.menu-options li::after {

View File

@@ -13,7 +13,7 @@
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.2);
width: calc(90% - 60px);
max-width: 300px;
max-height: calc(80% - 60px);
max-height: calc(60% - 60px);
overflow-y: auto;
}

View File

@@ -1,6 +1,6 @@
{
"versionCode": 538,
"version": "v4.0",
"zipUrl": "https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/download/v4.0/TrickyAddonModule-v4.0.zip",
"versionCode": 572,
"version": "v4.1",
"zipUrl": "https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/download/v4.1/TrickyAddonModule-v4.1.zip",
"changelog": "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/changelog.md"
}