Compare commits
105 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1fd13d9d8d | ||
|
|
4205db6870 | ||
|
|
70f03081a4 | ||
|
|
5ccb779b6a | ||
|
|
b07bc408ce | ||
|
|
7ee1fd63f1 | ||
|
|
3551441e42 | ||
|
|
4a1ab76322 | ||
|
|
2fedb051b8 | ||
|
|
10c35f4baa | ||
|
|
4f82eda003 | ||
|
|
80f89c0241 | ||
|
|
8399f14fad | ||
|
|
c49a66d1af | ||
|
|
d66b390361 | ||
|
|
9c290a8080 | ||
|
|
48efc28e8f | ||
|
|
634adad15c | ||
|
|
4532bab230 | ||
|
|
d3c9b6e739 | ||
|
|
8e4f980db0 | ||
|
|
cfee357ed1 | ||
|
|
9393459b27 | ||
|
|
60af173a7e | ||
|
|
23e2377f87 | ||
|
|
d45ba31849 | ||
|
|
c5705c2d5d | ||
|
|
dfae83cf58 | ||
|
|
cd5ba3ac3c | ||
|
|
2c2698f6bc | ||
|
|
f57fe79c5d | ||
|
|
91ae4c9650 | ||
|
|
01f44dc1d9 | ||
|
|
6e35b88041 | ||
|
|
c9c122d79b | ||
|
|
4bec5ae7b1 | ||
|
|
f9b3478dbb | ||
|
|
561c82de0a | ||
|
|
e96ceb84c9 | ||
|
|
ddbbeafc64 | ||
|
|
285478a778 | ||
|
|
00ffa86705 | ||
|
|
74ec20745c | ||
|
|
b7b995bf73 | ||
|
|
29b7f9e0ad | ||
|
|
00a4c69227 | ||
|
|
9c204496c3 | ||
|
|
519401cf39 | ||
|
|
f69eb5c115 | ||
|
|
82e96f4394 | ||
|
|
8e3db00b9b | ||
|
|
adf299d9f3 | ||
|
|
483a39c7ac | ||
|
|
c83baad6d5 | ||
|
|
2ff3b5ee06 | ||
|
|
b537b51034 | ||
|
|
bfb6ea3613 | ||
|
|
edf7685e9a | ||
|
|
f65f62360a | ||
|
|
af97488d58 | ||
|
|
6b1f73aa3d | ||
|
|
4eeece9559 | ||
|
|
4d7d5547ac | ||
|
|
7b74e70f97 | ||
|
|
d92f8fc8fd | ||
|
|
55f9de2fa9 | ||
|
|
a12b14ef46 | ||
|
|
4ce6ff6286 | ||
|
|
ce3566640c | ||
|
|
a0a9fb01f4 | ||
|
|
e1bd16d94f | ||
|
|
776ae8744c | ||
|
|
9285945e8b | ||
|
|
75e56038ec | ||
|
|
730d58f18b | ||
|
|
67a05e8813 | ||
|
|
e95a469bdb | ||
|
|
2ff122e235 | ||
|
|
2319452306 | ||
|
|
a0752d10c7 | ||
|
|
9110d89d61 | ||
|
|
39d6962320 | ||
|
|
7b314116e9 | ||
|
|
ef4101cbf9 | ||
|
|
85f5459c1d | ||
|
|
97e367aa92 | ||
|
|
7097986cf5 | ||
|
|
d6c8ef3737 | ||
|
|
d7a5e80d34 | ||
|
|
2d9783e3d4 | ||
|
|
9f407a94e3 | ||
|
|
99726a2c4e | ||
|
|
f3675e7f6e | ||
|
|
b84d528d99 | ||
|
|
0aab0c1d6b | ||
|
|
ab2367f7fa | ||
|
|
1bac30930f | ||
|
|
6a9186300b | ||
|
|
e6dea3c29e | ||
|
|
c873ff74cb | ||
|
|
7b6f451cfb | ||
|
|
73dea0b8e7 | ||
|
|
f71d617cb3 | ||
|
|
f0d8e42026 | ||
|
|
5bbd95e821 |
5
.github/FUNDING.yml
vendored
5
.github/FUNDING.yml
vendored
@@ -1,5 +1,4 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: tiann
|
||||
patreon: weishu
|
||||
custom: https://vxposed.com/donate.html
|
||||
open_collective: sukisu-ultra
|
||||
|
||||
|
||||
22
.github/workflows/build-lkm.yml
vendored
22
.github/workflows/build-lkm.yml
vendored
@@ -24,23 +24,23 @@ jobs:
|
||||
matrix:
|
||||
include:
|
||||
- version: "android12-5.10"
|
||||
sub_level: 237
|
||||
os_patch_level: 2025-06
|
||||
- version: "android13-5.10"
|
||||
sub_level: 236
|
||||
os_patch_level: 2025-05
|
||||
- version: "android13-5.10"
|
||||
sub_level: 234
|
||||
os_patch_level: 2025-03
|
||||
- version: "android13-5.15"
|
||||
sub_level: 178
|
||||
os_patch_level: 2025-03
|
||||
sub_level: 180
|
||||
os_patch_level: 2025-05
|
||||
- version: "android14-5.15"
|
||||
sub_level: 178
|
||||
os_patch_level: 2025-03
|
||||
sub_level: 180
|
||||
os_patch_level: 2025-05
|
||||
- version: "android14-6.1"
|
||||
sub_level: 134
|
||||
os_patch_level: 2025-05
|
||||
sub_level: 138
|
||||
os_patch_level: 2025-06
|
||||
- version: "android15-6.6"
|
||||
sub_level: 87
|
||||
os_patch_level: 2025-05
|
||||
sub_level: 89
|
||||
os_patch_level: 2025-06
|
||||
# uses: ./.github/workflows/gki-kernel-mock.yml when debugging
|
||||
uses: ./.github/workflows/gki-kernel.yml
|
||||
with:
|
||||
|
||||
50
.github/workflows/crowdin.yml
vendored
50
.github/workflows/crowdin.yml
vendored
@@ -4,35 +4,37 @@ on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
paths:
|
||||
- 'manager/app/src/main/res/**'
|
||||
- 'manager/app/src/main/res/values/strings.xml'
|
||||
- 'manager/app/src/main/res/values-*/strings.xml'
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
synchronize-with-crowdin:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: crowdin action
|
||||
uses: crowdin/github-action@master
|
||||
with:
|
||||
upload_sources: true
|
||||
upload_translations: true
|
||||
download_translations: true
|
||||
localization_branch_name: "Crowdin"
|
||||
crowdin_branch_name: "main"
|
||||
create_pull_request: true
|
||||
pull_request_title: 'New Crowdin Translations'
|
||||
pull_request_body: 'New Crowdin translations by [Crowdin GH Action](https://github.com/crowdin/github-action)'
|
||||
pull_request_base_branch_name: 'main'
|
||||
skip_untranslated_files: true
|
||||
env:
|
||||
# A classic GitHub Personal Access Token with the 'repo' scope selected (the user should have write access to the repository).
|
||||
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
|
||||
- name: Crowdin Action
|
||||
uses: crowdin/github-action@v2
|
||||
with:
|
||||
upload_sources: true
|
||||
upload_translations: true
|
||||
auto_approve_imported: true
|
||||
download_translations: true
|
||||
skip_untranslated_files: false
|
||||
skip_untranslated_strings: true
|
||||
|
||||
# A numeric ID, found at https://crowdin.com/project/<projectName>/tools/api
|
||||
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
|
||||
create_pull_request: true
|
||||
localization_branch_name: "Crowdin"
|
||||
pull_request_labels: 'enhancement, translation'
|
||||
pull_request_title: 'opt: sync translation from Crowdin'
|
||||
|
||||
# Visit https://crowdin.com/settings#api-key to create this token
|
||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
||||
config: 'crowdin.yml'
|
||||
crowdin_branch_name: "main"
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
|
||||
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
|
||||
CROWDIN_API_TOKEN: ${{ secrets.CROWDIN_API_TOKEN }}
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,2 +1,3 @@
|
||||
.idea
|
||||
.vscode
|
||||
.DS_Store
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
project_id_env: CROWDIN_PROJECT_ID
|
||||
api_token_env: CROWDIN_API_TOKEN
|
||||
preserve_hierarchy: 1
|
||||
files:
|
||||
- source: /manager/app/src/main/res/values/strings.xml
|
||||
translation: /manager/app/src/main/res/values-%two_letters_code%/strings.xml
|
||||
|
||||
@@ -13,42 +13,71 @@ Android device root solution based on [KernelSU](https://github.com/tiann/Kernel
|
||||
## How to add
|
||||
|
||||
Using main branching (non-GKI device builds are not supported) (requires manual integration of susfs)
|
||||
|
||||
```
|
||||
curl -LSs "https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/kernel/setup.sh" | bash -s main
|
||||
```
|
||||
|
||||
Using branches that support non-GKI devices (requires manual integration of susfs)
|
||||
|
||||
```
|
||||
curl -LSs "https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/kernel/setup.sh" | bash -s nongki
|
||||
```
|
||||
|
||||
## How to use integrated susfs
|
||||
|
||||
1. Use the susfs-dev branch directly without any patching (Support for non-GKI device builds)
|
||||
> [!Note]
|
||||
>
|
||||
> - Due to SuSFS version changes and unpredictability issues
|
||||
> - This susfs-main branch will only merge the latest new version after a full update
|
||||
> - Please keep an eye on the susfs branch to avoid build failures and incompatibilities caused by the various versions
|
||||
|
||||
1. Use susfs-main or other susfs-\* branches directly, no need to integrate susfs again (supports non-GKI device builds)
|
||||
|
||||
```
|
||||
curl -LSs "https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/kernel/setup.sh" | bash -s susfs-dev
|
||||
curl -LSs "https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/kernel/setup.sh" | bash -s susfs-main
|
||||
```
|
||||
|
||||
## Hook method
|
||||
|
||||
- This method references the hook [method by rsuntk](https://github.com/rsuntk/KernelSU)
|
||||
|
||||
1. **KPROBES hook:**
|
||||
|
||||
- Also used for Loadable Kernel Module (LKM)
|
||||
- Default hook method on GKI kernels.
|
||||
- Need `CONFIG_KPROBES=y`
|
||||
|
||||
2. **Manual hook:**
|
||||
- Standard KernelSU hook: https://kernelsu.org/guide/how-to-integrate-for-non-gki.html#manually-modify-the-kernel-source
|
||||
|
||||
- backslashxx's syscall manual hook: https://github.com/backslashxx/KernelSU/issues/5 (v1.5 version is not available at the moment, if you want to use it, please use v1.4 version, or standard KernelSU hooks)
|
||||
|
||||
- Default hook method on Non-GKI kernels.
|
||||
- Need `CONFIG_KSU_MANUAL_HOOK=y`
|
||||
|
||||
## KPM Support
|
||||
|
||||
- Based on KernelPatch, we have removed duplicates of KSU and kept only KPM support.
|
||||
- We will introduce more APatch-compatible functions to ensure the integrity of KPM functionality.
|
||||
|
||||
We will introduce more APatch-compatible functions to ensure the completeness of KPM functionality.
|
||||
Repository address: https://github.com/ShirkNeko/SukiSU_KernelPatch_patch
|
||||
|
||||
KPM templates: https://github.com/udochina/KPM-Build-Anywhere
|
||||
|
||||
> [!Note]
|
||||
>
|
||||
> 1. `CONFIG_KPM=y` needs to be added.
|
||||
> 2. Non-GKI devices need to add `CONFIG_KALLSYMS=y` and `CONFIG_KALLSYMS_ALL=y` as well.
|
||||
> 3. Some kernel source code below `4.19` also needs to be backport from `4.19` to the header file `set_memory.h`.
|
||||
|
||||
## How to do a system update to retain ROOT
|
||||
|
||||
- After OTA, don't reboot first, go to the manager flashing/patching kernel interface, find `GKI/non_GKI install` and select the Anykernel3 kernel zip file that needs to be flashed, select the slot that is opposite to the current running slot of the system for flashing, and then reboot to retain the GKI mode update (This method is not supported for all non-GKI devices, so please try it yourself. It is the safest way to use TWRP for non-GKI devices.)
|
||||
- Or use LKM mode to install to the unused slot (after OTA).
|
||||
|
||||
## Compatibility Status
|
||||
|
||||
- KernelSU (versions prior to v1.0.0) officially supports Android GKI 2.0 devices (kernel 5.10+)
|
||||
|
||||
- Older kernels (4.4+) are also compatible, but the kernel must be built manually
|
||||
@@ -57,29 +86,16 @@ KPM templates: https://github.com/udochina/KPM-Build-Anywhere
|
||||
|
||||
- Currently supports `arm64-v8a`, `armeabi-v7a (bare)` and some `X86_64`
|
||||
|
||||
|
||||
## More links
|
||||
|
||||
**If you need to submit a translation for the manager go to** https://crowdin.com/project/SukiSU-Ultra
|
||||
|
||||
Projects compiled based on Sukisu and susfs
|
||||
- [GKI](https://github.com/ShirkNeko/GKI_KernelSU_SUSFS)
|
||||
|
||||
- [More patched GKI](https://github.com/ShirkNeko/GKI_KernelSU_SUSFS) including ZRAM patches, KPM, susfs...
|
||||
- [Less patched GKI](https://github.com/MiRinFork/GKI_SukiSU_SUSFS/releases) only susfs
|
||||
- [OnePlus](https://github.com/ShirkNeko/Action_OnePlus_MKSU_SUSFS)
|
||||
|
||||
## Hook method
|
||||
- This method references the hook method from (https://github.com/rsuntk/KernelSU)
|
||||
|
||||
1. **KPROBES hook:**
|
||||
- Also used for Loadable Kernel Module (LKM)
|
||||
- Default hook method on GKI kernels.
|
||||
- Need `CONFIG_KPROBES=y`
|
||||
|
||||
2. **Manual hook:**
|
||||
- Standard KernelSU hook: https://kernelsu.org/guide/how-to-integrate-for-non-gki.html#manually-modify-the-kernel-source
|
||||
- backslashxx's syscall manual hook: https://github.com/backslashxx/KernelSU/issues/5
|
||||
- Default hook method on Non-GKI kernels.
|
||||
- Need `CONFIG_KSU_MANUAL_HOOK=y`
|
||||
|
||||
## Usage
|
||||
|
||||
### Universal GKI
|
||||
@@ -87,16 +103,17 @@ Projects compiled based on Sukisu and susfs
|
||||
Please **all** refer to https://kernelsu.org/zh_CN/guide/installation.html
|
||||
|
||||
> [!Note]
|
||||
>
|
||||
> 1. for devices with GKI 2.0 such as Xiaomi, Redmi, Samsung, etc. (excludes kernel-modified manufacturers such as Meizu, OnePlus, Zenith, and oppo)
|
||||
> 2. Find the GKI build in [more links](#%E6%9B%B4%E5%A4%9A%E9%93%BE%E6%8E%A5). Find the device kernel version. Then download it and use TWRP or kernel flashing tool to flash the zip file with AnyKernel3 suffix.
|
||||
> 2. Find the GKI build in [more links](#%E6%9B%B4%E5%A4%9A%E9%93%BE%E6%8E%A5). Find the device kernel version. Then download it and use TWRP or kernel flashing tool to flash the zip file with AnyKernel3 suffix. Pixel user need use _Less patched GKI_.
|
||||
> 3. The .zip archive without suffix is uncompressed, the gz suffix is the compression used by Tenguet models.
|
||||
|
||||
|
||||
### OnePlus
|
||||
|
||||
1. Use the link mentioned in the 'More Links' section to create a customized build with your device information, and then flash the zip file with the AnyKernel3 suffix.
|
||||
|
||||
> [!Note]
|
||||
>
|
||||
> - You only need to fill in the first two parts of kernel versions, such as 5.10, 5.15, 6.1, or 6.6.
|
||||
> - Please search for the processor codename by yourself, usually it is all English without numbers.
|
||||
> - You can find the branch and configuration files from the OnePlus open-source kernel repository.
|
||||
@@ -105,10 +122,11 @@ Please **all** refer to https://kernelsu.org/zh_CN/guide/installation.html
|
||||
|
||||
1. Kernel-based `su` and root access management.
|
||||
2. Not based on [OverlayFS](https://en.wikipedia.org/wiki/OverlayFS) module system, but based on [Magic Mount](https://github.com/5ec1cff/KernelSU) from 5ec1cff
|
||||
3. [App Profile](https://kernelsu.org/guide/app-profile.html): Lock root privileges in a cage.
|
||||
3. [App Profile](https://kernelsu.org/guide/app-profile.html): Lock root privileges in a cage.
|
||||
4. Bringing back non-GKI/GKI 1.0 support
|
||||
5. More customization
|
||||
6. Support for KPM kernel modules
|
||||
7. Introducing the Manager for SuSFS Configuration and Advanced Features
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
@@ -118,10 +136,13 @@ Please **all** refer to https://kernelsu.org/zh_CN/guide/installation.html
|
||||
|
||||
- The file in the “kernel” directory is under [GPL-2.0-only](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html) license.
|
||||
|
||||
- The images of the files `ic_launcher(?!.*alt.*).*` with anime character emoticons are copyrighted by [五十根大虾仁](https://space.bilibili.com/370927), the Brand Intellectual Property in the images is owned by [明风OuO](https://space.bilibili.com/274939213), and the vectorization is done by @MiRinChan. Before using these files, in addition to complying with [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.txt), you also need to comply with the authorization of the two authors to use these artistic contents.
|
||||
- The images of the files `ic_launcher(?!.*alt.*).*` with anime character emoticons are copyrighted by [五十根大虾仁](https://space.bilibili.com/370927), the Brand Intellectual Property in the images is owned by [明风 OuO](https://space.bilibili.com/274939213), and the vectorization is done by @MiRinChan. Before using these files, in addition to complying with [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.txt), you also need to comply with the authorization of the two authors to use these artistic contents.
|
||||
|
||||
- Except for the files or directories mentioned above, all other parts are under [GPL-3.0 or later](https://www.gnu.org/licenses/gpl-3.0.html) license.
|
||||
|
||||
## Afdian link
|
||||
- https://afdian.com/a/shirkneko
|
||||
|
||||
## Sponsorship list
|
||||
|
||||
- [Ktouls](https://github.com/Ktouls) Thanks so much for bringing me support
|
||||
|
||||
@@ -11,25 +11,41 @@
|
||||
>
|
||||
> ただし、将来的には KSU とは別に管理されるブランチとなる予定です。
|
||||
|
||||
## 追加方法
|
||||
## 追加する方法
|
||||
|
||||
メイン分岐の使用(GKI デバイス以外のビルドはサポートされていません。) (手動によるサスフ統合が必要)
|
||||
メインブランチを使用 (非 GKI のデバイスのビルドは非対応) (susfs を手動で統合が必要)
|
||||
```
|
||||
curl -LSs "https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/kernel/setup.sh" | bash -s main
|
||||
```
|
||||
|
||||
GKI以外のデバイスをサポートするブランチを使用する (手動によるサスフ統合が必要)
|
||||
非 GKI のデバイスに対応するブランチを使用 (susfs を手動で統合が必要)
|
||||
```
|
||||
curl -LSs "https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/kernel/setup.sh" | bash -s nongki
|
||||
```
|
||||
|
||||
## 統合された susfs の使い方
|
||||
|
||||
1. パッチを当てずに susfs-dev ブランチを直接使用してください (非GKIデバイスビルドをサポート)
|
||||
1. susfs-main または他の susfs-\* ブランチを直接で使用、susfs の統合は不要 (非 GKI デバイスのビルドに対応)
|
||||
|
||||
```
|
||||
curl -LSs "https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/kernel/setup.sh" | bash -s susfs-dev
|
||||
curl -LSs "https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/kernel/setup.sh" | bash -s susfs-main
|
||||
```
|
||||
|
||||
## フックの方式
|
||||
|
||||
- この方式は (https://github.com/rsuntk/KernelSU) のフック方式を参照してください。
|
||||
|
||||
1. **KPROBES でフック:**
|
||||
- 読み込み可能なカーネルモジュールの場合 (LKM)
|
||||
- GKI カーネルのデフォルトとなるフック方式
|
||||
- `CONFIG_KPROBES=y` が必要です
|
||||
|
||||
2. **手動でフック:**
|
||||
- 標準の KernelSU フック: https://kernelsu.org/guide/how-to-integrate-for-non-gki.html#manually-modify-the-kernel-source
|
||||
- backslashxx syscall フック: https://github.com/backslashxx/KernelSU/issues/5
|
||||
- 非 GKI カーネル用のデフォルトフック方式
|
||||
- `CONFIG_KSU_MANUAL_HOOK=y` が必要です
|
||||
|
||||
## KPM に対応
|
||||
|
||||
- KernelPatch に基づいて重複した KSU の機能を削除、KPM の対応を維持させています。
|
||||
@@ -40,56 +56,46 @@ curl -LSs "https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/kern
|
||||
KPM テンプレートのアドレス: https://github.com/udochina/KPM-Build-Anywhere
|
||||
|
||||
> [!Note]
|
||||
> 1. `CONFIG_KPM=y` が必要である。
|
||||
> 2.非 GKI デバイスには `CONFIG_KALLSYMS=y` と `CONFIG_KALLSYMS_ALL=y` も必要です。
|
||||
> 3.いくつかのカーネル `4.19` およびそれ以降のソースコードでは、 `4.19` からバックポートされた `set_memory.h` ヘッダーファイルも必要です。
|
||||
> 1. `CONFIG_KPM=y` が必要です。
|
||||
> 2. 非 GKI デバイスには `CONFIG_KALLSYMS=y` と `CONFIG_KALLSYMS_ALL=y` も必要です。
|
||||
> 3. いくつかのカーネル `4.19` およびそれ以降のソースコードでは、 `4.19` からバックポートされた `set_memory.h` ヘッダーファイルも必要です。
|
||||
|
||||
|
||||
## ROOT を保持するシステムアップデートの方法
|
||||
- OTAの後、最初に再起動せず、マネージャのフラッシュ/パッチカーネルインターフェイスに移動し、`GKI/non_GKI 取り付け`を見つけ、フラッシュする必要があるAnykernel3カーネルzipファイルを選択し、フラッシュするためにシステムの現在の実行スロットと反対のスロットを選択し、GKIモードアップデートを保持するために再起動します(この方法は、現時点ではすべてのnon_GKIデバイスでサポートされていませんので、各自でお試しください。 (この方法は、すべての非GKIデバイスでサポートされていませんので、ご自身でお試しください)。
|
||||
- または、LKMモードを使用して未使用のスロットにインストールします(OTA後)。
|
||||
## ROOT を保持した状態でのシステムアップデートの方法
|
||||
|
||||
## 互換性ステータス
|
||||
- KernelSU(v1.0.0より前のバージョン)はAndroid GKI 2.0デバイス(カーネル5.10以上)を公式にサポートしています。
|
||||
- 始めに OTA 後すぐに再起動せずにマネージャーのカーネルのフラッシュ、パッチのインターフェースを開いて`GKI/非 GKI のインストール`を見つけます。フラッシュする AnyKernel3 の zip ファイルを選択し、フラッシュする実行中のスロットと逆のスロットを選択後に再起動をして GKI モードの更新が保持できます (この方法はすべての非 GKI のデバイスが対応している訳ではないので、自分でお試しください。これは非 GKI のデバイスで TWRP を使用する最も安全な方法です)。
|
||||
- または LKM モードを使用して未使用のスロットにインストールします (OTA後)。
|
||||
|
||||
- 古いカーネル(4.4+)も互換性がありますが、カーネルは手動でビルドする必要があります。
|
||||
## 互換性の状態
|
||||
|
||||
- KernelSU は追加のリバースポートを通じて 3.x カーネル (3.4-3.18) をサポートしています。
|
||||
- KernelSU (v1.0.0 より前) は Android GKI 2.0 のデバイス (カーネル 5.10 以降) を公式に対応しています。
|
||||
|
||||
- 現在は `arm64-v8a`、`armeabi-v7a (bare)`、いくつかの `X86_64` をサポートしています。
|
||||
- 古いカーネル (4.4 以降) も互換性がありますが、カーネルを手動で再ビルドする必要があります。
|
||||
|
||||
- KernelSU は追加のリバースポートを通じて 3.x カーネル (3.4-3.18) で対応可能です。
|
||||
|
||||
- 現在 `arm64-v8a`, `armeabi-v7a (bare)` および一部の `X86_64` に対応しています。
|
||||
|
||||
## その他のリンク
|
||||
|
||||
**監督に翻訳を提出する必要がある場合は、https://crowdin.com/project/SukiSU-Ultra。
|
||||
**マネージャーの翻訳を行う場合** https://crowdin.com/project/SukiSU-Ultra
|
||||
|
||||
- [GKI](https://github.com/ShirkNeko/GKI_KernelSU_SUSFS)
|
||||
- [その他パッチ済み GKI](https://github.com/ShirkNeko/GKI_KernelSU_SUSFS) ZRAM パッチ、KPM、susfs が含まれています...
|
||||
- [パッチの少ない GKI](https://github.com/MiRinFork/GKI_SukiSU_SUSFS/releases) susfs のみ
|
||||
- [OnePlus](https://github.com/ShirkNeko/Action_OnePlus_MKSU_SUSFS)
|
||||
|
||||
## フックの方式
|
||||
|
||||
- この方式は (https://github.com/rsuntk/KernelSU) のフック方式を参照してください。
|
||||
|
||||
1. **KPROBES フック:**
|
||||
- 読み込み可能なカーネルモジュールの場合 (LKM)
|
||||
- GKI カーネルのデフォルトとなるフック方式
|
||||
- `CONFIG_KPROBES=y` が必要です
|
||||
|
||||
2. **手動でフック:**
|
||||
- 標準の KernelSU フック: https://kernelsu.org/guide/how-to-integrate-for-non-gki.html#manually-modify-the-kernel-source
|
||||
- backslashxx syscall フック: https://github.com/backslashxx/KernelSU/issues/5
|
||||
- 非 GKI カーネル用のデフォルトフッキングメソッド
|
||||
- `CONFIG_KSU_MANUAL_HOOK=y` が必要です
|
||||
|
||||
## 使い方
|
||||
|
||||
### ユニバーサルGKI
|
||||
### Universal GKI
|
||||
|
||||
https://kernelsu.org/zh_CN/guide/installation.html をご参照ください。
|
||||
**すべて**参照してください https://kernelsu.org/ja_JP/guide/installation.html
|
||||
|
||||
> [!Note]
|
||||
> 1.Xiaomi、Redmi、Samsung などの GKI 2.0 を搭載したデバイス用 (Meizu、Yiga、Zenith、oppo などのマジックカーネルを搭載したメーカーは除く)。
|
||||
> 2. [more links](#%E6%9B%B4%E5%A4%9A%E9%93%BE%E6%8E%A5) で GKI ビルドを検索します。 デバイスのカーネルバージョンを検索します。 次に、それをダウンロードし、TWRPまたはカーネルフラッシングツールを使用して、AnyKernel3の接尾辞が付いたzipファイルをフラッシュします。
|
||||
> 接尾辞なしの.zipアーカイブは非圧縮で、接尾辞gzはTenguetモデルで使用されている圧縮方法です。
|
||||
>
|
||||
> 1. Xiaomi、Redmi、Samsung などの GKI 2.0 を搭載したデバイス向け (Meizu、OnePlus、Zenith、Oppo などカーネルが変更されているメーカーを除く)
|
||||
> 2. GKI のビルドは[その他のリンク](#その他のリンク)から入手できます。デバイスのカーネルバージョンを確認してください。ダウンロード後に TWRP またはカーネルフラッシュツールを使用して AnyKernel3 の接頭辞を持つ zip ファイルをフラッシュしてください。Pixel のユーザーは、パッチの少ない GKI を使用する必要があります。
|
||||
> 3. 接頭辞のない .zip アーカイブは圧縮されていません。.gz の接頭辞は Tenguet モデルで使用される圧縮になります。
|
||||
|
||||
### OnePlus
|
||||
|
||||
1. `その他のリンク`の項目に記載されているリンクを開き、デバイス情報を使用してカスタマイズされたカーネルをビルドし、AnyKernel3 の接頭辞を持つ .zip ファイルをフラッシュします。
|
||||
@@ -110,32 +116,32 @@ https://kernelsu.org/zh_CN/guide/installation.html をご参照ください。
|
||||
|
||||
## トラブルシューティング
|
||||
|
||||
1.KernelSU Managerのアンインストールができない。 →パッケージ名com.sony.playmemories.mobile.KernelSU Managerのアプリケーションをアンインストールする。
|
||||
1. KernelSU Manager のアンインストールが停止してしまう → com.sony.playmemories.mobile のアプリをアンインストールしてください。
|
||||
|
||||
## ライセンス
|
||||
|
||||
- `kernel` ディレクトリ以下のファイルは[GPL-2.0-only](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)です。
|
||||
- アニメキャラクターの絵文字を含むファイル `ic_launcher(?!.*alt.*).*` の画像は[五十根大虾仁](https://space.bilibili.com/370927)が著作権を所有しており、画像内のブランド知的財産権は[明风OuO](https://space.bilibili.com/274939213)が所有しています。ベクトル化は @MiRinChan が行っています。これらのファイルを使用する前に、[Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.txt)に準拠することに加えて、これらの芸術コンテンツを使用するには、2人の著者の許可にも従う必要があります。
|
||||
- 上記のファイルまたはディレクトリを除き、その他のすべての部分は[GPL-3.0以降](https://www.gnu.org/licenses/gpl-3.0.html)です。
|
||||
- 「kernel」のディレクトリ内のファイルは [GPL-2.0-only](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html) のライセンスに基づいています。
|
||||
|
||||
- アニメキャラクターの絵文字を含む `ic_launcher(?!.*alt.*).*` の画像は、[五十根大虾仁](https://space.bilibili.com/370927)が著作権を所有しています。画像に含まれるブランドの知的財産権は[明风 OuO](https://space.bilibili.com/274939213)が所有しています。ベクトル化は @MiRinChan が行っています。これらのファイルを使用する前に[クリエイティブコモンズ 表示 - 非営利 - 継承 4.0 国際](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.txt)に準拠することに加え、これらの芸術的コンテンツを使用するためには 2 名の著者の許可に従う必要があります。
|
||||
|
||||
## スポンサーシップの一覧
|
||||
|
||||
- [Ktouls](https://github.com/Ktouls) 応援をしてくれたことに感謝。
|
||||
- [zaoqi123](https://github.com/zaoqi123) ミルクティーを買ってあげるのも良い考えですね。
|
||||
- [wswzgdg](https://github.com/wswzgdg) このプロジェクトを支援していただき、ありがとうございます。
|
||||
- [yspbwx2010](https://github.com/yspbwx2010) どうもありがとう。
|
||||
- [DARKWWEE](https://github.com/DARKWWEE) ラオウ100USDTありがとう!
|
||||
- [Saksham Singla](https://github.com/TypeFlu) ウェブサイトの提供およびメンテナンス
|
||||
- [OukaroMF](https://github.com/OukaroMF) ウェブサイトドメイン名の寄付
|
||||
- [Ktouls](https://github.com/Ktouls) 応援してくれてありがとう
|
||||
- [zaoqi123](https://github.com/zaoqi123) ミルクティーを買ってあげるのも良い考えですね
|
||||
- [wswzgdg](https://github.com/wswzgdg) このプロジェクトにご支援いただき、ありがとうございます
|
||||
- [yspbwx2010](https://github.com/yspbwx2010) ありがとうございます
|
||||
- [DARKWWEE](https://github.com/DARKWWEE) ラオスから 100 USDT の支援に感謝します
|
||||
- [Saksham Singla](https://github.com/TypeFlu) ウェブサイトの提供とメンテナンス
|
||||
- [OukaroMF](https://github.com/OukaroMF) ウェブサイトのドメインと寄付
|
||||
|
||||
## 貢献者
|
||||
|
||||
- [KernelSU](https://github.com/tiann/KernelSU): オリジナルのプロジェクトです。
|
||||
- [MKSU](https://github.com/5ec1cff/KernelSU): 使用しているプロジェクトです。
|
||||
- [RKSU](https://github.com/rsuntk/KernelsU): このプロジェクトのカーネルを使用して非 GKI デバイスのサポートを追加しています。
|
||||
- [susfs](https://gitlab.com/simonpunk/susfs4ksu):使用している susfs ファイルシステムです。
|
||||
- [KernelSU](https://git.zx2c4.com/kernel-assisted-superuser/about/): KernelSU について。
|
||||
- [Magisk](https://github.com/topjohnwu/Magisk): パワフルな root ユーティリティです。
|
||||
- [genuine](https://github.com/brevent/genuine/): APK v2 署名認証で使用しています。
|
||||
- [Diamorphine](https://github.com/m0nad/Diamorphine): いくつかの rootkit ユーティリティを使用しています。
|
||||
- [KernelPatch](https://github.com/bmax121/KernelPatch): KernelPatch はカーネルモジュールの APatch 実装での重要な部分となります。
|
||||
- [KernelSU](https://github.com/tiann/KernelSU): オリジナルのプロジェクト
|
||||
- [MKSU](https://github.com/5ec1cff/KernelSU): 使用しているプロジェクト
|
||||
- [RKSU](https://github.com/rsuntk/KernelsU): このプロジェクトのカーネルを使用した非 GKI デバイスのサポートの再導入
|
||||
- [susfs](https://gitlab.com/simonpunk/susfs4ksu): susfs ファイルシステムの使用
|
||||
- [KernelSU](https://git.zx2c4.com/kernel-assisted-superuser/about/): KernelSU の概念化
|
||||
- [Magisk](https://github.com/topjohnwu/Magisk): パワフルな root ユーティリティ
|
||||
- [genuine](https://github.com/brevent/genuine/): APK v2 署名認証
|
||||
- [Diamorphine](https://github.com/m0nad/Diamorphine): いくつかの root キットユーティリティ
|
||||
- [KernelPatch](https://github.com/bmax121/KernelPatch): KernelPatch はカーネルモジュールの APatch 実装の重要な部分での活用
|
||||
|
||||
@@ -28,10 +28,10 @@ curl -LSs "https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/kern
|
||||
|
||||
## susfs Nasıl Entegre Edilir
|
||||
|
||||
1. Doğrudan susfs-stable veya susfs-dev dalını kullanın, susfs entegrasyonuna gerek yok
|
||||
1. Doğrudan susfs-main veya susfs-* dalını kullanın, susfs entegrasyonuna gerek yok
|
||||
|
||||
```
|
||||
curl -LSs "https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/kernel/setup.sh" | bash -s susfs-dev
|
||||
curl -LSs "https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/kernel/setup.sh" | bash -s susfs-main
|
||||
```
|
||||
|
||||
## Kanca Yöntemleri
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
**实验性! 使用风险自负!**
|
||||
|
||||
> 这是非官方分支,保留所有权利 [@tiann](https://github.com/tiann)
|
||||
> 这是非官方分支,[@tiann](https://github.com/tiann) 有权保留所有权利
|
||||
>
|
||||
> 但是,我们将会在未来成为一个单独维护的 KSU 分支
|
||||
|
||||
@@ -28,10 +28,16 @@ curl -LSs "https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/kern
|
||||
|
||||
## 如何集成 susfs
|
||||
|
||||
1. 直接使用 susfs-stable 或者 susfs-dev 分支,不需要再集成 susfs (支持非 GKI 设备构建)
|
||||
1. 直接使用 susfs-main 或者其他 susfs-\* 分支,不需要再集成 susfs (支持非 GKI 设备构建)
|
||||
|
||||
> [!Note]
|
||||
>
|
||||
> - 因 SuSFS 版本的变化和不可测问题
|
||||
> - 本 susfs-main 分支只在完整更新后再合并最新新版本
|
||||
> - 请随时留意 susfs 分支的变化情况以免导致构建失败以及各种版本导致的不兼容问题
|
||||
|
||||
```
|
||||
curl -LSs "https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/kernel/setup.sh" | bash -s susfs-dev
|
||||
curl -LSs "https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/kernel/setup.sh" | bash -s susfs-main
|
||||
```
|
||||
|
||||
## 钩子方法
|
||||
@@ -46,7 +52,9 @@ curl -LSs "https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/kern
|
||||
|
||||
2. **手动钩子:**
|
||||
- 标准的 KernelSU 钩子:https://kernelsu.org/guide/how-to-integrate-for-non-gki.html#manually-modify-the-kernel-source
|
||||
- backslashxx 的 syscall 手动钩子:https://github.com/backslashxx/KernelSU/issues/5
|
||||
|
||||
- backslashxx 的 syscall 手动钩子:https://github.com/backslashxx/KernelSU/issues/5 (v1.5 版本暂不可用,如要使用请使用 v1.4 版本,或者标准 KernelSU 钩子)
|
||||
|
||||
- 非 GKI 内核的默认挂钩方法
|
||||
- 需要 `CONFIG_KSU_MANUAL_HOOK=y`
|
||||
|
||||
@@ -86,7 +94,8 @@ KPM 模板地址: https://github.com/udochina/KPM-Build-Anywhere
|
||||
|
||||
基于 SukiSU 和 susfs 编译的项目
|
||||
|
||||
- [GKI](https://github.com/ShirkNeko/GKI_KernelSU_SUSFS)
|
||||
- [增强 GKI](https://github.com/ShirkNeko/GKI_KernelSU_SUSFS)(包括 ZRAM 算法等补丁、KPM、susfs 等)
|
||||
- [GKI](https://github.com/MiRinFork/GKI_SukiSU_SUSFS/releases)(若增强 GKI boot 失败再尝试这份,这份没有 KPM 等修改,只有 susfs)
|
||||
- [一加](https://github.com/ShirkNeko/Action_OnePlus_MKSU_SUSFS)
|
||||
|
||||
## 使用方法
|
||||
@@ -98,7 +107,7 @@ KPM 模板地址: https://github.com/udochina/KPM-Build-Anywhere
|
||||
> [!Note]
|
||||
>
|
||||
> 1. 适用于如小米、红米、三星等的 GKI 2.0 的设备 (不包含魔改内核的厂商如魅族、一加、真我和 oppo)
|
||||
> 2. 找到[更多链接](#%E6%9B%B4%E5%A4%9A%E9%93%BE%E6%8E%A5)里的 GKI 构建的项目。找到设备内核版本。然后下载下来,用 TWRP 或者内核刷写工具刷入带 AnyKernel3 后缀的压缩包即可
|
||||
> 2. 找到[更多链接](#%E6%9B%B4%E5%A4%9A%E9%93%BE%E6%8E%A5)里的 GKI 构建的项目。找到设备内核版本。然后下载下来,用 TWRP 或者内核刷写工具刷入带 AnyKernel3 后缀的压缩包即可。Pixel 请使用不是增强的 GKI。
|
||||
> 3. 一般不带后缀的 .zip 压缩包是未压缩的,gz 后缀的为天玑机型所使用的压缩方式
|
||||
|
||||
### 一加
|
||||
@@ -119,14 +128,16 @@ KPM 模板地址: https://github.com/udochina/KPM-Build-Anywhere
|
||||
4. 恢复对非 GKI 2.0 内核的支持
|
||||
5. 更多自定义功能
|
||||
6. 对 KPM 内核模块的支持
|
||||
7. 引入SuSFS配置的管理器以及进阶功能
|
||||
|
||||
## 疑难解答
|
||||
|
||||
1. 卸载 KernelSU 管理器设备卡死。→ 卸载包名为 com.sony.playmemories.mobile 的应用。
|
||||
|
||||
## 许可证
|
||||
|
||||
- `kernel` 目录下的文件是 [GPL-2.0-only](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)。
|
||||
- 有动漫人物图片表情包的这些文件 `ic_launcher(?!.*alt.*).*` 的图像版权为[五十根大虾仁](https://space.bilibili.com/370927)所有,图像中的 Brand Intellectual Property 由[明风OuO](https://space.bilibili.com/274939213)所有,矢量化由 @MiRinChan 完成,在使用这些文件之前,除了必须遵守 [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.txt) 以外,还需要遵守向前两者索要使用这些艺术内容的授权。
|
||||
- 有动漫人物图片表情包的这些文件 `ic_launcher(?!.*alt.*).*` 的图像版权为[五十根大虾仁](https://space.bilibili.com/370927)所有,图像中的 Brand Intellectual Property 由[明风 OuO](https://space.bilibili.com/274939213)所有,矢量化由 @MiRinChan 完成,在使用这些文件之前,除了必须遵守 [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.txt) 以外,还需要遵守向前两者索要使用这些艺术内容的授权。
|
||||
- 除了以上所述的文件或目录外,所有其他部分均为 [GPL-3.0 或更高版本](https://www.gnu.org/licenses/gpl-3.0.html)。
|
||||
|
||||
## 爱发电链接
|
||||
|
||||
@@ -24,5 +24,6 @@ config KPM
|
||||
Enabling this option will activate the KPM feature of SukiSU.
|
||||
This option is suitable for scenarios where you need to force KPM to be enabled.
|
||||
but it may affect system stability.
|
||||
|
||||
select KALLSYMS
|
||||
select KALLSYMS_ALL
|
||||
endmenu
|
||||
|
||||
@@ -19,19 +19,57 @@ obj-$(CONFIG_KSU) += kernelsu.o
|
||||
obj-$(CONFIG_KPM) += kpm/
|
||||
|
||||
|
||||
# .git is a text file while the module is imported by 'git submodule add'.
|
||||
ifeq ($(shell test -e $(srctree)/$(src)/../.git; echo $$?),0)
|
||||
$(shell cd $(srctree)/$(src); /usr/bin/env PATH="$$PATH":/usr/bin:/usr/local/bin [ -f ../.git/shallow ] && git fetch --unshallow)
|
||||
KSU_GIT_VERSION := $(shell cd $(srctree)/$(src); /usr/bin/env PATH="$$PATH":/usr/bin:/usr/local/bin git rev-list --count main)
|
||||
# ksu_version: major * 10000 + git version + 606 for historical reasons
|
||||
$(eval KSU_VERSION=$(shell expr 10000 + $(KSU_GIT_VERSION) + 606))
|
||||
$(info -- KernelSU version: $(KSU_VERSION))
|
||||
ccflags-y += -DKSU_VERSION=$(KSU_VERSION)
|
||||
else # If there is no .git file, the default version will be passed.
|
||||
$(warning "KSU_GIT_VERSION not defined! It is better to make KernelSU a git submodule!")
|
||||
ccflags-y += -DKSU_VERSION=16
|
||||
REPO_OWNER := SukiSU-Ultra
|
||||
REPO_NAME := SukiSU-Ultra
|
||||
REPO_BRANCH := main
|
||||
KSU_VERSION_API := 3.1.7
|
||||
|
||||
GIT_BIN := /usr/bin/env PATH="$$PATH":/usr/bin:/usr/local/bin git
|
||||
CURL_BIN := /usr/bin/env PATH="$$PATH":/usr/bin:/usr/local/bin curl
|
||||
|
||||
KSU_GITHUB_VERSION := $(shell $(CURL_BIN) -s "https://api.github.com/repos/$(REPO_OWNER)/$(REPO_NAME)/releases/latest" | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/')
|
||||
KSU_GITHUB_VERSION_COMMIT := $(shell $(CURL_BIN) -sI "https://api.github.com/repos/$(REPO_OWNER)/$(REPO_NAME)/commits?sha=$(REPO_BRANCH)&per_page=1" | grep -i "link:" | sed -n 's/.*page=\([0-9]*\)>; rel="last".*/\1/p')
|
||||
|
||||
LOCAL_GIT_EXISTS := $(shell test -e $(srctree)/$(src)/../.git && echo 1 || echo 0)
|
||||
|
||||
define get_ksu_version_full
|
||||
v$1-$(shell cd $(srctree)/$(src); $(GIT_BIN) rev-parse --short=8 HEAD)@$(shell cd $(srctree)/$(src); $(GIT_BIN) rev-parse --abbrev-ref HEAD)
|
||||
endef
|
||||
|
||||
ifeq ($(KSU_GITHUB_VERSION_COMMIT),)
|
||||
ifeq ($(LOCAL_GIT_EXISTS),1)
|
||||
$(shell cd $(srctree)/$(src); [ -f ../.git/shallow ] && $(GIT_BIN) fetch --unshallow)
|
||||
KSU_LOCAL_VERSION := $(shell cd $(srctree)/$(src); $(GIT_BIN) rev-list --count $(REPO_BRANCH))
|
||||
KSU_VERSION := $(shell expr 10000 + $(KSU_LOCAL_VERSION) + 700)
|
||||
$(info -- $(REPO_NAME) version (local .git): $(KSU_VERSION))
|
||||
else
|
||||
KSU_VERSION := 13000
|
||||
$(warning -- Could not fetch version online or via local .git! Using fallback version: $(KSU_VERSION))
|
||||
endif
|
||||
else
|
||||
KSU_VERSION := $(shell expr 10000 + $(KSU_GITHUB_VERSION_COMMIT) + 700)
|
||||
$(info -- $(REPO_NAME) version (GitHub): $(KSU_VERSION))
|
||||
endif
|
||||
|
||||
ifeq ($(KSU_GITHUB_VERSION),)
|
||||
ifeq ($(LOCAL_GIT_EXISTS),1)
|
||||
$(shell cd $(srctree)/$(src); [ -f ../.git/shallow ] && $(GIT_BIN) fetch --unshallow)
|
||||
KSU_VERSION_FULL := $(call get_ksu_version_full,$(KSU_VERSION_API))
|
||||
$(info -- $(REPO_NAME) version (local .git): $(KSU_VERSION_FULL))
|
||||
$(info -- $(REPO_NAME) Formatted version (local .git): $(KSU_VERSION))
|
||||
else
|
||||
KSU_VERSION_FULL := v$(KSU_VERSION_API)-$(REPO_NAME)-unknown@unknown
|
||||
$(warning -- $(REPO_NAME) version: $(KSU_VERSION_FULL))
|
||||
endif
|
||||
else
|
||||
$(shell cd $(srctree)/$(src); [ -f ../.git/shallow ] && $(GIT_BIN) fetch --unshallow)
|
||||
KSU_VERSION_FULL := $(call get_ksu_version_full,$(KSU_GITHUB_VERSION))
|
||||
$(info -- $(REPO_NAME) version (Github): $(KSU_VERSION_FULL))
|
||||
endif
|
||||
|
||||
ccflags-y += -DKSU_VERSION=$(KSU_VERSION)
|
||||
ccflags-y += -DKSU_VERSION_FULL=\"$(KSU_VERSION_FULL)\"
|
||||
|
||||
ifndef KSU_EXPECTED_SIZE
|
||||
KSU_EXPECTED_SIZE := 0x35c
|
||||
endif
|
||||
|
||||
@@ -110,6 +110,7 @@ static void setup_groups(struct root_profile *profile, struct cred *cred)
|
||||
|
||||
groups_sort(group_info);
|
||||
set_groups(cred, group_info);
|
||||
put_group_info(group_info);
|
||||
}
|
||||
|
||||
static void disable_seccomp()
|
||||
@@ -134,18 +135,18 @@ void escape_to_root(void)
|
||||
{
|
||||
struct cred *cred;
|
||||
|
||||
rcu_read_lock();
|
||||
|
||||
do {
|
||||
cred = (struct cred *)__task_cred((current));
|
||||
BUG_ON(!cred);
|
||||
} while (!get_cred_rcu(cred));
|
||||
cred = prepare_creds();
|
||||
if (!cred) {
|
||||
pr_warn("prepare_creds failed!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (cred->euid.val == 0) {
|
||||
pr_warn("Already root, don't escape!\n");
|
||||
rcu_read_unlock();
|
||||
abort_creds(cred);
|
||||
return;
|
||||
}
|
||||
|
||||
struct root_profile *profile = ksu_get_root_profile(cred->uid.val);
|
||||
|
||||
cred->uid.val = profile->uid;
|
||||
@@ -176,7 +177,7 @@ void escape_to_root(void)
|
||||
|
||||
setup_groups(profile, cred);
|
||||
|
||||
rcu_read_unlock();
|
||||
commit_creds(cred);
|
||||
|
||||
// Refer to kernel/seccomp.c: seccomp_set_mode_strict
|
||||
// When disabling Seccomp, ensure that current->sighand->siglock is held during the operation.
|
||||
@@ -243,6 +244,7 @@ static void nuke_ext4_sysfs() {
|
||||
}
|
||||
|
||||
ext4_unregister_sysfs(sb);
|
||||
path_put(&path);
|
||||
}
|
||||
#else
|
||||
static inline void nuke_ext4_sysfs() { }
|
||||
@@ -306,7 +308,7 @@ int ksu_handle_prctl(int option, unsigned long arg2, unsigned long arg3,
|
||||
if (copy_to_user(arg3, &version, sizeof(version))) {
|
||||
pr_err("prctl reply error, cmd: %lu\n", arg2);
|
||||
}
|
||||
u32 version_flags = 0;
|
||||
u32 version_flags = 2;
|
||||
#ifdef MODULE
|
||||
version_flags |= 0x1;
|
||||
#endif
|
||||
@@ -317,6 +319,21 @@ int ksu_handle_prctl(int option, unsigned long arg2, unsigned long arg3,
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Allow root manager to get full version strings
|
||||
if (arg2 == CMD_GET_FULL_VERSION) {
|
||||
char ksu_version_full[KSU_FULL_VERSION_STRING] = {0};
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0)
|
||||
strscpy(ksu_version_full, KSU_VERSION_FULL, KSU_FULL_VERSION_STRING);
|
||||
#else
|
||||
strlcpy(ksu_version_full, KSU_VERSION_FULL, KSU_FULL_VERSION_STRING);
|
||||
#endif
|
||||
if (copy_to_user((void __user *)arg3, ksu_version_full, KSU_FULL_VERSION_STRING)) {
|
||||
pr_err("prctl reply error, cmd: %lu\n", arg2);
|
||||
return -EFAULT;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (arg2 == CMD_REPORT_EVENT) {
|
||||
if (!from_root) {
|
||||
return 0;
|
||||
@@ -564,11 +581,13 @@ static void try_umount(const char *mnt, bool check_mnt, int flags)
|
||||
|
||||
if (path.dentry != path.mnt->mnt_root) {
|
||||
// it is not root mountpoint, maybe umounted by others already.
|
||||
path_put(&path);
|
||||
return;
|
||||
}
|
||||
|
||||
// we are only interest in some specific mounts
|
||||
if (check_mnt && !should_umount(&path)) {
|
||||
path_put(&path);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -60,6 +60,13 @@ uid_t sukisu_get_manager_uid() {
|
||||
return ksu_manager_uid;
|
||||
}
|
||||
|
||||
static
|
||||
void sukisu_set_manager_uid(uid_t uid, int force) {
|
||||
if(force || ksu_manager_uid == -1) {
|
||||
ksu_manager_uid = uid;
|
||||
}
|
||||
}
|
||||
|
||||
// ======================================================================
|
||||
|
||||
struct CompactAddressSymbol {
|
||||
@@ -75,7 +82,8 @@ static struct CompactAddressSymbol address_symbol [] = {
|
||||
{ "get_ap_mod_exclude", &sukisu_get_ap_mod_exclude },
|
||||
{ "is_uid_should_umount", &sukisu_is_uid_should_umount },
|
||||
{ "is_current_uid_manager", &sukisu_is_current_uid_manager },
|
||||
{ "get_manager_uid", &sukisu_get_manager_uid }
|
||||
{ "get_manager_uid", &sukisu_get_manager_uid },
|
||||
{ "sukisu_set_manager_uid", &sukisu_set_manager_uid }
|
||||
};
|
||||
|
||||
unsigned long sukisu_compact_find_symbol(const char* name) {
|
||||
|
||||
@@ -23,6 +23,9 @@
|
||||
#define CMD_UID_SHOULD_UMOUNT 13
|
||||
#define CMD_IS_SU_ENABLED 14
|
||||
#define CMD_ENABLE_SU 15
|
||||
|
||||
#define CMD_GET_FULL_VERSION 30
|
||||
|
||||
#define CMD_ENABLE_KPM 100
|
||||
|
||||
#define EVENT_POST_FS_DATA 1
|
||||
@@ -35,6 +38,12 @@
|
||||
#define KSU_MAX_GROUPS 32
|
||||
#define KSU_SELINUX_DOMAIN 64
|
||||
|
||||
// SukiSU Ultra kernel su version full strings
|
||||
#ifndef KSU_VERSION_FULL
|
||||
#define KSU_VERSION_FULL "v3.x-00000000@unknown"
|
||||
#endif
|
||||
#define KSU_FULL_VERSION_STRING 255
|
||||
|
||||
struct root_profile {
|
||||
int32_t uid;
|
||||
int32_t gid;
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include <linux/string.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/version.h>
|
||||
#include <linux/namei.h>
|
||||
|
||||
#include "allowlist.h"
|
||||
#include "klog.h" // IWYU pragma: keep
|
||||
@@ -116,7 +115,6 @@ struct my_dir_context {
|
||||
void *private_data;
|
||||
int depth;
|
||||
int *stop;
|
||||
struct super_block* root_sb;
|
||||
};
|
||||
// https://docs.kernel.org/filesystems/porting.html
|
||||
// filldir_t (readdir callbacks) calling conventions have changed. Instead of returning 0 or -E... it returns bool now. false means "no more" (as -E... used to) and true - "keep going" (as 0 in old calling conventions). Rationale: callers never looked at specific -E... values anyway. -> iterate_shared() instances require no changes at all, all filldir_t ones in the tree converted.
|
||||
@@ -137,8 +135,6 @@ FILLDIR_RETURN_TYPE my_actor(struct dir_context *ctx, const char *name,
|
||||
struct my_dir_context *my_ctx =
|
||||
container_of(ctx, struct my_dir_context, ctx);
|
||||
char dirpath[DATA_PATH_LEN];
|
||||
int err;
|
||||
struct path path;
|
||||
|
||||
if (!my_ctx) {
|
||||
pr_err("Invalid context\n");
|
||||
@@ -166,18 +162,6 @@ FILLDIR_RETURN_TYPE my_actor(struct dir_context *ctx, const char *name,
|
||||
return FILLDIR_ACTOR_CONTINUE;
|
||||
}
|
||||
|
||||
err = kern_path(dirpath, 0, &path);
|
||||
|
||||
if (err) {
|
||||
pr_err("get dirpath %s err: %d\n", dirpath, err);
|
||||
return FILLDIR_ACTOR_CONTINUE;
|
||||
}
|
||||
|
||||
if (my_ctx->root_sb != path.dentry->d_inode->i_sb) {
|
||||
pr_info("skip cross fs: %s", dirpath);
|
||||
return FILLDIR_ACTOR_CONTINUE;
|
||||
}
|
||||
|
||||
if (d_type == DT_DIR && my_ctx->depth > 0 &&
|
||||
(my_ctx->stop && !*my_ctx->stop)) {
|
||||
struct data_path *data = kmalloc(sizeof(struct data_path), GFP_ATOMIC);
|
||||
@@ -227,19 +211,11 @@ FILLDIR_RETURN_TYPE my_actor(struct dir_context *ctx, const char *name,
|
||||
|
||||
void search_manager(const char *path, int depth, struct list_head *uid_data)
|
||||
{
|
||||
int i, stop = 0, err;
|
||||
int i, stop = 0;
|
||||
struct list_head data_path_list;
|
||||
struct path kpath;
|
||||
struct super_block* root_sb;
|
||||
INIT_LIST_HEAD(&data_path_list);
|
||||
|
||||
err = kern_path(path, 0, &kpath);
|
||||
|
||||
if (err) {
|
||||
pr_err("get search root %s err: %d\n", path, err);
|
||||
return;
|
||||
}
|
||||
|
||||
unsigned long data_app_magic = 0;
|
||||
|
||||
// Initialize APK cache list
|
||||
struct apk_path_hash *pos, *n;
|
||||
list_for_each_entry(pos, &apk_path_hash_list, list) {
|
||||
@@ -252,8 +228,6 @@ void search_manager(const char *path, int depth, struct list_head *uid_data)
|
||||
data.depth = depth;
|
||||
list_add_tail(&data.list, &data_path_list);
|
||||
|
||||
root_sb = kpath.dentry->d_inode->i_sb;
|
||||
|
||||
for (i = depth; i >= 0; i--) {
|
||||
struct data_path *pos, *n;
|
||||
|
||||
@@ -263,8 +237,7 @@ void search_manager(const char *path, int depth, struct list_head *uid_data)
|
||||
.parent_dir = pos->dirpath,
|
||||
.private_data = uid_data,
|
||||
.depth = pos->depth,
|
||||
.stop = &stop,
|
||||
.root_sb = root_sb };
|
||||
.stop = &stop };
|
||||
struct file *file;
|
||||
|
||||
if (!stop) {
|
||||
@@ -273,6 +246,24 @@ void search_manager(const char *path, int depth, struct list_head *uid_data)
|
||||
pr_err("Failed to open directory: %s, err: %ld\n", pos->dirpath, PTR_ERR(file));
|
||||
goto skip_iterate;
|
||||
}
|
||||
|
||||
// grab magic on first folder, which is /data/app
|
||||
if (!data_app_magic) {
|
||||
if (file->f_inode->i_sb->s_magic) {
|
||||
data_app_magic = file->f_inode->i_sb->s_magic;
|
||||
pr_info("%s: dir: %s got magic! 0x%lx\n", __func__, pos->dirpath, data_app_magic);
|
||||
} else {
|
||||
filp_close(file, NULL);
|
||||
goto skip_iterate;
|
||||
}
|
||||
}
|
||||
|
||||
if (file->f_inode->i_sb->s_magic != data_app_magic) {
|
||||
pr_info("%s: skip: %s magic: 0x%lx expected: 0x%lx\n", __func__, pos->dirpath,
|
||||
file->f_inode->i_sb->s_magic, data_app_magic);
|
||||
filp_close(file, NULL);
|
||||
goto skip_iterate;
|
||||
}
|
||||
|
||||
iterate_dir(file, &ctx.ctx);
|
||||
filp_close(file, NULL);
|
||||
|
||||
BIN
manager/app/src/main/assets/ksu_susfs_1.5.7
Normal file
BIN
manager/app/src/main/assets/ksu_susfs_1.5.7
Normal file
Binary file not shown.
BIN
manager/app/src/main/assets/ksu_susfs_1.5.8
Normal file
BIN
manager/app/src/main/assets/ksu_susfs_1.5.8
Normal file
Binary file not shown.
@@ -1,4 +1,3 @@
|
||||
|
||||
# For more information about using CMake with Android Studio, read the
|
||||
# documentation: https://d.android.com/studio/projects/add-native-code.html
|
||||
|
||||
@@ -7,14 +6,11 @@ cmake_minimum_required(VERSION 3.18.1)
|
||||
|
||||
project("kernelsu")
|
||||
|
||||
find_package(cxx REQUIRED CONFIG)
|
||||
link_libraries(cxx::cxx)
|
||||
|
||||
add_library(zako
|
||||
SHARED
|
||||
jni.cc
|
||||
ksu.cc
|
||||
)
|
||||
jni.c
|
||||
ksu.c
|
||||
)
|
||||
|
||||
find_library(log-lib log)
|
||||
|
||||
|
||||
354
manager/app/src/main/cpp/jni.c
Normal file
354
manager/app/src/main/cpp/jni.c
Normal file
@@ -0,0 +1,354 @@
|
||||
#include "prelude.h"
|
||||
#include "ksu.h"
|
||||
|
||||
#include <jni.h>
|
||||
#include <sys/prctl.h>
|
||||
#include <android/log.h>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
NativeBridge(becomeManager, jboolean, jstring pkg) {
|
||||
const char* cpkg = GetEnvironment()->GetStringUTFChars(env, pkg, JNI_FALSE);
|
||||
bool result = become_manager(cpkg);
|
||||
|
||||
GetEnvironment()->ReleaseStringUTFChars(env, pkg, cpkg);
|
||||
return result;
|
||||
}
|
||||
|
||||
NativeBridgeNP(getVersion, jint) {
|
||||
return get_version();
|
||||
}
|
||||
|
||||
NativeBridgeNP(getAllowList, jintArray) {
|
||||
int uids[1024];
|
||||
int size = 0;
|
||||
bool result = get_allow_list(uids, &size);
|
||||
|
||||
LogDebug("getAllowList: %d, size: %d", result, size);
|
||||
|
||||
if (result) {
|
||||
jintArray array = GetEnvironment()->NewIntArray(env, size);
|
||||
GetEnvironment()->SetIntArrayRegion(env, array, 0, size, uids);
|
||||
|
||||
return array;
|
||||
}
|
||||
|
||||
return GetEnvironment()->NewIntArray(env, 0);
|
||||
}
|
||||
|
||||
NativeBridgeNP(isSafeMode, jboolean) {
|
||||
return is_safe_mode();
|
||||
}
|
||||
|
||||
NativeBridgeNP(isLkmMode, jboolean) {
|
||||
return is_lkm_mode();
|
||||
}
|
||||
|
||||
static void fillIntArray(JNIEnv *env, jobject list, int *data, int count) {
|
||||
jclass cls = GetEnvironment()->GetObjectClass(env, list);
|
||||
jmethodID add = GetEnvironment()->GetMethodID(env, cls, "add", "(Ljava/lang/Object;)Z");
|
||||
jclass integerCls = GetEnvironment()->FindClass(env, "java/lang/Integer");
|
||||
jmethodID constructor = GetEnvironment()->GetMethodID(env, integerCls, "<init>", "(I)V");
|
||||
for (int i = 0; i < count; ++i) {
|
||||
jobject integer = GetEnvironment()->NewObject(env, integerCls, constructor, data[i]);
|
||||
GetEnvironment()->CallBooleanMethod(env, list, add, integer);
|
||||
}
|
||||
}
|
||||
|
||||
static void addIntToList(JNIEnv *env, jobject list, int ele) {
|
||||
jclass cls = GetEnvironment()->GetObjectClass(env, list);
|
||||
jmethodID add = GetEnvironment()->GetMethodID(env, cls, "add", "(Ljava/lang/Object;)Z");
|
||||
jclass integerCls = GetEnvironment()->FindClass(env, "java/lang/Integer");
|
||||
jmethodID constructor = GetEnvironment()->GetMethodID(env, integerCls, "<init>", "(I)V");
|
||||
jobject integer = GetEnvironment()->NewObject(env, integerCls, constructor, ele);
|
||||
GetEnvironment()->CallBooleanMethod(env, list, add, integer);
|
||||
}
|
||||
|
||||
static uint64_t capListToBits(JNIEnv *env, jobject list) {
|
||||
jclass cls = GetEnvironment()->GetObjectClass(env, list);
|
||||
jmethodID get = GetEnvironment()->GetMethodID(env, cls, "get", "(I)Ljava/lang/Object;");
|
||||
jmethodID size = GetEnvironment()->GetMethodID(env, cls, "size", "()I");
|
||||
jint listSize = GetEnvironment()->CallIntMethod(env, list, size);
|
||||
jclass integerCls = GetEnvironment()->FindClass(env, "java/lang/Integer");
|
||||
jmethodID intValue = GetEnvironment()->GetMethodID(env, integerCls, "intValue", "()I");
|
||||
uint64_t result = 0;
|
||||
for (int i = 0; i < listSize; ++i) {
|
||||
jobject integer = GetEnvironment()->CallObjectMethod(env, list, get, i);
|
||||
int data = GetEnvironment()->CallIntMethod(env, integer, intValue);
|
||||
|
||||
if (cap_valid(data)) {
|
||||
result |= (1ULL << data);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static int getListSize(JNIEnv *env, jobject list) {
|
||||
jclass cls = GetEnvironment()->GetObjectClass(env, list);
|
||||
jmethodID size = GetEnvironment()->GetMethodID(env, cls, "size", "()I");
|
||||
return GetEnvironment()->CallIntMethod(env, list, size);
|
||||
}
|
||||
|
||||
static void fillArrayWithList(JNIEnv *env, jobject list, int *data, int count) {
|
||||
jclass cls = GetEnvironment()->GetObjectClass(env, list);
|
||||
jmethodID get = GetEnvironment()->GetMethodID(env, cls, "get", "(I)Ljava/lang/Object;");
|
||||
jclass integerCls = GetEnvironment()->FindClass(env, "java/lang/Integer");
|
||||
jmethodID intValue = GetEnvironment()->GetMethodID(env, integerCls, "intValue", "()I");
|
||||
for (int i = 0; i < count; ++i) {
|
||||
jobject integer = GetEnvironment()->CallObjectMethod(env, list, get, i);
|
||||
data[i] = GetEnvironment()->CallIntMethod(env, integer, intValue);
|
||||
}
|
||||
}
|
||||
|
||||
NativeBridge(getAppProfile, jobject, jstring pkg, jint uid) {
|
||||
if (GetEnvironment()->GetStringLength(env, pkg) > KSU_MAX_PACKAGE_NAME) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
char key[KSU_MAX_PACKAGE_NAME] = { 0 };
|
||||
const char* cpkg = GetEnvironment()->GetStringUTFChars(env, pkg, nullptr);
|
||||
strcpy(key, cpkg);
|
||||
GetEnvironment()->ReleaseStringUTFChars(env, pkg, cpkg);
|
||||
|
||||
struct app_profile profile = { 0 };
|
||||
profile.version = KSU_APP_PROFILE_VER;
|
||||
|
||||
strcpy(profile.key, key);
|
||||
profile.current_uid = uid;
|
||||
|
||||
bool useDefaultProfile = !get_app_profile(key, &profile);
|
||||
|
||||
jclass cls = GetEnvironment()->FindClass(env, "com/sukisu/ultra/Natives$Profile");
|
||||
jmethodID constructor = GetEnvironment()->GetMethodID(env, cls, "<init>", "()V");
|
||||
jobject obj = GetEnvironment()->NewObject(env, cls, constructor);
|
||||
jfieldID keyField = GetEnvironment()->GetFieldID(env, cls, "name", "Ljava/lang/String;");
|
||||
jfieldID currentUidField = GetEnvironment()->GetFieldID(env, cls, "currentUid", "I");
|
||||
jfieldID allowSuField = GetEnvironment()->GetFieldID(env, cls, "allowSu", "Z");
|
||||
|
||||
jfieldID rootUseDefaultField = GetEnvironment()->GetFieldID(env, cls, "rootUseDefault", "Z");
|
||||
jfieldID rootTemplateField = GetEnvironment()->GetFieldID(env, cls, "rootTemplate", "Ljava/lang/String;");
|
||||
|
||||
jfieldID uidField = GetEnvironment()->GetFieldID(env, cls, "uid", "I");
|
||||
jfieldID gidField = GetEnvironment()->GetFieldID(env, cls, "gid", "I");
|
||||
jfieldID groupsField = GetEnvironment()->GetFieldID(env, cls, "groups", "Ljava/util/List;");
|
||||
jfieldID capabilitiesField = GetEnvironment()->GetFieldID(env, cls, "capabilities", "Ljava/util/List;");
|
||||
jfieldID domainField = GetEnvironment()->GetFieldID(env, cls, "context", "Ljava/lang/String;");
|
||||
jfieldID namespacesField = GetEnvironment()->GetFieldID(env, cls, "namespace", "I");
|
||||
|
||||
jfieldID nonRootUseDefaultField = GetEnvironment()->GetFieldID(env, cls, "nonRootUseDefault", "Z");
|
||||
jfieldID umountModulesField = GetEnvironment()->GetFieldID(env, cls, "umountModules", "Z");
|
||||
|
||||
GetEnvironment()->SetObjectField(env, obj, keyField, GetEnvironment()->NewStringUTF(env, profile.key));
|
||||
GetEnvironment()->SetIntField(env, obj, currentUidField, profile.current_uid);
|
||||
|
||||
if (useDefaultProfile) {
|
||||
// no profile found, so just use default profile:
|
||||
// don't allow root and use default profile!
|
||||
LogDebug("use default profile for: %s, %d", key, uid);
|
||||
|
||||
// allow_su = false
|
||||
// non root use default = true
|
||||
GetEnvironment()->SetBooleanField(env, obj, allowSuField, false);
|
||||
GetEnvironment()->SetBooleanField(env, obj, nonRootUseDefaultField, true);
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
bool allowSu = profile.allow_su;
|
||||
|
||||
if (allowSu) {
|
||||
GetEnvironment()->SetBooleanField(env, obj, rootUseDefaultField, (jboolean) profile.rp_config.use_default);
|
||||
if (strlen(profile.rp_config.template_name) > 0) {
|
||||
GetEnvironment()->SetObjectField(env, obj, rootTemplateField,
|
||||
GetEnvironment()->NewStringUTF(env, profile.rp_config.template_name));
|
||||
}
|
||||
|
||||
GetEnvironment()->SetIntField(env, obj, uidField, profile.rp_config.profile.uid);
|
||||
GetEnvironment()->SetIntField(env, obj, gidField, profile.rp_config.profile.gid);
|
||||
|
||||
jobject groupList = GetEnvironment()->GetObjectField(env, obj, groupsField);
|
||||
int groupCount = profile.rp_config.profile.groups_count;
|
||||
if (groupCount > KSU_MAX_GROUPS) {
|
||||
LogDebug("kernel group count too large: %d???", groupCount);
|
||||
groupCount = KSU_MAX_GROUPS;
|
||||
}
|
||||
fillIntArray(env, groupList, profile.rp_config.profile.groups, groupCount);
|
||||
|
||||
jobject capList = GetEnvironment()->GetObjectField(env, obj, capabilitiesField);
|
||||
for (int i = 0; i <= CAP_LAST_CAP; i++) {
|
||||
if (profile.rp_config.profile.capabilities.effective & (1ULL << i)) {
|
||||
addIntToList(env, capList, i);
|
||||
}
|
||||
}
|
||||
|
||||
GetEnvironment()->SetObjectField(env, obj, domainField,
|
||||
GetEnvironment()->NewStringUTF(env, profile.rp_config.profile.selinux_domain));
|
||||
GetEnvironment()->SetIntField(env, obj, namespacesField, profile.rp_config.profile.namespaces);
|
||||
GetEnvironment()->SetBooleanField(env, obj, allowSuField, profile.allow_su);
|
||||
} else {
|
||||
GetEnvironment()->SetBooleanField(env, obj, nonRootUseDefaultField, profile.nrp_config.use_default);
|
||||
GetEnvironment()->SetBooleanField(env, obj, umountModulesField, profile.nrp_config.profile.umount_modules);
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
NativeBridge(setAppProfile, jboolean, jobject profile) {
|
||||
jclass cls = GetEnvironment()->FindClass(env, "com/sukisu/ultra/Natives$Profile");
|
||||
|
||||
jfieldID keyField = GetEnvironment()->GetFieldID(env, cls, "name", "Ljava/lang/String;");
|
||||
jfieldID currentUidField = GetEnvironment()->GetFieldID(env, cls, "currentUid", "I");
|
||||
jfieldID allowSuField = GetEnvironment()->GetFieldID(env, cls, "allowSu", "Z");
|
||||
|
||||
jfieldID rootUseDefaultField = GetEnvironment()->GetFieldID(env, cls, "rootUseDefault", "Z");
|
||||
jfieldID rootTemplateField = GetEnvironment()->GetFieldID(env, cls, "rootTemplate", "Ljava/lang/String;");
|
||||
|
||||
jfieldID uidField = GetEnvironment()->GetFieldID(env, cls, "uid", "I");
|
||||
jfieldID gidField = GetEnvironment()->GetFieldID(env, cls, "gid", "I");
|
||||
jfieldID groupsField = GetEnvironment()->GetFieldID(env, cls, "groups", "Ljava/util/List;");
|
||||
jfieldID capabilitiesField = GetEnvironment()->GetFieldID(env, cls, "capabilities", "Ljava/util/List;");
|
||||
jfieldID domainField = GetEnvironment()->GetFieldID(env, cls, "context", "Ljava/lang/String;");
|
||||
jfieldID namespacesField = GetEnvironment()->GetFieldID(env, cls, "namespace", "I");
|
||||
|
||||
jfieldID nonRootUseDefaultField = GetEnvironment()->GetFieldID(env, cls, "nonRootUseDefault", "Z");
|
||||
jfieldID umountModulesField = GetEnvironment()->GetFieldID(env, cls, "umountModules", "Z");
|
||||
|
||||
jobject key = GetEnvironment()->GetObjectField(env, profile, keyField);
|
||||
if (!key) {
|
||||
return false;
|
||||
}
|
||||
if (GetEnvironment()->GetStringLength(env, (jstring) key) > KSU_MAX_PACKAGE_NAME) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const char* cpkg = GetEnvironment()->GetStringUTFChars(env, (jstring) key, nullptr);
|
||||
char p_key[KSU_MAX_PACKAGE_NAME] = { 0 };
|
||||
strcpy(p_key, cpkg);
|
||||
GetEnvironment()->ReleaseStringUTFChars(env, (jstring) key, cpkg);
|
||||
|
||||
jint currentUid = GetEnvironment()->GetIntField(env, profile, currentUidField);
|
||||
|
||||
jint uid = GetEnvironment()->GetIntField(env, profile, uidField);
|
||||
jint gid = GetEnvironment()->GetIntField(env, profile, gidField);
|
||||
jobject groups = GetEnvironment()->GetObjectField(env, profile, groupsField);
|
||||
jobject capabilities = GetEnvironment()->GetObjectField(env, profile, capabilitiesField);
|
||||
jobject domain = GetEnvironment()->GetObjectField(env, profile, domainField);
|
||||
jboolean allowSu = GetEnvironment()->GetBooleanField(env, profile, allowSuField);
|
||||
jboolean umountModules = GetEnvironment()->GetBooleanField(env, profile, umountModulesField);
|
||||
|
||||
struct app_profile p = { 0 };
|
||||
p.version = KSU_APP_PROFILE_VER;
|
||||
|
||||
strcpy(p.key, p_key);
|
||||
p.allow_su = allowSu;
|
||||
p.current_uid = currentUid;
|
||||
|
||||
if (allowSu) {
|
||||
p.rp_config.use_default = GetEnvironment()->GetBooleanField(env, profile, rootUseDefaultField);
|
||||
jobject templateName = GetEnvironment()->GetObjectField(env, profile, rootTemplateField);
|
||||
if (templateName) {
|
||||
const char* ctemplateName = GetEnvironment()->GetStringUTFChars(env, (jstring) templateName, nullptr);
|
||||
strcpy(p.rp_config.template_name, ctemplateName);
|
||||
GetEnvironment()->ReleaseStringUTFChars(env, (jstring) templateName, ctemplateName);
|
||||
}
|
||||
|
||||
p.rp_config.profile.uid = uid;
|
||||
p.rp_config.profile.gid = gid;
|
||||
|
||||
int groups_count = getListSize(env, groups);
|
||||
if (groups_count > KSU_MAX_GROUPS) {
|
||||
LogDebug("groups count too large: %d", groups_count);
|
||||
return false;
|
||||
}
|
||||
p.rp_config.profile.groups_count = groups_count;
|
||||
fillArrayWithList(env, groups, p.rp_config.profile.groups, groups_count);
|
||||
|
||||
p.rp_config.profile.capabilities.effective = capListToBits(env, capabilities);
|
||||
|
||||
const char* cdomain = GetEnvironment()->GetStringUTFChars(env, (jstring) domain, nullptr);
|
||||
strcpy(p.rp_config.profile.selinux_domain, cdomain);
|
||||
GetEnvironment()->ReleaseStringUTFChars(env, (jstring) domain, cdomain);
|
||||
|
||||
p.rp_config.profile.namespaces = GetEnvironment()->GetIntField(env, profile, namespacesField);
|
||||
} else {
|
||||
p.nrp_config.use_default = GetEnvironment()->GetBooleanField(env, profile, nonRootUseDefaultField);
|
||||
p.nrp_config.profile.umount_modules = umountModules;
|
||||
}
|
||||
|
||||
return set_app_profile(&p);
|
||||
}
|
||||
|
||||
NativeBridge(uidShouldUmount, jboolean, jint uid) {
|
||||
return uid_should_umount(uid);
|
||||
}
|
||||
|
||||
NativeBridgeNP(isSuEnabled, jboolean) {
|
||||
return is_su_enabled();
|
||||
}
|
||||
|
||||
NativeBridge(setSuEnabled, jboolean, jboolean enabled) {
|
||||
return set_su_enabled(enabled);
|
||||
}
|
||||
|
||||
NativeBridgeNP(isKPMEnabled, jboolean) {
|
||||
return is_KPM_enable();
|
||||
}
|
||||
|
||||
NativeBridgeNP(getHookType, jstring) {
|
||||
char hook_type[16];
|
||||
get_hook_type(hook_type, sizeof(hook_type));
|
||||
return GetEnvironment()->NewStringUTF(env, hook_type);
|
||||
}
|
||||
|
||||
NativeBridgeNP(getSusfsFeatureStatus, jobject) {
|
||||
struct susfs_feature_status status;
|
||||
bool result = get_susfs_feature_status(&status);
|
||||
|
||||
if (!result) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
jclass cls = GetEnvironment()->FindClass(env, "com/sukisu/ultra/Natives$SusfsFeatureStatus");
|
||||
jmethodID constructor = GetEnvironment()->GetMethodID(env, cls, "<init>", "()V");
|
||||
jobject obj = GetEnvironment()->NewObject(env, cls, constructor);
|
||||
|
||||
// 设置各个字段
|
||||
jfieldID statusSusPathField = GetEnvironment()->GetFieldID(env, cls, "statusSusPath", "Z");
|
||||
jfieldID statusSusMountField = GetEnvironment()->GetFieldID(env, cls, "statusSusMount", "Z");
|
||||
jfieldID statusAutoDefaultMountField = GetEnvironment()->GetFieldID(env, cls, "statusAutoDefaultMount", "Z");
|
||||
jfieldID statusAutoBindMountField = GetEnvironment()->GetFieldID(env, cls, "statusAutoBindMount", "Z");
|
||||
jfieldID statusSusKstatField = GetEnvironment()->GetFieldID(env, cls, "statusSusKstat", "Z");
|
||||
jfieldID statusTryUmountField = GetEnvironment()->GetFieldID(env, cls, "statusTryUmount", "Z");
|
||||
jfieldID statusAutoTryUmountBindField = GetEnvironment()->GetFieldID(env, cls, "statusAutoTryUmountBind", "Z");
|
||||
jfieldID statusSpoofUnameField = GetEnvironment()->GetFieldID(env, cls, "statusSpoofUname", "Z");
|
||||
jfieldID statusEnableLogField = GetEnvironment()->GetFieldID(env, cls, "statusEnableLog", "Z");
|
||||
jfieldID statusHideSymbolsField = GetEnvironment()->GetFieldID(env, cls, "statusHideSymbols", "Z");
|
||||
jfieldID statusSpoofCmdlineField = GetEnvironment()->GetFieldID(env, cls, "statusSpoofCmdline", "Z");
|
||||
jfieldID statusOpenRedirectField = GetEnvironment()->GetFieldID(env, cls, "statusOpenRedirect", "Z");
|
||||
jfieldID statusMagicMountField = GetEnvironment()->GetFieldID(env, cls, "statusMagicMount", "Z");
|
||||
jfieldID statusSusSuField = GetEnvironment()->GetFieldID(env, cls, "statusSusSu", "Z");
|
||||
|
||||
GetEnvironment()->SetBooleanField(env, obj, statusSusPathField, status.status_sus_path);
|
||||
GetEnvironment()->SetBooleanField(env, obj, statusSusMountField, status.status_sus_mount);
|
||||
GetEnvironment()->SetBooleanField(env, obj, statusAutoDefaultMountField, status.status_auto_default_mount);
|
||||
GetEnvironment()->SetBooleanField(env, obj, statusAutoBindMountField, status.status_auto_bind_mount);
|
||||
GetEnvironment()->SetBooleanField(env, obj, statusSusKstatField, status.status_sus_kstat);
|
||||
GetEnvironment()->SetBooleanField(env, obj, statusTryUmountField, status.status_try_umount);
|
||||
GetEnvironment()->SetBooleanField(env, obj, statusAutoTryUmountBindField, status.status_auto_try_umount_bind);
|
||||
GetEnvironment()->SetBooleanField(env, obj, statusSpoofUnameField, status.status_spoof_uname);
|
||||
GetEnvironment()->SetBooleanField(env, obj, statusEnableLogField, status.status_enable_log);
|
||||
GetEnvironment()->SetBooleanField(env, obj, statusHideSymbolsField, status.status_hide_symbols);
|
||||
GetEnvironment()->SetBooleanField(env, obj, statusSpoofCmdlineField, status.status_spoof_cmdline);
|
||||
GetEnvironment()->SetBooleanField(env, obj, statusOpenRedirectField, status.status_open_redirect);
|
||||
GetEnvironment()->SetBooleanField(env, obj, statusMagicMountField, status.status_magic_mount);
|
||||
GetEnvironment()->SetBooleanField(env, obj, statusSusSuField, status.status_sus_su);
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
NativeBridgeNP(getFullVersion, jstring) {
|
||||
char buff[255] = { 0 };
|
||||
get_full_version((char *) &buff);
|
||||
return GetEnvironment()->NewStringUTF(env, buff);
|
||||
}
|
||||
@@ -1,313 +0,0 @@
|
||||
#include <jni.h>
|
||||
|
||||
#include <sys/prctl.h>
|
||||
|
||||
#include <android/log.h>
|
||||
#include <cstring>
|
||||
|
||||
#include "ksu.h"
|
||||
|
||||
#define LOG_TAG "KernelSU"
|
||||
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_sukisu_ultra_Natives_becomeManager(JNIEnv *env, jobject, jstring pkg) {
|
||||
auto cpkg = env->GetStringUTFChars(pkg, nullptr);
|
||||
auto result = become_manager(cpkg);
|
||||
env->ReleaseStringUTFChars(pkg, cpkg);
|
||||
return result;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_com_sukisu_ultra_Natives_getVersion(JNIEnv *env, jobject) {
|
||||
return get_version();
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jintArray JNICALL
|
||||
Java_com_sukisu_ultra_Natives_getAllowList(JNIEnv *env, jobject) {
|
||||
int uids[1024];
|
||||
int size = 0;
|
||||
bool result = get_allow_list(uids, &size);
|
||||
LOGD("getAllowList: %d, size: %d", result, size);
|
||||
if (result) {
|
||||
auto array = env->NewIntArray(size);
|
||||
env->SetIntArrayRegion(array, 0, size, uids);
|
||||
return array;
|
||||
}
|
||||
return env->NewIntArray(0);
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_sukisu_ultra_Natives_isSafeMode(JNIEnv *env, jclass clazz) {
|
||||
return is_safe_mode();
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_sukisu_ultra_Natives_isLkmMode(JNIEnv *env, jclass clazz) {
|
||||
return is_lkm_mode();
|
||||
}
|
||||
|
||||
static void fillIntArray(JNIEnv *env, jobject list, int *data, int count) {
|
||||
auto cls = env->GetObjectClass(list);
|
||||
auto add = env->GetMethodID(cls, "add", "(Ljava/lang/Object;)Z");
|
||||
auto integerCls = env->FindClass("java/lang/Integer");
|
||||
auto constructor = env->GetMethodID(integerCls, "<init>", "(I)V");
|
||||
for (int i = 0; i < count; ++i) {
|
||||
auto integer = env->NewObject(integerCls, constructor, data[i]);
|
||||
env->CallBooleanMethod(list, add, integer);
|
||||
}
|
||||
}
|
||||
|
||||
static void addIntToList(JNIEnv *env, jobject list, int ele) {
|
||||
auto cls = env->GetObjectClass(list);
|
||||
auto add = env->GetMethodID(cls, "add", "(Ljava/lang/Object;)Z");
|
||||
auto integerCls = env->FindClass("java/lang/Integer");
|
||||
auto constructor = env->GetMethodID(integerCls, "<init>", "(I)V");
|
||||
auto integer = env->NewObject(integerCls, constructor, ele);
|
||||
env->CallBooleanMethod(list, add, integer);
|
||||
}
|
||||
|
||||
static uint64_t capListToBits(JNIEnv *env, jobject list) {
|
||||
auto cls = env->GetObjectClass(list);
|
||||
auto get = env->GetMethodID(cls, "get", "(I)Ljava/lang/Object;");
|
||||
auto size = env->GetMethodID(cls, "size", "()I");
|
||||
auto listSize = env->CallIntMethod(list, size);
|
||||
auto integerCls = env->FindClass("java/lang/Integer");
|
||||
auto intValue = env->GetMethodID(integerCls, "intValue", "()I");
|
||||
uint64_t result = 0;
|
||||
for (int i = 0; i < listSize; ++i) {
|
||||
auto integer = env->CallObjectMethod(list, get, i);
|
||||
int data = env->CallIntMethod(integer, intValue);
|
||||
|
||||
if (cap_valid(data)) {
|
||||
result |= (1ULL << data);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static int getListSize(JNIEnv *env, jobject list) {
|
||||
auto cls = env->GetObjectClass(list);
|
||||
auto size = env->GetMethodID(cls, "size", "()I");
|
||||
return env->CallIntMethod(list, size);
|
||||
}
|
||||
|
||||
static void fillArrayWithList(JNIEnv *env, jobject list, int *data, int count) {
|
||||
auto cls = env->GetObjectClass(list);
|
||||
auto get = env->GetMethodID(cls, "get", "(I)Ljava/lang/Object;");
|
||||
auto integerCls = env->FindClass("java/lang/Integer");
|
||||
auto intValue = env->GetMethodID(integerCls, "intValue", "()I");
|
||||
for (int i = 0; i < count; ++i) {
|
||||
auto integer = env->CallObjectMethod(list, get, i);
|
||||
data[i] = env->CallIntMethod(integer, intValue);
|
||||
}
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jobject JNICALL
|
||||
Java_com_sukisu_ultra_Natives_getAppProfile(JNIEnv *env, jobject, jstring pkg, jint uid) {
|
||||
if (env->GetStringLength(pkg) > KSU_MAX_PACKAGE_NAME) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
p_key_t key = {};
|
||||
auto cpkg = env->GetStringUTFChars(pkg, nullptr);
|
||||
strcpy(key, cpkg);
|
||||
env->ReleaseStringUTFChars(pkg, cpkg);
|
||||
|
||||
app_profile profile = {};
|
||||
profile.version = KSU_APP_PROFILE_VER;
|
||||
|
||||
strcpy(profile.key, key);
|
||||
profile.current_uid = uid;
|
||||
|
||||
bool useDefaultProfile = !get_app_profile(key, &profile);
|
||||
|
||||
auto cls = env->FindClass("com/sukisu/ultra/Natives$Profile");
|
||||
auto constructor = env->GetMethodID(cls, "<init>", "()V");
|
||||
auto obj = env->NewObject(cls, constructor);
|
||||
auto keyField = env->GetFieldID(cls, "name", "Ljava/lang/String;");
|
||||
auto currentUidField = env->GetFieldID(cls, "currentUid", "I");
|
||||
auto allowSuField = env->GetFieldID(cls, "allowSu", "Z");
|
||||
|
||||
auto rootUseDefaultField = env->GetFieldID(cls, "rootUseDefault", "Z");
|
||||
auto rootTemplateField = env->GetFieldID(cls, "rootTemplate", "Ljava/lang/String;");
|
||||
|
||||
auto uidField = env->GetFieldID(cls, "uid", "I");
|
||||
auto gidField = env->GetFieldID(cls, "gid", "I");
|
||||
auto groupsField = env->GetFieldID(cls, "groups", "Ljava/util/List;");
|
||||
auto capabilitiesField = env->GetFieldID(cls, "capabilities", "Ljava/util/List;");
|
||||
auto domainField = env->GetFieldID(cls, "context", "Ljava/lang/String;");
|
||||
auto namespacesField = env->GetFieldID(cls, "namespace", "I");
|
||||
|
||||
auto nonRootUseDefaultField = env->GetFieldID(cls, "nonRootUseDefault", "Z");
|
||||
auto umountModulesField = env->GetFieldID(cls, "umountModules", "Z");
|
||||
|
||||
env->SetObjectField(obj, keyField, env->NewStringUTF(profile.key));
|
||||
env->SetIntField(obj, currentUidField, profile.current_uid);
|
||||
|
||||
if (useDefaultProfile) {
|
||||
// no profile found, so just use default profile:
|
||||
// don't allow root and use default profile!
|
||||
LOGD("use default profile for: %s, %d", key, uid);
|
||||
|
||||
// allow_su = false
|
||||
// non root use default = true
|
||||
env->SetBooleanField(obj, allowSuField, false);
|
||||
env->SetBooleanField(obj, nonRootUseDefaultField, true);
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
auto allowSu = profile.allow_su;
|
||||
|
||||
if (allowSu) {
|
||||
env->SetBooleanField(obj, rootUseDefaultField, (jboolean) profile.rp_config.use_default);
|
||||
if (strlen(profile.rp_config.template_name) > 0) {
|
||||
env->SetObjectField(obj, rootTemplateField,
|
||||
env->NewStringUTF(profile.rp_config.template_name));
|
||||
}
|
||||
|
||||
env->SetIntField(obj, uidField, profile.rp_config.profile.uid);
|
||||
env->SetIntField(obj, gidField, profile.rp_config.profile.gid);
|
||||
|
||||
jobject groupList = env->GetObjectField(obj, groupsField);
|
||||
int groupCount = profile.rp_config.profile.groups_count;
|
||||
if (groupCount > KSU_MAX_GROUPS) {
|
||||
LOGD("kernel group count too large: %d???", groupCount);
|
||||
groupCount = KSU_MAX_GROUPS;
|
||||
}
|
||||
fillIntArray(env, groupList, profile.rp_config.profile.groups, groupCount);
|
||||
|
||||
jobject capList = env->GetObjectField(obj, capabilitiesField);
|
||||
for (int i = 0; i <= CAP_LAST_CAP; i++) {
|
||||
if (profile.rp_config.profile.capabilities.effective & (1ULL << i)) {
|
||||
addIntToList(env, capList, i);
|
||||
}
|
||||
}
|
||||
|
||||
env->SetObjectField(obj, domainField,
|
||||
env->NewStringUTF(profile.rp_config.profile.selinux_domain));
|
||||
env->SetIntField(obj, namespacesField, profile.rp_config.profile.namespaces);
|
||||
env->SetBooleanField(obj, allowSuField, profile.allow_su);
|
||||
} else {
|
||||
env->SetBooleanField(obj, nonRootUseDefaultField,
|
||||
(jboolean) profile.nrp_config.use_default);
|
||||
env->SetBooleanField(obj, umountModulesField, profile.nrp_config.profile.umount_modules);
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_sukisu_ultra_Natives_setAppProfile(JNIEnv *env, jobject clazz, jobject profile) {
|
||||
auto cls = env->FindClass("com/sukisu/ultra/Natives$Profile");
|
||||
|
||||
auto keyField = env->GetFieldID(cls, "name", "Ljava/lang/String;");
|
||||
auto currentUidField = env->GetFieldID(cls, "currentUid", "I");
|
||||
auto allowSuField = env->GetFieldID(cls, "allowSu", "Z");
|
||||
|
||||
auto rootUseDefaultField = env->GetFieldID(cls, "rootUseDefault", "Z");
|
||||
auto rootTemplateField = env->GetFieldID(cls, "rootTemplate", "Ljava/lang/String;");
|
||||
|
||||
auto uidField = env->GetFieldID(cls, "uid", "I");
|
||||
auto gidField = env->GetFieldID(cls, "gid", "I");
|
||||
auto groupsField = env->GetFieldID(cls, "groups", "Ljava/util/List;");
|
||||
auto capabilitiesField = env->GetFieldID(cls, "capabilities", "Ljava/util/List;");
|
||||
auto domainField = env->GetFieldID(cls, "context", "Ljava/lang/String;");
|
||||
auto namespacesField = env->GetFieldID(cls, "namespace", "I");
|
||||
|
||||
auto nonRootUseDefaultField = env->GetFieldID(cls, "nonRootUseDefault", "Z");
|
||||
auto umountModulesField = env->GetFieldID(cls, "umountModules", "Z");
|
||||
|
||||
auto key = env->GetObjectField(profile, keyField);
|
||||
if (!key) {
|
||||
return false;
|
||||
}
|
||||
if (env->GetStringLength((jstring) key) > KSU_MAX_PACKAGE_NAME) {
|
||||
return false;
|
||||
}
|
||||
|
||||
auto cpkg = env->GetStringUTFChars((jstring) key, nullptr);
|
||||
p_key_t p_key = {};
|
||||
strcpy(p_key, cpkg);
|
||||
env->ReleaseStringUTFChars((jstring) key, cpkg);
|
||||
|
||||
auto currentUid = env->GetIntField(profile, currentUidField);
|
||||
|
||||
auto uid = env->GetIntField(profile, uidField);
|
||||
auto gid = env->GetIntField(profile, gidField);
|
||||
auto groups = env->GetObjectField(profile, groupsField);
|
||||
auto capabilities = env->GetObjectField(profile, capabilitiesField);
|
||||
auto domain = env->GetObjectField(profile, domainField);
|
||||
auto allowSu = env->GetBooleanField(profile, allowSuField);
|
||||
auto umountModules = env->GetBooleanField(profile, umountModulesField);
|
||||
|
||||
app_profile p = {};
|
||||
p.version = KSU_APP_PROFILE_VER;
|
||||
|
||||
strcpy(p.key, p_key);
|
||||
p.allow_su = allowSu;
|
||||
p.current_uid = currentUid;
|
||||
|
||||
if (allowSu) {
|
||||
p.rp_config.use_default = env->GetBooleanField(profile, rootUseDefaultField);
|
||||
auto templateName = env->GetObjectField(profile, rootTemplateField);
|
||||
if (templateName) {
|
||||
auto ctemplateName = env->GetStringUTFChars((jstring) templateName, nullptr);
|
||||
strcpy(p.rp_config.template_name, ctemplateName);
|
||||
env->ReleaseStringUTFChars((jstring) templateName, ctemplateName);
|
||||
}
|
||||
|
||||
p.rp_config.profile.uid = uid;
|
||||
p.rp_config.profile.gid = gid;
|
||||
|
||||
int groups_count = getListSize(env, groups);
|
||||
if (groups_count > KSU_MAX_GROUPS) {
|
||||
LOGD("groups count too large: %d", groups_count);
|
||||
return false;
|
||||
}
|
||||
p.rp_config.profile.groups_count = groups_count;
|
||||
fillArrayWithList(env, groups, p.rp_config.profile.groups, groups_count);
|
||||
|
||||
p.rp_config.profile.capabilities.effective = capListToBits(env, capabilities);
|
||||
|
||||
auto cdomain = env->GetStringUTFChars((jstring) domain, nullptr);
|
||||
strcpy(p.rp_config.profile.selinux_domain, cdomain);
|
||||
env->ReleaseStringUTFChars((jstring) domain, cdomain);
|
||||
|
||||
p.rp_config.profile.namespaces = env->GetIntField(profile, namespacesField);
|
||||
} else {
|
||||
p.nrp_config.use_default = env->GetBooleanField(profile, nonRootUseDefaultField);
|
||||
p.nrp_config.profile.umount_modules = umountModules;
|
||||
}
|
||||
|
||||
return set_app_profile(&p);
|
||||
}
|
||||
extern "C"
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_sukisu_ultra_Natives_uidShouldUmount(JNIEnv *env, jobject thiz, jint uid) {
|
||||
return uid_should_umount(uid);
|
||||
}
|
||||
extern "C"
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_sukisu_ultra_Natives_isSuEnabled(JNIEnv *env, jobject thiz) {
|
||||
return is_su_enabled();
|
||||
}
|
||||
extern "C"
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_sukisu_ultra_Natives_setSuEnabled(JNIEnv *env, jobject thiz, jboolean enabled) {
|
||||
return set_su_enabled(enabled);
|
||||
}
|
||||
|
||||
extern "C" JNIEXPORT jboolean JNICALL
|
||||
Java_com_sukisu_ultra_Natives_isKPMEnabled(JNIEnv *env, jobject) {
|
||||
return is_KPM_enable();
|
||||
}
|
||||
142
manager/app/src/main/cpp/ksu.c
Normal file
142
manager/app/src/main/cpp/ksu.c
Normal file
@@ -0,0 +1,142 @@
|
||||
//
|
||||
// Created by weishu on 2022/12/9.
|
||||
//
|
||||
|
||||
#include <sys/prctl.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "prelude.h"
|
||||
#include "ksu.h"
|
||||
|
||||
#define KERNEL_SU_OPTION 0xDEADBEEF
|
||||
|
||||
#define CMD_GRANT_ROOT 0
|
||||
|
||||
#define CMD_BECOME_MANAGER 1
|
||||
#define CMD_GET_VERSION 2
|
||||
#define CMD_ALLOW_SU 3
|
||||
#define CMD_DENY_SU 4
|
||||
#define CMD_GET_SU_LIST 5
|
||||
#define CMD_GET_DENY_LIST 6
|
||||
#define CMD_CHECK_SAFEMODE 9
|
||||
|
||||
#define CMD_GET_APP_PROFILE 10
|
||||
#define CMD_SET_APP_PROFILE 11
|
||||
|
||||
#define CMD_IS_UID_GRANTED_ROOT 12
|
||||
#define CMD_IS_UID_SHOULD_UMOUNT 13
|
||||
#define CMD_IS_SU_ENABLED 14
|
||||
#define CMD_ENABLE_SU 15
|
||||
|
||||
#define CMD_GET_VERSION_FULL 30
|
||||
|
||||
#define CMD_ENABLE_KPM 100
|
||||
#define CMD_HOOK_TYPE 101
|
||||
#define CMD_GET_SUSFS_FEATURE_STATUS 102
|
||||
|
||||
static bool ksuctl(int cmd, void* arg1, void* arg2) {
|
||||
int32_t result = 0;
|
||||
int32_t rtn = prctl(KERNEL_SU_OPTION, cmd, arg1, arg2, &result);
|
||||
|
||||
return result == KERNEL_SU_OPTION && rtn == -1;
|
||||
}
|
||||
|
||||
bool become_manager(const char* pkg) {
|
||||
char param[128];
|
||||
uid_t uid = getuid();
|
||||
uint32_t userId = uid / 100000;
|
||||
if (userId == 0) {
|
||||
sprintf(param, "/data/data/%s", pkg);
|
||||
} else {
|
||||
snprintf(param, sizeof(param), "/data/user/%d/%s", userId, pkg);
|
||||
}
|
||||
|
||||
return ksuctl(CMD_BECOME_MANAGER, param, NULL);
|
||||
}
|
||||
|
||||
// cache the result to avoid unnecessary syscall
|
||||
static bool is_lkm;
|
||||
int get_version() {
|
||||
int32_t version = -1;
|
||||
int32_t flags = 0;
|
||||
ksuctl(CMD_GET_VERSION, &version, &flags);
|
||||
if (!is_lkm && (flags & 0x1)) {
|
||||
is_lkm = true;
|
||||
}
|
||||
return version;
|
||||
}
|
||||
|
||||
void get_full_version(char* buff) {
|
||||
ksuctl(CMD_GET_VERSION_FULL, buff, NULL);
|
||||
}
|
||||
|
||||
bool get_allow_list(int *uids, int *size) {
|
||||
return ksuctl(CMD_GET_SU_LIST, uids, size);
|
||||
}
|
||||
|
||||
bool is_safe_mode() {
|
||||
return ksuctl(CMD_CHECK_SAFEMODE, NULL, NULL);
|
||||
}
|
||||
|
||||
bool is_lkm_mode() {
|
||||
// you should call get_version first!
|
||||
return is_lkm;
|
||||
}
|
||||
|
||||
bool uid_should_umount(int uid) {
|
||||
int should;
|
||||
return ksuctl(CMD_IS_UID_SHOULD_UMOUNT, (void*) ((size_t) uid), &should) && should;
|
||||
}
|
||||
|
||||
bool set_app_profile(const struct app_profile* profile) {
|
||||
return ksuctl(CMD_SET_APP_PROFILE, (void*) profile, NULL);
|
||||
}
|
||||
|
||||
bool get_app_profile(char* key, struct app_profile* profile) {
|
||||
return ksuctl(CMD_GET_APP_PROFILE, profile, NULL);
|
||||
}
|
||||
|
||||
bool set_su_enabled(bool enabled) {
|
||||
return ksuctl(CMD_ENABLE_SU, (void*) enabled, NULL);
|
||||
}
|
||||
|
||||
bool is_su_enabled() {
|
||||
int enabled = true;
|
||||
// if ksuctl failed, we assume su is enabled, and it cannot be disabled.
|
||||
ksuctl(CMD_IS_SU_ENABLED, &enabled, NULL);
|
||||
return enabled;
|
||||
}
|
||||
|
||||
bool is_KPM_enable() {
|
||||
int enabled = false;
|
||||
ksuctl(CMD_ENABLE_KPM, &enabled, NULL);
|
||||
return enabled;
|
||||
}
|
||||
|
||||
bool get_hook_type(char* hook_type, size_t size) {
|
||||
if (hook_type == NULL || size == 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
static char cached_hook_type[16] = {0};
|
||||
if (cached_hook_type[0] == '\0') {
|
||||
if (!ksuctl(CMD_HOOK_TYPE, cached_hook_type, NULL)) {
|
||||
strcpy(cached_hook_type, "Unknown");
|
||||
}
|
||||
}
|
||||
|
||||
strncpy(hook_type, cached_hook_type, size);
|
||||
hook_type[size - 1] = '\0';
|
||||
return true;
|
||||
}
|
||||
|
||||
bool get_susfs_feature_status(struct susfs_feature_status* status) {
|
||||
if (status == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return ksuctl(CMD_GET_SUSFS_FEATURE_STATUS, status, NULL);
|
||||
}
|
||||
@@ -1,105 +0,0 @@
|
||||
//
|
||||
// Created by weishu on 2022/12/9.
|
||||
//
|
||||
|
||||
#include <sys/prctl.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "ksu.h"
|
||||
|
||||
#define KERNEL_SU_OPTION 0xDEADBEEF
|
||||
|
||||
#define CMD_GRANT_ROOT 0
|
||||
|
||||
#define CMD_BECOME_MANAGER 1
|
||||
#define CMD_GET_VERSION 2
|
||||
#define CMD_ALLOW_SU 3
|
||||
#define CMD_DENY_SU 4
|
||||
#define CMD_GET_SU_LIST 5
|
||||
#define CMD_GET_DENY_LIST 6
|
||||
#define CMD_CHECK_SAFEMODE 9
|
||||
|
||||
#define CMD_GET_APP_PROFILE 10
|
||||
#define CMD_SET_APP_PROFILE 11
|
||||
|
||||
#define CMD_IS_UID_GRANTED_ROOT 12
|
||||
#define CMD_IS_UID_SHOULD_UMOUNT 13
|
||||
#define CMD_IS_SU_ENABLED 14
|
||||
#define CMD_ENABLE_SU 15
|
||||
#define CMD_ENABLE_KPM 100
|
||||
|
||||
static bool ksuctl(int cmd, void* arg1, void* arg2) {
|
||||
int32_t result = 0;
|
||||
prctl(KERNEL_SU_OPTION, cmd, arg1, arg2, &result);
|
||||
return result == KERNEL_SU_OPTION;
|
||||
}
|
||||
|
||||
bool become_manager(const char* pkg) {
|
||||
char param[128];
|
||||
uid_t uid = getuid();
|
||||
uint32_t userId = uid / 100000;
|
||||
if (userId == 0) {
|
||||
sprintf(param, "/data/data/%s", pkg);
|
||||
} else {
|
||||
snprintf(param, sizeof(param), "/data/user/%d/%s", userId, pkg);
|
||||
}
|
||||
|
||||
return ksuctl(CMD_BECOME_MANAGER, param, nullptr);
|
||||
}
|
||||
|
||||
// cache the result to avoid unnecessary syscall
|
||||
static bool is_lkm;
|
||||
int get_version() {
|
||||
int32_t version = -1;
|
||||
int32_t lkm = 0;
|
||||
ksuctl(CMD_GET_VERSION, &version, &lkm);
|
||||
if (!is_lkm && lkm != 0) {
|
||||
is_lkm = true;
|
||||
}
|
||||
return version;
|
||||
}
|
||||
|
||||
bool get_allow_list(int *uids, int *size) {
|
||||
return ksuctl(CMD_GET_SU_LIST, uids, size);
|
||||
}
|
||||
|
||||
bool is_safe_mode() {
|
||||
return ksuctl(CMD_CHECK_SAFEMODE, nullptr, nullptr);
|
||||
}
|
||||
|
||||
bool is_lkm_mode() {
|
||||
// you should call get_version first!
|
||||
return is_lkm;
|
||||
}
|
||||
|
||||
bool uid_should_umount(int uid) {
|
||||
bool should;
|
||||
return ksuctl(CMD_IS_UID_SHOULD_UMOUNT, reinterpret_cast<void*>(uid), &should) && should;
|
||||
}
|
||||
|
||||
bool set_app_profile(const app_profile *profile) {
|
||||
return ksuctl(CMD_SET_APP_PROFILE, (void*) profile, nullptr);
|
||||
}
|
||||
|
||||
bool get_app_profile(p_key_t key, app_profile *profile) {
|
||||
return ksuctl(CMD_GET_APP_PROFILE, (void*) profile, nullptr);
|
||||
}
|
||||
|
||||
bool set_su_enabled(bool enabled) {
|
||||
return ksuctl(CMD_ENABLE_SU, (void*) enabled, nullptr);
|
||||
}
|
||||
|
||||
bool is_su_enabled() {
|
||||
bool enabled = true;
|
||||
// if ksuctl failed, we assume su is enabled, and it cannot be disabled.
|
||||
ksuctl(CMD_IS_SU_ENABLED, &enabled, nullptr);
|
||||
return enabled;
|
||||
}
|
||||
|
||||
bool is_KPM_enable() {
|
||||
bool enabled = false;
|
||||
return ksuctl(CMD_ENABLE_KPM, &enabled, nullptr), enabled;
|
||||
}
|
||||
@@ -5,10 +5,13 @@
|
||||
#ifndef KERNELSU_KSU_H
|
||||
#define KERNELSU_KSU_H
|
||||
|
||||
#include "prelude.h"
|
||||
#include <linux/capability.h>
|
||||
|
||||
bool become_manager(const char *);
|
||||
|
||||
void get_full_version(char* buff);
|
||||
|
||||
int get_version();
|
||||
|
||||
bool get_allow_list(int *uids, int *size);
|
||||
@@ -25,7 +28,24 @@ bool is_lkm_mode();
|
||||
#define KSU_MAX_GROUPS 32
|
||||
#define KSU_SELINUX_DOMAIN 64
|
||||
|
||||
using p_key_t = char[KSU_MAX_PACKAGE_NAME];
|
||||
// SUSFS Functional State Structures
|
||||
struct susfs_feature_status {
|
||||
bool status_sus_path;
|
||||
bool status_sus_mount;
|
||||
bool status_auto_default_mount;
|
||||
bool status_auto_bind_mount;
|
||||
bool status_sus_kstat;
|
||||
bool status_try_umount;
|
||||
bool status_auto_try_umount_bind;
|
||||
bool status_spoof_uname;
|
||||
bool status_enable_log;
|
||||
bool status_hide_symbols;
|
||||
bool status_spoof_cmdline;
|
||||
bool status_open_redirect;
|
||||
bool status_magic_mount;
|
||||
bool status_overlayfs_auto_kstat;
|
||||
bool status_sus_su;
|
||||
};
|
||||
|
||||
struct root_profile {
|
||||
int32_t uid;
|
||||
@@ -75,9 +95,9 @@ struct app_profile {
|
||||
};
|
||||
};
|
||||
|
||||
bool set_app_profile(const app_profile *profile);
|
||||
bool set_app_profile(const struct app_profile* profile);
|
||||
|
||||
bool get_app_profile(p_key_t key, app_profile *profile);
|
||||
bool get_app_profile(char* key, struct app_profile* profile);
|
||||
|
||||
bool set_su_enabled(bool enabled);
|
||||
|
||||
@@ -85,4 +105,8 @@ bool is_su_enabled();
|
||||
|
||||
bool is_KPM_enable();
|
||||
|
||||
#endif //KERNELSU_KSU_H
|
||||
bool get_hook_type(char* hook_type, size_t size);
|
||||
|
||||
bool get_susfs_feature_status(struct susfs_feature_status* status);
|
||||
|
||||
#endif //KERNELSU_KSU_H
|
||||
17
manager/app/src/main/cpp/prelude.h
Normal file
17
manager/app/src/main/cpp/prelude.h
Normal file
@@ -0,0 +1,17 @@
|
||||
|
||||
#ifndef KERNELSU_PRELUDE_H
|
||||
#define KERNELSU_PRELUDE_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include <stdbool.h>
|
||||
#include <jni.h>
|
||||
#include <android/log.h>
|
||||
|
||||
#define GetEnvironment() (*env)
|
||||
#define NativeBridge(fn, rtn, ...) JNIEXPORT rtn JNICALL Java_com_sukisu_ultra_Natives_##fn(JNIEnv* env, jclass clazz, __VA_ARGS__)
|
||||
#define NativeBridgeNP(fn, rtn) JNIEXPORT rtn JNICALL Java_com_sukisu_ultra_Natives_##fn(JNIEnv* env, jclass clazz)
|
||||
|
||||
#define LogDebug(...) __android_log_print(ANDROID_LOG_DEBUG, "KernelSU", __VA_ARGS__)
|
||||
|
||||
#endif
|
||||
@@ -17,6 +17,7 @@ object Natives {
|
||||
// 10977: change groups_count and groups to avoid overflow write
|
||||
// 11071: Fix the issue of failing to set a custom SELinux type.
|
||||
const val MINIMAL_SUPPORTED_KERNEL = 11071
|
||||
const val MINIMAL_SUPPORTED_KERNEL_FULL = "v3.1.5"
|
||||
|
||||
// 11640: Support query working mode, LKM or GKI
|
||||
// when MINIMAL_SUPPORTED_KERNEL > 11640, we can remove this constant.
|
||||
@@ -31,6 +32,23 @@ object Natives {
|
||||
const val ROOT_UID = 0
|
||||
const val ROOT_GID = 0
|
||||
|
||||
external fun getFullVersion(): String
|
||||
|
||||
fun getSimpleVersionFull(): String {
|
||||
val fullVersion = getFullVersion()
|
||||
val startIndex = fullVersion.indexOf('v')
|
||||
if (startIndex < 0) {
|
||||
return fullVersion
|
||||
}
|
||||
val endIndex = fullVersion.indexOf('-', startIndex)
|
||||
val versionStr = if (endIndex > startIndex) {
|
||||
fullVersion.substring(startIndex, endIndex)
|
||||
} else {
|
||||
fullVersion.substring(startIndex)
|
||||
}
|
||||
return "v" + (Regex("""\d+(\.\d+)*""").find(versionStr)?.value ?: versionStr)
|
||||
}
|
||||
|
||||
init {
|
||||
System.loadLibrary("zako")
|
||||
}
|
||||
@@ -69,6 +87,13 @@ object Natives {
|
||||
external fun isSuEnabled(): Boolean
|
||||
external fun setSuEnabled(enabled: Boolean): Boolean
|
||||
external fun isKPMEnabled(): Boolean
|
||||
external fun getHookType(): String
|
||||
|
||||
/**
|
||||
* Get SUSFS feature status from kernel
|
||||
* @return SusfsFeatureStatus object containing all feature states, or null if failed
|
||||
*/
|
||||
external fun getSusfsFeatureStatus(): SusfsFeatureStatus?
|
||||
|
||||
private const val NON_ROOT_DEFAULT_PROFILE_KEY = "$"
|
||||
private const val NOBODY_UID = 9999
|
||||
@@ -91,9 +116,38 @@ object Natives {
|
||||
}
|
||||
|
||||
fun requireNewKernel(): Boolean {
|
||||
return version < MINIMAL_SUPPORTED_KERNEL
|
||||
if (version < MINIMAL_SUPPORTED_KERNEL) {
|
||||
return true
|
||||
}
|
||||
val simpleVersionFull = getSimpleVersionFull()
|
||||
if (simpleVersionFull.isEmpty()) {
|
||||
return false
|
||||
}
|
||||
return simpleVersionFull < MINIMAL_SUPPORTED_KERNEL_FULL
|
||||
}
|
||||
|
||||
@Immutable
|
||||
@Parcelize
|
||||
@Keep
|
||||
data class SusfsFeatureStatus(
|
||||
val statusSusPath: Boolean = false,
|
||||
val statusSusMount: Boolean = false,
|
||||
val statusAutoDefaultMount: Boolean = false,
|
||||
val statusAutoBindMount: Boolean = false,
|
||||
val statusSusKstat: Boolean = false,
|
||||
val statusTryUmount: Boolean = false,
|
||||
val statusAutoTryUmountBind: Boolean = false,
|
||||
val statusSpoofUname: Boolean = false,
|
||||
val statusEnableLog: Boolean = false,
|
||||
val statusHideSymbols: Boolean = false,
|
||||
val statusSpoofCmdline: Boolean = false,
|
||||
val statusOpenRedirect: Boolean = false,
|
||||
val statusMagicMount: Boolean = false,
|
||||
val statusOverlayfsAutoKstat: Boolean = false,
|
||||
val statusSusSu: Boolean = false
|
||||
) : Parcelable
|
||||
|
||||
|
||||
@Immutable
|
||||
@Parcelize
|
||||
@Keep
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
package com.sukisu.ultra.ui.component
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import androidx.compose.animation.core.*
|
||||
import androidx.compose.animation.*
|
||||
import androidx.compose.runtime.*
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.lazy.LazyListState
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.alpha
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.draw.scale
|
||||
import androidx.compose.ui.unit.dp
|
||||
|
||||
@SuppressLint("AutoboxingStateCreation")
|
||||
@Composable
|
||||
fun rememberFabVisibilityState(listState: LazyListState): State<Boolean> {
|
||||
var previousScrollOffset by remember { mutableStateOf(0) }
|
||||
var previousIndex by remember { mutableStateOf(0) }
|
||||
val fabVisible = remember { mutableStateOf(true) }
|
||||
|
||||
LaunchedEffect(listState) {
|
||||
snapshotFlow { listState.firstVisibleItemIndex to listState.firstVisibleItemScrollOffset }
|
||||
.collect { (index, offset) ->
|
||||
if (previousIndex == 0 && previousScrollOffset == 0) {
|
||||
fabVisible.value = true
|
||||
} else {
|
||||
val isScrollingDown = when {
|
||||
index > previousIndex -> false
|
||||
index < previousIndex -> true
|
||||
else -> offset < previousScrollOffset
|
||||
}
|
||||
|
||||
fabVisible.value = isScrollingDown
|
||||
}
|
||||
|
||||
previousIndex = index
|
||||
previousScrollOffset = offset
|
||||
}
|
||||
}
|
||||
|
||||
return fabVisible
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun AnimatedFab(
|
||||
visible: Boolean,
|
||||
content: @Composable () -> Unit
|
||||
) {
|
||||
val scale by animateFloatAsState(
|
||||
targetValue = if (visible) 1f else 0f,
|
||||
animationSpec = spring(
|
||||
dampingRatio = Spring.DampingRatioMediumBouncy,
|
||||
stiffness = Spring.StiffnessLow
|
||||
)
|
||||
)
|
||||
|
||||
AnimatedVisibility(
|
||||
visible = visible,
|
||||
enter = fadeIn() + scaleIn(),
|
||||
exit = fadeOut() + scaleOut(targetScale = 0.8f)
|
||||
) {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.clip(RoundedCornerShape(16.dp))
|
||||
.scale(scale)
|
||||
.alpha(scale)
|
||||
) {
|
||||
content()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,574 @@
|
||||
package com.sukisu.ultra.ui.component
|
||||
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.rememberScrollState
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.foundation.verticalScroll
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.ButtonDefaults
|
||||
import androidx.compose.material3.DropdownMenuItem
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.ExposedDropdownMenuBox
|
||||
import androidx.compose.material3.ExposedDropdownMenuDefaults
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.MenuAnchorType
|
||||
import androidx.compose.material3.OutlinedTextField
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableIntStateOf
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.sukisu.ultra.R
|
||||
|
||||
/**
|
||||
* 添加路径对话框
|
||||
*/
|
||||
@Composable
|
||||
fun AddPathDialog(
|
||||
showDialog: Boolean,
|
||||
onDismiss: () -> Unit,
|
||||
onConfirm: (String) -> Unit,
|
||||
isLoading: Boolean,
|
||||
titleRes: Int,
|
||||
labelRes: Int,
|
||||
placeholderRes: Int,
|
||||
initialValue: String = ""
|
||||
) {
|
||||
var newPath by remember { mutableStateOf("") }
|
||||
|
||||
// 当对话框显示时,设置初始值
|
||||
LaunchedEffect(showDialog, initialValue) {
|
||||
if (showDialog) {
|
||||
newPath = initialValue
|
||||
}
|
||||
}
|
||||
|
||||
if (showDialog) {
|
||||
AlertDialog(
|
||||
onDismissRequest = onDismiss,
|
||||
title = {
|
||||
Text(
|
||||
stringResource(titleRes),
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
fontWeight = FontWeight.Bold
|
||||
)
|
||||
},
|
||||
text = {
|
||||
OutlinedTextField(
|
||||
value = newPath,
|
||||
onValueChange = { newPath = it },
|
||||
label = { Text(stringResource(labelRes)) },
|
||||
placeholder = { Text(stringResource(placeholderRes)) },
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
)
|
||||
},
|
||||
confirmButton = {
|
||||
Button(
|
||||
onClick = {
|
||||
if (newPath.isNotBlank()) {
|
||||
onConfirm(newPath.trim())
|
||||
newPath = ""
|
||||
}
|
||||
},
|
||||
enabled = newPath.isNotBlank() && !isLoading,
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
) {
|
||||
Text(stringResource(if (initialValue.isNotEmpty()) R.string.susfs_save else R.string.add))
|
||||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(
|
||||
onClick = {
|
||||
onDismiss()
|
||||
newPath = ""
|
||||
},
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
) {
|
||||
Text(stringResource(R.string.cancel))
|
||||
}
|
||||
},
|
||||
shape = RoundedCornerShape(12.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加尝试卸载对话框
|
||||
*/
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
fun AddTryUmountDialog(
|
||||
showDialog: Boolean,
|
||||
onDismiss: () -> Unit,
|
||||
onConfirm: (String, Int) -> Unit,
|
||||
isLoading: Boolean,
|
||||
initialPath: String = "",
|
||||
initialMode: Int = 0
|
||||
) {
|
||||
var newUmountPath by remember { mutableStateOf("") }
|
||||
var newUmountMode by remember { mutableIntStateOf(0) }
|
||||
var umountModeExpanded by remember { mutableStateOf(false) }
|
||||
|
||||
// 当对话框显示时,设置初始值
|
||||
LaunchedEffect(showDialog, initialPath, initialMode) {
|
||||
if (showDialog) {
|
||||
newUmountPath = initialPath
|
||||
newUmountMode = initialMode
|
||||
}
|
||||
}
|
||||
|
||||
if (showDialog) {
|
||||
AlertDialog(
|
||||
onDismissRequest = onDismiss,
|
||||
title = {
|
||||
Text(
|
||||
stringResource(if (initialPath.isNotEmpty()) R.string.susfs_edit_try_umount else R.string.susfs_add_try_umount),
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
fontWeight = FontWeight.Bold
|
||||
)
|
||||
},
|
||||
text = {
|
||||
Column(
|
||||
verticalArrangement = Arrangement.spacedBy(12.dp)
|
||||
) {
|
||||
OutlinedTextField(
|
||||
value = newUmountPath,
|
||||
onValueChange = { newUmountPath = it },
|
||||
label = { Text(stringResource(R.string.susfs_path_label)) },
|
||||
placeholder = { Text(stringResource(R.string.susfs_path_placeholder)) },
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
)
|
||||
|
||||
ExposedDropdownMenuBox(
|
||||
expanded = umountModeExpanded,
|
||||
onExpandedChange = { umountModeExpanded = !umountModeExpanded }
|
||||
) {
|
||||
OutlinedTextField(
|
||||
value = if (newUmountMode == 0)
|
||||
stringResource(R.string.susfs_umount_mode_normal)
|
||||
else
|
||||
stringResource(R.string.susfs_umount_mode_detach),
|
||||
onValueChange = { },
|
||||
readOnly = true,
|
||||
label = { Text(stringResource(R.string.susfs_umount_mode_label)) },
|
||||
trailingIcon = { ExposedDropdownMenuDefaults.TrailingIcon(expanded = umountModeExpanded) },
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.menuAnchor(MenuAnchorType.PrimaryEditable, true),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
)
|
||||
ExposedDropdownMenu(
|
||||
expanded = umountModeExpanded,
|
||||
onDismissRequest = { umountModeExpanded = false }
|
||||
) {
|
||||
DropdownMenuItem(
|
||||
text = { Text(stringResource(R.string.susfs_umount_mode_normal)) },
|
||||
onClick = {
|
||||
newUmountMode = 0
|
||||
umountModeExpanded = false
|
||||
}
|
||||
)
|
||||
DropdownMenuItem(
|
||||
text = { Text(stringResource(R.string.susfs_umount_mode_detach)) },
|
||||
onClick = {
|
||||
newUmountMode = 1
|
||||
umountModeExpanded = false
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
confirmButton = {
|
||||
Button(
|
||||
onClick = {
|
||||
if (newUmountPath.isNotBlank()) {
|
||||
onConfirm(newUmountPath.trim(), newUmountMode)
|
||||
newUmountPath = ""
|
||||
newUmountMode = 0
|
||||
}
|
||||
},
|
||||
enabled = newUmountPath.isNotBlank() && !isLoading,
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
) {
|
||||
Text(stringResource(if (initialPath.isNotEmpty()) R.string.susfs_save else R.string.add))
|
||||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(
|
||||
onClick = {
|
||||
onDismiss()
|
||||
newUmountPath = ""
|
||||
newUmountMode = 0
|
||||
},
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
) {
|
||||
Text(stringResource(R.string.cancel))
|
||||
}
|
||||
},
|
||||
shape = RoundedCornerShape(12.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加Kstat静态配置对话框
|
||||
*/
|
||||
@Composable
|
||||
fun AddKstatStaticallyDialog(
|
||||
showDialog: Boolean,
|
||||
onDismiss: () -> Unit,
|
||||
onConfirm: (String, String, String, String, String, String, String, String, String, String, String, String, String) -> Unit,
|
||||
isLoading: Boolean,
|
||||
initialConfig: String = ""
|
||||
) {
|
||||
var newKstatPath by remember { mutableStateOf("") }
|
||||
var newKstatIno by remember { mutableStateOf("") }
|
||||
var newKstatDev by remember { mutableStateOf("") }
|
||||
var newKstatNlink by remember { mutableStateOf("") }
|
||||
var newKstatSize by remember { mutableStateOf("") }
|
||||
var newKstatAtime by remember { mutableStateOf("") }
|
||||
var newKstatAtimeNsec by remember { mutableStateOf("") }
|
||||
var newKstatMtime by remember { mutableStateOf("") }
|
||||
var newKstatMtimeNsec by remember { mutableStateOf("") }
|
||||
var newKstatCtime by remember { mutableStateOf("") }
|
||||
var newKstatCtimeNsec by remember { mutableStateOf("") }
|
||||
var newKstatBlocks by remember { mutableStateOf("") }
|
||||
var newKstatBlksize by remember { mutableStateOf("") }
|
||||
|
||||
// 当对话框显示时,解析初始配置
|
||||
LaunchedEffect(showDialog, initialConfig) {
|
||||
if (showDialog && initialConfig.isNotEmpty()) {
|
||||
val parts = initialConfig.split("|")
|
||||
if (parts.size >= 13) {
|
||||
newKstatPath = parts[0]
|
||||
newKstatIno = if (parts[1] == "default") "" else parts[1]
|
||||
newKstatDev = if (parts[2] == "default") "" else parts[2]
|
||||
newKstatNlink = if (parts[3] == "default") "" else parts[3]
|
||||
newKstatSize = if (parts[4] == "default") "" else parts[4]
|
||||
newKstatAtime = if (parts[5] == "default") "" else parts[5]
|
||||
newKstatAtimeNsec = if (parts[6] == "default") "" else parts[6]
|
||||
newKstatMtime = if (parts[7] == "default") "" else parts[7]
|
||||
newKstatMtimeNsec = if (parts[8] == "default") "" else parts[8]
|
||||
newKstatCtime = if (parts[9] == "default") "" else parts[9]
|
||||
newKstatCtimeNsec = if (parts[10] == "default") "" else parts[10]
|
||||
newKstatBlocks = if (parts[11] == "default") "" else parts[11]
|
||||
newKstatBlksize = if (parts[12] == "default") "" else parts[12]
|
||||
}
|
||||
} else if (showDialog && initialConfig.isEmpty()) {
|
||||
// 清空所有字段
|
||||
newKstatPath = ""
|
||||
newKstatIno = ""
|
||||
newKstatDev = ""
|
||||
newKstatNlink = ""
|
||||
newKstatSize = ""
|
||||
newKstatAtime = ""
|
||||
newKstatAtimeNsec = ""
|
||||
newKstatMtime = ""
|
||||
newKstatMtimeNsec = ""
|
||||
newKstatCtime = ""
|
||||
newKstatCtimeNsec = ""
|
||||
newKstatBlocks = ""
|
||||
newKstatBlksize = ""
|
||||
}
|
||||
}
|
||||
|
||||
if (showDialog) {
|
||||
AlertDialog(
|
||||
onDismissRequest = onDismiss,
|
||||
title = {
|
||||
Text(
|
||||
stringResource(if (initialConfig.isNotEmpty()) R.string.edit_kstat_statically_title else R.string.add_kstat_statically_title),
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
fontWeight = FontWeight.Bold
|
||||
)
|
||||
},
|
||||
text = {
|
||||
Column(
|
||||
modifier = Modifier.verticalScroll(rememberScrollState()),
|
||||
verticalArrangement = Arrangement.spacedBy(8.dp)
|
||||
) {
|
||||
OutlinedTextField(
|
||||
value = newKstatPath,
|
||||
onValueChange = { newKstatPath = it },
|
||||
label = { Text(stringResource(R.string.file_or_directory_path_label)) },
|
||||
placeholder = { Text("/path/to/file_or_directory") },
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
)
|
||||
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
horizontalArrangement = Arrangement.spacedBy(8.dp)
|
||||
) {
|
||||
OutlinedTextField(
|
||||
value = newKstatIno,
|
||||
onValueChange = { newKstatIno = it },
|
||||
label = { Text("ino") },
|
||||
placeholder = { Text("1234") },
|
||||
modifier = Modifier.weight(1f),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
)
|
||||
OutlinedTextField(
|
||||
value = newKstatDev,
|
||||
onValueChange = { newKstatDev = it },
|
||||
label = { Text("dev") },
|
||||
placeholder = { Text("1234") },
|
||||
modifier = Modifier.weight(1f),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
)
|
||||
}
|
||||
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
horizontalArrangement = Arrangement.spacedBy(8.dp)
|
||||
) {
|
||||
OutlinedTextField(
|
||||
value = newKstatNlink,
|
||||
onValueChange = { newKstatNlink = it },
|
||||
label = { Text("nlink") },
|
||||
placeholder = { Text("2") },
|
||||
modifier = Modifier.weight(1f),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
)
|
||||
OutlinedTextField(
|
||||
value = newKstatSize,
|
||||
onValueChange = { newKstatSize = it },
|
||||
label = { Text("size") },
|
||||
placeholder = { Text("223344") },
|
||||
modifier = Modifier.weight(1f),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
)
|
||||
}
|
||||
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
horizontalArrangement = Arrangement.spacedBy(8.dp)
|
||||
) {
|
||||
OutlinedTextField(
|
||||
value = newKstatAtime,
|
||||
onValueChange = { newKstatAtime = it },
|
||||
label = { Text("atime") },
|
||||
placeholder = { Text("1712592355") },
|
||||
modifier = Modifier.weight(1f),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
)
|
||||
OutlinedTextField(
|
||||
value = newKstatAtimeNsec,
|
||||
onValueChange = { newKstatAtimeNsec = it },
|
||||
label = { Text("atime_nsec") },
|
||||
placeholder = { Text("0") },
|
||||
modifier = Modifier.weight(1f),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
)
|
||||
}
|
||||
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
horizontalArrangement = Arrangement.spacedBy(8.dp)
|
||||
) {
|
||||
OutlinedTextField(
|
||||
value = newKstatMtime,
|
||||
onValueChange = { newKstatMtime = it },
|
||||
label = { Text("mtime") },
|
||||
placeholder = { Text("1712592355") },
|
||||
modifier = Modifier.weight(1f),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
)
|
||||
OutlinedTextField(
|
||||
value = newKstatMtimeNsec,
|
||||
onValueChange = { newKstatMtimeNsec = it },
|
||||
label = { Text("mtime_nsec") },
|
||||
placeholder = { Text("0") },
|
||||
modifier = Modifier.weight(1f),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
)
|
||||
}
|
||||
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
horizontalArrangement = Arrangement.spacedBy(8.dp)
|
||||
) {
|
||||
OutlinedTextField(
|
||||
value = newKstatCtime,
|
||||
onValueChange = { newKstatCtime = it },
|
||||
label = { Text("ctime") },
|
||||
placeholder = { Text("1712592355") },
|
||||
modifier = Modifier.weight(1f),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
)
|
||||
OutlinedTextField(
|
||||
value = newKstatCtimeNsec,
|
||||
onValueChange = { newKstatCtimeNsec = it },
|
||||
label = { Text("ctime_nsec") },
|
||||
placeholder = { Text("0") },
|
||||
modifier = Modifier.weight(1f),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
)
|
||||
}
|
||||
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
horizontalArrangement = Arrangement.spacedBy(8.dp)
|
||||
) {
|
||||
OutlinedTextField(
|
||||
value = newKstatBlocks,
|
||||
onValueChange = { newKstatBlocks = it },
|
||||
label = { Text("blocks") },
|
||||
placeholder = { Text("16") },
|
||||
modifier = Modifier.weight(1f),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
)
|
||||
OutlinedTextField(
|
||||
value = newKstatBlksize,
|
||||
onValueChange = { newKstatBlksize = it },
|
||||
label = { Text("blksize") },
|
||||
placeholder = { Text("512") },
|
||||
modifier = Modifier.weight(1f),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
)
|
||||
}
|
||||
|
||||
Text(
|
||||
text = stringResource(R.string.hint_use_default_value),
|
||||
style = MaterialTheme.typography.bodySmall,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
}
|
||||
},
|
||||
confirmButton = {
|
||||
Button(
|
||||
onClick = {
|
||||
if (newKstatPath.isNotBlank()) {
|
||||
onConfirm(
|
||||
newKstatPath.trim(),
|
||||
newKstatIno.trim().ifBlank { "default" },
|
||||
newKstatDev.trim().ifBlank { "default" },
|
||||
newKstatNlink.trim().ifBlank { "default" },
|
||||
newKstatSize.trim().ifBlank { "default" },
|
||||
newKstatAtime.trim().ifBlank { "default" },
|
||||
newKstatAtimeNsec.trim().ifBlank { "default" },
|
||||
newKstatMtime.trim().ifBlank { "default" },
|
||||
newKstatMtimeNsec.trim().ifBlank { "default" },
|
||||
newKstatCtime.trim().ifBlank { "default" },
|
||||
newKstatCtimeNsec.trim().ifBlank { "default" },
|
||||
newKstatBlocks.trim().ifBlank { "default" },
|
||||
newKstatBlksize.trim().ifBlank { "default" }
|
||||
)
|
||||
// 清空所有字段
|
||||
newKstatPath = ""
|
||||
newKstatIno = ""
|
||||
newKstatDev = ""
|
||||
newKstatNlink = ""
|
||||
newKstatSize = ""
|
||||
newKstatAtime = ""
|
||||
newKstatAtimeNsec = ""
|
||||
newKstatMtime = ""
|
||||
newKstatMtimeNsec = ""
|
||||
newKstatCtime = ""
|
||||
newKstatCtimeNsec = ""
|
||||
newKstatBlocks = ""
|
||||
newKstatBlksize = ""
|
||||
}
|
||||
},
|
||||
enabled = newKstatPath.isNotBlank() && !isLoading,
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
) {
|
||||
Text(stringResource(if (initialConfig.isNotEmpty()) R.string.susfs_save else R.string.add))
|
||||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(
|
||||
onClick = {
|
||||
onDismiss()
|
||||
// 清空所有字段
|
||||
newKstatPath = ""
|
||||
newKstatIno = ""
|
||||
newKstatDev = ""
|
||||
newKstatNlink = ""
|
||||
newKstatSize = ""
|
||||
newKstatAtime = ""
|
||||
newKstatAtimeNsec = ""
|
||||
newKstatMtime = ""
|
||||
newKstatMtimeNsec = ""
|
||||
newKstatCtime = ""
|
||||
newKstatCtimeNsec = ""
|
||||
newKstatBlocks = ""
|
||||
newKstatBlksize = ""
|
||||
},
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
) {
|
||||
Text(stringResource(R.string.cancel))
|
||||
}
|
||||
},
|
||||
shape = RoundedCornerShape(12.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 确认对话框
|
||||
*/
|
||||
@Composable
|
||||
fun ConfirmDialog(
|
||||
showDialog: Boolean,
|
||||
onDismiss: () -> Unit,
|
||||
onConfirm: () -> Unit,
|
||||
titleRes: Int,
|
||||
messageRes: Int,
|
||||
isLoading: Boolean = false,
|
||||
isDestructive: Boolean = false
|
||||
) {
|
||||
if (showDialog) {
|
||||
AlertDialog(
|
||||
onDismissRequest = onDismiss,
|
||||
title = {
|
||||
Text(
|
||||
text = stringResource(titleRes),
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
fontWeight = FontWeight.Bold
|
||||
)
|
||||
},
|
||||
text = { Text(stringResource(messageRes)) },
|
||||
confirmButton = {
|
||||
Button(
|
||||
onClick = onConfirm,
|
||||
enabled = !isLoading,
|
||||
colors = if (isDestructive) {
|
||||
ButtonDefaults.buttonColors(
|
||||
containerColor = MaterialTheme.colorScheme.error
|
||||
)
|
||||
} else {
|
||||
ButtonDefaults.buttonColors()
|
||||
},
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
) {
|
||||
Text(stringResource(R.string.confirm))
|
||||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(
|
||||
onClick = onDismiss,
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
) {
|
||||
Text(stringResource(R.string.cancel))
|
||||
}
|
||||
},
|
||||
shape = RoundedCornerShape(12.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,649 @@
|
||||
package com.sukisu.ultra.ui.component
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.Add
|
||||
import androidx.compose.material.icons.filled.Folder
|
||||
import androidx.compose.material.icons.filled.PlayArrow
|
||||
import androidx.compose.material.icons.filled.Security
|
||||
import androidx.compose.material.icons.filled.Settings
|
||||
import androidx.compose.material.icons.filled.Storage
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.Card
|
||||
import androidx.compose.material3.CardDefaults
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.OutlinedTextField
|
||||
import androidx.compose.material3.Switch
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import com.sukisu.ultra.R
|
||||
import com.sukisu.ultra.ui.screen.extensions.AddKstatPathItemCard
|
||||
import com.sukisu.ultra.ui.screen.extensions.EmptyStateCard
|
||||
import com.sukisu.ultra.ui.screen.extensions.FeatureStatusCard
|
||||
import com.sukisu.ultra.ui.screen.extensions.KstatConfigItemCard
|
||||
import com.sukisu.ultra.ui.screen.extensions.PathItemCard
|
||||
import com.sukisu.ultra.ui.screen.extensions.SusMountHidingControlCard
|
||||
import com.sukisu.ultra.ui.util.SuSFSManager
|
||||
import com.sukisu.ultra.ui.util.SuSFSManager.isSusVersion_1_5_8
|
||||
|
||||
/**
|
||||
* SUS路径内容组件
|
||||
*/
|
||||
@Composable
|
||||
fun SusPathsContent(
|
||||
susPaths: Set<String>,
|
||||
isLoading: Boolean,
|
||||
onAddPath: () -> Unit,
|
||||
onRemovePath: (String) -> Unit,
|
||||
onEditPath: ((String) -> Unit)? = null
|
||||
) {
|
||||
Box(modifier = Modifier.fillMaxSize()) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
verticalArrangement = Arrangement.spacedBy(12.dp)
|
||||
) {
|
||||
if (susPaths.isEmpty()) {
|
||||
item {
|
||||
EmptyStateCard(
|
||||
message = stringResource(R.string.susfs_no_paths_configured)
|
||||
)
|
||||
}
|
||||
} else {
|
||||
items(susPaths.toList()) { path ->
|
||||
PathItemCard(
|
||||
path = path,
|
||||
icon = Icons.Default.Folder,
|
||||
onDelete = { onRemovePath(path) },
|
||||
onEdit = if (onEditPath != null) { { onEditPath(path) } } else null,
|
||||
isLoading = isLoading
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// 添加普通长按钮
|
||||
item {
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(vertical = 16.dp),
|
||||
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Button(
|
||||
onClick = onAddPath,
|
||||
modifier = Modifier
|
||||
.weight(1f)
|
||||
.height(48.dp),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Add,
|
||||
contentDescription = null,
|
||||
modifier = Modifier.size(24.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.width(8.dp))
|
||||
Text(text = stringResource(R.string.add))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* SUS挂载内容组件
|
||||
*/
|
||||
@Composable
|
||||
fun SusMountsContent(
|
||||
susMounts: Set<String>,
|
||||
hideSusMountsForAllProcs: Boolean,
|
||||
isSusVersion_1_5_8: Boolean,
|
||||
isLoading: Boolean,
|
||||
onAddMount: () -> Unit,
|
||||
onRemoveMount: (String) -> Unit,
|
||||
onEditMount: ((String) -> Unit)? = null,
|
||||
onToggleHideSusMountsForAllProcs: (Boolean) -> Unit
|
||||
) {
|
||||
Box(modifier = Modifier.fillMaxSize()) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
verticalArrangement = Arrangement.spacedBy(12.dp)
|
||||
) {
|
||||
if (isSusVersion_1_5_8) {
|
||||
item {
|
||||
SusMountHidingControlCard(
|
||||
hideSusMountsForAllProcs = hideSusMountsForAllProcs,
|
||||
isLoading = isLoading,
|
||||
onToggleHiding = onToggleHideSusMountsForAllProcs
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
if (susMounts.isEmpty()) {
|
||||
item {
|
||||
EmptyStateCard(
|
||||
message = stringResource(R.string.susfs_no_mounts_configured)
|
||||
)
|
||||
}
|
||||
} else {
|
||||
items(susMounts.toList()) { mount ->
|
||||
PathItemCard(
|
||||
path = mount,
|
||||
icon = Icons.Default.Storage,
|
||||
onDelete = { onRemoveMount(mount) },
|
||||
onEdit = if (onEditMount != null) { { onEditMount(mount) } } else null,
|
||||
isLoading = isLoading
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// 添加普通长按钮
|
||||
item {
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(vertical = 16.dp),
|
||||
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Button(
|
||||
onClick = onAddMount,
|
||||
modifier = Modifier
|
||||
.weight(1f)
|
||||
.height(48.dp),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Add,
|
||||
contentDescription = null,
|
||||
modifier = Modifier.size(24.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.width(8.dp))
|
||||
Text(text = stringResource(R.string.add))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 尝试卸载内容组件
|
||||
*/
|
||||
@Composable
|
||||
fun TryUmountContent(
|
||||
tryUmounts: Set<String>,
|
||||
umountForZygoteIsoService: Boolean,
|
||||
isLoading: Boolean,
|
||||
onAddUmount: () -> Unit,
|
||||
onRunUmount: () -> Unit,
|
||||
onRemoveUmount: (String) -> Unit,
|
||||
onEditUmount: ((String) -> Unit)? = null,
|
||||
onToggleUmountForZygoteIsoService: (Boolean) -> Unit
|
||||
) {
|
||||
Box(modifier = Modifier.fillMaxSize()) {
|
||||
LazyColumn(
|
||||
modifier = Modifier
|
||||
.fillMaxSize(),
|
||||
verticalArrangement = Arrangement.spacedBy(12.dp)
|
||||
) {
|
||||
if (isSusVersion_1_5_8()) {
|
||||
item {
|
||||
Card(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
colors = CardDefaults.cardColors(
|
||||
containerColor = MaterialTheme.colorScheme.surface
|
||||
),
|
||||
shape = RoundedCornerShape(12.dp)
|
||||
) {
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(12.dp),
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Column(
|
||||
modifier = Modifier.weight(1f)
|
||||
) {
|
||||
Row(
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Security,
|
||||
contentDescription = null,
|
||||
tint = MaterialTheme.colorScheme.primary,
|
||||
modifier = Modifier.size(18.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.width(8.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.umount_zygote_iso_service),
|
||||
style = MaterialTheme.typography.titleMedium,
|
||||
fontWeight = FontWeight.Medium,
|
||||
color = MaterialTheme.colorScheme.onSurface
|
||||
)
|
||||
}
|
||||
Spacer(modifier = Modifier.height(6.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.umount_zygote_iso_service_description),
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
lineHeight = 14.sp
|
||||
)
|
||||
}
|
||||
Switch(
|
||||
checked = umountForZygoteIsoService,
|
||||
onCheckedChange = onToggleUmountForZygoteIsoService,
|
||||
enabled = !isLoading
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (tryUmounts.isEmpty()) {
|
||||
item {
|
||||
EmptyStateCard(
|
||||
message = stringResource(R.string.susfs_no_umounts_configured)
|
||||
)
|
||||
}
|
||||
} else {
|
||||
items(tryUmounts.toList()) { umountEntry ->
|
||||
val parts = umountEntry.split("|")
|
||||
val path = if (parts.isNotEmpty()) parts[0] else umountEntry
|
||||
val mode = if (parts.size > 1) parts[1] else "0"
|
||||
val modeText = if (mode == "0")
|
||||
stringResource(R.string.susfs_umount_mode_normal_short)
|
||||
else
|
||||
stringResource(R.string.susfs_umount_mode_detach_short)
|
||||
|
||||
PathItemCard(
|
||||
path = path,
|
||||
icon = Icons.Default.Storage,
|
||||
additionalInfo = stringResource(R.string.susfs_umount_mode_display, modeText, mode),
|
||||
onDelete = { onRemoveUmount(umountEntry) },
|
||||
onEdit = if (onEditUmount != null) { { onEditUmount(umountEntry) } } else null,
|
||||
isLoading = isLoading
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// 添加普通长按钮
|
||||
item {
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(vertical = 16.dp),
|
||||
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Button(
|
||||
onClick = onAddUmount,
|
||||
modifier = Modifier
|
||||
.weight(1f)
|
||||
.height(48.dp),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Add,
|
||||
contentDescription = null,
|
||||
modifier = Modifier.size(24.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.width(8.dp))
|
||||
Text(text = stringResource(R.string.add))
|
||||
}
|
||||
|
||||
if (tryUmounts.isNotEmpty()) {
|
||||
Button(
|
||||
onClick = onRunUmount,
|
||||
modifier = Modifier
|
||||
.weight(1f)
|
||||
.height(48.dp),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.PlayArrow,
|
||||
contentDescription = null,
|
||||
modifier = Modifier.size(24.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.width(8.dp))
|
||||
Text(text = stringResource(R.string.susfs_run))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Kstat配置内容组件
|
||||
*/
|
||||
@Composable
|
||||
fun KstatConfigContent(
|
||||
kstatConfigs: Set<String>,
|
||||
addKstatPaths: Set<String>,
|
||||
isLoading: Boolean,
|
||||
onAddKstatStatically: () -> Unit,
|
||||
onAddKstat: () -> Unit,
|
||||
onRemoveKstatConfig: (String) -> Unit,
|
||||
onEditKstatConfig: ((String) -> Unit)? = null,
|
||||
onRemoveAddKstat: (String) -> Unit,
|
||||
onEditAddKstat: ((String) -> Unit)? = null,
|
||||
onUpdateKstat: (String) -> Unit,
|
||||
onUpdateKstatFullClone: (String) -> Unit
|
||||
) {
|
||||
Box(modifier = Modifier.fillMaxSize()) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
verticalArrangement = Arrangement.spacedBy(12.dp)
|
||||
) {
|
||||
// 说明卡片
|
||||
item {
|
||||
Card(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
colors = CardDefaults.cardColors(
|
||||
containerColor = MaterialTheme.colorScheme.surfaceVariant.copy(alpha = 0.4f)
|
||||
),
|
||||
shape = RoundedCornerShape(12.dp)
|
||||
) {
|
||||
Column(
|
||||
modifier = Modifier.padding(12.dp),
|
||||
verticalArrangement = Arrangement.spacedBy(8.dp)
|
||||
) {
|
||||
Text(
|
||||
text = stringResource(R.string.kstat_config_description_title),
|
||||
style = MaterialTheme.typography.titleMedium,
|
||||
fontWeight = FontWeight.Medium,
|
||||
color = MaterialTheme.colorScheme.primary
|
||||
)
|
||||
Text(
|
||||
text = stringResource(R.string.kstat_config_description_add_statically),
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
Text(
|
||||
text = stringResource(R.string.kstat_config_description_add),
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
Text(
|
||||
text = stringResource(R.string.kstat_config_description_update),
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
Text(
|
||||
text = stringResource(R.string.kstat_config_description_update_full_clone),
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 静态Kstat配置列表
|
||||
if (kstatConfigs.isNotEmpty()) {
|
||||
item {
|
||||
Text(
|
||||
text = stringResource(R.string.static_kstat_config),
|
||||
style = MaterialTheme.typography.titleMedium,
|
||||
fontWeight = FontWeight.Bold
|
||||
)
|
||||
}
|
||||
items(kstatConfigs.toList()) { config ->
|
||||
KstatConfigItemCard(
|
||||
config = config,
|
||||
onDelete = { onRemoveKstatConfig(config) },
|
||||
onEdit = if (onEditKstatConfig != null) { { onEditKstatConfig(config) } } else null,
|
||||
isLoading = isLoading
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// Add Kstat路径列表
|
||||
if (addKstatPaths.isNotEmpty()) {
|
||||
item {
|
||||
Text(
|
||||
text = stringResource(R.string.kstat_path_management),
|
||||
style = MaterialTheme.typography.titleMedium,
|
||||
fontWeight = FontWeight.Bold
|
||||
)
|
||||
}
|
||||
items(addKstatPaths.toList()) { path ->
|
||||
AddKstatPathItemCard(
|
||||
path = path,
|
||||
onDelete = { onRemoveAddKstat(path) },
|
||||
onEdit = if (onEditAddKstat != null) { { onEditAddKstat(path) } } else null,
|
||||
onUpdate = { onUpdateKstat(path) },
|
||||
onUpdateFullClone = { onUpdateKstatFullClone(path) },
|
||||
isLoading = isLoading
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// 空状态显示
|
||||
if (kstatConfigs.isEmpty() && addKstatPaths.isEmpty()) {
|
||||
item {
|
||||
EmptyStateCard(
|
||||
message = stringResource(R.string.no_kstat_config_message)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// 添加普通长按钮
|
||||
item {
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(vertical = 16.dp),
|
||||
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Button(
|
||||
onClick = onAddKstat,
|
||||
modifier = Modifier
|
||||
.weight(1f)
|
||||
.height(48.dp),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Add,
|
||||
contentDescription = null,
|
||||
modifier = Modifier.size(24.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.width(8.dp))
|
||||
Text(text = stringResource(R.string.add))
|
||||
}
|
||||
|
||||
Button(
|
||||
onClick = onAddKstatStatically,
|
||||
modifier = Modifier
|
||||
.weight(1f)
|
||||
.height(48.dp),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Settings,
|
||||
contentDescription = null,
|
||||
modifier = Modifier.size(24.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.width(8.dp))
|
||||
Text(text = stringResource(R.string.add))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 路径设置内容组件
|
||||
*/
|
||||
@SuppressLint("SdCardPath")
|
||||
@Composable
|
||||
fun PathSettingsContent(
|
||||
androidDataPath: String,
|
||||
onAndroidDataPathChange: (String) -> Unit,
|
||||
sdcardPath: String,
|
||||
onSdcardPathChange: (String) -> Unit,
|
||||
isLoading: Boolean,
|
||||
onSetAndroidDataPath: () -> Unit,
|
||||
onSetSdcardPath: () -> Unit
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
verticalArrangement = Arrangement.spacedBy(16.dp)
|
||||
) {
|
||||
// Android Data路径设置
|
||||
item {
|
||||
Card(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
shape = RoundedCornerShape(12.dp)
|
||||
) {
|
||||
Column(
|
||||
modifier = Modifier.padding(12.dp),
|
||||
verticalArrangement = Arrangement.spacedBy(12.dp)
|
||||
) {
|
||||
OutlinedTextField(
|
||||
value = androidDataPath,
|
||||
onValueChange = onAndroidDataPathChange,
|
||||
label = { Text(stringResource(R.string.susfs_android_data_path_label)) },
|
||||
placeholder = { Text("/sdcard/Android/data") },
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
enabled = !isLoading,
|
||||
singleLine = true,
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
)
|
||||
|
||||
Button(
|
||||
onClick = onSetAndroidDataPath,
|
||||
enabled = !isLoading && androidDataPath.isNotBlank(),
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.height(40.dp),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
) {
|
||||
Text(stringResource(R.string.susfs_set_android_data_path))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// SD卡路径设置
|
||||
item {
|
||||
Card(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
shape = RoundedCornerShape(12.dp)
|
||||
) {
|
||||
Column(
|
||||
modifier = Modifier.padding(12.dp),
|
||||
verticalArrangement = Arrangement.spacedBy(12.dp)
|
||||
) {
|
||||
OutlinedTextField(
|
||||
value = sdcardPath,
|
||||
onValueChange = onSdcardPathChange,
|
||||
label = { Text(stringResource(R.string.susfs_sdcard_path_label)) },
|
||||
placeholder = { Text("/sdcard") },
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
enabled = !isLoading,
|
||||
singleLine = true,
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
)
|
||||
|
||||
Button(
|
||||
onClick = onSetSdcardPath,
|
||||
enabled = !isLoading && sdcardPath.isNotBlank(),
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.height(40.dp),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
) {
|
||||
Text(stringResource(R.string.susfs_set_sdcard_path))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用功能状态内容组件
|
||||
*/
|
||||
@Composable
|
||||
fun EnabledFeaturesContent(
|
||||
enabledFeatures: List<SuSFSManager.EnabledFeature>,
|
||||
onRefresh: () -> Unit
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
verticalArrangement = Arrangement.spacedBy(12.dp)
|
||||
) {
|
||||
// 说明卡片
|
||||
item {
|
||||
Card(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
colors = CardDefaults.cardColors(
|
||||
containerColor = MaterialTheme.colorScheme.surfaceVariant.copy(alpha = 0.4f)
|
||||
),
|
||||
shape = RoundedCornerShape(12.dp)
|
||||
) {
|
||||
Column(
|
||||
modifier = Modifier.padding(12.dp)
|
||||
) {
|
||||
Row(
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Settings,
|
||||
contentDescription = null,
|
||||
tint = MaterialTheme.colorScheme.primary,
|
||||
modifier = Modifier.size(18.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.width(8.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.susfs_enabled_features_description),
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (enabledFeatures.isEmpty()) {
|
||||
item {
|
||||
EmptyStateCard(
|
||||
message = stringResource(R.string.susfs_no_features_found)
|
||||
)
|
||||
}
|
||||
} else {
|
||||
items(enabledFeatures) { feature ->
|
||||
FeatureStatusCard(
|
||||
feature = feature,
|
||||
onRefresh = onRefresh
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,277 @@
|
||||
package com.sukisu.ultra.ui.component
|
||||
|
||||
import androidx.compose.animation.*
|
||||
import androidx.compose.animation.core.*
|
||||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.*
|
||||
import androidx.compose.material3.*
|
||||
import androidx.compose.runtime.*
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.alpha
|
||||
import androidx.compose.ui.draw.rotate
|
||||
import androidx.compose.ui.draw.scale
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.vector.ImageVector
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import com.sukisu.ultra.R
|
||||
|
||||
// 菜单项数据类
|
||||
data class FabMenuItem(
|
||||
val icon: ImageVector,
|
||||
val labelRes: Int,
|
||||
val color: Color = Color.Unspecified,
|
||||
val onClick: () -> Unit
|
||||
)
|
||||
|
||||
// 动画配置
|
||||
object FabAnimationConfig {
|
||||
const val ANIMATION_DURATION = 300
|
||||
const val STAGGER_DELAY = 50
|
||||
val BUTTON_SPACING = 72.dp
|
||||
val BUTTON_SIZE = 56.dp
|
||||
val SMALL_BUTTON_SIZE = 48.dp
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun VerticalExpandableFab(
|
||||
menuItems: List<FabMenuItem>,
|
||||
modifier: Modifier = Modifier,
|
||||
buttonSize: Dp = FabAnimationConfig.BUTTON_SIZE,
|
||||
smallButtonSize: Dp = FabAnimationConfig.SMALL_BUTTON_SIZE,
|
||||
buttonSpacing: Dp = FabAnimationConfig.BUTTON_SPACING,
|
||||
animationDurationMs: Int = FabAnimationConfig.ANIMATION_DURATION,
|
||||
staggerDelayMs: Int = FabAnimationConfig.STAGGER_DELAY,
|
||||
mainButtonIcon: ImageVector = Icons.Filled.Add,
|
||||
mainButtonExpandedIcon: ImageVector = Icons.Filled.Close,
|
||||
onMainButtonClick: (() -> Unit)? = null,
|
||||
) {
|
||||
var isExpanded by remember { mutableStateOf(false) }
|
||||
|
||||
// 主按钮旋转动画
|
||||
val rotationAngle by animateFloatAsState(
|
||||
targetValue = if (isExpanded) 45f else 0f,
|
||||
animationSpec = tween(
|
||||
durationMillis = animationDurationMs,
|
||||
easing = FastOutSlowInEasing
|
||||
),
|
||||
label = "mainButtonRotation"
|
||||
)
|
||||
|
||||
// 主按钮缩放动画
|
||||
val mainButtonScale by animateFloatAsState(
|
||||
targetValue = if (isExpanded) 1.1f else 1f,
|
||||
animationSpec = tween(
|
||||
durationMillis = animationDurationMs,
|
||||
easing = FastOutSlowInEasing
|
||||
),
|
||||
label = "mainButtonScale"
|
||||
)
|
||||
|
||||
Box(
|
||||
modifier = modifier.wrapContentSize(),
|
||||
contentAlignment = Alignment.BottomEnd
|
||||
) {
|
||||
// 子菜单按钮
|
||||
menuItems.forEachIndexed { index, menuItem ->
|
||||
val animatedOffsetY by animateFloatAsState(
|
||||
targetValue = if (isExpanded) {
|
||||
-(buttonSpacing.value * (index + 1))
|
||||
} else {
|
||||
0f
|
||||
},
|
||||
animationSpec = tween(
|
||||
durationMillis = animationDurationMs,
|
||||
delayMillis = if (isExpanded) {
|
||||
index * staggerDelayMs
|
||||
} else {
|
||||
(menuItems.size - index - 1) * staggerDelayMs
|
||||
},
|
||||
easing = FastOutSlowInEasing
|
||||
),
|
||||
label = "fabOffset$index"
|
||||
)
|
||||
|
||||
val animatedScale by animateFloatAsState(
|
||||
targetValue = if (isExpanded) 1f else 0f,
|
||||
animationSpec = tween(
|
||||
durationMillis = animationDurationMs,
|
||||
delayMillis = if (isExpanded) {
|
||||
index * staggerDelayMs + 100
|
||||
} else {
|
||||
(menuItems.size - index - 1) * staggerDelayMs
|
||||
},
|
||||
easing = FastOutSlowInEasing
|
||||
),
|
||||
label = "fabScale$index"
|
||||
)
|
||||
|
||||
val animatedAlpha by animateFloatAsState(
|
||||
targetValue = if (isExpanded) 1f else 0f,
|
||||
animationSpec = tween(
|
||||
durationMillis = animationDurationMs,
|
||||
delayMillis = if (isExpanded) {
|
||||
index * staggerDelayMs + 150
|
||||
} else {
|
||||
(menuItems.size - index - 1) * staggerDelayMs
|
||||
},
|
||||
easing = FastOutSlowInEasing
|
||||
),
|
||||
label = "fabAlpha$index"
|
||||
)
|
||||
|
||||
// 子按钮容器(包含标签)
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.offset(y = animatedOffsetY.dp)
|
||||
.scale(animatedScale)
|
||||
.alpha(animatedAlpha),
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
horizontalArrangement = Arrangement.End
|
||||
) {
|
||||
// 标签
|
||||
AnimatedVisibility(
|
||||
visible = isExpanded && animatedScale > 0.5f,
|
||||
enter = slideInHorizontally(
|
||||
initialOffsetX = { it / 2 },
|
||||
animationSpec = tween(200)
|
||||
) + fadeIn(animationSpec = tween(200)),
|
||||
exit = slideOutHorizontally(
|
||||
targetOffsetX = { it / 2 },
|
||||
animationSpec = tween(150)
|
||||
) + fadeOut(animationSpec = tween(150))
|
||||
) {
|
||||
Surface(
|
||||
modifier = Modifier.padding(end = 16.dp),
|
||||
shape = MaterialTheme.shapes.small,
|
||||
color = MaterialTheme.colorScheme.inverseSurface,
|
||||
tonalElevation = 6.dp
|
||||
) {
|
||||
Text(
|
||||
text = stringResource(menuItem.labelRes),
|
||||
modifier = Modifier.padding(horizontal = 12.dp, vertical = 6.dp),
|
||||
style = MaterialTheme.typography.labelMedium,
|
||||
color = MaterialTheme.colorScheme.inverseOnSurface
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// 子按钮
|
||||
SmallFloatingActionButton(
|
||||
onClick = {
|
||||
menuItem.onClick()
|
||||
isExpanded = false
|
||||
},
|
||||
modifier = Modifier.size(smallButtonSize),
|
||||
containerColor = if (menuItem.color != Color.Unspecified) {
|
||||
menuItem.color
|
||||
} else {
|
||||
MaterialTheme.colorScheme.secondary
|
||||
},
|
||||
contentColor = if (menuItem.color != Color.Unspecified) {
|
||||
if (menuItem.color == Color.Gray) Color.White
|
||||
else MaterialTheme.colorScheme.onSecondary
|
||||
} else {
|
||||
MaterialTheme.colorScheme.onSecondary
|
||||
},
|
||||
elevation = FloatingActionButtonDefaults.elevation(
|
||||
defaultElevation = 4.dp,
|
||||
pressedElevation = 6.dp
|
||||
)
|
||||
) {
|
||||
Icon(
|
||||
imageVector = menuItem.icon,
|
||||
contentDescription = stringResource(menuItem.labelRes),
|
||||
modifier = Modifier.size(20.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 主按钮
|
||||
FloatingActionButton(
|
||||
onClick = {
|
||||
onMainButtonClick?.invoke()
|
||||
isExpanded = !isExpanded
|
||||
},
|
||||
modifier = Modifier
|
||||
.size(buttonSize)
|
||||
.scale(mainButtonScale),
|
||||
elevation = FloatingActionButtonDefaults.elevation(
|
||||
defaultElevation = 6.dp,
|
||||
pressedElevation = 8.dp,
|
||||
hoveredElevation = 8.dp
|
||||
)
|
||||
) {
|
||||
Icon(
|
||||
imageVector = if (isExpanded) mainButtonExpandedIcon else mainButtonIcon,
|
||||
contentDescription = stringResource(
|
||||
if (isExpanded) R.string.collapse_menu else R.string.expand_menu
|
||||
),
|
||||
modifier = Modifier
|
||||
.size(24.dp)
|
||||
.rotate(if (mainButtonIcon == Icons.Filled.Add) rotationAngle else 0f)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 预设菜单项
|
||||
object FabMenuPresets {
|
||||
fun getScrollMenuItems(
|
||||
onScrollToTop: () -> Unit,
|
||||
onScrollToBottom: () -> Unit
|
||||
) = listOf(
|
||||
FabMenuItem(
|
||||
icon = Icons.Filled.KeyboardArrowDown,
|
||||
labelRes = R.string.scroll_to_bottom,
|
||||
onClick = onScrollToBottom
|
||||
),
|
||||
FabMenuItem(
|
||||
icon = Icons.Filled.KeyboardArrowUp,
|
||||
labelRes = R.string.scroll_to_top,
|
||||
onClick = onScrollToTop
|
||||
)
|
||||
)
|
||||
|
||||
@Composable
|
||||
fun getBatchActionMenuItems(
|
||||
onCancel: () -> Unit,
|
||||
onDeny: () -> Unit,
|
||||
onAllow: () -> Unit,
|
||||
onUnmountModules: () -> Unit,
|
||||
onDisableUnmount: () -> Unit
|
||||
) = listOf(
|
||||
FabMenuItem(
|
||||
icon = Icons.Filled.Close,
|
||||
labelRes = R.string.cancel,
|
||||
color = Color.Gray,
|
||||
onClick = onCancel
|
||||
),
|
||||
FabMenuItem(
|
||||
icon = Icons.Filled.Block,
|
||||
labelRes = R.string.deny_authorization,
|
||||
color = MaterialTheme.colorScheme.error,
|
||||
onClick = onDeny
|
||||
),
|
||||
FabMenuItem(
|
||||
icon = Icons.Filled.Check,
|
||||
labelRes = R.string.grant_authorization,
|
||||
color = MaterialTheme.colorScheme.primary,
|
||||
onClick = onAllow
|
||||
),
|
||||
FabMenuItem(
|
||||
icon = Icons.Filled.FolderOff,
|
||||
labelRes = R.string.unmount_modules,
|
||||
onClick = onUnmountModules
|
||||
),
|
||||
FabMenuItem(
|
||||
icon = Icons.Filled.Folder,
|
||||
labelRes = R.string.disable_unmount,
|
||||
onClick = onDisableUnmount
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -209,11 +209,10 @@ fun GroupsPanel(selected: List<Groups>, closeSelection: (selection: Set<Groups>)
|
||||
}
|
||||
|
||||
val selection = HashSet(selected)
|
||||
val backgroundColor = if (CardConfig.isCustomBackgroundEnabled) Color.Transparent else MaterialTheme.colorScheme.surfaceContainerHigh
|
||||
|
||||
MaterialTheme(
|
||||
colorScheme = MaterialTheme.colorScheme.copy(
|
||||
surface = backgroundColor
|
||||
surface = MaterialTheme.colorScheme.surfaceContainerHigh
|
||||
)
|
||||
) {
|
||||
ListDialog(
|
||||
@@ -289,11 +288,10 @@ fun CapsPanel(
|
||||
}
|
||||
|
||||
val selection = HashSet(selected)
|
||||
val backgroundColor = if (CardConfig.isCustomBackgroundEnabled) Color.Transparent else MaterialTheme.colorScheme.surfaceContainerHigh
|
||||
|
||||
MaterialTheme(
|
||||
colorScheme = MaterialTheme.colorScheme.copy(
|
||||
surface = backgroundColor
|
||||
surface = MaterialTheme.colorScheme.surfaceContainerHigh
|
||||
)
|
||||
) {
|
||||
ListDialog(
|
||||
@@ -444,11 +442,10 @@ private fun SELinuxPanel(
|
||||
)
|
||||
)
|
||||
|
||||
val backgroundColor = if (CardConfig.isCustomBackgroundEnabled) Color.Transparent else MaterialTheme.colorScheme.surfaceContainerHigh
|
||||
|
||||
MaterialTheme(
|
||||
colorScheme = MaterialTheme.colorScheme.copy(
|
||||
surface = backgroundColor
|
||||
surface = MaterialTheme.colorScheme.surfaceContainerHigh
|
||||
)
|
||||
) {
|
||||
InputDialog(
|
||||
|
||||
@@ -110,6 +110,8 @@ fun FlashScreen(navigator: DestinationsNavigator, flashIt: FlashIt) {
|
||||
var tempText: String
|
||||
val logContent = rememberSaveable { StringBuilder() }
|
||||
var showFloatAction by rememberSaveable { mutableStateOf(false) }
|
||||
// 添加状态跟踪是否已经完成刷写
|
||||
var hasFlashCompleted by rememberSaveable { mutableStateOf(false) }
|
||||
|
||||
val snackBarHost = LocalSnackbarHost.current
|
||||
val scope = rememberCoroutineScope()
|
||||
@@ -132,13 +134,19 @@ fun FlashScreen(navigator: DestinationsNavigator, flashIt: FlashIt) {
|
||||
totalModules = flashIt.uris.size,
|
||||
currentModule = 1
|
||||
)
|
||||
hasFlashCompleted = false
|
||||
} else if (flashIt !is FlashIt.FlashModules) {
|
||||
hasFlashCompleted = false
|
||||
}
|
||||
}
|
||||
|
||||
LaunchedEffect(Unit) {
|
||||
if (text.isNotEmpty()) {
|
||||
// 只有在未完成刷写时才执行刷写操作
|
||||
LaunchedEffect(flashIt, hasFlashCompleted) {
|
||||
// 如果已经完成刷写或者已有文本内容,则不再执行
|
||||
if (hasFlashCompleted || text.isNotEmpty()) {
|
||||
return@LaunchedEffect
|
||||
}
|
||||
|
||||
withContext(Dispatchers.IO) {
|
||||
setFlashingStatus(FlashingStatus.FLASHING)
|
||||
|
||||
@@ -157,7 +165,7 @@ fun FlashScreen(navigator: DestinationsNavigator, flashIt: FlashIt) {
|
||||
}
|
||||
}
|
||||
|
||||
flashIt(context, flashIt, onFinish = { showReboot, code ->
|
||||
flashIt(flashIt, onFinish = { showReboot, code ->
|
||||
if (code != 0) {
|
||||
text += "$errorCodeString $code.\n$checkLogString\n"
|
||||
setFlashingStatus(FlashingStatus.FAILED)
|
||||
@@ -176,6 +184,8 @@ fun FlashScreen(navigator: DestinationsNavigator, flashIt: FlashIt) {
|
||||
showFloatAction = true
|
||||
}
|
||||
|
||||
hasFlashCompleted = true
|
||||
|
||||
if (flashIt is FlashIt.FlashModules && flashIt.currentIndex < flashIt.uris.size - 1) {
|
||||
val nextFlashIt = flashIt.copy(
|
||||
currentIndex = flashIt.currentIndex + 1
|
||||
@@ -187,7 +197,7 @@ fun FlashScreen(navigator: DestinationsNavigator, flashIt: FlashIt) {
|
||||
}
|
||||
}, onStdout = {
|
||||
tempText = "$it\n"
|
||||
if (tempText.startsWith("[H[J")) { // clear command
|
||||
if (tempText.startsWith("[H[J")) { // clear command
|
||||
text = tempText.substring(6)
|
||||
} else {
|
||||
text += tempText
|
||||
@@ -222,8 +232,6 @@ fun FlashScreen(navigator: DestinationsNavigator, flashIt: FlashIt) {
|
||||
TopBar(
|
||||
currentFlashingStatus.value,
|
||||
currentStatus,
|
||||
navigator = navigator,
|
||||
flashIt = flashIt,
|
||||
onBack = onBack,
|
||||
onSave = {
|
||||
scope.launch {
|
||||
@@ -434,8 +442,6 @@ fun ModuleInstallProgressBar(
|
||||
private fun TopBar(
|
||||
status: FlashingStatus,
|
||||
moduleStatus: ModuleInstallStatus = ModuleInstallStatus(),
|
||||
navigator: DestinationsNavigator,
|
||||
flashIt: FlashIt,
|
||||
onBack: () -> Unit,
|
||||
onSave: () -> Unit = {},
|
||||
scrollBehavior: TopAppBarScrollBehavior? = null
|
||||
@@ -531,7 +537,6 @@ sealed class FlashIt : Parcelable {
|
||||
}
|
||||
|
||||
fun flashIt(
|
||||
context: android.content.Context,
|
||||
flashIt: FlashIt,
|
||||
onFinish: (Boolean, Int) -> Unit,
|
||||
onStdout: (String) -> Unit,
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.sukisu.ultra.ui.screen
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.os.Build
|
||||
import android.os.PowerManager
|
||||
@@ -76,6 +77,7 @@ import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import com.ramcosta.composedestinations.annotation.Destination
|
||||
import com.ramcosta.composedestinations.annotation.RootGraph
|
||||
import com.ramcosta.composedestinations.generated.destinations.InstallScreenDestination
|
||||
import com.ramcosta.composedestinations.generated.destinations.SuSFSConfigScreenDestination
|
||||
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
|
||||
import com.sukisu.ultra.KernelVersion
|
||||
import com.sukisu.ultra.Natives
|
||||
@@ -90,6 +92,8 @@ import com.sukisu.ultra.ui.theme.getCardElevation
|
||||
import com.sukisu.ultra.ui.util.checkNewVersion
|
||||
import com.sukisu.ultra.ui.util.module.LatestVersionInfo
|
||||
import com.sukisu.ultra.ui.util.reboot
|
||||
import com.sukisu.ultra.ui.util.getSuSFS
|
||||
import com.sukisu.ultra.ui.util.SuSFSManager
|
||||
import com.sukisu.ultra.ui.viewmodel.HomeViewModel
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
@@ -126,7 +130,8 @@ fun HomeScreen(navigator: DestinationsNavigator) {
|
||||
Scaffold(
|
||||
topBar = {
|
||||
TopBar(
|
||||
scrollBehavior = scrollBehavior
|
||||
scrollBehavior = scrollBehavior,
|
||||
navigator = navigator
|
||||
)
|
||||
},
|
||||
contentWindowInsets = WindowInsets.safeDrawing.only(
|
||||
@@ -165,8 +170,8 @@ fun HomeScreen(navigator: DestinationsNavigator) {
|
||||
if (viewModel.systemStatus.requireNewKernel) {
|
||||
WarningCard(
|
||||
stringResource(id = R.string.require_kernel_version).format(
|
||||
viewModel.systemStatus.ksuVersion,
|
||||
Natives.MINIMAL_SUPPORTED_KERNEL
|
||||
Natives.getSimpleVersionFull(),
|
||||
Natives.MINIMAL_SUPPORTED_KERNEL_FULL
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -256,15 +261,17 @@ fun UpdateCard() {
|
||||
@Composable
|
||||
fun RebootDropdownItem(@StringRes id: Int, reason: String = "") {
|
||||
DropdownMenuItem(
|
||||
text = {Text(stringResource(id))},
|
||||
text = {Text(stringResource(id))},
|
||||
onClick = {reboot(reason)})
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
private fun TopBar(
|
||||
scrollBehavior: TopAppBarScrollBehavior? = null
|
||||
scrollBehavior: TopAppBarScrollBehavior? = null,
|
||||
navigator: DestinationsNavigator
|
||||
) {
|
||||
val context = LocalContext.current
|
||||
val colorScheme = MaterialTheme.colorScheme
|
||||
val cardColor = if (CardConfig.isCustomBackgroundEnabled) {
|
||||
colorScheme.surfaceContainerLow
|
||||
@@ -284,6 +291,19 @@ private fun TopBar(
|
||||
scrolledContainerColor = cardColor.copy(alpha = cardAlpha)
|
||||
),
|
||||
actions = {
|
||||
// SuSFS 配置按钮
|
||||
if (getSuSFS() == "Supported" && SuSFSManager.isBinaryAvailable(context)) {
|
||||
IconButton(onClick = {
|
||||
navigator.navigate(SuSFSConfigScreenDestination)
|
||||
}) {
|
||||
Icon(
|
||||
imageVector = Icons.Filled.Tune,
|
||||
contentDescription = stringResource(R.string.susfs_config_setting_title)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// 重启按钮
|
||||
var showDropdown by remember { mutableStateOf(false) }
|
||||
KsuIsValid {
|
||||
IconButton(onClick = {
|
||||
@@ -418,11 +438,13 @@ private fun StatusCard(
|
||||
|
||||
if (!isHideVersion) {
|
||||
Spacer(Modifier.height(4.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.home_working_version, systemStatus.ksuVersion),
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.secondary,
|
||||
)
|
||||
systemStatus.ksuFullVersion?.let {
|
||||
Text(
|
||||
text = stringResource(R.string.home_working_version, it),
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.secondary,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -705,7 +727,7 @@ private fun InfoCard(
|
||||
|
||||
if (!isSimpleMode) {
|
||||
// 根据showKpmInfo决定是否显示KPM信息
|
||||
if (lkmMode != true && !showKpmInfo && Natives.version >= Natives.MINIMAL_SUPPORTED_KPM) {
|
||||
if (lkmMode != true && !showKpmInfo) {
|
||||
val displayVersion = if (systemInfo.kpmVersion.isEmpty() || systemInfo.kpmVersion.startsWith("Error")) {
|
||||
val statusText = if (Natives.isKPMEnabled()) {
|
||||
stringResource(R.string.kernel_patched)
|
||||
@@ -725,32 +747,46 @@ private fun InfoCard(
|
||||
}
|
||||
}
|
||||
|
||||
if ((!isSimpleMode) && (!isHideSusfsStatus)) {
|
||||
if (systemInfo.suSFSStatus == "Supported") {
|
||||
if (systemInfo.suSFSVersion.isNotEmpty()) {
|
||||
val isSUS_SU = systemInfo.suSFSFeatures == "CONFIG_KSU_SUSFS_SUS_SU"
|
||||
val infoText = buildString {
|
||||
append(systemInfo.suSFSVersion)
|
||||
append(if (isSUS_SU) " (${systemInfo.suSFSVariant})" else " (${stringResource(R.string.manual_hook)})")
|
||||
if (isSUS_SU) {
|
||||
if (systemInfo.susSUMode.isNotEmpty()) {
|
||||
append(" ${stringResource(R.string.sus_su_mode)} ${systemInfo.susSUMode}")
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!isSimpleMode && !isHideSusfsStatus &&
|
||||
systemInfo.suSFSStatus == "Supported" &&
|
||||
systemInfo.suSFSVersion.isNotEmpty()) {
|
||||
|
||||
InfoCardItem(
|
||||
stringResource(R.string.home_susfs_version),
|
||||
infoText,
|
||||
icon = Icons.Default.Storage
|
||||
)
|
||||
}
|
||||
}
|
||||
val infoText = SuSFSInfoText(systemInfo)
|
||||
|
||||
InfoCardItem(
|
||||
stringResource(R.string.home_susfs_version),
|
||||
infoText,
|
||||
icon = Icons.Default.Storage
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("ComposableNaming")
|
||||
@Composable
|
||||
private fun SuSFSInfoText(systemInfo: HomeViewModel.SystemInfo): String = buildString {
|
||||
append(systemInfo.suSFSVersion)
|
||||
|
||||
val isSUS_SU = systemInfo.suSFSFeatures == "CONFIG_KSU_SUSFS_SUS_SU"
|
||||
val isKprobesHook = Natives.getHookType() == "Kprobes"
|
||||
|
||||
when {
|
||||
isSUS_SU && isKprobesHook -> {
|
||||
append(" (${systemInfo.suSFSVariant})")
|
||||
if (systemInfo.susSUMode.isNotEmpty()) {
|
||||
append(" ${stringResource(R.string.sus_su_mode)} ${systemInfo.susSUMode}")
|
||||
}
|
||||
}
|
||||
Natives.getHookType() == "Manual" -> {
|
||||
append(" (${stringResource(R.string.manual_hook)})")
|
||||
}
|
||||
else -> {
|
||||
append(" (${Natives.getHookType()})")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun getManagerVersion(context: Context): Pair<String, Long> {
|
||||
val packageInfo = context.packageManager.getPackageInfo(context.packageName, 0)!!
|
||||
val versionCode = PackageInfoCompat.getLongVersionCode(packageInfo)
|
||||
|
||||
@@ -186,7 +186,7 @@ fun InstallScreen(navigator: DestinationsNavigator) {
|
||||
}
|
||||
|
||||
val onClickNext = {
|
||||
if (isGKI && lkmSelection == LkmSelection.KmiNone && currentKmi.isBlank()) {
|
||||
if (isGKI && lkmSelection == LkmSelection.KmiNone && currentKmi.isBlank() && installMethod !is InstallMethod.HorizonKernel) {
|
||||
selectKmiDialog.show()
|
||||
} else {
|
||||
onInstall()
|
||||
@@ -373,7 +373,11 @@ private fun SelectInstallMethod(
|
||||
val horizonKernelSummary = stringResource(R.string.horizon_kernel_summary)
|
||||
val selectFileTip = stringResource(
|
||||
id = R.string.select_file_tip,
|
||||
if (isInitBoot()) "init_boot" else "boot"
|
||||
if (isInitBoot()) {
|
||||
"init_boot / vendor_boot ${stringResource(R.string.select_file_tip_vendor)}"
|
||||
} else {
|
||||
"boot"
|
||||
}
|
||||
)
|
||||
|
||||
val radioOptions = mutableListOf<InstallMethod>(
|
||||
@@ -688,11 +692,10 @@ fun rememberSelectKmiDialog(onSelected: (String?) -> Unit): DialogHandle {
|
||||
}
|
||||
|
||||
var selection by remember { mutableStateOf<String?>(null) }
|
||||
val backgroundColor = MaterialTheme.colorScheme.surfaceContainerHigh
|
||||
|
||||
MaterialTheme(
|
||||
colorScheme = MaterialTheme.colorScheme.copy(
|
||||
surface = backgroundColor
|
||||
surface = MaterialTheme.colorScheme.surfaceContainerHigh
|
||||
)
|
||||
) {
|
||||
ListDialog(state = rememberUseCaseState(visible = true, onFinishedRequest = {
|
||||
@@ -755,4 +758,4 @@ private fun TopBar(
|
||||
@Composable
|
||||
fun SelectInstallPreview() {
|
||||
InstallScreen(EmptyDestinationsNavigator)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,9 +5,13 @@ import android.content.Intent
|
||||
import android.util.Log
|
||||
import androidx.activity.compose.rememberLauncherForActivityResult
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.compose.animation.*
|
||||
import androidx.compose.animation.core.*
|
||||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.LazyListState
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.*
|
||||
import androidx.compose.material3.*
|
||||
@@ -38,6 +42,7 @@ import java.io.FileInputStream
|
||||
import java.io.InputStreamReader
|
||||
import java.net.*
|
||||
import android.app.Activity
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import com.sukisu.ultra.ui.theme.CardConfig.cardElevation
|
||||
|
||||
/**
|
||||
@@ -57,6 +62,9 @@ fun KpmScreen(
|
||||
val snackBarHost = remember { SnackbarHostState() }
|
||||
val confirmDialog = rememberConfirmDialog()
|
||||
|
||||
val listState = rememberLazyListState()
|
||||
val fabVisible by rememberFabVisibilityState(listState)
|
||||
|
||||
val moduleConfirmContentMap = viewModel.moduleList.associate { module ->
|
||||
val moduleFileName = module.id
|
||||
module.id to stringResource(R.string.confirm_uninstall_content, moduleFileName)
|
||||
@@ -283,28 +291,29 @@ fun KpmScreen(
|
||||
)
|
||||
},
|
||||
floatingActionButton = {
|
||||
ExtendedFloatingActionButton(
|
||||
onClick = {
|
||||
selectPatchLauncher.launch(
|
||||
Intent(Intent.ACTION_GET_CONTENT).apply {
|
||||
type = "application/octet-stream"
|
||||
}
|
||||
)
|
||||
},
|
||||
icon = {
|
||||
Icon(
|
||||
imageVector = Icons.Filled.Add,
|
||||
contentDescription = stringResource(R.string.kpm_install),
|
||||
)
|
||||
},
|
||||
text = {
|
||||
Text(
|
||||
text = stringResource(R.string.kpm_install),
|
||||
)
|
||||
},
|
||||
expanded = true,
|
||||
)
|
||||
AnimatedFab(visible = fabVisible) {
|
||||
FloatingActionButton(
|
||||
contentColor = MaterialTheme.colorScheme.onPrimary,
|
||||
containerColor = MaterialTheme.colorScheme.primary,
|
||||
onClick = {
|
||||
selectPatchLauncher.launch(
|
||||
Intent(Intent.ACTION_GET_CONTENT).apply {
|
||||
type = "application/octet-stream"
|
||||
}
|
||||
)
|
||||
},
|
||||
content = {
|
||||
Icon(
|
||||
painter = painterResource(id = R.drawable.package_import),
|
||||
contentDescription = null
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
},
|
||||
contentWindowInsets = WindowInsets.safeDrawing.only(
|
||||
WindowInsetsSides.Top + WindowInsetsSides.Horizontal
|
||||
),
|
||||
snackbarHost = { SnackbarHost(snackBarHost) }
|
||||
) { padding ->
|
||||
Column(modifier = Modifier.padding(padding)) {
|
||||
@@ -378,6 +387,7 @@ fun KpmScreen(
|
||||
}
|
||||
} else {
|
||||
LazyColumn(
|
||||
state = listState,
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
contentPadding = PaddingValues(horizontal = 16.dp, vertical = 16.dp),
|
||||
verticalArrangement = Arrangement.spacedBy(16.dp)
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.sukisu.ultra.ui.screen
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.Activity.*
|
||||
import android.content.ClipData
|
||||
import android.content.ClipboardManager
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
@@ -8,12 +11,22 @@ import android.util.Log
|
||||
import android.widget.Toast
|
||||
import androidx.activity.compose.rememberLauncherForActivityResult
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.compose.animation.*
|
||||
import androidx.compose.animation.core.*
|
||||
import androidx.compose.foundation.*
|
||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||
import androidx.compose.foundation.interaction.collectIsPressedAsState
|
||||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.LazyListState
|
||||
import androidx.compose.foundation.lazy.grid.GridCells
|
||||
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
|
||||
import androidx.compose.foundation.lazy.grid.items
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.foundation.selection.toggleable
|
||||
import androidx.compose.foundation.shape.CircleShape
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.automirrored.outlined.*
|
||||
import androidx.compose.material.icons.filled.*
|
||||
@@ -24,8 +37,12 @@ import androidx.compose.runtime.*
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.rotate
|
||||
import androidx.compose.ui.draw.scale
|
||||
import androidx.compose.ui.graphics.vector.ImageVector
|
||||
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
|
||||
import androidx.compose.ui.input.nestedscroll.nestedScroll
|
||||
import androidx.compose.ui.platform.*
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.semantics.Role
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
@@ -66,18 +83,27 @@ import com.sukisu.ultra.ui.viewmodel.ModuleViewModel
|
||||
import java.util.concurrent.TimeUnit
|
||||
import androidx.core.content.edit
|
||||
import com.sukisu.ultra.R
|
||||
import com.sukisu.ultra.ui.theme.CardConfig.cardElevation
|
||||
import com.sukisu.ultra.ui.webui.WebUIXActivity
|
||||
import com.dergoogler.mmrl.platform.Platform
|
||||
import androidx.core.net.toUri
|
||||
import com.dergoogler.mmrl.platform.model.ModuleConfig
|
||||
import com.dergoogler.mmrl.platform.model.ModuleConfig.Companion.asModuleConfig
|
||||
import com.sukisu.ultra.ui.component.AnimatedFab
|
||||
import com.sukisu.ultra.ui.component.rememberFabVisibilityState
|
||||
import com.sukisu.ultra.ui.theme.getCardElevation
|
||||
|
||||
// 菜单项数据类
|
||||
data class ModuleBottomSheetMenuItem(
|
||||
val icon: ImageVector,
|
||||
val titleRes: Int,
|
||||
val onClick: () -> Unit
|
||||
)
|
||||
|
||||
/**
|
||||
* @author ShirkNeko
|
||||
* @date 2025/5/31.
|
||||
*/
|
||||
@SuppressLint("ResourceType", "AutoboxingStateCreation")
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Destination<RootGraph>
|
||||
@Composable
|
||||
@@ -89,6 +115,19 @@ fun ModuleScreen(navigator: DestinationsNavigator) {
|
||||
val confirmDialog = rememberConfirmDialog()
|
||||
var lastClickTime by remember { mutableStateOf(0L) }
|
||||
|
||||
// 初始化缓存系统
|
||||
LaunchedEffect(Unit) {
|
||||
viewModel.initializeCache(context)
|
||||
}
|
||||
|
||||
// BottomSheet状态
|
||||
val bottomSheetState = rememberModalBottomSheetState(
|
||||
skipPartiallyExpanded = true
|
||||
)
|
||||
var showBottomSheet by remember { mutableStateOf(false) }
|
||||
val listState = rememberLazyListState()
|
||||
val fabVisible by rememberFabVisibilityState(listState)
|
||||
|
||||
val selectZipLauncher = rememberLauncherForActivityResult(
|
||||
contract = ActivityResultContracts.StartActivityForResult()
|
||||
) {
|
||||
@@ -201,6 +240,34 @@ fun ModuleScreen(navigator: DestinationsNavigator) {
|
||||
contract = ActivityResultContracts.StartActivityForResult()
|
||||
) { viewModel.fetchModuleList() }
|
||||
|
||||
// BottomSheet菜单项
|
||||
val bottomSheetMenuItems = remember {
|
||||
listOf(
|
||||
ModuleBottomSheetMenuItem(
|
||||
icon = Icons.Outlined.Save,
|
||||
titleRes = R.string.backup_modules,
|
||||
onClick = {
|
||||
backupLauncher.launch(ModuleModify.createBackupIntent())
|
||||
scope.launch {
|
||||
bottomSheetState.hide()
|
||||
showBottomSheet = false
|
||||
}
|
||||
}
|
||||
),
|
||||
ModuleBottomSheetMenuItem(
|
||||
icon = Icons.Outlined.RestoreFromTrash,
|
||||
titleRes = R.string.restore_modules,
|
||||
onClick = {
|
||||
restoreLauncher.launch(ModuleModify.createRestoreIntent())
|
||||
scope.launch {
|
||||
bottomSheetState.hide()
|
||||
showBottomSheet = false
|
||||
}
|
||||
}
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
Scaffold(
|
||||
topBar = {
|
||||
SearchAppBar(
|
||||
@@ -209,96 +276,23 @@ fun ModuleScreen(navigator: DestinationsNavigator) {
|
||||
onSearchTextChange = { viewModel.search = it },
|
||||
onClearClick = { viewModel.search = "" },
|
||||
dropdownContent = {
|
||||
var showDropdown by remember { mutableStateOf(false) }
|
||||
|
||||
IconButton(
|
||||
onClick = { showDropdown = true },
|
||||
onClick = { showBottomSheet = true },
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Filled.MoreVert,
|
||||
contentDescription = stringResource(id = R.string.settings),
|
||||
)
|
||||
|
||||
DropdownMenu(
|
||||
expanded = showDropdown,
|
||||
onDismissRequest = { showDropdown = false }
|
||||
) {
|
||||
DropdownMenuItem(
|
||||
text = { Text(stringResource(R.string.module_sort_action_first)) },
|
||||
trailingIcon = {
|
||||
Checkbox(
|
||||
checked = viewModel.sortActionFirst,
|
||||
onCheckedChange = null,
|
||||
)
|
||||
},
|
||||
onClick = {
|
||||
viewModel.sortActionFirst = !viewModel.sortActionFirst
|
||||
prefs.edit {
|
||||
putBoolean(
|
||||
"module_sort_action_first",
|
||||
viewModel.sortActionFirst
|
||||
)
|
||||
}
|
||||
scope.launch {
|
||||
viewModel.fetchModuleList()
|
||||
}
|
||||
}
|
||||
)
|
||||
DropdownMenuItem(
|
||||
text = { Text(stringResource(R.string.module_sort_enabled_first)) },
|
||||
trailingIcon = {
|
||||
Checkbox(
|
||||
checked = viewModel.sortEnabledFirst,
|
||||
onCheckedChange = null,
|
||||
)
|
||||
},
|
||||
onClick = {
|
||||
viewModel.sortEnabledFirst = !viewModel.sortEnabledFirst
|
||||
prefs.edit {
|
||||
putBoolean("module_sort_enabled_first", viewModel.sortEnabledFirst)
|
||||
}
|
||||
scope.launch {
|
||||
viewModel.fetchModuleList()
|
||||
}
|
||||
}
|
||||
)
|
||||
HorizontalDivider(thickness = Dp.Hairline, modifier = Modifier.padding(vertical = 4.dp))
|
||||
DropdownMenuItem(
|
||||
text = { Text(stringResource(R.string.backup_modules)) },
|
||||
leadingIcon = {
|
||||
Icon(
|
||||
imageVector = Icons.Outlined.Save,
|
||||
contentDescription = stringResource(R.string.backup),
|
||||
)
|
||||
},
|
||||
onClick = {
|
||||
showDropdown = false
|
||||
backupLauncher.launch(ModuleModify.createBackupIntent())
|
||||
}
|
||||
)
|
||||
DropdownMenuItem(
|
||||
text = { Text(stringResource(R.string.restore_modules)) },
|
||||
leadingIcon = {
|
||||
Icon(
|
||||
imageVector = Icons.Outlined.RestoreFromTrash,
|
||||
contentDescription = stringResource(R.string.restore),
|
||||
)
|
||||
},
|
||||
onClick = {
|
||||
showDropdown = false
|
||||
restoreLauncher.launch(ModuleModify.createRestoreIntent())
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
},
|
||||
scrollBehavior = scrollBehavior,
|
||||
)
|
||||
},
|
||||
floatingActionButton = {
|
||||
if (!hideInstallButton) {
|
||||
val moduleInstall = stringResource(id = R.string.module_install)
|
||||
ExtendedFloatingActionButton(
|
||||
AnimatedFab(visible = !hideInstallButton && fabVisible) {
|
||||
FloatingActionButton(
|
||||
contentColor = MaterialTheme.colorScheme.onPrimary,
|
||||
containerColor = MaterialTheme.colorScheme.primary,
|
||||
onClick = {
|
||||
selectZipLauncher.launch(
|
||||
Intent(Intent.ACTION_GET_CONTENT).apply {
|
||||
@@ -307,18 +301,12 @@ fun ModuleScreen(navigator: DestinationsNavigator) {
|
||||
}
|
||||
)
|
||||
},
|
||||
icon = {
|
||||
content = {
|
||||
Icon(
|
||||
imageVector = Icons.Filled.Add,
|
||||
contentDescription = moduleInstall,
|
||||
painter = painterResource(id = R.drawable.package_import),
|
||||
contentDescription = null
|
||||
)
|
||||
},
|
||||
text = {
|
||||
Text(
|
||||
text = moduleInstall,
|
||||
)
|
||||
},
|
||||
expanded = true,
|
||||
}
|
||||
)
|
||||
}
|
||||
},
|
||||
@@ -358,6 +346,7 @@ fun ModuleScreen(navigator: DestinationsNavigator) {
|
||||
ModuleList(
|
||||
navigator = navigator,
|
||||
viewModel = viewModel,
|
||||
listState = listState,
|
||||
modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
|
||||
boxModifier = Modifier.padding(innerPadding),
|
||||
onInstallModule = {
|
||||
@@ -425,6 +414,202 @@ fun ModuleScreen(navigator: DestinationsNavigator) {
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// BottomSheet
|
||||
if (showBottomSheet) {
|
||||
ModalBottomSheet(
|
||||
onDismissRequest = {
|
||||
showBottomSheet = false
|
||||
},
|
||||
sheetState = bottomSheetState,
|
||||
dragHandle = {
|
||||
Surface(
|
||||
modifier = Modifier.padding(vertical = 11.dp),
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.4f),
|
||||
shape = RoundedCornerShape(16.dp)
|
||||
) {
|
||||
Box(
|
||||
Modifier.size(
|
||||
width = 32.dp,
|
||||
height = 4.dp
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
) {
|
||||
ModuleBottomSheetContent(
|
||||
menuItems = bottomSheetMenuItems,
|
||||
viewModel = viewModel,
|
||||
prefs = prefs,
|
||||
scope = scope,
|
||||
bottomSheetState = bottomSheetState,
|
||||
onDismiss = { showBottomSheet = false }
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
private fun ModuleBottomSheetContent(
|
||||
menuItems: List<ModuleBottomSheetMenuItem>,
|
||||
viewModel: ModuleViewModel,
|
||||
prefs: android.content.SharedPreferences,
|
||||
scope: kotlinx.coroutines.CoroutineScope,
|
||||
bottomSheetState: SheetState,
|
||||
onDismiss: () -> Unit
|
||||
) {
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(bottom = 24.dp)
|
||||
) {
|
||||
// 标题
|
||||
Text(
|
||||
text = stringResource(R.string.menu_options),
|
||||
style = MaterialTheme.typography.headlineSmall,
|
||||
fontWeight = FontWeight.Bold,
|
||||
modifier = Modifier.padding(horizontal = 24.dp, vertical = 16.dp)
|
||||
)
|
||||
|
||||
// 菜单选项网格
|
||||
LazyVerticalGrid(
|
||||
columns = GridCells.Fixed(4),
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
contentPadding = PaddingValues(horizontal = 16.dp),
|
||||
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
||||
verticalArrangement = Arrangement.spacedBy(16.dp)
|
||||
) {
|
||||
items(menuItems) { menuItem ->
|
||||
ModuleBottomSheetMenuItemView(
|
||||
menuItem = menuItem
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// 排序选项
|
||||
Spacer(modifier = Modifier.height(24.dp))
|
||||
HorizontalDivider(modifier = Modifier.padding(horizontal = 24.dp))
|
||||
|
||||
Text(
|
||||
text = stringResource(R.string.sort_options),
|
||||
style = MaterialTheme.typography.titleMedium,
|
||||
fontWeight = FontWeight.Bold,
|
||||
modifier = Modifier.padding(horizontal = 24.dp, vertical = 16.dp)
|
||||
)
|
||||
|
||||
// 排序选项
|
||||
Column(
|
||||
modifier = Modifier.padding(horizontal = 24.dp),
|
||||
verticalArrangement = Arrangement.spacedBy(8.dp)
|
||||
) {
|
||||
// 优先显示有操作的模块
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Text(
|
||||
text = stringResource(R.string.module_sort_action_first),
|
||||
style = MaterialTheme.typography.bodyMedium
|
||||
)
|
||||
Switch(
|
||||
checked = viewModel.sortActionFirst,
|
||||
onCheckedChange = { checked ->
|
||||
viewModel.sortActionFirst = checked
|
||||
prefs.edit {
|
||||
putBoolean("module_sort_action_first", checked)
|
||||
}
|
||||
scope.launch {
|
||||
viewModel.fetchModuleList()
|
||||
bottomSheetState.hide()
|
||||
onDismiss()
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
// 优先显示已启用的模块
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Text(
|
||||
text = stringResource(R.string.module_sort_enabled_first),
|
||||
style = MaterialTheme.typography.bodyMedium
|
||||
)
|
||||
Switch(
|
||||
checked = viewModel.sortEnabledFirst,
|
||||
onCheckedChange = { checked ->
|
||||
viewModel.sortEnabledFirst = checked
|
||||
prefs.edit {
|
||||
putBoolean("module_sort_enabled_first", checked)
|
||||
}
|
||||
scope.launch {
|
||||
viewModel.fetchModuleList()
|
||||
bottomSheetState.hide()
|
||||
onDismiss()
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun ModuleBottomSheetMenuItemView(menuItem: ModuleBottomSheetMenuItem) {
|
||||
// 添加交互状态
|
||||
val interactionSource = remember { MutableInteractionSource() }
|
||||
val isPressed by interactionSource.collectIsPressedAsState()
|
||||
|
||||
val scale by animateFloatAsState(
|
||||
targetValue = if (isPressed) 0.95f else 1.0f,
|
||||
animationSpec = spring(
|
||||
dampingRatio = Spring.DampingRatioMediumBouncy,
|
||||
stiffness = Spring.StiffnessHigh
|
||||
),
|
||||
label = "menuItemScale"
|
||||
)
|
||||
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.scale(scale)
|
||||
.clickable(
|
||||
interactionSource = interactionSource,
|
||||
indication = null
|
||||
) { menuItem.onClick() }
|
||||
.padding(8.dp),
|
||||
horizontalAlignment = Alignment.CenterHorizontally
|
||||
) {
|
||||
Surface(
|
||||
modifier = Modifier.size(48.dp),
|
||||
shape = CircleShape,
|
||||
color = MaterialTheme.colorScheme.primaryContainer,
|
||||
contentColor = MaterialTheme.colorScheme.onPrimaryContainer
|
||||
) {
|
||||
Box(
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
Icon(
|
||||
imageVector = menuItem.icon,
|
||||
contentDescription = stringResource(menuItem.titleRes),
|
||||
modifier = Modifier.size(24.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
|
||||
Text(
|
||||
text = stringResource(menuItem.titleRes),
|
||||
style = MaterialTheme.typography.labelSmall,
|
||||
textAlign = TextAlign.Center,
|
||||
maxLines = 2
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -433,6 +618,7 @@ fun ModuleScreen(navigator: DestinationsNavigator) {
|
||||
private fun ModuleList(
|
||||
navigator: DestinationsNavigator,
|
||||
viewModel: ModuleViewModel,
|
||||
listState: LazyListState,
|
||||
modifier: Modifier = Modifier,
|
||||
boxModifier: Modifier = Modifier,
|
||||
onInstallModule: (Uri) -> Unit,
|
||||
@@ -564,6 +750,7 @@ private fun ModuleList(
|
||||
|
||||
if (success) {
|
||||
viewModel.fetchModuleList()
|
||||
viewModel.markNeedRefresh()
|
||||
}
|
||||
if (!isUninstall) return
|
||||
val message = if (success) {
|
||||
@@ -593,6 +780,7 @@ private fun ModuleList(
|
||||
isRefreshing = viewModel.isRefreshing
|
||||
) {
|
||||
LazyColumn(
|
||||
state = listState,
|
||||
modifier = modifier,
|
||||
verticalArrangement = Arrangement.spacedBy(16.dp),
|
||||
contentPadding = remember {
|
||||
@@ -710,6 +898,16 @@ fun ModuleItem(
|
||||
onUpdate: (ModuleViewModel.ModuleInfo) -> Unit,
|
||||
onClick: (ModuleViewModel.ModuleInfo) -> Unit
|
||||
) {
|
||||
val context = LocalContext.current
|
||||
val prefs = context.getSharedPreferences("settings", MODE_PRIVATE)
|
||||
val isHideTagRow = prefs.getBoolean("is_hide_tag_row", false)
|
||||
// 获取显示更多模块信息的设置
|
||||
val showMoreModuleInfo = prefs.getBoolean("show_more_module_info", false)
|
||||
|
||||
// 剪贴板管理器和触觉反馈
|
||||
val clipboardManager = context.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
|
||||
val hapticFeedback = LocalHapticFeedback.current
|
||||
|
||||
ElevatedCard(
|
||||
colors = getCardColors(MaterialTheme.colorScheme.surfaceContainerHigh),
|
||||
elevation = getCardElevation(),
|
||||
@@ -719,6 +917,11 @@ fun ModuleItem(
|
||||
val indication = LocalIndication.current
|
||||
val viewModel = viewModel<ModuleViewModel>()
|
||||
|
||||
// 使用缓存系统获取模块大小
|
||||
val sizeStr = remember(module.dirId) {
|
||||
viewModel.getModuleSize(module.dirId)
|
||||
}
|
||||
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.run {
|
||||
@@ -772,6 +975,43 @@ fun ModuleItem(
|
||||
fontFamily = MaterialTheme.typography.bodySmall.fontFamily,
|
||||
textDecoration = textDecoration,
|
||||
)
|
||||
|
||||
// 显示更多模块信息时添加updateJson
|
||||
if (showMoreModuleInfo && module.updateJson.isNotEmpty()) {
|
||||
val updateJsonLabel = stringResource(R.string.module_update_json)
|
||||
Text(
|
||||
text = "$updateJsonLabel: ${module.updateJson}",
|
||||
fontSize = MaterialTheme.typography.bodySmall.fontSize,
|
||||
lineHeight = MaterialTheme.typography.bodySmall.lineHeight,
|
||||
fontFamily = MaterialTheme.typography.bodySmall.fontFamily,
|
||||
textDecoration = textDecoration,
|
||||
color = MaterialTheme.colorScheme.primary,
|
||||
maxLines = 5,
|
||||
overflow = TextOverflow.Ellipsis,
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.combinedClickable(
|
||||
onClick = {
|
||||
},
|
||||
onLongClick = {
|
||||
// 长按复制updateJson地址
|
||||
val clipData = ClipData.newPlainText(
|
||||
"Update JSON URL",
|
||||
module.updateJson
|
||||
)
|
||||
clipboardManager.setPrimaryClip(clipData)
|
||||
hapticFeedback.performHapticFeedback(HapticFeedbackType.LongPress)
|
||||
|
||||
// 显示复制成功的提示
|
||||
Toast.makeText(
|
||||
context,
|
||||
context.getString(R.string.module_update_json_copied),
|
||||
Toast.LENGTH_SHORT
|
||||
).show()
|
||||
}
|
||||
),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Spacer(modifier = Modifier.weight(1f))
|
||||
@@ -801,6 +1041,44 @@ fun ModuleItem(
|
||||
maxLines = 4,
|
||||
textDecoration = textDecoration,
|
||||
)
|
||||
if (!isHideTagRow) {
|
||||
|
||||
Spacer(modifier = Modifier.height(12.dp))
|
||||
// 文件夹名称和大小标签
|
||||
Row(
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
Surface(
|
||||
shape = RoundedCornerShape(4.dp),
|
||||
color = MaterialTheme.colorScheme.primary,
|
||||
modifier = Modifier
|
||||
) {
|
||||
Text(
|
||||
text = module.dirId,
|
||||
style = MaterialTheme.typography.labelSmall,
|
||||
modifier = Modifier.padding(horizontal = 4.dp, vertical = 1.dp),
|
||||
color = MaterialTheme.colorScheme.onPrimary,
|
||||
maxLines = 1,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
)
|
||||
}
|
||||
Surface(
|
||||
shape = RoundedCornerShape(4.dp),
|
||||
color = MaterialTheme.colorScheme.secondaryContainer,
|
||||
modifier = Modifier
|
||||
) {
|
||||
Text(
|
||||
text = sizeStr,
|
||||
style = MaterialTheme.typography.labelSmall,
|
||||
modifier = Modifier.padding(horizontal = 4.dp, vertical = 1.dp),
|
||||
color = MaterialTheme.colorScheme.onSecondaryContainer,
|
||||
maxLines = 1
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Spacer(modifier = Modifier.height(16.dp))
|
||||
|
||||
@@ -838,7 +1116,7 @@ fun ModuleItem(
|
||||
interactionSource = interactionSource,
|
||||
contentPadding = ButtonDefaults.TextButtonContentPadding,
|
||||
|
||||
) {
|
||||
) {
|
||||
Icon(
|
||||
modifier = Modifier.size(20.dp),
|
||||
imageVector = Icons.AutoMirrored.Outlined.Wysiwyg,
|
||||
|
||||
@@ -662,115 +662,121 @@ fun rememberUninstallDialog(onSelected: (UninstallType) -> Unit): DialogHandle {
|
||||
|
||||
var selectedOption by remember { mutableStateOf<UninstallType?>(null) }
|
||||
|
||||
AlertDialog(
|
||||
onDismissRequest = {
|
||||
dismiss()
|
||||
},
|
||||
title = {
|
||||
Text(
|
||||
text = stringResource(R.string.settings_uninstall),
|
||||
style = MaterialTheme.typography.headlineSmall,
|
||||
)
|
||||
},
|
||||
text = {
|
||||
Column(
|
||||
modifier = Modifier.padding(vertical = 8.dp),
|
||||
verticalArrangement = Arrangement.spacedBy(16.dp)
|
||||
) {
|
||||
options.forEachIndexed { index, option ->
|
||||
val isSelected = selectedOption == option
|
||||
val backgroundColor = if (isSelected)
|
||||
MaterialTheme.colorScheme.primaryContainer
|
||||
else
|
||||
Color.Transparent
|
||||
val contentColor = if (isSelected)
|
||||
MaterialTheme.colorScheme.onPrimaryContainer
|
||||
else
|
||||
MaterialTheme.colorScheme.onSurface
|
||||
MaterialTheme(
|
||||
colorScheme = MaterialTheme.colorScheme.copy(
|
||||
surface = MaterialTheme.colorScheme.surfaceContainerHigh
|
||||
)
|
||||
) {
|
||||
AlertDialog(
|
||||
onDismissRequest = {
|
||||
dismiss()
|
||||
},
|
||||
title = {
|
||||
Text(
|
||||
text = stringResource(R.string.settings_uninstall),
|
||||
style = MaterialTheme.typography.headlineSmall,
|
||||
)
|
||||
},
|
||||
text = {
|
||||
Column(
|
||||
modifier = Modifier.padding(vertical = 8.dp),
|
||||
verticalArrangement = Arrangement.spacedBy(16.dp)
|
||||
) {
|
||||
options.forEachIndexed { index, option ->
|
||||
val isSelected = selectedOption == option
|
||||
val backgroundColor = if (isSelected)
|
||||
MaterialTheme.colorScheme.primaryContainer
|
||||
else
|
||||
Color.Transparent
|
||||
val contentColor = if (isSelected)
|
||||
MaterialTheme.colorScheme.onPrimaryContainer
|
||||
else
|
||||
MaterialTheme.colorScheme.onSurface
|
||||
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.clip(MaterialTheme.shapes.medium)
|
||||
.background(backgroundColor)
|
||||
.clickable {
|
||||
selectedOption = option
|
||||
}
|
||||
.padding(vertical = 12.dp, horizontal = 8.dp),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Icon(
|
||||
imageVector = option.icon,
|
||||
contentDescription = null,
|
||||
tint = MaterialTheme.colorScheme.primary,
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.padding(end = 16.dp)
|
||||
.size(24.dp)
|
||||
)
|
||||
Column(
|
||||
modifier = Modifier.weight(1f)
|
||||
.fillMaxWidth()
|
||||
.clip(MaterialTheme.shapes.medium)
|
||||
.background(backgroundColor)
|
||||
.clickable {
|
||||
selectedOption = option
|
||||
}
|
||||
.padding(vertical = 12.dp, horizontal = 8.dp),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Text(
|
||||
text = listOptions[index].titleText,
|
||||
style = MaterialTheme.typography.titleMedium,
|
||||
Icon(
|
||||
imageVector = option.icon,
|
||||
contentDescription = null,
|
||||
tint = MaterialTheme.colorScheme.primary,
|
||||
modifier = Modifier
|
||||
.padding(end = 16.dp)
|
||||
.size(24.dp)
|
||||
)
|
||||
listOptions[index].subtitleText?.let {
|
||||
Column(
|
||||
modifier = Modifier.weight(1f)
|
||||
) {
|
||||
Text(
|
||||
text = it,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = if (isSelected)
|
||||
contentColor.copy(alpha = 0.8f)
|
||||
else
|
||||
MaterialTheme.colorScheme.onSurfaceVariant
|
||||
text = listOptions[index].titleText,
|
||||
style = MaterialTheme.typography.titleMedium,
|
||||
)
|
||||
listOptions[index].subtitleText?.let {
|
||||
Text(
|
||||
text = it,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = if (isSelected)
|
||||
contentColor.copy(alpha = 0.8f)
|
||||
else
|
||||
MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
}
|
||||
}
|
||||
if (isSelected) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.RadioButtonChecked,
|
||||
contentDescription = null,
|
||||
tint = MaterialTheme.colorScheme.primary,
|
||||
modifier = Modifier.size(24.dp)
|
||||
)
|
||||
} else {
|
||||
Icon(
|
||||
imageVector = Icons.Default.RadioButtonUnchecked,
|
||||
contentDescription = null,
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
modifier = Modifier.size(24.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
if (isSelected) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.RadioButtonChecked,
|
||||
contentDescription = null,
|
||||
tint = MaterialTheme.colorScheme.primary,
|
||||
modifier = Modifier.size(24.dp)
|
||||
)
|
||||
} else {
|
||||
Icon(
|
||||
imageVector = Icons.Default.RadioButtonUnchecked,
|
||||
contentDescription = null,
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
modifier = Modifier.size(24.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
confirmButton = {
|
||||
Button(
|
||||
onClick = {
|
||||
selectedOption?.let { onSelected(it) }
|
||||
dismiss()
|
||||
},
|
||||
enabled = selectedOption != null,
|
||||
) {
|
||||
Text(
|
||||
text = stringResource(android.R.string.ok)
|
||||
)
|
||||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(
|
||||
onClick = {
|
||||
dismiss()
|
||||
},
|
||||
confirmButton = {
|
||||
Button(
|
||||
onClick = {
|
||||
selectedOption?.let { onSelected(it) }
|
||||
dismiss()
|
||||
},
|
||||
enabled = selectedOption != null,
|
||||
) {
|
||||
Text(
|
||||
text = stringResource(android.R.string.ok)
|
||||
)
|
||||
}
|
||||
) {
|
||||
Text(
|
||||
text = stringResource(android.R.string.cancel),
|
||||
)
|
||||
}
|
||||
},
|
||||
shape = MaterialTheme.shapes.extraLarge,
|
||||
tonalElevation = 4.dp
|
||||
)
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(
|
||||
onClick = {
|
||||
dismiss()
|
||||
}
|
||||
) {
|
||||
Text(
|
||||
text = stringResource(android.R.string.cancel),
|
||||
)
|
||||
}
|
||||
},
|
||||
shape = MaterialTheme.shapes.extraLarge,
|
||||
tonalElevation = 4.dp
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
1888
manager/app/src/main/java/com/sukisu/ultra/ui/screen/SuSFSConfig.kt
Normal file
1888
manager/app/src/main/java/com/sukisu/ultra/ui/screen/SuSFSConfig.kt
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,635 @@
|
||||
package com.sukisu.ultra.ui.screen.extensions
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.Delete
|
||||
import androidx.compose.material.icons.filled.Edit
|
||||
import androidx.compose.material.icons.filled.Folder
|
||||
import androidx.compose.material.icons.filled.PlayArrow
|
||||
import androidx.compose.material.icons.filled.Update
|
||||
import androidx.compose.material.icons.filled.Settings
|
||||
import androidx.compose.material.icons.filled.Visibility
|
||||
import androidx.compose.material.icons.filled.VisibilityOff
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.Card
|
||||
import androidx.compose.material3.CardDefaults
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.IconButton
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Surface
|
||||
import androidx.compose.material3.Switch
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.vector.ImageVector
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import com.sukisu.ultra.R
|
||||
import com.sukisu.ultra.ui.util.SuSFSManager
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
|
||||
/**
|
||||
* 空状态显示组件
|
||||
*/
|
||||
@Composable
|
||||
fun EmptyStateCard(
|
||||
message: String,
|
||||
modifier: Modifier = Modifier
|
||||
) {
|
||||
Card(
|
||||
modifier = modifier.fillMaxWidth(),
|
||||
colors = CardDefaults.cardColors(
|
||||
containerColor = MaterialTheme.colorScheme.surfaceVariant.copy(alpha = 0.2f)
|
||||
),
|
||||
shape = RoundedCornerShape(12.dp)
|
||||
) {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(24.dp),
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
Text(
|
||||
text = message,
|
||||
style = MaterialTheme.typography.bodyLarge,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
textAlign = TextAlign.Center
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 路径项目卡片组件
|
||||
*/
|
||||
@Composable
|
||||
fun PathItemCard(
|
||||
path: String,
|
||||
icon: ImageVector,
|
||||
onDelete: () -> Unit,
|
||||
onEdit: (() -> Unit)? = null,
|
||||
isLoading: Boolean = false,
|
||||
additionalInfo: String? = null
|
||||
) {
|
||||
Card(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(vertical = 1.dp),
|
||||
shape = RoundedCornerShape(8.dp),
|
||||
elevation = CardDefaults.cardElevation(defaultElevation = 1.dp)
|
||||
) {
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(12.dp),
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Row(
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
modifier = Modifier.weight(1f)
|
||||
) {
|
||||
Icon(
|
||||
imageVector = icon,
|
||||
contentDescription = null,
|
||||
tint = MaterialTheme.colorScheme.primary,
|
||||
modifier = Modifier.size(18.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.width(12.dp))
|
||||
Column {
|
||||
Text(
|
||||
text = path,
|
||||
style = MaterialTheme.typography.bodyLarge,
|
||||
fontWeight = FontWeight.Medium
|
||||
)
|
||||
if (additionalInfo != null) {
|
||||
Text(
|
||||
text = additionalInfo,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
Row(
|
||||
horizontalArrangement = Arrangement.spacedBy(4.dp)
|
||||
) {
|
||||
if (onEdit != null) {
|
||||
IconButton(
|
||||
onClick = onEdit,
|
||||
enabled = !isLoading,
|
||||
modifier = Modifier.size(32.dp)
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Edit,
|
||||
contentDescription = stringResource(R.string.edit),
|
||||
tint = MaterialTheme.colorScheme.secondary,
|
||||
modifier = Modifier.size(16.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
IconButton(
|
||||
onClick = onDelete,
|
||||
enabled = !isLoading,
|
||||
modifier = Modifier.size(32.dp)
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Delete,
|
||||
contentDescription = stringResource(R.string.delete),
|
||||
tint = MaterialTheme.colorScheme.error,
|
||||
modifier = Modifier.size(16.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Kstat配置项目卡片组件
|
||||
*/
|
||||
@Composable
|
||||
fun KstatConfigItemCard(
|
||||
config: String,
|
||||
onDelete: () -> Unit,
|
||||
onEdit: (() -> Unit)? = null,
|
||||
isLoading: Boolean = false
|
||||
) {
|
||||
Card(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(vertical = 1.dp),
|
||||
shape = RoundedCornerShape(8.dp),
|
||||
elevation = CardDefaults.cardElevation(defaultElevation = 1.dp)
|
||||
) {
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(12.dp),
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Row(
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
modifier = Modifier.weight(1f)
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Settings,
|
||||
contentDescription = null,
|
||||
tint = MaterialTheme.colorScheme.primary,
|
||||
modifier = Modifier.size(18.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.width(12.dp))
|
||||
Column {
|
||||
val parts = config.split("|")
|
||||
if (parts.isNotEmpty()) {
|
||||
Text(
|
||||
text = parts[0], // 路径
|
||||
style = MaterialTheme.typography.bodyLarge,
|
||||
fontWeight = FontWeight.Medium
|
||||
)
|
||||
if (parts.size > 1) {
|
||||
Text(
|
||||
text = "${parts.drop(1).joinToString(" ")}",
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
}
|
||||
} else {
|
||||
Text(
|
||||
text = config,
|
||||
style = MaterialTheme.typography.bodyLarge,
|
||||
fontWeight = FontWeight.Medium
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
Row(
|
||||
horizontalArrangement = Arrangement.spacedBy(4.dp)
|
||||
) {
|
||||
if (onEdit != null) {
|
||||
IconButton(
|
||||
onClick = onEdit,
|
||||
enabled = !isLoading,
|
||||
modifier = Modifier.size(32.dp)
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Edit,
|
||||
contentDescription = stringResource(R.string.edit),
|
||||
tint = MaterialTheme.colorScheme.secondary,
|
||||
modifier = Modifier.size(16.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
IconButton(
|
||||
onClick = onDelete,
|
||||
enabled = !isLoading,
|
||||
modifier = Modifier.size(32.dp)
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Delete,
|
||||
contentDescription = stringResource(R.string.delete),
|
||||
tint = MaterialTheme.colorScheme.error,
|
||||
modifier = Modifier.size(16.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add Kstat路径项目卡片组件
|
||||
*/
|
||||
@Composable
|
||||
fun AddKstatPathItemCard(
|
||||
path: String,
|
||||
onDelete: () -> Unit,
|
||||
onEdit: (() -> Unit)? = null,
|
||||
onUpdate: () -> Unit,
|
||||
onUpdateFullClone: () -> Unit,
|
||||
isLoading: Boolean = false
|
||||
) {
|
||||
Card(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(vertical = 1.dp),
|
||||
shape = RoundedCornerShape(8.dp),
|
||||
elevation = CardDefaults.cardElevation(defaultElevation = 1.dp)
|
||||
) {
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(12.dp),
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Row(
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
modifier = Modifier.weight(1f)
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Folder,
|
||||
contentDescription = null,
|
||||
tint = MaterialTheme.colorScheme.primary,
|
||||
modifier = Modifier.size(18.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.width(12.dp))
|
||||
Text(
|
||||
text = path,
|
||||
style = MaterialTheme.typography.bodyLarge,
|
||||
fontWeight = FontWeight.Medium
|
||||
)
|
||||
}
|
||||
Row(
|
||||
horizontalArrangement = Arrangement.spacedBy(4.dp)
|
||||
) {
|
||||
if (onEdit != null) {
|
||||
IconButton(
|
||||
onClick = onEdit,
|
||||
enabled = !isLoading,
|
||||
modifier = Modifier.size(32.dp)
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Edit,
|
||||
contentDescription = stringResource(R.string.edit),
|
||||
tint = MaterialTheme.colorScheme.secondary,
|
||||
modifier = Modifier.size(16.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
IconButton(
|
||||
onClick = onUpdate,
|
||||
enabled = !isLoading,
|
||||
modifier = Modifier.size(32.dp)
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Update,
|
||||
contentDescription = stringResource(R.string.update),
|
||||
tint = MaterialTheme.colorScheme.secondary,
|
||||
modifier = Modifier.size(16.dp)
|
||||
)
|
||||
}
|
||||
IconButton(
|
||||
onClick = onUpdateFullClone,
|
||||
enabled = !isLoading,
|
||||
modifier = Modifier.size(32.dp)
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.PlayArrow,
|
||||
contentDescription = stringResource(R.string.susfs_update_full_clone),
|
||||
tint = MaterialTheme.colorScheme.tertiary,
|
||||
modifier = Modifier.size(16.dp)
|
||||
)
|
||||
}
|
||||
IconButton(
|
||||
onClick = onDelete,
|
||||
enabled = !isLoading,
|
||||
modifier = Modifier.size(32.dp)
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Delete,
|
||||
contentDescription = stringResource(R.string.delete),
|
||||
tint = MaterialTheme.colorScheme.error,
|
||||
modifier = Modifier.size(16.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用功能状态卡片组件
|
||||
*/
|
||||
@Composable
|
||||
fun FeatureStatusCard(
|
||||
feature: SuSFSManager.EnabledFeature,
|
||||
onRefresh: (() -> Unit)? = null,
|
||||
@SuppressLint("ModifierParameter") modifier: Modifier = Modifier
|
||||
) {
|
||||
val context = LocalContext.current
|
||||
val coroutineScope = rememberCoroutineScope()
|
||||
|
||||
// 日志配置对话框状态
|
||||
var showLogConfigDialog by remember { mutableStateOf(false) }
|
||||
var logEnabled by remember { mutableStateOf(SuSFSManager.getEnableLogState(context)) }
|
||||
|
||||
// 日志配置对话框
|
||||
if (showLogConfigDialog) {
|
||||
AlertDialog(
|
||||
onDismissRequest = { showLogConfigDialog = false },
|
||||
title = {
|
||||
Text(
|
||||
text = stringResource(R.string.susfs_log_config_title),
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
fontWeight = FontWeight.Bold
|
||||
)
|
||||
},
|
||||
text = {
|
||||
Column(
|
||||
verticalArrangement = Arrangement.spacedBy(12.dp)
|
||||
) {
|
||||
Text(
|
||||
text = stringResource(R.string.susfs_log_config_description),
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Text(
|
||||
text = stringResource(R.string.susfs_enable_log_label),
|
||||
style = MaterialTheme.typography.bodyLarge,
|
||||
fontWeight = FontWeight.Medium
|
||||
)
|
||||
Switch(
|
||||
checked = logEnabled,
|
||||
onCheckedChange = { logEnabled = it }
|
||||
)
|
||||
}
|
||||
}
|
||||
},
|
||||
confirmButton = {
|
||||
Button(
|
||||
onClick = {
|
||||
coroutineScope.launch {
|
||||
if (SuSFSManager.setEnableLog(context, logEnabled)) {
|
||||
onRefresh?.invoke()
|
||||
}
|
||||
showLogConfigDialog = false
|
||||
}
|
||||
},
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
) {
|
||||
Text(stringResource(R.string.susfs_apply))
|
||||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(
|
||||
onClick = {
|
||||
// 恢复原始状态
|
||||
logEnabled = SuSFSManager.getEnableLogState(context)
|
||||
showLogConfigDialog = false
|
||||
},
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
) {
|
||||
Text(stringResource(R.string.cancel))
|
||||
}
|
||||
},
|
||||
shape = RoundedCornerShape(12.dp)
|
||||
)
|
||||
}
|
||||
|
||||
Card(
|
||||
modifier = modifier
|
||||
.fillMaxWidth()
|
||||
.padding(vertical = 1.dp)
|
||||
.then(
|
||||
if (feature.canConfigure) {
|
||||
Modifier.clickable {
|
||||
// 更新当前状态
|
||||
logEnabled = SuSFSManager.getEnableLogState(context)
|
||||
showLogConfigDialog = true
|
||||
}
|
||||
} else {
|
||||
Modifier
|
||||
}
|
||||
),
|
||||
shape = RoundedCornerShape(8.dp),
|
||||
elevation = CardDefaults.cardElevation(defaultElevation = 1.dp)
|
||||
) {
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(12.dp),
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Column(
|
||||
modifier = Modifier.weight(1f)
|
||||
) {
|
||||
Text(
|
||||
text = feature.name,
|
||||
style = MaterialTheme.typography.bodyLarge,
|
||||
fontWeight = FontWeight.Medium
|
||||
)
|
||||
if (feature.canConfigure) {
|
||||
Text(
|
||||
text = stringResource(R.string.susfs_feature_configurable),
|
||||
style = MaterialTheme.typography.bodySmall,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Row(
|
||||
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
// 状态标签
|
||||
Surface(
|
||||
shape = RoundedCornerShape(6.dp),
|
||||
color = when {
|
||||
feature.isEnabled -> MaterialTheme.colorScheme.primary
|
||||
else -> Color.Gray
|
||||
}
|
||||
) {
|
||||
Text(
|
||||
text = feature.statusText,
|
||||
style = MaterialTheme.typography.labelLarge,
|
||||
color = when {
|
||||
feature.isEnabled -> MaterialTheme.colorScheme.onPrimary
|
||||
else -> Color.White
|
||||
},
|
||||
modifier = Modifier.padding(horizontal = 8.dp, vertical = 3.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* SUS挂载隐藏控制卡片组件
|
||||
*/
|
||||
@Composable
|
||||
fun SusMountHidingControlCard(
|
||||
hideSusMountsForAllProcs: Boolean,
|
||||
isLoading: Boolean,
|
||||
onToggleHiding: (Boolean) -> Unit
|
||||
) {
|
||||
Card(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
colors = CardDefaults.cardColors(
|
||||
containerColor = MaterialTheme.colorScheme.surface
|
||||
),
|
||||
shape = RoundedCornerShape(12.dp)
|
||||
) {
|
||||
Column(
|
||||
modifier = Modifier.padding(16.dp),
|
||||
verticalArrangement = Arrangement.spacedBy(12.dp)
|
||||
) {
|
||||
// 标题行
|
||||
Row(
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Icon(
|
||||
imageVector = if (hideSusMountsForAllProcs) Icons.Default.VisibilityOff else Icons.Default.Visibility,
|
||||
contentDescription = null,
|
||||
tint = MaterialTheme.colorScheme.primary,
|
||||
modifier = Modifier.size(20.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.width(8.dp))
|
||||
Text(
|
||||
text = stringResource(R.string.susfs_hide_mounts_control_title),
|
||||
style = MaterialTheme.typography.titleMedium,
|
||||
fontWeight = FontWeight.Bold,
|
||||
color = MaterialTheme.colorScheme.onSurface
|
||||
)
|
||||
}
|
||||
|
||||
// 描述文本
|
||||
Text(
|
||||
text = stringResource(R.string.susfs_hide_mounts_control_description),
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
lineHeight = 16.sp
|
||||
)
|
||||
|
||||
// 控制开关行
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Column(
|
||||
modifier = Modifier.weight(1f)
|
||||
) {
|
||||
Text(
|
||||
text = stringResource(R.string.susfs_hide_mounts_for_all_procs_label),
|
||||
style = MaterialTheme.typography.bodyLarge,
|
||||
fontWeight = FontWeight.Medium,
|
||||
color = MaterialTheme.colorScheme.onSurface
|
||||
)
|
||||
Spacer(modifier = Modifier.width(4.dp))
|
||||
Text(
|
||||
text = if (hideSusMountsForAllProcs) {
|
||||
stringResource(R.string.susfs_hide_mounts_for_all_procs_enabled_description)
|
||||
} else {
|
||||
stringResource(R.string.susfs_hide_mounts_for_all_procs_disabled_description)
|
||||
},
|
||||
style = MaterialTheme.typography.bodySmall,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
lineHeight = 14.sp
|
||||
)
|
||||
}
|
||||
Switch(
|
||||
checked = hideSusMountsForAllProcs,
|
||||
onCheckedChange = onToggleHiding,
|
||||
enabled = !isLoading
|
||||
)
|
||||
}
|
||||
|
||||
// 当前设置显示
|
||||
Text(
|
||||
text = stringResource(
|
||||
R.string.susfs_hide_mounts_current_setting,
|
||||
if (hideSusMountsForAllProcs) {
|
||||
stringResource(R.string.susfs_hide_mounts_setting_all)
|
||||
} else {
|
||||
stringResource(R.string.susfs_hide_mounts_setting_non_ksu)
|
||||
}
|
||||
),
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.primary,
|
||||
fontWeight = FontWeight.Medium
|
||||
)
|
||||
|
||||
// 建议文本
|
||||
Card(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
colors = CardDefaults.cardColors(
|
||||
containerColor = MaterialTheme.colorScheme.surfaceVariant.copy(alpha = 0.3f)
|
||||
),
|
||||
shape = RoundedCornerShape(8.dp)
|
||||
) {
|
||||
Text(
|
||||
text = stringResource(R.string.susfs_hide_mounts_recommendation),
|
||||
style = MaterialTheme.typography.bodySmall,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
lineHeight = 14.sp,
|
||||
modifier = Modifier.padding(12.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,14 @@
|
||||
package com.sukisu.ultra.ui.util
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.util.Log
|
||||
import androidx.activity.compose.rememberLauncherForActivityResult
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.compose.material3.SnackbarDuration
|
||||
import androidx.compose.material3.SnackbarHostState
|
||||
import androidx.compose.material3.SnackbarResult
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.material3.*
|
||||
import androidx.compose.runtime.*
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import kotlinx.coroutines.CompletableDeferred
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
@@ -25,18 +22,78 @@ import java.util.Date
|
||||
import java.util.Locale
|
||||
|
||||
object ModuleModify {
|
||||
suspend fun showRestoreConfirmation(context: Context): Boolean {
|
||||
val result = CompletableDeferred<Boolean>()
|
||||
withContext(Dispatchers.Main) {
|
||||
AlertDialog.Builder(context)
|
||||
.setTitle(context.getString(R.string.restore_confirm_title))
|
||||
.setMessage(context.getString(R.string.restore_confirm_message))
|
||||
.setPositiveButton(context.getString(R.string.confirm)) { _, _ -> result.complete(true) }
|
||||
.setNegativeButton(context.getString(R.string.cancel)) { _, _ -> result.complete(false) }
|
||||
.setOnCancelListener { result.complete(false) }
|
||||
.show()
|
||||
@Composable
|
||||
fun RestoreConfirmationDialog(
|
||||
showDialog: Boolean,
|
||||
onConfirm: () -> Unit,
|
||||
onDismiss: () -> Unit
|
||||
) {
|
||||
val context = LocalContext.current
|
||||
|
||||
if (showDialog) {
|
||||
AlertDialog(
|
||||
onDismissRequest = onDismiss,
|
||||
title = {
|
||||
Text(
|
||||
text = context.getString(R.string.restore_confirm_title),
|
||||
style = MaterialTheme.typography.headlineSmall
|
||||
)
|
||||
},
|
||||
text = {
|
||||
Text(
|
||||
text = context.getString(R.string.restore_confirm_message),
|
||||
style = MaterialTheme.typography.bodyMedium
|
||||
)
|
||||
},
|
||||
confirmButton = {
|
||||
TextButton(onClick = onConfirm) {
|
||||
Text(context.getString(R.string.confirm))
|
||||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(onClick = onDismiss) {
|
||||
Text(context.getString(R.string.cancel))
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun AllowlistRestoreConfirmationDialog(
|
||||
showDialog: Boolean,
|
||||
onConfirm: () -> Unit,
|
||||
onDismiss: () -> Unit
|
||||
) {
|
||||
val context = LocalContext.current
|
||||
|
||||
if (showDialog) {
|
||||
AlertDialog(
|
||||
onDismissRequest = onDismiss,
|
||||
title = {
|
||||
Text(
|
||||
text = context.getString(R.string.allowlist_restore_confirm_title),
|
||||
style = MaterialTheme.typography.headlineSmall
|
||||
)
|
||||
},
|
||||
text = {
|
||||
Text(
|
||||
text = context.getString(R.string.allowlist_restore_confirm_message),
|
||||
style = MaterialTheme.typography.bodyMedium
|
||||
)
|
||||
},
|
||||
confirmButton = {
|
||||
TextButton(onClick = onConfirm) {
|
||||
Text(context.getString(R.string.confirm))
|
||||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(onClick = onDismiss) {
|
||||
Text(context.getString(R.string.cancel))
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
return result.await()
|
||||
}
|
||||
|
||||
suspend fun backupModules(context: Context, snackBarHost: SnackbarHostState, uri: Uri) {
|
||||
@@ -82,8 +139,19 @@ object ModuleModify {
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun restoreModules(context: Context, snackBarHost: SnackbarHostState, uri: Uri) {
|
||||
val userConfirmed = showRestoreConfirmation(context)
|
||||
suspend fun restoreModules(
|
||||
context: Context,
|
||||
snackBarHost: SnackbarHostState,
|
||||
uri: Uri,
|
||||
showConfirmDialog: (Boolean) -> Unit,
|
||||
confirmResult: CompletableDeferred<Boolean>
|
||||
) {
|
||||
// 显示确认对话框
|
||||
withContext(Dispatchers.Main) {
|
||||
showConfirmDialog(true)
|
||||
}
|
||||
|
||||
val userConfirmed = confirmResult.await()
|
||||
if (!userConfirmed) return
|
||||
|
||||
withContext(Dispatchers.IO) {
|
||||
@@ -132,20 +200,6 @@ object ModuleModify {
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun showAllowlistRestoreConfirmation(context: Context): Boolean {
|
||||
val result = CompletableDeferred<Boolean>()
|
||||
withContext(Dispatchers.Main) {
|
||||
AlertDialog.Builder(context)
|
||||
.setTitle(context.getString(R.string.allowlist_restore_confirm_title))
|
||||
.setMessage(context.getString(R.string.allowlist_restore_confirm_message))
|
||||
.setPositiveButton(context.getString(R.string.confirm)) { _, _ -> result.complete(true) }
|
||||
.setNegativeButton(context.getString(R.string.cancel)) { _, _ -> result.complete(false) }
|
||||
.setOnCancelListener { result.complete(false) }
|
||||
.show()
|
||||
}
|
||||
return result.await()
|
||||
}
|
||||
|
||||
suspend fun backupAllowlist(context: Context, snackBarHost: SnackbarHostState, uri: Uri) {
|
||||
withContext(Dispatchers.IO) {
|
||||
try {
|
||||
@@ -182,8 +236,19 @@ object ModuleModify {
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun restoreAllowlist(context: Context, snackBarHost: SnackbarHostState, uri: Uri) {
|
||||
val userConfirmed = showAllowlistRestoreConfirmation(context)
|
||||
suspend fun restoreAllowlist(
|
||||
context: Context,
|
||||
snackBarHost: SnackbarHostState,
|
||||
uri: Uri,
|
||||
showConfirmDialog: (Boolean) -> Unit,
|
||||
confirmResult: CompletableDeferred<Boolean>
|
||||
) {
|
||||
// 显示确认对话框
|
||||
withContext(Dispatchers.Main) {
|
||||
showConfirmDialog(true)
|
||||
}
|
||||
|
||||
val userConfirmed = confirmResult.await()
|
||||
if (!userConfirmed) return
|
||||
|
||||
withContext(Dispatchers.IO) {
|
||||
@@ -246,13 +311,42 @@ object ModuleModify {
|
||||
context: Context,
|
||||
snackBarHost: SnackbarHostState,
|
||||
scope: kotlinx.coroutines.CoroutineScope = rememberCoroutineScope()
|
||||
) = rememberLauncherForActivityResult(
|
||||
contract = ActivityResultContracts.StartActivityForResult()
|
||||
) { result ->
|
||||
if (result.resultCode == android.app.Activity.RESULT_OK) {
|
||||
result.data?.data?.let { uri ->
|
||||
scope.launch {
|
||||
restoreModules(context, snackBarHost, uri)
|
||||
): androidx.activity.result.ActivityResultLauncher<Intent> {
|
||||
var showRestoreDialog by remember { mutableStateOf(false) }
|
||||
var restoreConfirmResult by remember { mutableStateOf<CompletableDeferred<Boolean>?>(null) }
|
||||
var pendingUri by remember { mutableStateOf<Uri?>(null) }
|
||||
|
||||
// 显示恢复确认对话框
|
||||
RestoreConfirmationDialog(
|
||||
showDialog = showRestoreDialog,
|
||||
onConfirm = {
|
||||
showRestoreDialog = false
|
||||
restoreConfirmResult?.complete(true)
|
||||
},
|
||||
onDismiss = {
|
||||
showRestoreDialog = false
|
||||
restoreConfirmResult?.complete(false)
|
||||
}
|
||||
)
|
||||
|
||||
return rememberLauncherForActivityResult(
|
||||
contract = ActivityResultContracts.StartActivityForResult()
|
||||
) { result ->
|
||||
if (result.resultCode == android.app.Activity.RESULT_OK) {
|
||||
result.data?.data?.let { uri ->
|
||||
pendingUri = uri
|
||||
scope.launch {
|
||||
val confirmResult = CompletableDeferred<Boolean>()
|
||||
restoreConfirmResult = confirmResult
|
||||
|
||||
restoreModules(
|
||||
context = context,
|
||||
snackBarHost = snackBarHost,
|
||||
uri = uri,
|
||||
showConfirmDialog = { show -> showRestoreDialog = show },
|
||||
confirmResult = confirmResult
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -280,13 +374,42 @@ object ModuleModify {
|
||||
context: Context,
|
||||
snackBarHost: SnackbarHostState,
|
||||
scope: kotlinx.coroutines.CoroutineScope = rememberCoroutineScope()
|
||||
) = rememberLauncherForActivityResult(
|
||||
contract = ActivityResultContracts.StartActivityForResult()
|
||||
) { result ->
|
||||
if (result.resultCode == android.app.Activity.RESULT_OK) {
|
||||
result.data?.data?.let { uri ->
|
||||
scope.launch {
|
||||
restoreAllowlist(context, snackBarHost, uri)
|
||||
): androidx.activity.result.ActivityResultLauncher<Intent> {
|
||||
var showAllowlistRestoreDialog by remember { mutableStateOf(false) }
|
||||
var allowlistRestoreConfirmResult by remember { mutableStateOf<CompletableDeferred<Boolean>?>(null) }
|
||||
var pendingUri by remember { mutableStateOf<Uri?>(null) }
|
||||
|
||||
// 显示允许列表恢复确认对话框
|
||||
AllowlistRestoreConfirmationDialog(
|
||||
showDialog = showAllowlistRestoreDialog,
|
||||
onConfirm = {
|
||||
showAllowlistRestoreDialog = false
|
||||
allowlistRestoreConfirmResult?.complete(true)
|
||||
},
|
||||
onDismiss = {
|
||||
showAllowlistRestoreDialog = false
|
||||
allowlistRestoreConfirmResult?.complete(false)
|
||||
}
|
||||
)
|
||||
|
||||
return rememberLauncherForActivityResult(
|
||||
contract = ActivityResultContracts.StartActivityForResult()
|
||||
) { result ->
|
||||
if (result.resultCode == android.app.Activity.RESULT_OK) {
|
||||
result.data?.data?.let { uri ->
|
||||
pendingUri = uri
|
||||
scope.launch {
|
||||
val confirmResult = CompletableDeferred<Boolean>()
|
||||
allowlistRestoreConfirmResult = confirmResult
|
||||
|
||||
restoreAllowlist(
|
||||
context = context,
|
||||
snackBarHost = snackBarHost,
|
||||
uri = uri,
|
||||
showConfirmDialog = { show -> showAllowlistRestoreDialog = show },
|
||||
confirmResult = confirmResult
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
1093
manager/app/src/main/java/com/sukisu/ultra/ui/util/SuSFSManager.kt
Normal file
1093
manager/app/src/main/java/com/sukisu/ultra/ui/util/SuSFSManager.kt
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,509 @@
|
||||
package com.sukisu.ultra.ui.util
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
|
||||
/**
|
||||
* Magisk模块脚本生成器
|
||||
* 用于生成各种启动脚本的内容
|
||||
*/
|
||||
object ScriptGenerator {
|
||||
|
||||
// 常量定义
|
||||
private const val DEFAULT_UNAME = "default"
|
||||
private const val DEFAULT_BUILD_TIME = "default"
|
||||
private const val LOG_DIR = "/data/adb/ksu/log"
|
||||
|
||||
/**
|
||||
* 生成所有脚本文件
|
||||
*/
|
||||
fun generateAllScripts(config: SuSFSManager.ModuleConfig): Map<String, String> {
|
||||
return mapOf(
|
||||
"service.sh" to generateServiceScript(config),
|
||||
"post-fs-data.sh" to generatePostFsDataScript(config),
|
||||
"post-mount.sh" to generatePostMountScript(config),
|
||||
"boot-completed.sh" to generateBootCompletedScript(config)
|
||||
)
|
||||
}
|
||||
|
||||
// 日志相关的通用脚本片段
|
||||
private fun generateLogSetup(logFileName: String): String = """
|
||||
# 日志目录
|
||||
LOG_DIR="$LOG_DIR"
|
||||
LOG_FILE="${'$'}LOG_DIR/$logFileName"
|
||||
|
||||
# 创建日志目录
|
||||
mkdir -p "${'$'}LOG_DIR"
|
||||
|
||||
# 获取当前时间
|
||||
get_current_time() {
|
||||
date '+%Y-%m-%d %H:%M:%S'
|
||||
}
|
||||
""".trimIndent()
|
||||
|
||||
// 二进制文件检查的通用脚本片段
|
||||
private fun generateBinaryCheck(targetPath: String): String = """
|
||||
# 检查SuSFS二进制文件
|
||||
SUSFS_BIN="$targetPath"
|
||||
if [ ! -f "${'$'}SUSFS_BIN" ]; then
|
||||
echo "$(get_current_time): SuSFS二进制文件未找到: ${'$'}SUSFS_BIN" >> "${'$'}LOG_FILE"
|
||||
exit 1
|
||||
fi
|
||||
""".trimIndent()
|
||||
|
||||
/**
|
||||
* 生成service.sh脚本内容
|
||||
*/
|
||||
@SuppressLint("SdCardPath")
|
||||
private fun generateServiceScript(config: SuSFSManager.ModuleConfig): String {
|
||||
return buildString {
|
||||
appendLine("#!/system/bin/sh")
|
||||
appendLine("# SuSFS Service Script")
|
||||
appendLine("# 在系统服务启动后执行")
|
||||
appendLine()
|
||||
appendLine(generateLogSetup("susfs_service.log"))
|
||||
appendLine()
|
||||
appendLine(generateBinaryCheck(config.targetPath))
|
||||
appendLine()
|
||||
|
||||
if (shouldConfigureInService(config)) {
|
||||
// 添加SUS路径 (仅在不支持隐藏挂载时)
|
||||
if (!config.support158 && config.susPaths.isNotEmpty()) {
|
||||
appendLine()
|
||||
appendLine("until [ -d \"/sdcard/Android\" ]; do sleep 1; done")
|
||||
appendLine("sleep 45")
|
||||
generateSusPathsSection(config.susPaths)
|
||||
}
|
||||
|
||||
// 设置uname和构建时间
|
||||
generateUnameSection(config)
|
||||
|
||||
// 添加Kstat配置
|
||||
generateKstatSection(config.kstatConfigs, config.addKstatPaths)
|
||||
}
|
||||
|
||||
// 添加日志设置
|
||||
generateLogSettingSection(config.enableLog)
|
||||
|
||||
// 隐藏BL相关配置
|
||||
if (config.enableHideBl) {
|
||||
generateHideBlSection()
|
||||
}
|
||||
|
||||
// 清理工具残留
|
||||
if (config.enableCleanupResidue) {
|
||||
generateCleanupResidueSection()
|
||||
}
|
||||
|
||||
appendLine("echo \"$(get_current_time): Service脚本执行完成\" >> \"${'$'}LOG_FILE\"")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否需要在service中配置
|
||||
*/
|
||||
private fun shouldConfigureInService(config: SuSFSManager.ModuleConfig): Boolean {
|
||||
return config.susPaths.isNotEmpty() ||
|
||||
config.kstatConfigs.isNotEmpty() ||
|
||||
config.addKstatPaths.isNotEmpty() ||
|
||||
(!config.executeInPostFsData && (config.unameValue != DEFAULT_UNAME || config.buildTimeValue != DEFAULT_BUILD_TIME))
|
||||
}
|
||||
|
||||
private fun StringBuilder.generateLogSettingSection(enableLog: Boolean) {
|
||||
appendLine("# 设置日志启用状态")
|
||||
val logValue = if (enableLog) 1 else 0
|
||||
appendLine("\"${'$'}SUSFS_BIN\" enable_log $logValue")
|
||||
appendLine("echo \"$(get_current_time): 日志功能设置为: ${if (enableLog) "启用" else "禁用"}\" >> \"${'$'}LOG_FILE\"")
|
||||
appendLine()
|
||||
}
|
||||
|
||||
private fun StringBuilder.generateSusPathsSection(susPaths: Set<String>) {
|
||||
if (susPaths.isNotEmpty()) {
|
||||
appendLine("# 添加SUS路径")
|
||||
susPaths.forEach { path ->
|
||||
appendLine("\"${'$'}SUSFS_BIN\" add_sus_path '$path'")
|
||||
appendLine("echo \"$(get_current_time): 添加SUS路径: $path\" >> \"${'$'}LOG_FILE\"")
|
||||
}
|
||||
appendLine()
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("SdCardPath")
|
||||
private fun StringBuilder.generateKstatSection(
|
||||
kstatConfigs: Set<String>,
|
||||
addKstatPaths: Set<String>
|
||||
) {
|
||||
// 添加Kstat路径
|
||||
if (addKstatPaths.isNotEmpty()) {
|
||||
appendLine("# 添加Kstat路径")
|
||||
addKstatPaths.forEach { path ->
|
||||
appendLine("\"${'$'}SUSFS_BIN\" add_sus_kstat '$path'")
|
||||
appendLine("echo \"$(get_current_time): 添加Kstat路径: $path\" >> \"${'$'}LOG_FILE\"")
|
||||
}
|
||||
appendLine()
|
||||
}
|
||||
|
||||
// 添加Kstat静态配置
|
||||
if (kstatConfigs.isNotEmpty()) {
|
||||
appendLine("# 添加Kstat静态配置")
|
||||
kstatConfigs.forEach { config ->
|
||||
val parts = config.split("|")
|
||||
if (parts.size >= 13) {
|
||||
val path = parts[0]
|
||||
val params = parts.drop(1).joinToString("' '", "'", "'")
|
||||
appendLine()
|
||||
appendLine("\"${'$'}SUSFS_BIN\" add_sus_kstat_statically '$path' $params")
|
||||
appendLine("echo \"$(get_current_time): 添加Kstat静态配置: $path\" >> \"${'$'}LOG_FILE\"")
|
||||
appendLine()
|
||||
appendLine("\"${'$'}SUSFS_BIN\" update_sus_kstat '$path'")
|
||||
appendLine("echo \"$(get_current_time): 更新Kstat配置: $path\" >> \"${'$'}LOG_FILE\"")
|
||||
}
|
||||
}
|
||||
appendLine()
|
||||
}
|
||||
}
|
||||
|
||||
private fun StringBuilder.generateUnameSection(config: SuSFSManager.ModuleConfig) {
|
||||
if (!config.executeInPostFsData && (config.unameValue != DEFAULT_UNAME || config.buildTimeValue != DEFAULT_BUILD_TIME)) {
|
||||
appendLine("# 设置uname和构建时间")
|
||||
appendLine("\"${'$'}SUSFS_BIN\" set_uname '${config.unameValue}' '${config.buildTimeValue}'")
|
||||
appendLine("echo \"$(get_current_time): 设置uname为: ${config.unameValue}, 构建时间为: ${config.buildTimeValue}\" >> \"${'$'}LOG_FILE\"")
|
||||
appendLine()
|
||||
}
|
||||
}
|
||||
|
||||
private fun StringBuilder.generateHideBlSection() {
|
||||
appendLine("# 隐藏BL 来自 Shamiko 脚本")
|
||||
appendLine(
|
||||
"""
|
||||
RESETPROP_BIN="/data/adb/ksu/bin/resetprop"
|
||||
|
||||
check_reset_prop() {
|
||||
local NAME=$1
|
||||
local EXPECTED=$2
|
||||
local VALUE=$("${'$'}RESETPROP_BIN" ${'$'}NAME)
|
||||
[ -z ${'$'}VALUE ] || [ ${'$'}VALUE = ${'$'}EXPECTED ] || "${'$'}RESETPROP_BIN" ${'$'}NAME ${'$'}EXPECTED
|
||||
}
|
||||
|
||||
check_missing_prop() {
|
||||
local NAME=$1
|
||||
local EXPECTED=$2
|
||||
local VALUE=$("${'$'}RESETPROP_BIN" ${'$'}NAME)
|
||||
[ -z ${'$'}VALUE ] && "${'$'}RESETPROP_BIN" ${'$'}NAME ${'$'}EXPECTED
|
||||
}
|
||||
|
||||
check_missing_match_prop() {
|
||||
local NAME=$1
|
||||
local EXPECTED=$2
|
||||
local VALUE=$("${'$'}RESETPROP_BIN" ${'$'}NAME)
|
||||
[ -z ${'$'}VALUE ] || [ ${'$'}VALUE = ${'$'}EXPECTED ] || "${'$'}RESETPROP_BIN" ${'$'}NAME ${'$'}EXPECTED
|
||||
[ -z ${'$'}VALUE ] && "${'$'}RESETPROP_BIN" ${'$'}NAME ${'$'}EXPECTED
|
||||
}
|
||||
|
||||
contains_reset_prop() {
|
||||
local NAME=$1
|
||||
local CONTAINS=$2
|
||||
local NEWVAL=$3
|
||||
case "$("${'$'}RESETPROP_BIN" ${'$'}NAME)" in
|
||||
*"${'$'}CONTAINS"*) "${'$'}RESETPROP_BIN" ${'$'}NAME ${'$'}NEWVAL ;;
|
||||
esac
|
||||
}
|
||||
""".trimIndent())
|
||||
appendLine()
|
||||
appendLine("sleep 30")
|
||||
appendLine()
|
||||
appendLine("\"${'$'}RESETPROP_BIN\" -w sys.boot_completed 0")
|
||||
|
||||
// 添加所有系统属性重置
|
||||
val systemProps = listOf(
|
||||
"ro.boot.vbmeta.invalidate_on_error" to "yes",
|
||||
"ro.boot.vbmeta.avb_version" to "1.2",
|
||||
"ro.boot.vbmeta.hash_alg" to "sha256",
|
||||
"ro.boot.vbmeta.size" to "19968",
|
||||
"ro.boot.vbmeta.device_state" to "locked",
|
||||
"ro.boot.verifiedbootstate" to "green",
|
||||
"ro.boot.flash.locked" to "1",
|
||||
"ro.boot.veritymode" to "enforcing",
|
||||
"ro.boot.warranty_bit" to "0",
|
||||
"ro.warranty_bit" to "0",
|
||||
"ro.debuggable" to "0",
|
||||
"ro.force.debuggable" to "0",
|
||||
"ro.secure" to "1",
|
||||
"ro.adb.secure" to "1",
|
||||
"ro.build.type" to "user",
|
||||
"ro.build.tags" to "release-keys",
|
||||
"ro.vendor.boot.warranty_bit" to "0",
|
||||
"ro.vendor.warranty_bit" to "0",
|
||||
"vendor.boot.vbmeta.device_state" to "locked",
|
||||
"vendor.boot.verifiedbootstate" to "green",
|
||||
"sys.oem_unlock_allowed" to "0",
|
||||
"ro.secureboot.lockstate" to "locked",
|
||||
"ro.boot.realmebootstate" to "green",
|
||||
"ro.boot.realme.lockstate" to "1",
|
||||
"ro.crypto.state" to "encrypted"
|
||||
)
|
||||
|
||||
systemProps.forEach { (prop, value) ->
|
||||
when {
|
||||
prop.startsWith("ro.boot.vbmeta") && prop.endsWith("_on_error") ->
|
||||
appendLine("check_missing_prop \"$prop\" \"$value\"")
|
||||
prop.contains("device_state") || prop.contains("verifiedbootstate") ->
|
||||
appendLine("check_missing_match_prop \"$prop\" \"$value\"")
|
||||
else ->
|
||||
appendLine("check_reset_prop \"$prop\" \"$value\"")
|
||||
}
|
||||
}
|
||||
|
||||
appendLine()
|
||||
appendLine("# Hide adb debugging traces")
|
||||
appendLine("resetprop \"sys.usb.adb.disabled\" \" \"")
|
||||
appendLine()
|
||||
|
||||
appendLine("# Hide recovery boot mode")
|
||||
appendLine("contains_reset_prop \"ro.bootmode\" \"recovery\" \"unknown\"")
|
||||
appendLine("contains_reset_prop \"ro.boot.bootmode\" \"recovery\" \"unknown\"")
|
||||
appendLine("contains_reset_prop \"vendor.boot.bootmode\" \"recovery\" \"unknown\"")
|
||||
appendLine()
|
||||
|
||||
appendLine("# Hide cloudphone detection")
|
||||
appendLine("[ -n \"$(resetprop ro.kernel.qemu)\" ] && resetprop ro.kernel.qemu \"\"")
|
||||
appendLine()
|
||||
}
|
||||
|
||||
// 清理残留脚本生成
|
||||
private fun StringBuilder.generateCleanupResidueSection() {
|
||||
appendLine("# 清理工具残留文件")
|
||||
appendLine("echo \"$(get_current_time): 开始清理工具残留\" >> \"${'$'}LOG_FILE\"")
|
||||
appendLine()
|
||||
|
||||
// 定义清理函数
|
||||
appendLine("""
|
||||
cleanup_path() {
|
||||
local path="$1"
|
||||
local desc="$2"
|
||||
local current="$3"
|
||||
local total="$4"
|
||||
|
||||
if [ -n "${'$'}desc" ]; then
|
||||
echo "$(get_current_time): [${'$'}current/${'$'}total] 清理: ${'$'}path (${'$'}desc)" >> "${'$'}LOG_FILE"
|
||||
else
|
||||
echo "$(get_current_time): [${'$'}current/${'$'}total] 清理: ${'$'}path" >> "${'$'}LOG_FILE"
|
||||
fi
|
||||
|
||||
if rm -rf "${'$'}path" 2>/dev/null; then
|
||||
echo "$(get_current_time): ✓ 成功清理: ${'$'}path" >> "${'$'}LOG_FILE"
|
||||
else
|
||||
echo "$(get_current_time): ✗ 清理失败或不存在: ${'$'}path" >> "${'$'}LOG_FILE"
|
||||
fi
|
||||
}
|
||||
""".trimIndent())
|
||||
|
||||
appendLine()
|
||||
appendLine("# 开始清理各种工具残留")
|
||||
appendLine("TOTAL=33")
|
||||
appendLine()
|
||||
|
||||
val cleanupPaths = listOf(
|
||||
"/data/local/stryker/" to "Stryker残留",
|
||||
"/data/system/AppRetention" to "AppRetention残留",
|
||||
"/data/local/tmp/luckys" to "Luck Tool残留",
|
||||
"/data/local/tmp/HyperCeiler" to "西米露残留",
|
||||
"/data/local/tmp/simpleHook" to "simple Hook残留",
|
||||
"/data/local/tmp/DisabledAllGoogleServices" to "谷歌省电模块残留",
|
||||
"/data/local/MIO" to "解包软件",
|
||||
"/data/DNA" to "解包软件",
|
||||
"/data/local/tmp/cleaner_starter" to "质感清理残留",
|
||||
"/data/local/tmp/byyang" to "",
|
||||
"/data/local/tmp/mount_mask" to "",
|
||||
"/data/local/tmp/mount_mark" to "",
|
||||
"/data/local/tmp/scriptTMP" to "",
|
||||
"/data/local/luckys" to "",
|
||||
"/data/local/tmp/horae_control.log" to "",
|
||||
"/data/gpu_freq_table.conf" to "",
|
||||
"/storage/emulated/0/Download/advanced/" to "",
|
||||
"/storage/emulated/0/Documents/advanced/" to "爱玩机",
|
||||
"/storage/emulated/0/Android/naki/" to "旧版asoulopt",
|
||||
"/data/swap_config.conf" to "scene附加模块2",
|
||||
"/data/local/tmp/resetprop" to "",
|
||||
"/dev/cpuset/AppOpt/" to "AppOpt模块",
|
||||
"/storage/emulated/0/Android/Clash/" to "Clash for Magisk模块",
|
||||
"/storage/emulated/0/Android/Yume-Yunyun/" to "网易云后台优化模块",
|
||||
"/data/local/tmp/Surfing_update" to "Surfing模块缓存",
|
||||
"/data/encore/custom_default_cpu_gov" to "encore模块",
|
||||
"/data/encore/default_cpu_gov" to "encore模块",
|
||||
"/data/local/tmp/yshell" to "",
|
||||
"/data/local/tmp/encore_logo.png" to "",
|
||||
"/storage/emulated/legacy/" to "",
|
||||
"/storage/emulated/elgg/" to "",
|
||||
"/data/system/junge/" to "",
|
||||
"/data/local/tmp/mount_namespace" to "挂载命名空间残留"
|
||||
)
|
||||
|
||||
cleanupPaths.forEachIndexed { index, (path, desc) ->
|
||||
val current = index + 1
|
||||
appendLine("cleanup_path '$path' '$desc' $current \$TOTAL")
|
||||
}
|
||||
|
||||
appendLine()
|
||||
appendLine("echo \"$(get_current_time): 工具残留清理完成\" >> \"${'$'}LOG_FILE\"")
|
||||
appendLine()
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成post-fs-data.sh脚本内容
|
||||
*/
|
||||
private fun generatePostFsDataScript(config: SuSFSManager.ModuleConfig): String {
|
||||
return buildString {
|
||||
appendLine("#!/system/bin/sh")
|
||||
appendLine("# SuSFS Post-FS-Data Script")
|
||||
appendLine("# 在文件系统挂载后但在系统完全启动前执行")
|
||||
appendLine()
|
||||
appendLine(generateLogSetup("susfs_post_fs_data.log"))
|
||||
appendLine()
|
||||
appendLine(generateBinaryCheck(config.targetPath))
|
||||
appendLine()
|
||||
appendLine("echo \"$(get_current_time): Post-FS-Data脚本开始执行\" >> \"${'$'}LOG_FILE\"")
|
||||
appendLine()
|
||||
|
||||
// 设置uname和构建时间 - 只有在选择在post-fs-data中执行时才执行
|
||||
if (config.executeInPostFsData && (config.unameValue != DEFAULT_UNAME || config.buildTimeValue != DEFAULT_BUILD_TIME)) {
|
||||
appendLine("# 设置uname和构建时间")
|
||||
appendLine("\"${'$'}SUSFS_BIN\" set_uname '${config.unameValue}' '${config.buildTimeValue}'")
|
||||
appendLine("echo \"$(get_current_time): 设置uname为: ${config.unameValue}, 构建时间为: ${config.buildTimeValue}\" >> \"${'$'}LOG_FILE\"")
|
||||
appendLine()
|
||||
}
|
||||
|
||||
generateUmountZygoteIsoServiceSection(config.umountForZygoteIsoService, config.support158)
|
||||
|
||||
appendLine("echo \"$(get_current_time): Post-FS-Data脚本执行完成\" >> \"${'$'}LOG_FILE\"")
|
||||
}
|
||||
}
|
||||
|
||||
// 添加新的生成方法
|
||||
private fun StringBuilder.generateUmountZygoteIsoServiceSection(umountForZygoteIsoService: Boolean, support158: Boolean) {
|
||||
if (support158) {
|
||||
appendLine("# 设置Zygote隔离服务卸载状态")
|
||||
val umountValue = if (umountForZygoteIsoService) 1 else 0
|
||||
appendLine("\"${'$'}SUSFS_BIN\" umount_for_zygote_iso_service $umountValue")
|
||||
appendLine("echo \"$(get_current_time): Zygote隔离服务卸载设置为: ${if (umountForZygoteIsoService) "启用" else "禁用"}\" >> \"${'$'}LOG_FILE\"")
|
||||
appendLine()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成post-mount.sh脚本内容
|
||||
*/
|
||||
private fun generatePostMountScript(config: SuSFSManager.ModuleConfig): String {
|
||||
return buildString {
|
||||
appendLine("#!/system/bin/sh")
|
||||
appendLine("# SuSFS Post-Mount Script")
|
||||
appendLine("# 在所有分区挂载完成后执行")
|
||||
appendLine()
|
||||
appendLine(generateLogSetup("susfs_post_mount.log"))
|
||||
appendLine()
|
||||
appendLine("echo \"$(get_current_time): Post-Mount脚本开始执行\" >> \"${'$'}LOG_FILE\"")
|
||||
appendLine()
|
||||
appendLine(generateBinaryCheck(config.targetPath))
|
||||
appendLine()
|
||||
|
||||
// 添加SUS挂载
|
||||
if (config.susMounts.isNotEmpty()) {
|
||||
appendLine("# 添加SUS挂载")
|
||||
config.susMounts.forEach { mount ->
|
||||
appendLine("\"${'$'}SUSFS_BIN\" add_sus_mount '$mount'")
|
||||
appendLine("echo \"$(get_current_time): 添加SUS挂载: $mount\" >> \"${'$'}LOG_FILE\"")
|
||||
}
|
||||
appendLine()
|
||||
}
|
||||
|
||||
// 添加尝试卸载
|
||||
if (config.tryUmounts.isNotEmpty()) {
|
||||
appendLine("# 添加尝试卸载")
|
||||
config.tryUmounts.forEach { umount ->
|
||||
val parts = umount.split("|")
|
||||
if (parts.size == 2) {
|
||||
val path = parts[0]
|
||||
val mode = parts[1]
|
||||
appendLine("\"${'$'}SUSFS_BIN\" add_try_umount '$path' $mode")
|
||||
appendLine("echo \"$(get_current_time): 添加尝试卸载: $path (模式: $mode)\" >> \"${'$'}LOG_FILE\"")
|
||||
}
|
||||
}
|
||||
appendLine()
|
||||
}
|
||||
|
||||
appendLine("echo \"$(get_current_time): Post-Mount脚本执行完成\" >> \"${'$'}LOG_FILE\"")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成boot-completed.sh脚本内容
|
||||
*/
|
||||
@SuppressLint("SdCardPath")
|
||||
private fun generateBootCompletedScript(config: SuSFSManager.ModuleConfig): String {
|
||||
return buildString {
|
||||
appendLine("#!/system/bin/sh")
|
||||
appendLine("# SuSFS Boot-Completed Script")
|
||||
appendLine("# 在系统完全启动后执行")
|
||||
appendLine()
|
||||
appendLine(generateLogSetup("susfs_boot_completed.log"))
|
||||
appendLine()
|
||||
appendLine("echo \"$(get_current_time): Boot-Completed脚本开始执行\" >> \"${'$'}LOG_FILE\"")
|
||||
appendLine()
|
||||
appendLine(generateBinaryCheck(config.targetPath))
|
||||
appendLine()
|
||||
|
||||
// 仅在支持隐藏挂载功能时执行相关配置
|
||||
if (config.support158) {
|
||||
// SUS挂载隐藏控制
|
||||
val hideValue = if (config.hideSusMountsForAllProcs) 1 else 0
|
||||
appendLine("# 设置SUS挂载隐藏控制")
|
||||
appendLine("\"${'$'}SUSFS_BIN\" hide_sus_mnts_for_all_procs $hideValue")
|
||||
appendLine("echo \"$(get_current_time): SUS挂载隐藏控制设置为: ${if (config.hideSusMountsForAllProcs) "对所有进程隐藏" else "仅对非KSU进程隐藏"}\" >> \"${'$'}LOG_FILE\"")
|
||||
appendLine()
|
||||
|
||||
// 路径设置和SUS路径设置
|
||||
if (config.susPaths.isNotEmpty()) {
|
||||
generatePathSettingSection(config.androidDataPath, config.sdcardPath)
|
||||
appendLine()
|
||||
appendLine("until [ -d \"/sdcard/Android\" ]; do sleep 1; done")
|
||||
appendLine("sleep 45")
|
||||
appendLine()
|
||||
generateSusPathsSection(config.susPaths)
|
||||
}
|
||||
}
|
||||
|
||||
appendLine("echo \"$(get_current_time): Boot-Completed脚本执行完成\" >> \"${'$'}LOG_FILE\"")
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("SdCardPath")
|
||||
private fun StringBuilder.generatePathSettingSection(androidDataPath: String, sdcardPath: String) {
|
||||
appendLine("# 路径配置")
|
||||
appendLine("# 设置Android Data路径")
|
||||
appendLine("until [ -d \"/sdcard/Android\" ]; do sleep 1; done")
|
||||
appendLine("\"${'$'}SUSFS_BIN\" set_android_data_root_path '$androidDataPath'")
|
||||
appendLine("echo \"$(get_current_time): Android Data路径设置为: $androidDataPath\" >> \"${'$'}LOG_FILE\"")
|
||||
appendLine()
|
||||
appendLine("# 设置SD卡路径")
|
||||
appendLine("\"${'$'}SUSFS_BIN\" set_sdcard_root_path '$sdcardPath'")
|
||||
appendLine("echo \"$(get_current_time): SD卡路径设置为: $sdcardPath\" >> \"${'$'}LOG_FILE\"")
|
||||
appendLine()
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成module.prop文件内容
|
||||
*/
|
||||
fun generateModuleProp(moduleId: String): String {
|
||||
val moduleVersion = "v1.0.2"
|
||||
val moduleVersionCode = "1002"
|
||||
|
||||
return """
|
||||
id=$moduleId
|
||||
name=SuSFS Manager
|
||||
version=$moduleVersion
|
||||
versionCode=$moduleVersionCode
|
||||
author=ShirkNeko
|
||||
description=SuSFS Manager Auto Configuration Module (自动生成请不要手动卸载或删除该模块! / Automatically generated Please do not manually uninstall or delete the module!)
|
||||
updateJson=
|
||||
""".trimIndent()
|
||||
}
|
||||
}
|
||||
@@ -37,6 +37,7 @@ class HomeViewModel : ViewModel() {
|
||||
data class SystemStatus(
|
||||
val isManager: Boolean = false,
|
||||
val ksuVersion: Int? = null,
|
||||
val ksuFullVersion : String? = null,
|
||||
val lkmMode: Boolean? = null,
|
||||
val kernelVersion: KernelVersion = getKernelVersion(),
|
||||
val isRootAvailable: Boolean = false,
|
||||
@@ -76,6 +77,8 @@ class HomeViewModel : ViewModel() {
|
||||
|
||||
var isSimpleMode by mutableStateOf(false)
|
||||
private set
|
||||
var isKernelSimpleMode by mutableStateOf(false)
|
||||
private set
|
||||
var isHideVersion by mutableStateOf(false)
|
||||
private set
|
||||
var isHideOtherInfo by mutableStateOf(false)
|
||||
@@ -91,6 +94,7 @@ class HomeViewModel : ViewModel() {
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
val prefs = context.getSharedPreferences("settings", Context.MODE_PRIVATE)
|
||||
isSimpleMode = prefs.getBoolean("is_simple_mode", false)
|
||||
isKernelSimpleMode = prefs.getBoolean("is_kernel_simple_mode", false)
|
||||
isHideVersion = prefs.getBoolean("is_hide_version", false)
|
||||
isHideOtherInfo = prefs.getBoolean("is_hide_other_info", false)
|
||||
isHideSusfsStatus = prefs.getBoolean("is_hide_susfs_status", false)
|
||||
@@ -167,6 +171,25 @@ class HomeViewModel : ViewModel() {
|
||||
val kernelVersion = getKernelVersion()
|
||||
val isManager = Natives.becomeManager(ksuApp.packageName)
|
||||
val ksuVersion = if (isManager) Natives.version else null
|
||||
val fullVersion = Natives.getFullVersion()
|
||||
val ksuFullVersion = if (isKernelSimpleMode) {
|
||||
val startIndex = fullVersion.indexOf('v')
|
||||
if (startIndex >= 0) {
|
||||
val endIndex = fullVersion.indexOf('-', startIndex)
|
||||
val versionStr = if (endIndex > startIndex) {
|
||||
fullVersion.substring(startIndex, endIndex)
|
||||
} else {
|
||||
fullVersion.substring(startIndex)
|
||||
}
|
||||
val numericVersion = "v" + (Regex("""\d+(\.\d+)*""").find(versionStr)?.value ?: versionStr)
|
||||
numericVersion
|
||||
} else {
|
||||
fullVersion
|
||||
}
|
||||
} else {
|
||||
fullVersion
|
||||
}
|
||||
|
||||
val lkmMode = ksuVersion?.let {
|
||||
if (it >= Natives.MINIMAL_SUPPORTED_KERNEL_LKM && kernelVersion.isGKI()) Natives.isLkmMode else null
|
||||
}
|
||||
@@ -174,6 +197,7 @@ class HomeViewModel : ViewModel() {
|
||||
systemStatus = SystemStatus(
|
||||
isManager = isManager,
|
||||
ksuVersion = ksuVersion,
|
||||
ksuFullVersion = ksuFullVersion,
|
||||
lkmMode = lkmMode,
|
||||
kernelVersion = kernelVersion,
|
||||
isRootAvailable = rootAvailable(),
|
||||
@@ -239,7 +263,7 @@ class HomeViewModel : ViewModel() {
|
||||
private fun getDeviceInfo(): String {
|
||||
var manufacturer =
|
||||
Build.MANUFACTURER[0].uppercaseChar().toString() + Build.MANUFACTURER.substring(1)
|
||||
if (Build.BRAND != Build.MANUFACTURER) {
|
||||
if (!Build.BRAND.equals(Build.MANUFACTURER, ignoreCase = true)) {
|
||||
manufacturer += " " + Build.BRAND[0].uppercaseChar() + Build.BRAND.substring(1)
|
||||
}
|
||||
manufacturer += " " + Build.MODEL + " "
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.sukisu.ultra.ui.viewmodel
|
||||
|
||||
import android.content.Context
|
||||
import android.os.SystemClock
|
||||
import android.util.Log
|
||||
import androidx.compose.runtime.derivedStateOf
|
||||
@@ -17,9 +18,15 @@ import com.sukisu.ultra.ui.util.listModules
|
||||
import kotlinx.coroutines.withContext
|
||||
import org.json.JSONArray
|
||||
import org.json.JSONObject
|
||||
import java.io.BufferedReader
|
||||
import java.io.InputStreamReader
|
||||
import java.text.Collator
|
||||
import java.text.DecimalFormat
|
||||
import java.util.Locale
|
||||
import java.util.concurrent.TimeUnit
|
||||
import kotlin.math.log10
|
||||
import kotlin.math.pow
|
||||
import androidx.core.content.edit
|
||||
|
||||
/**
|
||||
* @author ShirkNeko
|
||||
@@ -33,6 +40,38 @@ class ModuleViewModel : ViewModel() {
|
||||
private const val CUSTOM_USER_AGENT = "SukiSU-Ultra/2.0"
|
||||
}
|
||||
|
||||
// 模块大小缓存管理器
|
||||
private lateinit var moduleSizeCache: ModuleSizeCache
|
||||
|
||||
fun initializeCache(context: Context) {
|
||||
if (!::moduleSizeCache.isInitialized) {
|
||||
moduleSizeCache = ModuleSizeCache(context)
|
||||
}
|
||||
}
|
||||
|
||||
fun getModuleSize(dirId: String): String {
|
||||
if (!::moduleSizeCache.isInitialized) {
|
||||
return "0 KB"
|
||||
}
|
||||
val size = moduleSizeCache.getModuleSize(dirId)
|
||||
return formatFileSize(size)
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新所有模块的大小缓存
|
||||
* 只在安装、卸载、更新模块后调用
|
||||
*/
|
||||
fun refreshModuleSizeCache() {
|
||||
if (!::moduleSizeCache.isInitialized) return
|
||||
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
Log.d(TAG, "开始刷新模块大小缓存")
|
||||
val currentModules = modules.map { it.dirId }
|
||||
moduleSizeCache.refreshCache(currentModules)
|
||||
Log.d(TAG, "模块大小缓存刷新完成")
|
||||
}
|
||||
}
|
||||
|
||||
class ModuleInfo(
|
||||
val id: String,
|
||||
val name: String,
|
||||
@@ -75,6 +114,8 @@ class ModuleViewModel : ViewModel() {
|
||||
|
||||
fun markNeedRefresh() {
|
||||
isNeedRefresh = true
|
||||
// 标记需要刷新时,同时刷新大小缓存
|
||||
refreshModuleSizeCache()
|
||||
}
|
||||
|
||||
fun fetchModuleList() {
|
||||
@@ -144,6 +185,13 @@ class ModuleViewModel : ViewModel() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 首次加载模块列表时,初始化缓存
|
||||
if (::moduleSizeCache.isInitialized) {
|
||||
val currentModules = modules.map { it.dirId }
|
||||
moduleSizeCache.initializeCacheIfNeeded(currentModules)
|
||||
}
|
||||
|
||||
isNeedRefresh = false
|
||||
}.onFailure { e ->
|
||||
Log.e(TAG, "fetchModuleList: ", e)
|
||||
@@ -220,4 +268,172 @@ class ModuleViewModel : ViewModel() {
|
||||
|
||||
return Triple(zipUrl, version, changelog)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 模块大小缓存管理器
|
||||
*/
|
||||
class ModuleSizeCache(context: Context) {
|
||||
companion object {
|
||||
private const val TAG = "ModuleSizeCache"
|
||||
private const val CACHE_PREFS_NAME = "module_size_cache"
|
||||
private const val CACHE_VERSION_KEY = "cache_version"
|
||||
private const val CACHE_INITIALIZED_KEY = "cache_initialized"
|
||||
private const val CURRENT_CACHE_VERSION = 1
|
||||
}
|
||||
|
||||
private val cachePrefs = context.getSharedPreferences(CACHE_PREFS_NAME, Context.MODE_PRIVATE)
|
||||
private val sizeCache = mutableMapOf<String, Long>()
|
||||
|
||||
init {
|
||||
loadCacheFromPrefs()
|
||||
}
|
||||
|
||||
/**
|
||||
* 从SharedPreferences加载缓存
|
||||
*/
|
||||
private fun loadCacheFromPrefs() {
|
||||
try {
|
||||
val cacheVersion = cachePrefs.getInt(CACHE_VERSION_KEY, 0)
|
||||
if (cacheVersion != CURRENT_CACHE_VERSION) {
|
||||
Log.d(TAG, "缓存版本不匹配,清空缓存")
|
||||
clearCache()
|
||||
return
|
||||
}
|
||||
|
||||
val allEntries = cachePrefs.all
|
||||
for ((key, value) in allEntries) {
|
||||
if (key != CACHE_VERSION_KEY && key != CACHE_INITIALIZED_KEY && value is Long) {
|
||||
sizeCache[key] = value
|
||||
}
|
||||
}
|
||||
Log.d(TAG, "从缓存加载了 ${sizeCache.size} 个模块大小数据")
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "加载缓存失败", e)
|
||||
clearCache()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存缓存到SharedPreferences
|
||||
*/
|
||||
private fun saveCacheToPrefs() {
|
||||
try {
|
||||
cachePrefs.edit {
|
||||
putInt(CACHE_VERSION_KEY, CURRENT_CACHE_VERSION)
|
||||
putBoolean(CACHE_INITIALIZED_KEY, true)
|
||||
|
||||
for ((dirId, size) in sizeCache) {
|
||||
putLong(dirId, size)
|
||||
}
|
||||
|
||||
}
|
||||
Log.d(TAG, "保存了 ${sizeCache.size} 个模块大小到缓存")
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "保存缓存失败", e)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取模块大小(从缓存)
|
||||
*/
|
||||
fun getModuleSize(dirId: String): Long {
|
||||
return sizeCache[dirId] ?: 0L
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查缓存是否已初始化,如果没有则初始化
|
||||
*/
|
||||
fun initializeCacheIfNeeded(currentModules: List<String>) {
|
||||
val isInitialized = cachePrefs.getBoolean(CACHE_INITIALIZED_KEY, false)
|
||||
if (!isInitialized || sizeCache.isEmpty()) {
|
||||
Log.d(TAG, "首次初始化缓存,计算所有模块大小")
|
||||
refreshCache(currentModules)
|
||||
} else {
|
||||
// 检查是否有新模块需要计算大小
|
||||
val newModules = currentModules.filter { !sizeCache.containsKey(it) }
|
||||
if (newModules.isNotEmpty()) {
|
||||
Log.d(TAG, "发现 ${newModules.size} 个新模块,计算大小: $newModules")
|
||||
for (dirId in newModules) {
|
||||
val size = calculateModuleFolderSize(dirId)
|
||||
sizeCache[dirId] = size
|
||||
Log.d(TAG, "新模块 $dirId 大小: ${formatFileSize(size)}")
|
||||
}
|
||||
saveCacheToPrefs()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新所有模块的大小缓存
|
||||
*/
|
||||
fun refreshCache(currentModules: List<String>) {
|
||||
try {
|
||||
// 清理不存在的模块缓存
|
||||
val toRemove = sizeCache.keys.filter { it !in currentModules }
|
||||
toRemove.forEach { sizeCache.remove(it) }
|
||||
|
||||
if (toRemove.isNotEmpty()) {
|
||||
Log.d(TAG, "清理了 ${toRemove.size} 个不存在的模块缓存: $toRemove")
|
||||
}
|
||||
|
||||
// 计算所有当前模块的大小
|
||||
for (dirId in currentModules) {
|
||||
val size = calculateModuleFolderSize(dirId)
|
||||
sizeCache[dirId] = size
|
||||
Log.d(TAG, "更新模块 $dirId 大小: ${formatFileSize(size)}")
|
||||
}
|
||||
|
||||
// 保存到持久化存储
|
||||
saveCacheToPrefs()
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "刷新缓存失败", e)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空所有缓存
|
||||
*/
|
||||
private fun clearCache() {
|
||||
sizeCache.clear()
|
||||
cachePrefs.edit { clear() }
|
||||
Log.d(TAG, "清空所有缓存")
|
||||
}
|
||||
|
||||
/**
|
||||
* 实际计算模块文件夹大小
|
||||
*/
|
||||
private fun calculateModuleFolderSize(dirId: String): Long {
|
||||
return try {
|
||||
val process = Runtime.getRuntime().exec(arrayOf("su", "-c", "du -sb /data/adb/modules/$dirId"))
|
||||
val reader = BufferedReader(InputStreamReader(process.inputStream))
|
||||
val output = reader.readLine()
|
||||
process.waitFor()
|
||||
reader.close()
|
||||
|
||||
if (output != null) {
|
||||
val sizeStr = output.split("\t").firstOrNull()
|
||||
sizeStr?.toLongOrNull() ?: 0L
|
||||
} else {
|
||||
0L
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "计算模块大小失败 $dirId: ${e.message}")
|
||||
0L
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化文件大小的工具函数
|
||||
*/
|
||||
fun formatFileSize(bytes: Long): String {
|
||||
if (bytes <= 0) return "0 KB"
|
||||
|
||||
val units = arrayOf("B", "KB", "MB", "GB", "TB")
|
||||
val digitGroups = (log10(bytes.toDouble()) / log10(1024.0)).toInt()
|
||||
|
||||
return DecimalFormat("#,##0.#").format(
|
||||
bytes / 1024.0.pow(digitGroups.toDouble())
|
||||
) + " " + units[digitGroups]
|
||||
}
|
||||
@@ -1,32 +1,72 @@
|
||||
package com.sukisu.ultra.ui.viewmodel
|
||||
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import android.content.pm.ApplicationInfo
|
||||
import android.content.pm.PackageInfo
|
||||
import android.os.Parcelable
|
||||
import android.os.SystemClock
|
||||
import android.util.Log
|
||||
import android.widget.Toast
|
||||
import androidx.compose.runtime.derivedStateOf
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableFloatStateOf
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.lifecycle.ViewModel
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.awaitAll
|
||||
import kotlinx.coroutines.supervisorScope
|
||||
import kotlinx.coroutines.sync.Mutex
|
||||
import kotlinx.coroutines.sync.withLock
|
||||
import kotlinx.parcelize.Parcelize
|
||||
import com.sukisu.ultra.Natives
|
||||
import com.sukisu.ultra.ksuApp
|
||||
import com.sukisu.ultra.ui.util.HanziToPinyin
|
||||
import java.text.Collator
|
||||
import java.util.*
|
||||
import java.util.concurrent.ThreadPoolExecutor
|
||||
import java.util.concurrent.TimeUnit
|
||||
import java.util.concurrent.LinkedBlockingQueue
|
||||
import com.dergoogler.mmrl.platform.Platform
|
||||
import com.dergoogler.mmrl.platform.TIMEOUT_MILLIS
|
||||
import com.sukisu.ultra.ui.webui.getInstalledPackagesAll
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.withTimeoutOrNull
|
||||
import androidx.core.content.edit
|
||||
import kotlinx.coroutines.asCoroutineDispatcher
|
||||
|
||||
// 应用分类
|
||||
enum class AppCategory(val displayNameRes: Int, val persistKey: String) {
|
||||
ALL(com.sukisu.ultra.R.string.category_all_apps, "ALL"),
|
||||
ROOT(com.sukisu.ultra.R.string.category_root_apps, "ROOT"),
|
||||
CUSTOM(com.sukisu.ultra.R.string.category_custom_apps, "CUSTOM"),
|
||||
DEFAULT(com.sukisu.ultra.R.string.category_default_apps, "DEFAULT");
|
||||
|
||||
companion object {
|
||||
fun fromPersistKey(key: String): AppCategory {
|
||||
return entries.find { it.persistKey == key } ?: ALL
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 排序方式
|
||||
enum class SortType(val displayNameRes: Int, val persistKey: String) {
|
||||
NAME_ASC(com.sukisu.ultra.R.string.sort_name_asc, "NAME_ASC"),
|
||||
NAME_DESC(com.sukisu.ultra.R.string.sort_name_desc, "NAME_DESC"),
|
||||
INSTALL_TIME_NEW(com.sukisu.ultra.R.string.sort_install_time_new, "INSTALL_TIME_NEW"),
|
||||
INSTALL_TIME_OLD(com.sukisu.ultra.R.string.sort_install_time_old, "INSTALL_TIME_OLD"),
|
||||
SIZE_DESC(com.sukisu.ultra.R.string.sort_size_desc, "SIZE_DESC"),
|
||||
SIZE_ASC(com.sukisu.ultra.R.string.sort_size_asc, "SIZE_ASC"),
|
||||
USAGE_FREQ(com.sukisu.ultra.R.string.sort_usage_freq, "USAGE_FREQ");
|
||||
|
||||
companion object {
|
||||
fun fromPersistKey(key: String): SortType {
|
||||
return entries.find { it.persistKey == key } ?: NAME_ASC
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @author ShirkNeko
|
||||
@@ -34,9 +74,18 @@ import androidx.core.content.edit
|
||||
*/
|
||||
class SuperUserViewModel : ViewModel() {
|
||||
val isPlatformAlive get() = Platform.isAlive
|
||||
|
||||
companion object {
|
||||
private const val TAG = "SuperUserViewModel"
|
||||
var apps by mutableStateOf<List<AppInfo>>(emptyList())
|
||||
private const val PREFS_NAME = "settings"
|
||||
private const val KEY_SHOW_SYSTEM_APPS = "show_system_apps"
|
||||
private const val KEY_SELECTED_CATEGORY = "selected_category"
|
||||
private const val KEY_CURRENT_SORT_TYPE = "current_sort_type"
|
||||
private const val CORE_POOL_SIZE = 4
|
||||
private const val MAX_POOL_SIZE = 8
|
||||
private const val KEEP_ALIVE_TIME = 60L
|
||||
private const val BATCH_SIZE = 20
|
||||
}
|
||||
|
||||
@Parcelize
|
||||
@@ -64,10 +113,35 @@ class SuperUserViewModel : ViewModel() {
|
||||
}
|
||||
}
|
||||
}
|
||||
private val prefs = ksuApp.getSharedPreferences("settings", Context.MODE_PRIVATE)!!
|
||||
|
||||
private val appProcessingThreadPool = ThreadPoolExecutor(
|
||||
CORE_POOL_SIZE,
|
||||
MAX_POOL_SIZE,
|
||||
KEEP_ALIVE_TIME,
|
||||
TimeUnit.SECONDS,
|
||||
LinkedBlockingQueue()
|
||||
) { runnable ->
|
||||
Thread(runnable, "AppProcessing-${System.currentTimeMillis()}").apply {
|
||||
isDaemon = true
|
||||
priority = Thread.NORM_PRIORITY
|
||||
}
|
||||
}.asCoroutineDispatcher()
|
||||
|
||||
private val appListMutex = Mutex()
|
||||
|
||||
private val configChangeListeners = mutableSetOf<(String) -> Unit>()
|
||||
|
||||
private val prefs: SharedPreferences = ksuApp.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
|
||||
|
||||
var search by mutableStateOf("")
|
||||
var showSystemApps by mutableStateOf(prefs.getBoolean("show_system_apps", false))
|
||||
|
||||
var showSystemApps by mutableStateOf(loadShowSystemApps())
|
||||
private set
|
||||
|
||||
var selectedCategory by mutableStateOf(loadSelectedCategory())
|
||||
private set
|
||||
|
||||
var currentSortType by mutableStateOf(loadCurrentSortType())
|
||||
private set
|
||||
var isRefreshing by mutableStateOf(false)
|
||||
private set
|
||||
@@ -78,9 +152,87 @@ class SuperUserViewModel : ViewModel() {
|
||||
var selectedApps by mutableStateOf<Set<String>>(emptySet())
|
||||
internal set
|
||||
|
||||
// 加载进度状态
|
||||
var loadingProgress by mutableFloatStateOf(0f)
|
||||
private set
|
||||
var loadingMessage by mutableStateOf("")
|
||||
private set
|
||||
|
||||
/**
|
||||
* 从SharedPreferences加载显示系统应用设置
|
||||
*/
|
||||
private fun loadShowSystemApps(): Boolean {
|
||||
return prefs.getBoolean(KEY_SHOW_SYSTEM_APPS, false)
|
||||
}
|
||||
|
||||
/**
|
||||
* 从SharedPreferences加载选择的应用分类
|
||||
*/
|
||||
private fun loadSelectedCategory(): AppCategory {
|
||||
val categoryKey = prefs.getString(KEY_SELECTED_CATEGORY, AppCategory.ALL.persistKey) ?: AppCategory.ALL.persistKey
|
||||
return AppCategory.fromPersistKey(categoryKey)
|
||||
}
|
||||
|
||||
/**
|
||||
* 从SharedPreferences加载当前排序方式
|
||||
*/
|
||||
private fun loadCurrentSortType(): SortType {
|
||||
val sortKey = prefs.getString(KEY_CURRENT_SORT_TYPE, SortType.NAME_ASC.persistKey) ?: SortType.NAME_ASC.persistKey
|
||||
return SortType.fromPersistKey(sortKey)
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新显示系统应用设置并保存到SharedPreferences
|
||||
*/
|
||||
fun updateShowSystemApps(newValue: Boolean) {
|
||||
showSystemApps = newValue
|
||||
prefs.edit { putBoolean("show_system_apps", newValue) }
|
||||
saveShowSystemApps(newValue)
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新选择的应用分类并保存到SharedPreferences
|
||||
*/
|
||||
fun updateSelectedCategory(newCategory: AppCategory) {
|
||||
selectedCategory = newCategory
|
||||
saveSelectedCategory(newCategory)
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新当前排序方式并保存到SharedPreferences
|
||||
*/
|
||||
fun updateCurrentSortType(newSortType: SortType) {
|
||||
currentSortType = newSortType
|
||||
saveCurrentSortType(newSortType)
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存显示系统应用设置到SharedPreferences
|
||||
*/
|
||||
private fun saveShowSystemApps(value: Boolean) {
|
||||
prefs.edit {
|
||||
putBoolean(KEY_SHOW_SYSTEM_APPS, value)
|
||||
}
|
||||
Log.d(TAG, "Saved show system apps: $value")
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存选择的应用分类到SharedPreferences
|
||||
*/
|
||||
private fun saveSelectedCategory(category: AppCategory) {
|
||||
prefs.edit {
|
||||
putString(KEY_SELECTED_CATEGORY, category.persistKey)
|
||||
}
|
||||
Log.d(TAG, "Saved selected category: ${category.persistKey}")
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存当前排序方式到SharedPreferences
|
||||
*/
|
||||
private fun saveCurrentSortType(sortType: SortType) {
|
||||
prefs.edit {
|
||||
putString(KEY_CURRENT_SORT_TYPE, sortType.persistKey)
|
||||
}
|
||||
Log.d(TAG, "Saved current sort type: ${sortType.persistKey}")
|
||||
}
|
||||
|
||||
private val sortedList by derivedStateOf {
|
||||
@@ -138,19 +290,14 @@ class SuperUserViewModel : ViewModel() {
|
||||
val profile = Natives.getAppProfile(packageName, it.uid)
|
||||
val updatedProfile = profile.copy(allowSu = allowSu)
|
||||
if (Natives.setAppProfile(updatedProfile)) {
|
||||
apps = apps.map { app ->
|
||||
if (app.packageName == packageName) {
|
||||
app.copy(profile = updatedProfile)
|
||||
} else {
|
||||
app
|
||||
}
|
||||
}
|
||||
updateAppProfileLocally(packageName, updatedProfile)
|
||||
notifyConfigChange(packageName)
|
||||
}
|
||||
}
|
||||
}
|
||||
clearSelection()
|
||||
showBatchActions = false // 批量操作完成后退出批量模式
|
||||
fetchAppList() // 刷新列表以显示最新状态
|
||||
showBatchActions = false
|
||||
refreshAppConfigurations()
|
||||
}
|
||||
|
||||
// 批量更新权限和umount模块设置
|
||||
@@ -165,6 +312,21 @@ class SuperUserViewModel : ViewModel() {
|
||||
nonRootUseDefault = false
|
||||
)
|
||||
if (Natives.setAppProfile(updatedProfile)) {
|
||||
updateAppProfileLocally(packageName, updatedProfile)
|
||||
notifyConfigChange(packageName)
|
||||
}
|
||||
}
|
||||
}
|
||||
clearSelection()
|
||||
showBatchActions = false
|
||||
refreshAppConfigurations()
|
||||
}
|
||||
|
||||
// 更新本地应用配置
|
||||
fun updateAppProfileLocally(packageName: String, updatedProfile: Natives.Profile) {
|
||||
appListMutex.tryLock().let { locked ->
|
||||
if (locked) {
|
||||
try {
|
||||
apps = apps.map { app ->
|
||||
if (app.packageName == packageName) {
|
||||
app.copy(profile = updatedProfile)
|
||||
@@ -172,27 +334,67 @@ class SuperUserViewModel : ViewModel() {
|
||||
app
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
appListMutex.unlock()
|
||||
}
|
||||
}
|
||||
}
|
||||
clearSelection()
|
||||
showBatchActions = false // 批量操作完成后退出批量模式
|
||||
fetchAppList() // 刷新列表以显示最新状态
|
||||
}
|
||||
|
||||
// 更新本地应用配置
|
||||
fun updateAppProfileLocally(packageName: String, updatedProfile: Natives.Profile) {
|
||||
apps = apps.map { app ->
|
||||
if (app.packageName == packageName) {
|
||||
app.copy(profile = updatedProfile)
|
||||
} else {
|
||||
app
|
||||
private fun notifyConfigChange(packageName: String) {
|
||||
configChangeListeners.forEach { listener ->
|
||||
try {
|
||||
listener(packageName)
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "Error notifying config change for $packageName", e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新应用配置状态
|
||||
*/
|
||||
suspend fun refreshAppConfigurations() {
|
||||
withContext(appProcessingThreadPool) {
|
||||
supervisorScope {
|
||||
val currentApps = apps.toList()
|
||||
val batches = currentApps.chunked(BATCH_SIZE)
|
||||
|
||||
loadingProgress = 0f
|
||||
|
||||
val updatedApps = batches.mapIndexed { batchIndex, batch ->
|
||||
async {
|
||||
val batchResult = batch.map { app ->
|
||||
try {
|
||||
val updatedProfile = Natives.getAppProfile(app.packageName, app.uid)
|
||||
app.copy(profile = updatedProfile)
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "Error refreshing profile for ${app.packageName}", e)
|
||||
app
|
||||
}
|
||||
}
|
||||
|
||||
val progress = (batchIndex + 1).toFloat() / batches.size
|
||||
loadingProgress = progress
|
||||
|
||||
batchResult
|
||||
}
|
||||
}.awaitAll().flatten()
|
||||
|
||||
appListMutex.withLock {
|
||||
apps = updatedApps
|
||||
}
|
||||
|
||||
loadingProgress = 1f
|
||||
|
||||
Log.i(TAG, "Refreshed configurations for ${updatedApps.size} apps")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun fetchAppList() {
|
||||
isRefreshing = true
|
||||
loadingProgress = 0f
|
||||
|
||||
withContext(Dispatchers.IO) {
|
||||
withTimeoutOrNull(TIMEOUT_MILLIS) {
|
||||
@@ -203,21 +405,87 @@ class SuperUserViewModel : ViewModel() {
|
||||
val pm = ksuApp.packageManager
|
||||
val start = SystemClock.elapsedRealtime()
|
||||
|
||||
val packages = Platform.getInstalledPackagesAll {
|
||||
Log.e(TAG, "getInstalledPackagesAll:", it)
|
||||
Toast.makeText(ksuApp, "Something went wrong, check logs", Toast.LENGTH_SHORT).show()
|
||||
try {
|
||||
val packages = Platform.getInstalledPackagesAll {
|
||||
Log.e(TAG, "getInstalledPackagesAll:", it)
|
||||
}
|
||||
|
||||
loadingProgress = 0.3f
|
||||
|
||||
val filteredPackages = packages.filter { it.packageName != ksuApp.packageName }
|
||||
|
||||
withContext(appProcessingThreadPool) {
|
||||
supervisorScope {
|
||||
val batches = filteredPackages.chunked(BATCH_SIZE)
|
||||
|
||||
val processedApps = batches.mapIndexed { batchIndex, batch ->
|
||||
async {
|
||||
val batchResult = batch.mapNotNull { packageInfo ->
|
||||
try {
|
||||
val appInfo = packageInfo.applicationInfo!!
|
||||
val uid = appInfo.uid
|
||||
|
||||
val labelDeferred = async {
|
||||
appInfo.loadLabel(pm).toString()
|
||||
}
|
||||
val profileDeferred = async {
|
||||
Natives.getAppProfile(packageInfo.packageName, uid)
|
||||
}
|
||||
|
||||
val label = labelDeferred.await()
|
||||
val profile = profileDeferred.await()
|
||||
|
||||
AppInfo(
|
||||
label = label,
|
||||
packageInfo = packageInfo,
|
||||
profile = profile,
|
||||
)
|
||||
} catch (e: Exception) {
|
||||
Log.e(
|
||||
TAG,
|
||||
"Error processing app ${packageInfo.packageName}",
|
||||
e
|
||||
)
|
||||
null
|
||||
}
|
||||
}
|
||||
|
||||
val progress = 0.3f + (batchIndex + 1).toFloat() / batches.size * 0.6f
|
||||
loadingProgress = progress
|
||||
|
||||
batchResult
|
||||
}
|
||||
}.awaitAll().flatten()
|
||||
|
||||
appListMutex.withLock {
|
||||
apps = processedApps
|
||||
}
|
||||
|
||||
loadingProgress = 1f
|
||||
|
||||
val elapsed = SystemClock.elapsedRealtime() - start
|
||||
Log.i(TAG, "Loaded ${processedApps.size} apps in ${elapsed}ms using concurrent processing")
|
||||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "Error fetching app list", e)
|
||||
} finally {
|
||||
isRefreshing = false
|
||||
loadingProgress = 0f
|
||||
loadingMessage = ""
|
||||
}
|
||||
apps = packages.map {
|
||||
val appInfo = it.applicationInfo
|
||||
val uid = appInfo!!.uid
|
||||
val profile = Natives.getAppProfile(it.packageName, uid)
|
||||
AppInfo(
|
||||
label = appInfo.loadLabel(pm).toString(),
|
||||
packageInfo = it,
|
||||
profile = profile,
|
||||
)
|
||||
}.filter { it.packageName != ksuApp.packageName }
|
||||
Log.i(TAG, "load cost: ${SystemClock.elapsedRealtime() - start}")
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 清理资源
|
||||
*/
|
||||
override fun onCleared() {
|
||||
super.onCleared()
|
||||
try {
|
||||
appProcessingThreadPool.close()
|
||||
configChangeListeners.clear()
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "Error cleaning up resources", e)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
package zako.zako.zako.zakoui.screen
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.res.Configuration
|
||||
@@ -61,7 +60,6 @@ import com.ramcosta.composedestinations.annotation.Destination
|
||||
import com.ramcosta.composedestinations.annotation.RootGraph
|
||||
import com.sukisu.ultra.Natives
|
||||
import com.sukisu.ultra.R
|
||||
import com.sukisu.ultra.ui.MainActivity
|
||||
import com.sukisu.ultra.ui.component.ImageEditorDialog
|
||||
import com.sukisu.ultra.ui.component.KsuIsValid
|
||||
import com.sukisu.ultra.ui.theme.CardConfig.cardElevation
|
||||
@@ -234,6 +232,21 @@ fun MoreSettingsScreen(
|
||||
mutableStateOf(prefs.getBoolean("is_hide_link_card", false))
|
||||
}
|
||||
|
||||
// 隐藏标签行开关状态
|
||||
var isHideTagRow by remember {
|
||||
mutableStateOf(prefs.getBoolean("is_hide_tag_row", false))
|
||||
}
|
||||
|
||||
// 内核版本简洁模式开关状态
|
||||
var isKernelSimpleMode by remember {
|
||||
mutableStateOf(prefs.getBoolean("is_kernel_simple_mode", false))
|
||||
}
|
||||
|
||||
// 显示更多模块信息开关状态
|
||||
var showMoreModuleInfo by remember {
|
||||
mutableStateOf(prefs.getBoolean("show_more_module_info", false))
|
||||
}
|
||||
|
||||
// SELinux状态
|
||||
var selinuxEnabled by remember {
|
||||
mutableStateOf(Shell.cmd("getenforce").exec().out.firstOrNull() == "Enforcing")
|
||||
@@ -286,6 +299,12 @@ fun MoreSettingsScreen(
|
||||
isSimpleMode = newValue
|
||||
}
|
||||
|
||||
// 内核版本简洁模式开关状态
|
||||
val onKernelSimpleModeChange = { newValue: Boolean ->
|
||||
prefs.edit { putBoolean("is_kernel_simple_mode", newValue) }
|
||||
isKernelSimpleMode = newValue
|
||||
}
|
||||
|
||||
// 隐藏内核版本号开关状态
|
||||
val onHideVersionChange = { newValue: Boolean ->
|
||||
prefs.edit { putBoolean("is_hide_version", newValue) }
|
||||
@@ -316,6 +335,18 @@ fun MoreSettingsScreen(
|
||||
isHideLinkCard = newValue
|
||||
}
|
||||
|
||||
// 隐藏标签行开关状态
|
||||
val onHideTagRowChange = { newValue: Boolean ->
|
||||
prefs.edit { putBoolean("is_hide_tag_row", newValue) }
|
||||
isHideTagRow = newValue
|
||||
}
|
||||
|
||||
// 显示更多模块信息开关状态
|
||||
val onShowMoreModuleInfoChange = { newValue: Boolean ->
|
||||
prefs.edit { putBoolean("show_more_module_info", newValue) }
|
||||
showMoreModuleInfo = newValue
|
||||
}
|
||||
|
||||
// 备用图标开关状态
|
||||
val onUseAltIconChange = { newValue: Boolean ->
|
||||
prefs.edit { putBoolean("use_alt_icon", newValue) }
|
||||
@@ -1026,6 +1057,15 @@ fun MoreSettingsScreen(
|
||||
onChange = onUseAltIconChange
|
||||
)
|
||||
|
||||
// 显示更多模块信息开关
|
||||
SwitchSettingItem(
|
||||
icon = Icons.Filled.Info,
|
||||
title = stringResource(R.string.show_more_module_info),
|
||||
summary = stringResource(R.string.show_more_module_info_summary),
|
||||
checked = showMoreModuleInfo,
|
||||
onChange = onShowMoreModuleInfoChange
|
||||
)
|
||||
|
||||
// 添加简洁模式开关
|
||||
SwitchSettingItem(
|
||||
icon = Icons.Filled.Brush,
|
||||
@@ -1035,6 +1075,14 @@ fun MoreSettingsScreen(
|
||||
onChange = onSimpleModeChange
|
||||
)
|
||||
|
||||
SwitchSettingItem(
|
||||
icon = Icons.Filled.Brush,
|
||||
title = stringResource(R.string.kernel_simple_kernel),
|
||||
summary = stringResource(R.string.kernel_simple_kernel_summary),
|
||||
checked = isKernelSimpleMode,
|
||||
onChange = onKernelSimpleModeChange
|
||||
)
|
||||
|
||||
// 隐藏内核部分版本号
|
||||
SwitchSettingItem(
|
||||
icon = Icons.Filled.VisibilityOff,
|
||||
@@ -1081,14 +1129,22 @@ fun MoreSettingsScreen(
|
||||
checked = isHideLinkCard,
|
||||
onChange = onHideLinkCardChange
|
||||
)
|
||||
}
|
||||
|
||||
// 高级设置
|
||||
SettingsCard(
|
||||
title = stringResource(R.string.advanced_settings)
|
||||
) {
|
||||
// SELinux 开关
|
||||
KsuIsValid {
|
||||
// 隐藏标签行
|
||||
SwitchSettingItem(
|
||||
icon = Icons.Filled.VisibilityOff,
|
||||
title = stringResource(R.string.hide_tag_card),
|
||||
summary = stringResource(R.string.hide_tag_card_summary),
|
||||
checked = isHideTagRow,
|
||||
onChange = onHideTagRowChange
|
||||
)
|
||||
}
|
||||
KsuIsValid {
|
||||
// 高级设置
|
||||
SettingsCard(
|
||||
title = stringResource(R.string.advanced_settings)
|
||||
) {
|
||||
// SELinux 开关
|
||||
SwitchSettingItem(
|
||||
icon = Icons.Filled.Security,
|
||||
title = stringResource(R.string.selinux),
|
||||
@@ -1119,57 +1175,57 @@ fun MoreSettingsScreen(
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
// SuSFS 配置(仅在支持时显示)
|
||||
val suSFS = getSuSFS()
|
||||
val isSUS_SU = getSuSFSFeatures()
|
||||
if (suSFS == "Supported" && isSUS_SU == "CONFIG_KSU_SUSFS_SUS_SU") {
|
||||
// 默认启用
|
||||
var isEnabled by rememberSaveable {
|
||||
mutableStateOf(true)
|
||||
}
|
||||
|
||||
// 在启动时检查状态
|
||||
LaunchedEffect(Unit) {
|
||||
// 如果当前模式不是2就强制启用
|
||||
val currentMode = susfsSUS_SU_Mode()
|
||||
val wasManuallyDisabled = prefs.getBoolean("enable_sus_su", true)
|
||||
if (currentMode != "2" && wasManuallyDisabled) {
|
||||
susfsSUS_SU_2() // 强制切换到模式2
|
||||
prefs.edit { putBoolean("enable_sus_su", true) }
|
||||
// SuSFS 开关(仅在支持时显示)
|
||||
val suSFS = getSuSFS()
|
||||
val isSUS_SU = getSuSFSFeatures()
|
||||
if (suSFS == "Supported" && isSUS_SU == "CONFIG_KSU_SUSFS_SUS_SU") {
|
||||
// 默认启用
|
||||
var isEnabled by rememberSaveable {
|
||||
mutableStateOf(true)
|
||||
}
|
||||
isEnabled = currentMode == "2"
|
||||
}
|
||||
|
||||
SwitchSettingItem(
|
||||
icon = Icons.Filled.Security,
|
||||
title = stringResource(id = R.string.settings_susfs_toggle),
|
||||
summary = stringResource(id = R.string.settings_susfs_toggle_summary),
|
||||
checked = isEnabled,
|
||||
onChange = {
|
||||
if (it) {
|
||||
// 手动启用
|
||||
susfsSUS_SU_2()
|
||||
// 在启动时检查状态
|
||||
LaunchedEffect(Unit) {
|
||||
// 如果当前模式不是2就强制启用
|
||||
val currentMode = susfsSUS_SU_Mode()
|
||||
val wasManuallyDisabled = prefs.getBoolean("enable_sus_su", true)
|
||||
if (currentMode != "2" && wasManuallyDisabled) {
|
||||
susfsSUS_SU_2() // 强制切换到模式2
|
||||
prefs.edit { putBoolean("enable_sus_su", true) }
|
||||
Toast.makeText(
|
||||
context,
|
||||
context.getString(R.string.susfs_enabled),
|
||||
Toast.LENGTH_SHORT
|
||||
).show()
|
||||
} else {
|
||||
// 手动关闭
|
||||
susfsSUS_SU_0()
|
||||
prefs.edit { putBoolean("enable_sus_su", false) }
|
||||
Toast.makeText(
|
||||
context,
|
||||
context.getString(R.string.susfs_disabled),
|
||||
Toast.LENGTH_SHORT
|
||||
).show()
|
||||
}
|
||||
isEnabled = it
|
||||
isEnabled = currentMode == "2"
|
||||
}
|
||||
)
|
||||
|
||||
SwitchSettingItem(
|
||||
icon = Icons.Filled.Security,
|
||||
title = stringResource(id = R.string.settings_susfs_toggle),
|
||||
summary = stringResource(id = R.string.settings_susfs_toggle_summary),
|
||||
checked = isEnabled,
|
||||
onChange = {
|
||||
if (it) {
|
||||
// 手动启用
|
||||
susfsSUS_SU_2()
|
||||
prefs.edit { putBoolean("enable_sus_su", true) }
|
||||
Toast.makeText(
|
||||
context,
|
||||
context.getString(R.string.susfs_enabled),
|
||||
Toast.LENGTH_SHORT
|
||||
).show()
|
||||
} else {
|
||||
// 手动关闭
|
||||
susfsSUS_SU_0()
|
||||
prefs.edit { putBoolean("enable_sus_su", false) }
|
||||
Toast.makeText(
|
||||
context,
|
||||
context.getString(R.string.susfs_disabled),
|
||||
Toast.LENGTH_SHORT
|
||||
).show()
|
||||
}
|
||||
isEnabled = it
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1258,8 +1314,8 @@ fun SettingItem(
|
||||
Text(
|
||||
text = title,
|
||||
style = MaterialTheme.typography.titleMedium,
|
||||
maxLines = 1,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
maxLines = Int.MAX_VALUE,
|
||||
overflow = TextOverflow.Visible
|
||||
)
|
||||
if (subtitle != null) {
|
||||
Spacer(modifier = Modifier.height(2.dp))
|
||||
@@ -1267,8 +1323,8 @@ fun SettingItem(
|
||||
text = subtitle,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
maxLines = 2,
|
||||
overflow = TextOverflow.Ellipsis
|
||||
maxLines = Int.MAX_VALUE,
|
||||
overflow = TextOverflow.Visible
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
BIN
manager/app/src/main/jniLibs/armeabi-v7a/libzakoboot.so
Normal file
BIN
manager/app/src/main/jniLibs/armeabi-v7a/libzakoboot.so
Normal file
Binary file not shown.
BIN
manager/app/src/main/jniLibs/x86_64/libzakoboot.so
Normal file
BIN
manager/app/src/main/jniLibs/x86_64/libzakoboot.so
Normal file
Binary file not shown.
42
manager/app/src/main/res/drawable/package_import.xml
Normal file
42
manager/app/src/main/res/drawable/package_import.xml
Normal file
@@ -0,0 +1,42 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M12,21l-8,-4.5v-9l8,-4.5l8,4.5v4.5"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2"
|
||||
android:strokeColor="#ffff"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M12,12l8,-4.5"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2"
|
||||
android:strokeColor="#ffff"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M12,12v9"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2"
|
||||
android:strokeColor="#ffff"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M12,12l-8,-4.5"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2"
|
||||
android:strokeColor="#ffff"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M22,18h-7"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2"
|
||||
android:strokeColor="#ffff"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M18,15l-3,3l3,3"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2"
|
||||
android:strokeColor="#ffff"
|
||||
android:strokeLineCap="round"/>
|
||||
</vector>
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">غير مثبت</string>
|
||||
<string name="home_click_to_install">إضغط للتثبيت</string>
|
||||
<string name="home_working">يعمل</string>
|
||||
<string name="home_working_version">الإصدار: %d</string>
|
||||
<string name="home_superuser_count">مستخدمين الجذر: %d</string>
|
||||
<string name="home_module_count">الإضافات: %d</string>
|
||||
<string name="home_working_version">الإصدار: %s</string>
|
||||
<string name="home_unsupported">غير مدعوم</string>
|
||||
<string name="home_unsupported_reason">KernelSU يدعم GKI kernels فقط</string>
|
||||
<string name="home_kernel">إصدار النواة</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">إصدار SuSFS</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">إصدار المدير</string>
|
||||
<string name="home_fingerprint">البصمة</string>
|
||||
<string name="home_selinux_status">وضع SELinux</string>
|
||||
<string name="selinux_status_disabled">معطل</string>
|
||||
<string name="selinux_status_enforcing">مفروض</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">فرز (الإجراء أولاً)</string>
|
||||
<string name="module_sort_enabled_first">فرز (الممكن أولاً)</string>
|
||||
<string name="uninstall">إلغاء التثبيت</string>
|
||||
<string name="restore">إسترجاع</string>
|
||||
<string name="module_install">تثبيت الوحدة</string>
|
||||
<string name="install">تثبيت</string>
|
||||
<string name="reboot">إعادة تشغيل</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">نموذج</string>
|
||||
<string name="profile_custom">مُخصّص</string>
|
||||
<string name="profile_name">اسم الملف الشخصي</string>
|
||||
<string name="profile_namespace">تركيب مساحة الاسم</string>
|
||||
<string name="profile_namespace_inherited">موروث</string>
|
||||
<string name="profile_namespace_global">عالمي</string>
|
||||
<string name="profile_namespace_individual">فردي</string>
|
||||
<string name="profile_groups">مجموعات</string>
|
||||
<string name="profile_capabilities">القدرات</string>
|
||||
<string name="profile_selinux_context">سياق SELinux</string>
|
||||
<string name="profile_umount_modules">الغاء تحميل الإضافات</string>
|
||||
<string name="failed_to_update_app_profile">فشل تحديث ملف تعريف التطبيق لـ %s</string>
|
||||
<string name="require_kernel_version" formatted="false">إصدار KernelSU الحالي %d منخفض جدًا بحيث لا يعمل المدير بشكل صحيح. الرجاء الترقية إلى الإصدار %d أو أعلى!</string>
|
||||
<string name="require_kernel_version" formatted="false">إصدار KernelSU الحالي %s منخفض جدًا بحيث لا يعمل المدير بشكل صحيح. الرجاء الترقية إلى الإصدار %s أو أعلى!</string>
|
||||
<string name="settings_umount_modules_default">الغاء تحميل الإضافات بشكل افتراضي</string>
|
||||
<string name="settings_umount_modules_default_summary">القيمة الافتراضية العامة لـ\"إلغاء تحميل الإضافات\" في ملفات تعريف التطبيقات. إذا تم تمكينه، إزالة جميع تعديلات الإضافات على النظام للتطبيقات التي لا تحتوي على مجموعة ملف تعريف.</string>
|
||||
<string name="settings_susfs_toggle">تعطيل روابط kprobe</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">التحقق تلقائيًا من وجود تحديثات عند فتح التطبيق</string>
|
||||
<string name="grant_root_failed">فشل في منح صلاحية الجذر!</string>
|
||||
<string name="action">إجراء</string>
|
||||
<string name="open">فتح</string>
|
||||
<string name="close">إغلاق</string>
|
||||
<string name="enable_web_debugging">تمكين تصحيح أخطاء WebView</string>
|
||||
<string name="enable_web_debugging_summary">يمكن استخدامه لتصحيح أخطاء WebUI، يرجى تمكينه فقط عند الحاجة.</string>
|
||||
@@ -138,9 +127,6 @@
|
||||
<string name="selected_lkm">LKM المحددة: %s</string>
|
||||
<string name="save_log">حفظ السجلات</string>
|
||||
<string name="log_saved">السجلات محفوظة</string>
|
||||
<string name="status_supported">إدعمنا</string>
|
||||
<string name="status_not_supported">غير مدعوم</string>
|
||||
<string name="status_unknown">غير معروف</string>
|
||||
<string name="sus_su_mode">وضع SuS SU</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">تأكيد وحدة التثبيت %1$s؟</string>
|
||||
@@ -174,14 +160,11 @@
|
||||
<string name="settings_custom_background">خلفية التطبيق المخصصة</string>
|
||||
<string name="settings_custom_background_summary">حدد صورة كخلفية</string>
|
||||
<string name="settings_card_alpha">شفافية شريط التنقل</string>
|
||||
<string name="settings_restore_default">استعادة الإعدادات الافتراضية</string>
|
||||
<string name="home_android_version">إصدار Android</string>
|
||||
<string name="home_device_model">نوع الجهاز</string>
|
||||
<string name="su_not_allowed">لا يسمح بمنح المستخدم المتميز ل %s</string>
|
||||
<string name="settings_disable_su">تعطيل توافق su</string>
|
||||
<string name="settings_disable_su_summary">تعطيل أي تطبيقات مؤقتًا من الحصول على امتيازات الجذر عن طريق الأمر <unk> su (لن تتأثر عمليات الجذر الحالية).</string>
|
||||
<string name="using_mksu_manager">أنت تستخدم مدير Beta SukiSU</string>
|
||||
<string name="module_install_multiple_confirm">هل أنت متأكد من أنك تريد تثبيت وحدات %d المحددة؟</string>
|
||||
<string name="module_install_multiple_confirm_with_names">هل أنت متأكد من أنك تريد تثبيت وحدات %1$d التالية؟ \n\n%2$s</string>
|
||||
<string name="more_settings">المزيد من الإعدادات</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -212,20 +195,14 @@
|
||||
<string name="color_pink">وردي</string>
|
||||
<string name="color_gray">رمادي</string>
|
||||
<string name="color_yellow">الأصفر</string>
|
||||
<string name="flash_option">خيارات الفرشاة</string>
|
||||
<string name="flash_option_tip">حدد الملف المراد إلفاؤه</string>
|
||||
<string name="horizon_kernel">Anykernel3 yükle</string>
|
||||
<string name="horizon_kernel_summary">فلاش AnyKernel3 ملف kernel</string>
|
||||
<string name="root_required">يتطلب امتيازات الجذر</string>
|
||||
<string name="copy_failed">فشل نسخ الملف</string>
|
||||
<string name="reboot_complete_title">اكتمل التشويش</string>
|
||||
<string name="reboot_complete_msg">هل تريد إعادة التشغيل فوراً؟</string>
|
||||
<string name="yes">نعم</string>
|
||||
<string name="no">لايوجد</string>
|
||||
<string name="failed_reboot">فشل إعادة التشغيل</string>
|
||||
<string name="batch_authorization">التمكين</string>
|
||||
<string name="batch_cancel_authorization">السحب</string>
|
||||
<string name="backup">النسخ الاحتياطية</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">لا توجد وحدات نواة مثبتة في هذا الوقت</string>
|
||||
<string name="kpm_version">الإصدار</string>
|
||||
@@ -233,7 +210,6 @@
|
||||
<string name="kpm_uninstall">إلغاء التثبيت</string>
|
||||
<string name="kpm_uninstall_success">تم إلغاء التثبيت بنجاح</string>
|
||||
<string name="kpm_uninstall_failed">فشل في إلغاء التثبيت</string>
|
||||
<string name="kpm_install">تثبيت</string>
|
||||
<string name="kpm_install_success">تم تحميل وحدة كيلو جزء بنجاح</string>
|
||||
<string name="kpm_install_failed">فشل تحميل وحدة كيلو بايم</string>
|
||||
<string name="kpm_args">العوامل المتغيرة</string>
|
||||
@@ -247,8 +223,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">وستشكل سوكيسو أولترا في المستقبل فرعا مستقلا نسبيا من فروع الوحدة، ولكننا لا نزال نقدر كيرنيل سو وموكسو الرسميين وما إلى ذلك. لإسهاماتهم!</string>
|
||||
<string name="not_supported">غير مدعوم</string>
|
||||
<string name="supported">إدعمنا</string>
|
||||
<string name="home_kpm_module">"عدد وحدات KPM: %d "</string>
|
||||
<string name="kpm_invalid_file">ملف KPM غير صحيح</string>
|
||||
<string name="kernel_patched">النواة غير مصحوبة</string>
|
||||
<string name="kernel_not_enabled">لم يتم تكوين النواة</string>
|
||||
<string name="custom_settings">الإعدادات المُخصصة</string>
|
||||
@@ -256,19 +230,13 @@
|
||||
<string name="kpm_install_mode_load">التحميل</string>
|
||||
<string name="kpm_install_mode_embed">فسيفساء</string>
|
||||
<string name="kpm_install_mode_description">الرجاء التحديد: %1\$s وضع تثبيت الوحدة \n\nالتحميل: قم بتحميل الوحدة \nمؤقتا: تثبيت دائم في النظام</string>
|
||||
<string name="log_failed_to_check_module_file">فشل التحقق من وجود ملف الوحدة</string>
|
||||
<string name="snackbar_failed_to_check_module_file">غير قادر على التحقق من وجود ملف الوحدة</string>
|
||||
<string name="confirm_uninstall_title">تأكيد إلغاء التثبيت</string>
|
||||
<string name="confirm_uninstall_confirm">إلغاء التثبيت</string>
|
||||
<string name="confirm_uninstall_dismiss">إلغاء</string>
|
||||
<string name="theme_color">ألوان المظهر</string>
|
||||
<string name="invalid_file_type">نوع الملف غير صحيح! الرجاء تحديد ملف .kpm.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">إلغاء التثبيت</string>
|
||||
<string name="confirm_uninstall_content">سيتم إلغاء تثبيت KPM التالية: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">تعطيل روابط kprobe التي أنشأتها KernelSU، باستخدام الروابط الواردة بدلاً من ذلك، والتي تشبه طريقة الربط غير GKI غير GKI.</string>
|
||||
<string name="image_editor_title">ضبط صورة الخلفية</string>
|
||||
<string name="image_editor_hint">استخدم إصبعين لتكبير الصورة، وأصبع واحد لسحبها لضبط الموضع</string>
|
||||
<string name="background_image_error">تعذر تحميل الصورة</string>
|
||||
<string name="reprovision">إعادة</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">ضرب النواة</string>
|
||||
@@ -305,10 +273,6 @@
|
||||
<string name="app_settings">إعدادات التطبيق </string>
|
||||
<string name="tools">ادوات</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">إزالة</string>
|
||||
<string name="apps_with_root">التطبيقات مع امتيازات الجذر</string>
|
||||
<string name="apps_with_custom_profile">التطبيقات مع الإعدادات المخصصة</string>
|
||||
<string name="other_apps">التطبيقات ذات الإعدادات الافتراضية بدون تغيير</string>
|
||||
<string name="no_apps_found">التطبيق غير موجود</string>
|
||||
<string name="selinux_enabled_toast">تم تمكين SELinux</string>
|
||||
<string name="selinux_disabled_toast">تم تعطيل SELinux</string>
|
||||
@@ -316,8 +280,6 @@
|
||||
<string name="advanced_settings">إعدادات متقدمة</string>
|
||||
<string name="appearance_settings">تخصيص شريط الأدوات</string>
|
||||
<string name="back">عد مرة أخرى</string>
|
||||
<string name="expand">كن في طريقه كامل</string>
|
||||
<string name="collapse">وضع بعيدا</string>
|
||||
<string name="susfs_enabled">تم تمكين SuSFS</string>
|
||||
<string name="susfs_disabled">تم تعطيل SuSFS</string>
|
||||
<string name="background_set_success">تم تعيين الخلفية بنجاح</string>
|
||||
@@ -325,7 +287,6 @@
|
||||
<string name="icon_switch_title">Alternate icon</string>
|
||||
<string name="icon_switch_summary">Change the launcher icon to KernelSU\'s icon.</string>
|
||||
<string name="icon_switched">Icon switched</string>
|
||||
<string name="root_require_for_install">يتطلب امتيازات الجذر</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">عرض وظيفة KPM</string>
|
||||
<string name="show_kpm_info_summary">إخفاء معلومات KPM ووظيفتها في الشريط المنزلي والأسفل</string>
|
||||
@@ -337,7 +298,6 @@
|
||||
<string name="use_webuix_eruda">حقن Eruda في WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">حقن وحدة التصحيح في WebUI X لجعل تصحيح الأخطاء أسهل. يتطلب تصحيح أخطاء الويب لتكون قيد التشغيل.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">إعداد DPI</string>
|
||||
<string name="app_dpi_title">تم تطبيق DPI</string>
|
||||
<string name="app_dpi_summary">ضبط كثافة عرض الشاشة للتطبيق الحالي فقط</string>
|
||||
<string name="dpi_size_small">صغير </string>
|
||||
@@ -355,16 +315,6 @@
|
||||
<string name="language_follow_system">اتبع النظام</string>
|
||||
<string name="language_changed">تم تغيير اللغة، إعادة التشغيل لتطبيق التغييرات</string>
|
||||
<string name="settings_card_dim">تعديل ظلام البطاقة</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">في الأعلى</string>
|
||||
<string name="scroll_to_bottom">أسفل</string>
|
||||
<string name="scroll_to_top_description">التمرير لأعلى</string>
|
||||
<string name="scroll_to_bottom_description">التمرير إلى الأسفل</string>
|
||||
<string name="authorized">مصرح</string>
|
||||
<string name="unauthorized">غير مصرح</string>
|
||||
<string name="selected">محدد</string>
|
||||
<string name="select">خيار</string>
|
||||
<string name="profile_umount_modules_disable">تعطيل وحدة إلغاء التثبيت المخصصة</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">رمز الخطأ</string>
|
||||
<string name="check_log">يرجى التحقق من السجل</string>
|
||||
@@ -372,4 +322,51 @@
|
||||
<string name="module_failed_count">أخفق %d في تثبيت وحدة جديدة</string>
|
||||
<string name="module_download_error">فشل تحميل الوحدة</string>
|
||||
<string name="kernel_flashing">ضرب النواة</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">في الأعلى</string>
|
||||
<string name="scroll_to_bottom">أسفل</string>
|
||||
<string name="selected">محدد</string>
|
||||
<string name="select">خيار</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">Yüklənmədi</string>
|
||||
<string name="home_click_to_install">Yükləmək üçün toxunun</string>
|
||||
<string name="home_working">İşləyir</string>
|
||||
<string name="home_working_version">Versiya: %d</string>
|
||||
<string name="home_superuser_count">Super istifadəçilər: %d</string>
|
||||
<string name="home_module_count">Modullar: %d</string>
|
||||
<string name="home_working_version">Versiya: %s</string>
|
||||
<string name="home_unsupported">Dəstəklənmir</string>
|
||||
<string name="home_unsupported_reason">Hal-hazırda KernelSU yalnız GKI nüvələrini dəstəkləyir</string>
|
||||
<string name="home_kernel">Nüvə</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS Version</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">Menecer versiyası</string>
|
||||
<string name="home_fingerprint">Barmaq izi</string>
|
||||
<string name="home_selinux_status">SELinux vəziyyəti</string>
|
||||
<string name="selinux_status_disabled">Qeyri-aktiv</string>
|
||||
<string name="selinux_status_enforcing">Məcburi</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Sort (Action first)</string>
|
||||
<string name="module_sort_enabled_first">Sort (Enabled first)</string>
|
||||
<string name="uninstall">Sil</string>
|
||||
<string name="restore">Restore</string>
|
||||
<string name="module_install">Yüklə</string>
|
||||
<string name="install">Yüklə</string>
|
||||
<string name="reboot">Yenidən başlat</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">Şablon</string>
|
||||
<string name="profile_custom">Özəl</string>
|
||||
<string name="profile_name">Profil adı</string>
|
||||
<string name="profile_namespace">Bölmənin ad sahəsi</string>
|
||||
<string name="profile_namespace_inherited">Miras qalmış</string>
|
||||
<string name="profile_namespace_global">Qlobal</string>
|
||||
<string name="profile_namespace_individual">Fərdi</string>
|
||||
<string name="profile_groups">Qruplar</string>
|
||||
<string name="profile_capabilities">Bacarıqlar</string>
|
||||
<string name="profile_selinux_context">SELinux konteksi</string>
|
||||
<string name="profile_umount_modules">Modulları umount et</string>
|
||||
<string name="failed_to_update_app_profile">%s görə tətbiq profillərini güncəlləmək mümkün olmadı</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %d is too low for the manager to work properly. Please upgrade to version %d or higher!</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %s is too low for the manager to work properly. Please upgrade to version %s or higher!</string>
|
||||
<string name="settings_umount_modules_default">Defolt olaraq modulları umount et</string>
|
||||
<string name="settings_umount_modules_default_summary">Tətbiq Profillərində \"Umount modulları\" üçün qlobal standart dəyər. Aktivləşdirilərsə, o, Profil dəsti olmayan proqramlar üçün sistemdəki bütün modul dəyişikliklərini siləcək.</string>
|
||||
<string name="settings_susfs_toggle">Disable kprobe hooks</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Automatically check for updates when opening the app</string>
|
||||
<string name="grant_root_failed">Failed to grant root!</string>
|
||||
<string name="action">Action</string>
|
||||
<string name="open">Open</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="enable_web_debugging">Enable WebView debugging</string>
|
||||
<string name="enable_web_debugging_summary">Can be used to debug WebUI. Please enable only when needed.</string>
|
||||
@@ -136,9 +125,6 @@
|
||||
<string name="selected_lkm">Selected LKM: %s</string>
|
||||
<string name="save_log">Girişləri Saxla</string>
|
||||
<string name="log_saved">Logs saved</string>
|
||||
<string name="status_supported">Supported</string>
|
||||
<string name="status_not_supported">Not Supported</string>
|
||||
<string name="status_unknown">Unknown</string>
|
||||
<string name="sus_su_mode">SuS SU mode:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">confirm install module %1$s?</string>
|
||||
@@ -172,14 +158,11 @@
|
||||
<string name="settings_custom_background">Custom App Background</string>
|
||||
<string name="settings_custom_background_summary">Select an image as background</string>
|
||||
<string name="settings_card_alpha">Navigation bar transparency</string>
|
||||
<string name="settings_restore_default">Restore default</string>
|
||||
<string name="home_android_version">Android version</string>
|
||||
<string name="home_device_model">Device model</string>
|
||||
<string name="su_not_allowed">Granting superuser to %s is not allowed</string>
|
||||
<string name="settings_disable_su">Disable su compatibility</string>
|
||||
<string name="settings_disable_su_summary">Temporarily disable any applications from obtaining root privileges via the su command (existing root processes will not be affected).</string>
|
||||
<string name="using_mksu_manager">You are using the SukiSU Beta manager</string>
|
||||
<string name="module_install_multiple_confirm">Are you sure you want to install the selected %d modules?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Sure you want to install the following %1$d modules? \n\n%2$s</string>
|
||||
<string name="more_settings">More settings</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -210,20 +193,14 @@
|
||||
<string name="color_pink">Pink</string>
|
||||
<string name="color_gray">Gray</string>
|
||||
<string name="color_yellow">Yellow</string>
|
||||
<string name="flash_option">Brush Options</string>
|
||||
<string name="flash_option_tip">Select the file to be flashed</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash AnyKernel3 kernel file</string>
|
||||
<string name="root_required">Requires root privileges</string>
|
||||
<string name="copy_failed">File Copy Failure</string>
|
||||
<string name="reboot_complete_title">Scrubbing complete</string>
|
||||
<string name="reboot_complete_msg">Whether to reboot immediately?</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="failed_reboot">Reboot Failed</string>
|
||||
<string name="batch_authorization">empower</string>
|
||||
<string name="batch_cancel_authorization">withdraw</string>
|
||||
<string name="backup">Backup</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">No installed kernel modules at this time</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
@@ -231,7 +208,6 @@
|
||||
<string name="kpm_uninstall">Uninstall</string>
|
||||
<string name="kpm_uninstall_success">Uninstalled successfully</string>
|
||||
<string name="kpm_uninstall_failed">Failed to uninstall</string>
|
||||
<string name="kpm_install">Install</string>
|
||||
<string name="kpm_install_success">Load of kpm module successful</string>
|
||||
<string name="kpm_install_failed">Load of kpm module failed</string>
|
||||
<string name="kpm_args">Parameters</string>
|
||||
@@ -245,8 +221,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra will be a relatively independent branch of KSU in the future, but we still appreciate the official KernelSU and MKSU etc. for their contributions!</string>
|
||||
<string name="not_supported">Unsupported</string>
|
||||
<string name="supported">Supported</string>
|
||||
<string name="home_kpm_module">"Number of KPMs: %d "</string>
|
||||
<string name="kpm_invalid_file">Invalid KPM file</string>
|
||||
<string name="kernel_patched">Kernel not patched</string>
|
||||
<string name="kernel_not_enabled">Kernel not configured</string>
|
||||
<string name="custom_settings">Custom settings</string>
|
||||
@@ -254,19 +228,13 @@
|
||||
<string name="kpm_install_mode_load">Load</string>
|
||||
<string name="kpm_install_mode_embed">Embed</string>
|
||||
<string name="kpm_install_mode_description">Please select: %1\$s Module Installation Mode \n\nLoad: Temporarily load the module \nEmbedded: Permanently install into the system</string>
|
||||
<string name="log_failed_to_check_module_file">Failed to check module file existence</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Unable to check if module file exists</string>
|
||||
<string name="confirm_uninstall_title">Confirm uninstallation</string>
|
||||
<string name="confirm_uninstall_confirm">Uninstall</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancel</string>
|
||||
<string name="theme_color">Theme Color</string>
|
||||
<string name="invalid_file_type">Incorrect file type! Please select .kpm file.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Uninstall</string>
|
||||
<string name="confirm_uninstall_content">The following KPM will be uninstalled: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Disable kprobe hooks created by KernelSU, using inline hooks instead, which is similar to non-GKI kernel hooking method.</string>
|
||||
<string name="image_editor_title">Adjust background image</string>
|
||||
<string name="image_editor_hint">Use two fingers to zoom the image, and one finger to drag it to adjust the position</string>
|
||||
<string name="background_image_error">Could not load image</string>
|
||||
<string name="reprovision">Reprovision</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
@@ -303,10 +271,6 @@
|
||||
<string name="app_settings">Application Settings</string>
|
||||
<string name="tools">Tools</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Removals</string>
|
||||
<string name="apps_with_root">Applications with root privileges</string>
|
||||
<string name="apps_with_custom_profile">Applications with customized configurations</string>
|
||||
<string name="other_apps">Applications with unchanged defaults</string>
|
||||
<string name="no_apps_found">Application not found</string>
|
||||
<string name="selinux_enabled_toast">SELinux Enabled</string>
|
||||
<string name="selinux_disabled_toast">SELinux Disabled</string>
|
||||
@@ -314,8 +278,6 @@
|
||||
<string name="advanced_settings">Advanced Settings</string>
|
||||
<string name="appearance_settings">Customize the toolbar</string>
|
||||
<string name="back">Comeback</string>
|
||||
<string name="expand">Be in full swing</string>
|
||||
<string name="collapse">put away</string>
|
||||
<string name="susfs_enabled">SuSFS enabled</string>
|
||||
<string name="susfs_disabled">SuSFS disabled</string>
|
||||
<string name="background_set_success">Background set successfully</string>
|
||||
@@ -323,7 +285,6 @@
|
||||
<string name="icon_switch_title">Alternate icon</string>
|
||||
<string name="icon_switch_summary">Change the launcher icon to KernelSU\'s icon.</string>
|
||||
<string name="icon_switched">Icon switched</string>
|
||||
<string name="root_require_for_install">Requires root privileges</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Display KPM Function</string>
|
||||
<string name="show_kpm_info_summary">Display KPM information and Function in home and bottom bar (Need to reopen the app)</string>
|
||||
@@ -335,7 +296,6 @@
|
||||
<string name="use_webuix_eruda">Inject Eruda into WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Inject a debug console into WebUI X to make debugging easier. Requires web debugging to be on.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI setting</string>
|
||||
<string name="app_dpi_title">Applied DPI</string>
|
||||
<string name="app_dpi_summary">Adjust the screen display density for the current application only</string>
|
||||
<string name="dpi_size_small">Small </string>
|
||||
@@ -353,16 +313,6 @@
|
||||
<string name="language_follow_system">Follow System</string>
|
||||
<string name="language_changed">Language changed, restarting to apply changes</string>
|
||||
<string name="settings_card_dim">Card Darkness Adjustment</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="scroll_to_top_description">Scroll to top</string>
|
||||
<string name="scroll_to_bottom_description">Scroll to the bottom</string>
|
||||
<string name="authorized">authorized</string>
|
||||
<string name="unauthorized">unauthorized</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<string name="profile_umount_modules_disable">Disable custom uninstallation module</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">error code</string>
|
||||
<string name="check_log">Please check the log</string>
|
||||
@@ -370,4 +320,51 @@
|
||||
<string name="module_failed_count">%d Failed to install a new module</string>
|
||||
<string name="module_download_error">Module download failed</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -6,11 +6,9 @@
|
||||
<string name="module_failed_to_enable">মোডিউল ইনেবল করা যায়নি: %s</string>
|
||||
<string name="home_click_to_install">ইন্সটল করটে চাপুন</string>
|
||||
<string name="home_working">কাজ করছে</string>
|
||||
<string name="home_module_count">মোডিউল: %d</string>
|
||||
<string name="home_unsupported">অমূলক</string>
|
||||
<string name="home_kernel">কর্নেল</string>
|
||||
<string name="home_manager_version">ম্যানেজার ভারসন</string>
|
||||
<string name="home_fingerprint">ফিঙ্গারপ্রিন্ট</string>
|
||||
<string name="selinux_status_disabled">ডিসেবল</string>
|
||||
<string name="selinux_status_enforcing">এনফোর্সিং</string>
|
||||
<string name="superuser">সুপার ইউজার</string>
|
||||
@@ -21,7 +19,6 @@
|
||||
<string name="reboot">রিবুট</string>
|
||||
<string name="settings">সেটিংস</string>
|
||||
<string name="reboot_userspace">সফট রিবুট</string>
|
||||
<string name="profile_namespace_global">গ্লোবাল</string>
|
||||
<string name="profile_groups">গ্রুপস</string>
|
||||
<string name="profile_selinux_context">এসইলিনাক্স কন্টেক্সট</string>
|
||||
<string name="failed_to_update_app_profile">%s এর জন্য অ্যাপ প্রফাইল আপডেট করা যায়নি</string>
|
||||
@@ -31,11 +28,7 @@
|
||||
<string name="selinux_status_permissive">পারমিসিভ</string>
|
||||
<string name="module_failed_to_disable">মোডিউল ডিসেবল করা যায়নি: %s</string>
|
||||
<string name="module_empty">কোনো মোডিউল ইন্সটল করা নেই</string>
|
||||
<string name="home_working_version">সংস্করণ: %d</string>
|
||||
<string name="home_superuser_count">সুপার ইউজার: %d</string>
|
||||
<string name="profile_namespace">নেইম স্পেস মাউন্ট</string>
|
||||
<string name="profile_namespace_inherited">ইনহেরিটেড</string>
|
||||
<string name="profile_namespace_individual">ইন্ডিভিজুয়াল</string>
|
||||
<string name="home_working_version">সংস্করণ: %s</string>
|
||||
<string name="profile_capabilities">ক্যাপাবিলিটিস</string>
|
||||
<string name="profile_umount_modules">আনমাউন্ট মোডিউলস</string>
|
||||
<string name="reboot_recovery">রিকভারিতে বুট</string>
|
||||
|
||||
@@ -4,14 +4,11 @@
|
||||
<string name="home_not_installed">ইনস্টল করা হয়নি</string>
|
||||
<string name="home_click_to_install">ইনস্টল করার জন্য ক্লিক করুন</string>
|
||||
<string name="home_working"> ওয়ার্কিং</string>
|
||||
<string name="home_working_version">ওয়ার্কিং সংস্করণ: %d</string>
|
||||
<string name="home_superuser_count">সুপার ইউজার: %d</string>
|
||||
<string name="home_module_count">মডিউল: %d</string>
|
||||
<string name="home_working_version">ওয়ার্কিং সংস্করণ: %s</string>
|
||||
<string name="home_unsupported">অসমর্থিত</string>
|
||||
<string name="home_unsupported_reason">KernelSU শুধুমাত্র GKI কার্নেল সমর্থন করে</string>
|
||||
<string name="home_kernel">কার্নেল</string>
|
||||
<string name="home_manager_version">ম্যানেজার সংস্করণ</string>
|
||||
<string name="home_fingerprint">ফিঙ্গারপ্রিন্ট</string>
|
||||
<string name="home_selinux_status">SELinux স্টেটাস</string>
|
||||
<string name="selinux_status_disabled">ডিজেবল</string>
|
||||
<string name="selinux_status_enforcing">কার্যকর</string>
|
||||
@@ -51,15 +48,12 @@
|
||||
<string name="home_support_title">সাপোর্ট টাইটেল</string>
|
||||
<string name="home_support_content">কার্নেলএসইউ বিনামূল্যে এবং ওপেন সোর্স, এবং সবসময় থাকবে। আপনি সবসময় একটি অনুদান দিয়ে আপনার কৃতজ্ঞতা প্রদর্শন করতে পারেন.</string>
|
||||
<string name="profile_name">প্রফাইলের নাম</string>
|
||||
<string name="profile_namespace">নেমস্পেস মাউন্ট</string>
|
||||
<string name="profile_groups">গ্রুপস</string>
|
||||
<string name="profile_capabilities">যোগ্যতা</string>
|
||||
<string name="profile_selinux_context">এসই লিনাক্স কনটেক্সট</string>
|
||||
<string name="profile_default">ডিফল্ট</string>
|
||||
<string name="profile_template">টেমপ্লেট</string>
|
||||
<string name="profile_custom">কাস্টম</string>
|
||||
<string name="profile_namespace_global">গ্লোবাল</string>
|
||||
<string name="profile_namespace_individual">আলাদাভাবে</string>
|
||||
<string name="profile_umount_modules">আনমাউন্ট মোডিউল</string>
|
||||
<string name="save_log">লগ সংরক্ষণ করুন</string>
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">Nije instalirano</string>
|
||||
<string name="home_click_to_install">Kliknite da instalirate</string>
|
||||
<string name="home_working">Radi</string>
|
||||
<string name="home_working_version">Verzija: %d</string>
|
||||
<string name="home_superuser_count">Superkorisnici: %d</string>
|
||||
<string name="home_module_count">Module: %d</string>
|
||||
<string name="home_working_version">Verzija: %s</string>
|
||||
<string name="home_unsupported">Nepodržano</string>
|
||||
<string name="home_unsupported_reason">KernelSU samo podržava GKI kernele sad</string>
|
||||
<string name="home_kernel">Kernel</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS Version</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">Verzija Upravitelja</string>
|
||||
<string name="home_fingerprint">Otisak prsta</string>
|
||||
<string name="home_selinux_status">SELinux stanje</string>
|
||||
<string name="selinux_status_disabled">Isključeno</string>
|
||||
<string name="selinux_status_enforcing">U Provođenju</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Sort (Action first)</string>
|
||||
<string name="module_sort_enabled_first">Sort (Enabled first)</string>
|
||||
<string name="uninstall">Deinstalirajte</string>
|
||||
<string name="restore">Restore</string>
|
||||
<string name="module_install">Instalirajte</string>
|
||||
<string name="install">Instalirajte</string>
|
||||
<string name="reboot">Ponovo pokrenite</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">Šablon</string>
|
||||
<string name="profile_custom">Prilagođeno</string>
|
||||
<string name="profile_name">Naziv profila</string>
|
||||
<string name="profile_namespace">Imenski prostor nosača</string>
|
||||
<string name="profile_namespace_inherited">Naslijeđen</string>
|
||||
<string name="profile_namespace_global">Globalan</string>
|
||||
<string name="profile_namespace_individual">Pojedinačan</string>
|
||||
<string name="profile_groups">Grupe</string>
|
||||
<string name="profile_capabilities">Sposobnosti</string>
|
||||
<string name="profile_selinux_context">SELinux kontekst</string>
|
||||
<string name="profile_umount_modules">Umount module</string>
|
||||
<string name="failed_to_update_app_profile">Ažuriranje Profila Aplikacije za %s nije uspjelo</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %d is too low for the manager to work properly. Please upgrade to version %d or higher!</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %s is too low for the manager to work properly. Please upgrade to version %s or higher!</string>
|
||||
<string name="settings_umount_modules_default">Umount module po zadanom</string>
|
||||
<string name="settings_umount_modules_default_summary">Globalna zadana vrijednost za \"Umount module\" u Profilima Aplikacije. Ako je omogućeno, uklonit će sve izmjene modula na sistemu za aplikacije koje nemaju postavljen Profil.</string>
|
||||
<string name="settings_susfs_toggle">Disable kprobe hooks</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Automatically check for updates when opening the app</string>
|
||||
<string name="grant_root_failed">Failed to grant root!</string>
|
||||
<string name="action">Action</string>
|
||||
<string name="open">Open</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="enable_web_debugging">Enable WebView debugging</string>
|
||||
<string name="enable_web_debugging_summary">Can be used to debug WebUI. Please enable only when needed.</string>
|
||||
@@ -136,9 +125,6 @@
|
||||
<string name="selected_lkm">Selected LKM: %s</string>
|
||||
<string name="save_log">Sačuvaj Dnevnike</string>
|
||||
<string name="log_saved">Logs saved</string>
|
||||
<string name="status_supported">Supported</string>
|
||||
<string name="status_not_supported">Not Supported</string>
|
||||
<string name="status_unknown">Unknown</string>
|
||||
<string name="sus_su_mode">SuS SU mode:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">confirm install module %1$s?</string>
|
||||
@@ -172,14 +158,11 @@
|
||||
<string name="settings_custom_background">Custom App Background</string>
|
||||
<string name="settings_custom_background_summary">Select an image as background</string>
|
||||
<string name="settings_card_alpha">Navigation bar transparency</string>
|
||||
<string name="settings_restore_default">Restore default</string>
|
||||
<string name="home_android_version">Android version</string>
|
||||
<string name="home_device_model">Device model</string>
|
||||
<string name="su_not_allowed">Granting superuser to %s is not allowed</string>
|
||||
<string name="settings_disable_su">Disable su compatibility</string>
|
||||
<string name="settings_disable_su_summary">Temporarily disable any applications from obtaining root privileges via the su command (existing root processes will not be affected).</string>
|
||||
<string name="using_mksu_manager">You are using the SukiSU Beta manager</string>
|
||||
<string name="module_install_multiple_confirm">Are you sure you want to install the selected %d modules?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Sure you want to install the following %1$d modules? \n\n%2$s</string>
|
||||
<string name="more_settings">More settings</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -210,20 +193,14 @@
|
||||
<string name="color_pink">Pink</string>
|
||||
<string name="color_gray">Gray</string>
|
||||
<string name="color_yellow">Yellow</string>
|
||||
<string name="flash_option">Brush Options</string>
|
||||
<string name="flash_option_tip">Select the file to be flashed</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash AnyKernel3 kernel file</string>
|
||||
<string name="root_required">Requires root privileges</string>
|
||||
<string name="copy_failed">File Copy Failure</string>
|
||||
<string name="reboot_complete_title">Scrubbing complete</string>
|
||||
<string name="reboot_complete_msg">Whether to reboot immediately?</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="failed_reboot">Reboot Failed</string>
|
||||
<string name="batch_authorization">empower</string>
|
||||
<string name="batch_cancel_authorization">withdraw</string>
|
||||
<string name="backup">Backup</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">No installed kernel modules at this time</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
@@ -231,7 +208,6 @@
|
||||
<string name="kpm_uninstall">Uninstall</string>
|
||||
<string name="kpm_uninstall_success">Uninstalled successfully</string>
|
||||
<string name="kpm_uninstall_failed">Failed to uninstall</string>
|
||||
<string name="kpm_install">Install</string>
|
||||
<string name="kpm_install_success">Load of kpm module successful</string>
|
||||
<string name="kpm_install_failed">Load of kpm module failed</string>
|
||||
<string name="kpm_args">Parameters</string>
|
||||
@@ -245,8 +221,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra will be a relatively independent branch of KSU in the future, but we still appreciate the official KernelSU and MKSU etc. for their contributions!</string>
|
||||
<string name="not_supported">Unsupported</string>
|
||||
<string name="supported">Supported</string>
|
||||
<string name="home_kpm_module">"Number of KPMs: %d "</string>
|
||||
<string name="kpm_invalid_file">Invalid KPM file</string>
|
||||
<string name="kernel_patched">Kernel not patched</string>
|
||||
<string name="kernel_not_enabled">Kernel not configured</string>
|
||||
<string name="custom_settings">Custom settings</string>
|
||||
@@ -254,19 +228,13 @@
|
||||
<string name="kpm_install_mode_load">Load</string>
|
||||
<string name="kpm_install_mode_embed">Embed</string>
|
||||
<string name="kpm_install_mode_description">Please select: %1\$s Module Installation Mode \n\nLoad: Temporarily load the module \nEmbedded: Permanently install into the system</string>
|
||||
<string name="log_failed_to_check_module_file">Failed to check module file existence</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Unable to check if module file exists</string>
|
||||
<string name="confirm_uninstall_title">Confirm uninstallation</string>
|
||||
<string name="confirm_uninstall_confirm">Uninstall</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancel</string>
|
||||
<string name="theme_color">Theme Color</string>
|
||||
<string name="invalid_file_type">Incorrect file type! Please select .kpm file.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Uninstall</string>
|
||||
<string name="confirm_uninstall_content">The following KPM will be uninstalled: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Disable kprobe hooks created by KernelSU, using inline hooks instead, which is similar to non-GKI kernel hooking method.</string>
|
||||
<string name="image_editor_title">Adjust background image</string>
|
||||
<string name="image_editor_hint">Use two fingers to zoom the image, and one finger to drag it to adjust the position</string>
|
||||
<string name="background_image_error">Could not load image</string>
|
||||
<string name="reprovision">Reprovision</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
@@ -303,10 +271,6 @@
|
||||
<string name="app_settings">Application Settings</string>
|
||||
<string name="tools">Tools</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Removals</string>
|
||||
<string name="apps_with_root">Applications with root privileges</string>
|
||||
<string name="apps_with_custom_profile">Applications with customized configurations</string>
|
||||
<string name="other_apps">Applications with unchanged defaults</string>
|
||||
<string name="no_apps_found">Application not found</string>
|
||||
<string name="selinux_enabled_toast">SELinux Enabled</string>
|
||||
<string name="selinux_disabled_toast">SELinux Disabled</string>
|
||||
@@ -314,8 +278,6 @@
|
||||
<string name="advanced_settings">Advanced Settings</string>
|
||||
<string name="appearance_settings">Customize the toolbar</string>
|
||||
<string name="back">Comeback</string>
|
||||
<string name="expand">Be in full swing</string>
|
||||
<string name="collapse">put away</string>
|
||||
<string name="susfs_enabled">SuSFS enabled</string>
|
||||
<string name="susfs_disabled">SuSFS disabled</string>
|
||||
<string name="background_set_success">Background set successfully</string>
|
||||
@@ -323,7 +285,6 @@
|
||||
<string name="icon_switch_title">Alternate icon</string>
|
||||
<string name="icon_switch_summary">Change the launcher icon to KernelSU\'s icon.</string>
|
||||
<string name="icon_switched">Icon switched</string>
|
||||
<string name="root_require_for_install">Requires root privileges</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Display KPM Function</string>
|
||||
<string name="show_kpm_info_summary">Display KPM information and Function in home and bottom bar (Need to reopen the app)</string>
|
||||
@@ -335,7 +296,6 @@
|
||||
<string name="use_webuix_eruda">Inject Eruda into WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Inject a debug console into WebUI X to make debugging easier. Requires web debugging to be on.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI setting</string>
|
||||
<string name="app_dpi_title">Applied DPI</string>
|
||||
<string name="app_dpi_summary">Adjust the screen display density for the current application only</string>
|
||||
<string name="dpi_size_small">Small </string>
|
||||
@@ -353,16 +313,6 @@
|
||||
<string name="language_follow_system">Follow System</string>
|
||||
<string name="language_changed">Language changed, restarting to apply changes</string>
|
||||
<string name="settings_card_dim">Card Darkness Adjustment</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="scroll_to_top_description">Scroll to top</string>
|
||||
<string name="scroll_to_bottom_description">Scroll to the bottom</string>
|
||||
<string name="authorized">authorized</string>
|
||||
<string name="unauthorized">unauthorized</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<string name="profile_umount_modules_disable">Disable custom uninstallation module</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">error code</string>
|
||||
<string name="check_log">Please check the log</string>
|
||||
@@ -370,4 +320,51 @@
|
||||
<string name="module_failed_count">%d Failed to install a new module</string>
|
||||
<string name="module_download_error">Module download failed</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">Ikke installeret</string>
|
||||
<string name="home_click_to_install">Klik for at installere</string>
|
||||
<string name="home_working">Arbejder</string>
|
||||
<string name="home_working_version">Version: %d</string>
|
||||
<string name="home_superuser_count">Superbrugere: %d</string>
|
||||
<string name="home_module_count">Moduler: %d</string>
|
||||
<string name="home_working_version">Version: %s</string>
|
||||
<string name="home_unsupported">Ikke understøttet</string>
|
||||
<string name="home_unsupported_reason">KernelSU understøtter kun GKI kernels</string>
|
||||
<string name="home_kernel">Kernel</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS Version</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">Manager Version</string>
|
||||
<string name="home_fingerprint">Fingeraftryk</string>
|
||||
<string name="home_selinux_status">SELinux-status</string>
|
||||
<string name="selinux_status_disabled">Deaktiveret</string>
|
||||
<string name="selinux_status_enforcing">Håndhævende</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Sort (Action first)</string>
|
||||
<string name="module_sort_enabled_first">Sort (Enabled first)</string>
|
||||
<string name="uninstall">Afinstaller</string>
|
||||
<string name="restore">Restore</string>
|
||||
<string name="module_install">Installer</string>
|
||||
<string name="install">Installer</string>
|
||||
<string name="reboot">Genstart</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">Skabelon</string>
|
||||
<string name="profile_custom">Brugerdefineret</string>
|
||||
<string name="profile_name">Profilnavn</string>
|
||||
<string name="profile_namespace">Monter navnerum</string>
|
||||
<string name="profile_namespace_inherited">Arvet</string>
|
||||
<string name="profile_namespace_global">Global</string>
|
||||
<string name="profile_namespace_individual">Individuel</string>
|
||||
<string name="profile_groups">Grupper</string>
|
||||
<string name="profile_capabilities">Evner</string>
|
||||
<string name="profile_selinux_context">SELinux-kontext</string>
|
||||
<string name="profile_umount_modules">Afmonteret moduler</string>
|
||||
<string name="failed_to_update_app_profile">Opdatering af App Profil for %s fejlede</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %d is too low for the manager to work properly. Please upgrade to version %d or higher!</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %s is too low for the manager to work properly. Please upgrade to version %s or higher!</string>
|
||||
<string name="settings_umount_modules_default">Afmontere moduler som standard</string>
|
||||
<string name="settings_umount_modules_default_summary">Den globale standard værdi for \"Afmonter moduler\" i App Profiler. Hvis aktiveret vil den fjerne alle modulers modifikationer til system applikationerne der ikke har en sat Profil.</string>
|
||||
<string name="settings_susfs_toggle">Disable kprobe hooks</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Automatically check for updates when opening the app</string>
|
||||
<string name="grant_root_failed">Failed to grant root!</string>
|
||||
<string name="action">Action</string>
|
||||
<string name="open">Open</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="enable_web_debugging">Enable WebView debugging</string>
|
||||
<string name="enable_web_debugging_summary">Can be used to debug WebUI. Please enable only when needed.</string>
|
||||
@@ -136,9 +125,6 @@
|
||||
<string name="selected_lkm">Selected LKM: %s</string>
|
||||
<string name="save_log">Gem Logfiler</string>
|
||||
<string name="log_saved">Logs saved</string>
|
||||
<string name="status_supported">Supported</string>
|
||||
<string name="status_not_supported">Not Supported</string>
|
||||
<string name="status_unknown">Unknown</string>
|
||||
<string name="sus_su_mode">SuS SU mode:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">confirm install module %1$s?</string>
|
||||
@@ -172,14 +158,11 @@
|
||||
<string name="settings_custom_background">Custom App Background</string>
|
||||
<string name="settings_custom_background_summary">Select an image as background</string>
|
||||
<string name="settings_card_alpha">Navigation bar transparency</string>
|
||||
<string name="settings_restore_default">Restore default</string>
|
||||
<string name="home_android_version">Android version</string>
|
||||
<string name="home_device_model">Device model</string>
|
||||
<string name="su_not_allowed">Granting superuser to %s is not allowed</string>
|
||||
<string name="settings_disable_su">Disable su compatibility</string>
|
||||
<string name="settings_disable_su_summary">Temporarily disable any applications from obtaining root privileges via the su command (existing root processes will not be affected).</string>
|
||||
<string name="using_mksu_manager">You are using the SukiSU Beta manager</string>
|
||||
<string name="module_install_multiple_confirm">Are you sure you want to install the selected %d modules?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Sure you want to install the following %1$d modules? \n\n%2$s</string>
|
||||
<string name="more_settings">More settings</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -210,20 +193,14 @@
|
||||
<string name="color_pink">Pink</string>
|
||||
<string name="color_gray">Gray</string>
|
||||
<string name="color_yellow">Yellow</string>
|
||||
<string name="flash_option">Brush Options</string>
|
||||
<string name="flash_option_tip">Select the file to be flashed</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash AnyKernel3 kernel file</string>
|
||||
<string name="root_required">Requires root privileges</string>
|
||||
<string name="copy_failed">File Copy Failure</string>
|
||||
<string name="reboot_complete_title">Scrubbing complete</string>
|
||||
<string name="reboot_complete_msg">Whether to reboot immediately?</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="failed_reboot">Reboot Failed</string>
|
||||
<string name="batch_authorization">empower</string>
|
||||
<string name="batch_cancel_authorization">withdraw</string>
|
||||
<string name="backup">Backup</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">No installed kernel modules at this time</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
@@ -231,7 +208,6 @@
|
||||
<string name="kpm_uninstall">Uninstall</string>
|
||||
<string name="kpm_uninstall_success">Uninstalled successfully</string>
|
||||
<string name="kpm_uninstall_failed">Failed to uninstall</string>
|
||||
<string name="kpm_install">Install</string>
|
||||
<string name="kpm_install_success">Load of kpm module successful</string>
|
||||
<string name="kpm_install_failed">Load of kpm module failed</string>
|
||||
<string name="kpm_args">Parameters</string>
|
||||
@@ -245,8 +221,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra will be a relatively independent branch of KSU in the future, but we still appreciate the official KernelSU and MKSU etc. for their contributions!</string>
|
||||
<string name="not_supported">Unsupported</string>
|
||||
<string name="supported">Supported</string>
|
||||
<string name="home_kpm_module">"Number of KPMs: %d "</string>
|
||||
<string name="kpm_invalid_file">Invalid KPM file</string>
|
||||
<string name="kernel_patched">Kernel not patched</string>
|
||||
<string name="kernel_not_enabled">Kernel not configured</string>
|
||||
<string name="custom_settings">Custom settings</string>
|
||||
@@ -254,19 +228,13 @@
|
||||
<string name="kpm_install_mode_load">Load</string>
|
||||
<string name="kpm_install_mode_embed">Embed</string>
|
||||
<string name="kpm_install_mode_description">Please select: %1\$s Module Installation Mode \n\nLoad: Temporarily load the module \nEmbedded: Permanently install into the system</string>
|
||||
<string name="log_failed_to_check_module_file">Failed to check module file existence</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Unable to check if module file exists</string>
|
||||
<string name="confirm_uninstall_title">Confirm uninstallation</string>
|
||||
<string name="confirm_uninstall_confirm">Uninstall</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancel</string>
|
||||
<string name="theme_color">Theme Color</string>
|
||||
<string name="invalid_file_type">Incorrect file type! Please select .kpm file.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Uninstall</string>
|
||||
<string name="confirm_uninstall_content">The following KPM will be uninstalled: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Disable kprobe hooks created by KernelSU, using inline hooks instead, which is similar to non-GKI kernel hooking method.</string>
|
||||
<string name="image_editor_title">Adjust background image</string>
|
||||
<string name="image_editor_hint">Use two fingers to zoom the image, and one finger to drag it to adjust the position</string>
|
||||
<string name="background_image_error">Could not load image</string>
|
||||
<string name="reprovision">Reprovision</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
@@ -303,10 +271,6 @@
|
||||
<string name="app_settings">Application Settings</string>
|
||||
<string name="tools">Tools</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Removals</string>
|
||||
<string name="apps_with_root">Applications with root privileges</string>
|
||||
<string name="apps_with_custom_profile">Applications with customized configurations</string>
|
||||
<string name="other_apps">Applications with unchanged defaults</string>
|
||||
<string name="no_apps_found">Application not found</string>
|
||||
<string name="selinux_enabled_toast">SELinux Enabled</string>
|
||||
<string name="selinux_disabled_toast">SELinux Disabled</string>
|
||||
@@ -314,8 +278,6 @@
|
||||
<string name="advanced_settings">Advanced Settings</string>
|
||||
<string name="appearance_settings">Customize the toolbar</string>
|
||||
<string name="back">Comeback</string>
|
||||
<string name="expand">Be in full swing</string>
|
||||
<string name="collapse">put away</string>
|
||||
<string name="susfs_enabled">SuSFS enabled</string>
|
||||
<string name="susfs_disabled">SuSFS disabled</string>
|
||||
<string name="background_set_success">Background set successfully</string>
|
||||
@@ -323,7 +285,6 @@
|
||||
<string name="icon_switch_title">Alternate icon</string>
|
||||
<string name="icon_switch_summary">Change the launcher icon to KernelSU\'s icon.</string>
|
||||
<string name="icon_switched">Icon switched</string>
|
||||
<string name="root_require_for_install">Requires root privileges</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Display KPM Function</string>
|
||||
<string name="show_kpm_info_summary">Display KPM information and Function in home and bottom bar (Need to reopen the app)</string>
|
||||
@@ -335,7 +296,6 @@
|
||||
<string name="use_webuix_eruda">Inject Eruda into WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Inject a debug console into WebUI X to make debugging easier. Requires web debugging to be on.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI setting</string>
|
||||
<string name="app_dpi_title">Applied DPI</string>
|
||||
<string name="app_dpi_summary">Adjust the screen display density for the current application only</string>
|
||||
<string name="dpi_size_small">Small </string>
|
||||
@@ -353,16 +313,6 @@
|
||||
<string name="language_follow_system">Follow System</string>
|
||||
<string name="language_changed">Language changed, restarting to apply changes</string>
|
||||
<string name="settings_card_dim">Card Darkness Adjustment</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="scroll_to_top_description">Scroll to top</string>
|
||||
<string name="scroll_to_bottom_description">Scroll to the bottom</string>
|
||||
<string name="authorized">authorized</string>
|
||||
<string name="unauthorized">unauthorized</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<string name="profile_umount_modules_disable">Disable custom uninstallation module</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">error code</string>
|
||||
<string name="check_log">Please check the log</string>
|
||||
@@ -370,4 +320,51 @@
|
||||
<string name="module_failed_count">%d Failed to install a new module</string>
|
||||
<string name="module_download_error">Module download failed</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">Nicht installiert</string>
|
||||
<string name="home_click_to_install">Tippe zum Installieren</string>
|
||||
<string name="home_working">Funktioniert</string>
|
||||
<string name="home_working_version">Version: %d</string>
|
||||
<string name="home_superuser_count">Superuser: %d</string>
|
||||
<string name="home_module_count">Module: %d</string>
|
||||
<string name="home_working_version">Version: %s</string>
|
||||
<string name="home_unsupported">Nicht unterstützt</string>
|
||||
<string name="home_unsupported_reason">KernelSU unterstützt derzeit nur GKI-Kernel</string>
|
||||
<string name="home_kernel">Kernel</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS version</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">Manager-Version</string>
|
||||
<string name="home_fingerprint">Fingerabdruck</string>
|
||||
<string name="home_selinux_status">SELinux Status</string>
|
||||
<string name="selinux_status_disabled">Deaktiviert</string>
|
||||
<string name="selinux_status_enforcing">Erzwingen</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Sortiere zuerst (Aktion)</string>
|
||||
<string name="module_sort_enabled_first">Sortieren (zuerst aktiviert)</string>
|
||||
<string name="uninstall">Deinstallieren</string>
|
||||
<string name="restore">Wiederherstellen</string>
|
||||
<string name="module_install">Installieren</string>
|
||||
<string name="install">Installieren</string>
|
||||
<string name="reboot">Neustarten</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">Vorlage</string>
|
||||
<string name="profile_custom">Benutzerdefiniert</string>
|
||||
<string name="profile_name">Profilname</string>
|
||||
<string name="profile_namespace">Namespace einhängen</string>
|
||||
<string name="profile_namespace_inherited">Geerbt</string>
|
||||
<string name="profile_namespace_global">Global</string>
|
||||
<string name="profile_namespace_individual">Individuell</string>
|
||||
<string name="profile_groups">Gruppen</string>
|
||||
<string name="profile_capabilities">Fähigkeiten</string>
|
||||
<string name="profile_selinux_context">SELinux-Kontext</string>
|
||||
<string name="profile_umount_modules">Module aushängen</string>
|
||||
<string name="failed_to_update_app_profile">App-Profilaktualisierung für %s fehlgeschlagen</string>
|
||||
<string name="require_kernel_version" formatted="false">Die aktuelle KernelSU-Version %d ist zu alt für diese Manager-Version. Bitte auf Version %d oder höher aktualisieren!</string>
|
||||
<string name="require_kernel_version" formatted="false">Die aktuelle KernelSU-Version %s ist zu alt für diese Manager-Version. Bitte auf Version %s oder höher aktualisieren!</string>
|
||||
<string name="settings_umount_modules_default">Module standardmäßig aushängen</string>
|
||||
<string name="settings_umount_modules_default_summary">Globaler Standardwert für \"Module aushängen\" im App-Profil. Falls er aktiviert ist, werden alle Moduländerungen im System für alle Apps entfernt, für die kein Profil festgelegt ist.</string>
|
||||
<string name="settings_susfs_toggle">Kprobe-Hooks deaktivieren</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Prüfe automatisch auf Aktualisierungen, wenn die App geöffnet wird</string>
|
||||
<string name="grant_root_failed">Root-Zugriff konnte nicht gewährt werden!</string>
|
||||
<string name="action">Aktion</string>
|
||||
<string name="open">Öffnen</string>
|
||||
<string name="close">Schließen</string>
|
||||
<string name="enable_web_debugging">WebView-Debugging aktivieren</string>
|
||||
<string name="enable_web_debugging_summary">Kann zum Fehlerbeheben der WebUI verwendet werden, bitte nur im Notfall aktivieren.</string>
|
||||
@@ -138,9 +127,6 @@
|
||||
<string name="selected_lkm">Wähle LKM: %s</string>
|
||||
<string name="save_log">Protokolle Speichern</string>
|
||||
<string name="log_saved">Protokolle gespeichert</string>
|
||||
<string name="status_supported">Unterstützt:</string>
|
||||
<string name="status_not_supported">Nicht unterstützt</string>
|
||||
<string name="status_unknown">Unbekannt</string>
|
||||
<string name="sus_su_mode">SuS SU-Modus:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">das Installationsmodul %1$s bestätigen ?</string>
|
||||
@@ -174,14 +160,11 @@
|
||||
<string name="settings_custom_background">Eigener App-Hintergrund</string>
|
||||
<string name="settings_custom_background_summary">Wählen Sie ein Bild als Hintergrund</string>
|
||||
<string name="settings_card_alpha">Transparenz der Navigationsleiste</string>
|
||||
<string name="settings_restore_default">Standard wiederherstellen</string>
|
||||
<string name="home_android_version">Androidversion</string>
|
||||
<string name="home_device_model">Geräteausführung</string>
|
||||
<string name="su_not_allowed">Superuser %s zu erlauben ist nicht erlaubt</string>
|
||||
<string name="settings_disable_su">Su Kompatibilität deaktivieren</string>
|
||||
<string name="settings_disable_su_summary">Deaktivieren Sie temporär alle Anwendungen, die root-Privilegien über den Befehl <unk> su zu erhalten (bestehende root-Prozesse werden nicht beeinflusst).</string>
|
||||
<string name="using_mksu_manager">Sie verwenden den SukiSU Beta-Manager</string>
|
||||
<string name="module_install_multiple_confirm">Sind Sie sicher, dass Sie die ausgewählten %d -Module installieren möchten?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Möchten Sie die folgenden %1$d Module installieren? \n\n\n%2$s</string>
|
||||
<string name="more_settings">Weitere Einstellungen</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -212,20 +195,14 @@
|
||||
<string name="color_pink">Pink</string>
|
||||
<string name="color_gray">Grau</string>
|
||||
<string name="color_yellow">Gelb</string>
|
||||
<string name="flash_option">Pinseloptionen</string>
|
||||
<string name="flash_option_tip">Wählen Sie die zu flashende Datei</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash AnyKernel3 Kernel-Datei</string>
|
||||
<string name="root_required">Erfordert Root-Rechte</string>
|
||||
<string name="copy_failed">Datei-Kopierfehler</string>
|
||||
<string name="reboot_complete_title">Scrubbing abgeschlossen</string>
|
||||
<string name="reboot_complete_msg">Ob sofort neu gestartet werden soll?</string>
|
||||
<string name="yes">Ja</string>
|
||||
<string name="no">Nein</string>
|
||||
<string name="failed_reboot">Neustart fehlgeschlagen</string>
|
||||
<string name="batch_authorization">empowern</string>
|
||||
<string name="batch_cancel_authorization">abheben</string>
|
||||
<string name="backup">Sicherung</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">Keine installierten Kernelmodule</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
@@ -233,7 +210,6 @@
|
||||
<string name="kpm_uninstall">Deinstallieren</string>
|
||||
<string name="kpm_uninstall_success">Erfolgreich deinstalliert</string>
|
||||
<string name="kpm_uninstall_failed">Deinstallation fehlgeschlagen</string>
|
||||
<string name="kpm_install">Installieren</string>
|
||||
<string name="kpm_install_success">Laden des kpm Moduls erfolgreich</string>
|
||||
<string name="kpm_install_failed">Laden des kpm-Moduls fehlgeschlagen</string>
|
||||
<string name="kpm_args">Parameter</string>
|
||||
@@ -247,8 +223,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra wird in Zukunft ein relativ unabhängiger Zweig der KSU sein, aber wir schätzen immer noch die offiziellen KernelSU und MKSU usw. für ihre Beiträge!</string>
|
||||
<string name="not_supported">Nicht unterstützt</string>
|
||||
<string name="supported">Unterstützt:</string>
|
||||
<string name="home_kpm_module">"Anzahl der KPM-Module: %d "</string>
|
||||
<string name="kpm_invalid_file">Ungültige KPM-Datei</string>
|
||||
<string name="kernel_patched">Kernel nicht gepatcht</string>
|
||||
<string name="kernel_not_enabled">Kernel nicht konfiguriert</string>
|
||||
<string name="custom_settings">Eigene Einstellungen</string>
|
||||
@@ -256,19 +230,13 @@
|
||||
<string name="kpm_install_mode_load">Laden</string>
|
||||
<string name="kpm_install_mode_embed">Einbetten</string>
|
||||
<string name="kpm_install_mode_description">Bitte wählen: %1\$s Modul-Installationsmodus \n\nLaden: Das Modul \ntemporär laden: Dauerhaft in das System installieren</string>
|
||||
<string name="log_failed_to_check_module_file">Fehler beim Prüfen der Moduldatei-Existenz</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Kann nicht überprüfen, ob die Moduldatei existiert</string>
|
||||
<string name="confirm_uninstall_title">Deinstallation bestätigen.</string>
|
||||
<string name="confirm_uninstall_confirm">Deinstallieren</string>
|
||||
<string name="confirm_uninstall_dismiss">Abbrechen</string>
|
||||
<string name="theme_color">Themenfarbe</string>
|
||||
<string name="invalid_file_type">Falscher Dateityp! Bitte wählen Sie eine .kpm Datei.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Deinstallieren</string>
|
||||
<string name="confirm_uninstall_content">Folgende KPM wird deinstalliert: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Deaktiviere kprobe Hooks die von KernelSU erstellt wurden und stattdessen inline Hooks verwenden, was der Nicht-GKI-Kernel-Hooking Methode ähnlich ist.</string>
|
||||
<string name="image_editor_title">Hintergrundbild anpassen</string>
|
||||
<string name="image_editor_hint">Verwende zwei Finger um das Bild zu vergrößern und einen Finger um die Position anzupassen</string>
|
||||
<string name="background_image_error">Bild konnte nicht geladen werden</string>
|
||||
<string name="reprovision">Rückzahlung</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel-Flashen</string>
|
||||
@@ -305,10 +273,6 @@
|
||||
<string name="app_settings">Anwendungs-Einstellungen</string>
|
||||
<string name="tools">Tools</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Entfernen</string>
|
||||
<string name="apps_with_root">Anwendungen mit Root-Rechten</string>
|
||||
<string name="apps_with_custom_profile">Anwendungen mit angepassten Konfigurationen</string>
|
||||
<string name="other_apps">Anwendungen mit unveränderten Standardeinstellungen</string>
|
||||
<string name="no_apps_found">Anwendung nicht gefunden</string>
|
||||
<string name="selinux_enabled_toast">SELinux aktiviert</string>
|
||||
<string name="selinux_disabled_toast">SELinux deaktiviert</string>
|
||||
@@ -316,8 +280,6 @@
|
||||
<string name="advanced_settings">Erweiterte Einstellungen</string>
|
||||
<string name="appearance_settings">Passt die Symbolleiste an.</string>
|
||||
<string name="back">Comeback</string>
|
||||
<string name="expand">Seien Sie in vollem Gange</string>
|
||||
<string name="collapse">wegziehen</string>
|
||||
<string name="susfs_enabled">SuSFS aktiviert</string>
|
||||
<string name="susfs_disabled">SuSFS deaktiviert</string>
|
||||
<string name="background_set_success">Hintergrund erfolgreich gesetzt</string>
|
||||
@@ -325,7 +287,6 @@
|
||||
<string name="icon_switch_title">Alternatives Symbol</string>
|
||||
<string name="icon_switch_summary">Ändere das Launcher-Symbol auf das KernelSU Icon.</string>
|
||||
<string name="icon_switched">Icon gewechselt</string>
|
||||
<string name="root_require_for_install">Erfordert Root-Rechte</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">KPM-Funktion anzeigen</string>
|
||||
<string name="show_kpm_info_summary">Versteckt KPM-Informationen und Funktion in der Home- und Unterleiste</string>
|
||||
@@ -337,7 +298,6 @@
|
||||
<string name="use_webuix_eruda">Eruda in WebUI X injizieren</string>
|
||||
<string name="use_webuix_eruda_summary">Fügen Sie eine Debug-Konsole in WebUI X ein, um das Debuggen zu vereinfachen. Benötigt Debugging im WebUI X.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI-Einstellung</string>
|
||||
<string name="app_dpi_title">Angewendeter DPI</string>
|
||||
<string name="app_dpi_summary">Bildschirmanzahl nur für die aktuelle Anwendung anpassen</string>
|
||||
<string name="dpi_size_small">Klein </string>
|
||||
@@ -355,16 +315,6 @@
|
||||
<string name="language_follow_system">Folge Systemeinstellung</string>
|
||||
<string name="language_changed">Sprache geändert, Neustart um Änderungen zu übernehmen</string>
|
||||
<string name="settings_card_dim">Kartenfinsternis Anpassung</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Unten</string>
|
||||
<string name="scroll_to_top_description">Bildlauf nach oben scrollen</string>
|
||||
<string name="scroll_to_bottom_description">Scrolle zum Ende</string>
|
||||
<string name="authorized">Autorisiert</string>
|
||||
<string name="unauthorized">Unberechtigt</string>
|
||||
<string name="selected">Ausgewählt</string>
|
||||
<string name="select">variieren</string>
|
||||
<string name="profile_umount_modules_disable">Eigenes Deinstallationsmodul deaktivieren</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">fehlercode</string>
|
||||
<string name="check_log">Bitte überprüfen Sie das Log</string>
|
||||
@@ -372,4 +322,51 @@
|
||||
<string name="module_failed_count">%d Fehler bei der Installation eines neuen Moduls</string>
|
||||
<string name="module_download_error">Modul-Download fehlgeschlagen</string>
|
||||
<string name="kernel_flashing">Kernel-Flashen</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Unten</string>
|
||||
<string name="selected">Ausgewählt</string>
|
||||
<string name="select">variieren</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">No instalado</string>
|
||||
<string name="home_click_to_install">Haz clic para instalar</string>
|
||||
<string name="home_working">Funcionando</string>
|
||||
<string name="home_working_version">Versión: %d</string>
|
||||
<string name="home_superuser_count">Superusuarios: %d</string>
|
||||
<string name="home_module_count">Módulos: %d</string>
|
||||
<string name="home_working_version">Versión: %s</string>
|
||||
<string name="home_unsupported">Sin soporte</string>
|
||||
<string name="home_unsupported_reason">KernelSU solo admite kernels GKI por ahora</string>
|
||||
<string name="home_kernel">Versión del kernel</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">Versión SuSFS</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">Versión del gestor</string>
|
||||
<string name="home_fingerprint">Huella del dispositivo</string>
|
||||
<string name="home_selinux_status">Estado de SELinux</string>
|
||||
<string name="selinux_status_disabled">Desactivado</string>
|
||||
<string name="selinux_status_enforcing">Estricto</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Ordenar (Acción primero)</string>
|
||||
<string name="module_sort_enabled_first">Ordenar (Activado primero)</string>
|
||||
<string name="uninstall">Desinstalar</string>
|
||||
<string name="restore">Restaurar</string>
|
||||
<string name="module_install">Instalar</string>
|
||||
<string name="install">Instalar</string>
|
||||
<string name="reboot">Reiniciar</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">Plantilla</string>
|
||||
<string name="profile_custom">Personalizado</string>
|
||||
<string name="profile_name">Nombre de perfil</string>
|
||||
<string name="profile_namespace">Montaje del espacio de nombres</string>
|
||||
<string name="profile_namespace_inherited">Heredado</string>
|
||||
<string name="profile_namespace_global">Global</string>
|
||||
<string name="profile_namespace_individual">Individual</string>
|
||||
<string name="profile_groups">Grupos</string>
|
||||
<string name="profile_capabilities">Capacidades</string>
|
||||
<string name="profile_selinux_context">Contexto SELinux</string>
|
||||
<string name="profile_umount_modules">Desmontar módulos</string>
|
||||
<string name="failed_to_update_app_profile">Error al actualizar el perfil de la aplicación para %s</string>
|
||||
<string name="require_kernel_version" formatted="false">La versión %d actual de KernelSU es demasiado baja para que el gestor funcione correctamente. Por favor, ¡actualice a la versión %d o superior!</string>
|
||||
<string name="require_kernel_version" formatted="false">La versión %s actual de KernelSU es demasiado baja para que el gestor funcione correctamente. Por favor, ¡actualice a la versión %s o superior!</string>
|
||||
<string name="settings_umount_modules_default">Desmontar módulos por defecto</string>
|
||||
<string name="settings_umount_modules_default_summary">El valor global predeterminado para \"Umount modules\" en App Profile. Si está activado, eliminará todas las modificaciones de módulos del sistema para las apps que no tengan un perfil establecido.</string>
|
||||
<string name="settings_susfs_toggle">Desactivar kprobe hooks</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Comprobación automática de actualizaciones al abrir la aplicación</string>
|
||||
<string name="grant_root_failed">¡No se ha podido conceder el acceso root!</string>
|
||||
<string name="action">Aktion</string>
|
||||
<string name="open">Abrir</string>
|
||||
<string name="close">Cancelar</string>
|
||||
<string name="enable_web_debugging">Activar la depuración de WebView</string>
|
||||
<string name="enable_web_debugging_summary">Puede ser usado para depurar WebUI, por favor habilítalo sólo cuando sea necesario.</string>
|
||||
@@ -136,9 +125,6 @@
|
||||
<string name="selected_lkm">LKM seleccionado: %s</string>
|
||||
<string name="save_log">Guardar registros</string>
|
||||
<string name="log_saved">Registro guardado</string>
|
||||
<string name="status_supported">Apóyanos</string>
|
||||
<string name="status_not_supported">No soportado</string>
|
||||
<string name="status_unknown">Desconocido</string>
|
||||
<string name="sus_su_mode">Modo SuS SU:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">¿confirmar la instalación del módulo %1$s?</string>
|
||||
@@ -172,14 +158,11 @@
|
||||
<string name="settings_custom_background">Fondo de aplicación personalizado</string>
|
||||
<string name="settings_custom_background_summary">Seleccionar una imagen como fondo</string>
|
||||
<string name="settings_card_alpha">Transparencia de la barra de navegación</string>
|
||||
<string name="settings_restore_default">Restaurar</string>
|
||||
<string name="home_android_version">Versión de Android</string>
|
||||
<string name="home_device_model">Modelo del dispositivo</string>
|
||||
<string name="su_not_allowed">No se permite conceder superusuario a %s</string>
|
||||
<string name="settings_disable_su">Desactivar compatibilidad su</string>
|
||||
<string name="settings_disable_su_summary">Deshabilita temporalmente cualquier aplicación para obtener privilegios de root a través del comando de \"it\" (los procesos de root existentes no se verán afectados).</string>
|
||||
<string name="using_mksu_manager">Estás usando el administrador de la Beta de SukiSU</string>
|
||||
<string name="module_install_multiple_confirm">¿Está seguro que desea instalar los módulos %d seleccionados?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">¿Seguro que quieres instalar los siguientes módulos %1$d ? \n\n%2$s</string>
|
||||
<string name="more_settings">Opciones avanzadas</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -210,20 +193,14 @@
|
||||
<string name="color_pink">Rosa</string>
|
||||
<string name="color_gray">Gris</string>
|
||||
<string name="color_yellow">Amarillo</string>
|
||||
<string name="flash_option">Opciones de flash</string>
|
||||
<string name="flash_option_tip">Seleccione el archivo a flashear</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash archivo del kernel AnyKernel3</string>
|
||||
<string name="root_required">Requiere privilegios de root</string>
|
||||
<string name="copy_failed">Fallo al copiar archivo</string>
|
||||
<string name="reboot_complete_title">Desguace completo</string>
|
||||
<string name="reboot_complete_msg">¿Reiniciar inmediatamente?</string>
|
||||
<string name="yes">Si</string>
|
||||
<string name="no">No</string>
|
||||
<string name="failed_reboot">Reinicio fallido</string>
|
||||
<string name="batch_authorization">empoderar</string>
|
||||
<string name="batch_cancel_authorization">gasto</string>
|
||||
<string name="backup">Copia de seguridad</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">No hay módulos del núcleo instalados en este momento</string>
|
||||
<string name="kpm_version">Versión</string>
|
||||
@@ -231,7 +208,6 @@
|
||||
<string name="kpm_uninstall">Desinstalar</string>
|
||||
<string name="kpm_uninstall_success">Desinstalado con éxito</string>
|
||||
<string name="kpm_uninstall_failed">Error al desinstalar</string>
|
||||
<string name="kpm_install">Instalar</string>
|
||||
<string name="kpm_install_success">Carga exitosa del módulo kpm</string>
|
||||
<string name="kpm_install_failed">Error al cargar el módulo kpm</string>
|
||||
<string name="kpm_args">Parámetros</string>
|
||||
@@ -245,8 +221,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra será una rama relativamente independiente de KSU en el futuro, pero todavía apreciamos el KernelSU oficial y MKSU etc. ¡por sus contribuciones!</string>
|
||||
<string name="not_supported">Sin soporte</string>
|
||||
<string name="supported">Apoyado</string>
|
||||
<string name="home_kpm_module">"Número de módulos KPM: %d "</string>
|
||||
<string name="kpm_invalid_file">Archivo KPM inválido</string>
|
||||
<string name="kernel_patched">Kernel no parcheado</string>
|
||||
<string name="kernel_not_enabled">Kernel no configurado</string>
|
||||
<string name="custom_settings">Ajustes personalizados</string>
|
||||
@@ -254,19 +228,13 @@
|
||||
<string name="kpm_install_mode_load">Cargar</string>
|
||||
<string name="kpm_install_mode_embed">Insertar</string>
|
||||
<string name="kpm_install_mode_description">Por favor seleccione: %1\$s Modo de instalación del Módulo \n\nCarga: Cargar temporalmente el módulo \nInsertar: Instalar permanentemente en el sistema</string>
|
||||
<string name="log_failed_to_check_module_file">Error al comprobar la existencia del archivo de módulo</string>
|
||||
<string name="snackbar_failed_to_check_module_file">No se puede comprobar si el archivo de módulo existe</string>
|
||||
<string name="confirm_uninstall_title">Confirme las desinstalaciones</string>
|
||||
<string name="confirm_uninstall_confirm">Desinstalar</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancelar</string>
|
||||
<string name="theme_color">Color del tema</string>
|
||||
<string name="invalid_file_type">¡Tipo de archivo incorrecto! Por favor seleccione el archivo .kpm.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Desinstalar</string>
|
||||
<string name="confirm_uninstall_content">El siguiente KPM será desinstalado: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Deshabilita los ganchos kprobe creados por KernelSU, usando ganchos en línea en su lugar, que es similar al método de enganche del núcleo no GKI.</string>
|
||||
<string name="image_editor_title">Ajustar imagen de fondo</string>
|
||||
<string name="image_editor_hint">Usa dos dedos para acercar la imagen, y un dedo para arrastrarla para ajustar la posición</string>
|
||||
<string name="background_image_error">Imposible cargar imagen</string>
|
||||
<string name="reprovision">Reaprovisionamiento</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Parpadeo Kernel</string>
|
||||
@@ -303,10 +271,6 @@
|
||||
<string name="app_settings">Configuración de la Aplicación</string>
|
||||
<string name="tools">Herramientas</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Eliminaciones</string>
|
||||
<string name="apps_with_root">Aplicaciones con privilegios de root</string>
|
||||
<string name="apps_with_custom_profile">Aplicaciones con configuraciones personalizadas</string>
|
||||
<string name="other_apps">Aplicaciones con valores por defecto sin cambios</string>
|
||||
<string name="no_apps_found">No se ha encontrado la solicitud</string>
|
||||
<string name="selinux_enabled_toast">SELinux habilitado</string>
|
||||
<string name="selinux_disabled_toast">SELinux desactivado</string>
|
||||
@@ -314,8 +278,6 @@
|
||||
<string name="advanced_settings">Configuraciones avanzadas</string>
|
||||
<string name="appearance_settings">Personalizar la barra de herramientas.</string>
|
||||
<string name="back">Retorno</string>
|
||||
<string name="expand">Estar en pleno swing</string>
|
||||
<string name="collapse">poner</string>
|
||||
<string name="susfs_enabled">SuSFS activado</string>
|
||||
<string name="susfs_disabled">SuSFS desactivado</string>
|
||||
<string name="background_set_success">Fondo establecido correctamente</string>
|
||||
@@ -323,7 +285,6 @@
|
||||
<string name="icon_switch_title">Icono alternativo</string>
|
||||
<string name="icon_switch_summary">Cambiar el icono del lanzador al icono de KernelSU.</string>
|
||||
<string name="icon_switched">Icono cambiado</string>
|
||||
<string name="root_require_for_install">Requiere privilegios de root</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Mostrar función KPM</string>
|
||||
<string name="show_kpm_info_summary">Oculta la información y función del KPM en la barra de inicio e inferior</string>
|
||||
@@ -335,7 +296,6 @@
|
||||
<string name="use_webuix_eruda">Inyectar Eruda en WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Inyecta una consola de depuración en WebUI X para facilitar la depuración. Requiere que la depuración web esté encendida.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">Configuración DPI</string>
|
||||
<string name="app_dpi_title">DPI aplicado</string>
|
||||
<string name="app_dpi_summary">Ajustar la densidad de pantalla para la aplicación actual</string>
|
||||
<string name="dpi_size_small">Pequeño </string>
|
||||
@@ -353,16 +313,6 @@
|
||||
<string name="language_follow_system">Seguir sistema</string>
|
||||
<string name="language_changed">Idioma cambiado, reiniciando para aplicar cambios</string>
|
||||
<string name="settings_card_dim">Ajuste de oscuridad de tarjeta</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Arriba</string>
|
||||
<string name="scroll_to_bottom">Abajo</string>
|
||||
<string name="scroll_to_top_description">Ir arriba</string>
|
||||
<string name="scroll_to_bottom_description">Desplazar hacia abajo</string>
|
||||
<string name="authorized">autorizado</string>
|
||||
<string name="unauthorized">Sin Autorización</string>
|
||||
<string name="selected">Seleccionados</string>
|
||||
<string name="select">opción</string>
|
||||
<string name="profile_umount_modules_disable">Desactivar módulo personalizado de desinstalación</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">código de error</string>
|
||||
<string name="check_log">Por favor, compruebe el registro</string>
|
||||
@@ -370,4 +320,51 @@
|
||||
<string name="module_failed_count">%d falló al instalar un nuevo módulo</string>
|
||||
<string name="module_download_error">La descarga del modelo falló</string>
|
||||
<string name="kernel_flashing">Parpadeo Kernel</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Arriba</string>
|
||||
<string name="scroll_to_bottom">Abajo</string>
|
||||
<string name="selected">Seleccionados</string>
|
||||
<string name="select">opción</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">Pole paigaldatud</string>
|
||||
<string name="home_click_to_install">Klõpsa paigaldamiseks</string>
|
||||
<string name="home_working">Töötamine</string>
|
||||
<string name="home_working_version">Versioon: %d</string>
|
||||
<string name="home_superuser_count">Superkasutajaid: %d</string>
|
||||
<string name="home_module_count">Mooduleid: %d</string>
|
||||
<string name="home_working_version">Versioon: %s</string>
|
||||
<string name="home_unsupported">Mittetoetatud</string>
|
||||
<string name="home_unsupported_reason">KernelSU toetab hetkel vaid GSI tuumasid</string>
|
||||
<string name="home_kernel">Tuum</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS Version</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">Manageri versioon</string>
|
||||
<string name="home_fingerprint">Sõrmejälg</string>
|
||||
<string name="home_selinux_status">SELinuxi olek</string>
|
||||
<string name="selinux_status_disabled">Keelatud</string>
|
||||
<string name="selinux_status_enforcing">Jõustav</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Sort (Action first)</string>
|
||||
<string name="module_sort_enabled_first">Sort (Enabled first)</string>
|
||||
<string name="uninstall">Eemalda</string>
|
||||
<string name="restore">Restore</string>
|
||||
<string name="module_install">Paigalda</string>
|
||||
<string name="install">Paigalda</string>
|
||||
<string name="reboot">Taaskäivita</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">Mall</string>
|
||||
<string name="profile_custom">Kohandatud</string>
|
||||
<string name="profile_name">Profiili nimi</string>
|
||||
<string name="profile_namespace">Haagi nimeruum</string>
|
||||
<string name="profile_namespace_inherited">Päritud</string>
|
||||
<string name="profile_namespace_global">Globaalne</string>
|
||||
<string name="profile_namespace_individual">Individuaalne</string>
|
||||
<string name="profile_groups">Grupid</string>
|
||||
<string name="profile_capabilities">Võimekused</string>
|
||||
<string name="profile_selinux_context">SELinux kontekst</string>
|
||||
<string name="profile_umount_modules">Lahtihaagitud moodulid</string>
|
||||
<string name="failed_to_update_app_profile">Rakenduseprofiili uuendamine %s jaoks ebaõnnestus</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %d is too low for the manager to work properly. Please upgrade to version %d or higher!</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %s is too low for the manager to work properly. Please upgrade to version %s or higher!</string>
|
||||
<string name="settings_umount_modules_default">Haagi moodulid vaikimisi lahti</string>
|
||||
<string name="settings_umount_modules_default_summary">Globaalne vaikeväärtus \"Lahtihaagitud moodulitele\" rakenduseprofiilis. Lubamisel eemaldab see kõik moodulite süsteemimuudatused rakendustele, millel ei ole profiili määratud.</string>
|
||||
<string name="settings_susfs_toggle">Disable kprobe hooks</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Rakenduse avamisel kontrolli automaatselt uuendusi</string>
|
||||
<string name="grant_root_failed">Juurkasutaja andmine ebaõnnestus!</string>
|
||||
<string name="action">Action</string>
|
||||
<string name="open">Ava</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="enable_web_debugging">Luba WebView silumine</string>
|
||||
<string name="enable_web_debugging_summary">Saab kasutada WebUI silumiseks, palun luba ainult vajadusel.</string>
|
||||
@@ -136,9 +125,6 @@
|
||||
<string name="selected_lkm">Valitud LKM: %s</string>
|
||||
<string name="save_log">Salvesta Logid</string>
|
||||
<string name="log_saved">Logs saved</string>
|
||||
<string name="status_supported">Supported</string>
|
||||
<string name="status_not_supported">Not Supported</string>
|
||||
<string name="status_unknown">Unknown</string>
|
||||
<string name="sus_su_mode">SuS SU mode:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">confirm install module %1$s?</string>
|
||||
@@ -172,14 +158,11 @@
|
||||
<string name="settings_custom_background">Custom App Background</string>
|
||||
<string name="settings_custom_background_summary">Select an image as background</string>
|
||||
<string name="settings_card_alpha">Navigation bar transparency</string>
|
||||
<string name="settings_restore_default">Restore default</string>
|
||||
<string name="home_android_version">Android version</string>
|
||||
<string name="home_device_model">Device model</string>
|
||||
<string name="su_not_allowed">Granting superuser to %s is not allowed</string>
|
||||
<string name="settings_disable_su">Disable su compatibility</string>
|
||||
<string name="settings_disable_su_summary">Temporarily disable any applications from obtaining root privileges via the su command (existing root processes will not be affected).</string>
|
||||
<string name="using_mksu_manager">You are using the SukiSU Beta manager</string>
|
||||
<string name="module_install_multiple_confirm">Are you sure you want to install the selected %d modules?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Sure you want to install the following %1$d modules? \n\n%2$s</string>
|
||||
<string name="more_settings">More settings</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -210,20 +193,14 @@
|
||||
<string name="color_pink">Pink</string>
|
||||
<string name="color_gray">Gray</string>
|
||||
<string name="color_yellow">Yellow</string>
|
||||
<string name="flash_option">Brush Options</string>
|
||||
<string name="flash_option_tip">Select the file to be flashed</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash AnyKernel3 kernel file</string>
|
||||
<string name="root_required">Requires root privileges</string>
|
||||
<string name="copy_failed">File Copy Failure</string>
|
||||
<string name="reboot_complete_title">Scrubbing complete</string>
|
||||
<string name="reboot_complete_msg">Whether to reboot immediately?</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="failed_reboot">Reboot Failed</string>
|
||||
<string name="batch_authorization">empower</string>
|
||||
<string name="batch_cancel_authorization">withdraw</string>
|
||||
<string name="backup">Backup</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">No installed kernel modules at this time</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
@@ -231,7 +208,6 @@
|
||||
<string name="kpm_uninstall">Uninstall</string>
|
||||
<string name="kpm_uninstall_success">Uninstalled successfully</string>
|
||||
<string name="kpm_uninstall_failed">Failed to uninstall</string>
|
||||
<string name="kpm_install">Install</string>
|
||||
<string name="kpm_install_success">Load of kpm module successful</string>
|
||||
<string name="kpm_install_failed">Load of kpm module failed</string>
|
||||
<string name="kpm_args">Parameters</string>
|
||||
@@ -245,8 +221,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra will be a relatively independent branch of KSU in the future, but we still appreciate the official KernelSU and MKSU etc. for their contributions!</string>
|
||||
<string name="not_supported">Unsupported</string>
|
||||
<string name="supported">Supported</string>
|
||||
<string name="home_kpm_module">"Number of KPMs: %d "</string>
|
||||
<string name="kpm_invalid_file">Invalid KPM file</string>
|
||||
<string name="kernel_patched">Kernel not patched</string>
|
||||
<string name="kernel_not_enabled">Kernel not configured</string>
|
||||
<string name="custom_settings">Custom settings</string>
|
||||
@@ -254,19 +228,13 @@
|
||||
<string name="kpm_install_mode_load">Load</string>
|
||||
<string name="kpm_install_mode_embed">Embed</string>
|
||||
<string name="kpm_install_mode_description">Please select: %1\$s Module Installation Mode \n\nLoad: Temporarily load the module \nEmbedded: Permanently install into the system</string>
|
||||
<string name="log_failed_to_check_module_file">Failed to check module file existence</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Unable to check if module file exists</string>
|
||||
<string name="confirm_uninstall_title">Confirm uninstallation</string>
|
||||
<string name="confirm_uninstall_confirm">Uninstall</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancel</string>
|
||||
<string name="theme_color">Theme Color</string>
|
||||
<string name="invalid_file_type">Incorrect file type! Please select .kpm file.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Uninstall</string>
|
||||
<string name="confirm_uninstall_content">The following KPM will be uninstalled: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Disable kprobe hooks created by KernelSU, using inline hooks instead, which is similar to non-GKI kernel hooking method.</string>
|
||||
<string name="image_editor_title">Adjust background image</string>
|
||||
<string name="image_editor_hint">Use two fingers to zoom the image, and one finger to drag it to adjust the position</string>
|
||||
<string name="background_image_error">Could not load image</string>
|
||||
<string name="reprovision">Reprovision</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
@@ -303,10 +271,6 @@
|
||||
<string name="app_settings">Application Settings</string>
|
||||
<string name="tools">Tools</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Removals</string>
|
||||
<string name="apps_with_root">Applications with root privileges</string>
|
||||
<string name="apps_with_custom_profile">Applications with customized configurations</string>
|
||||
<string name="other_apps">Applications with unchanged defaults</string>
|
||||
<string name="no_apps_found">Application not found</string>
|
||||
<string name="selinux_enabled_toast">SELinux Enabled</string>
|
||||
<string name="selinux_disabled_toast">SELinux Disabled</string>
|
||||
@@ -314,8 +278,6 @@
|
||||
<string name="advanced_settings">Advanced Settings</string>
|
||||
<string name="appearance_settings">Customize the toolbar</string>
|
||||
<string name="back">Comeback</string>
|
||||
<string name="expand">Be in full swing</string>
|
||||
<string name="collapse">put away</string>
|
||||
<string name="susfs_enabled">SuSFS enabled</string>
|
||||
<string name="susfs_disabled">SuSFS disabled</string>
|
||||
<string name="background_set_success">Background set successfully</string>
|
||||
@@ -323,7 +285,6 @@
|
||||
<string name="icon_switch_title">Alternate icon</string>
|
||||
<string name="icon_switch_summary">Change the launcher icon to KernelSU\'s icon.</string>
|
||||
<string name="icon_switched">Icon switched</string>
|
||||
<string name="root_require_for_install">Requires root privileges</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Display KPM Function</string>
|
||||
<string name="show_kpm_info_summary">Display KPM information and Function in home and bottom bar (Need to reopen the app)</string>
|
||||
@@ -335,7 +296,6 @@
|
||||
<string name="use_webuix_eruda">Inject Eruda into WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Inject a debug console into WebUI X to make debugging easier. Requires web debugging to be on.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI setting</string>
|
||||
<string name="app_dpi_title">Applied DPI</string>
|
||||
<string name="app_dpi_summary">Adjust the screen display density for the current application only</string>
|
||||
<string name="dpi_size_small">Small </string>
|
||||
@@ -353,16 +313,6 @@
|
||||
<string name="language_follow_system">Follow System</string>
|
||||
<string name="language_changed">Language changed, restarting to apply changes</string>
|
||||
<string name="settings_card_dim">Card Darkness Adjustment</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="scroll_to_top_description">Scroll to top</string>
|
||||
<string name="scroll_to_bottom_description">Scroll to the bottom</string>
|
||||
<string name="authorized">authorized</string>
|
||||
<string name="unauthorized">unauthorized</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<string name="profile_umount_modules_disable">Disable custom uninstallation module</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">error code</string>
|
||||
<string name="check_log">Please check the log</string>
|
||||
@@ -370,4 +320,51 @@
|
||||
<string name="module_failed_count">%d Failed to install a new module</string>
|
||||
<string name="module_download_error">Module download failed</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">نصب نشده است</string>
|
||||
<string name="home_click_to_install">برای نصب ضربه بزنید</string>
|
||||
<string name="home_working">به درستی کار میکند</string>
|
||||
<string name="home_working_version">نسخه: %d</string>
|
||||
<string name="home_superuser_count">برنامه های با دسترسی روت: %d</string>
|
||||
<string name="home_module_count">ماژولها: %d</string>
|
||||
<string name="home_working_version">نسخه: %s</string>
|
||||
<string name="home_unsupported">پشتیبانی نشده</string>
|
||||
<string name="home_unsupported_reason">کرنل اس یو فقط هسته های gki را پشتیبانی میکند</string>
|
||||
<string name="home_kernel">هسته</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS Version</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">نسخه برنامه</string>
|
||||
<string name="home_fingerprint">اثرانگشت</string>
|
||||
<string name="home_selinux_status">وضعیت SELinux</string>
|
||||
<string name="selinux_status_disabled">غیرفعال</string>
|
||||
<string name="selinux_status_enforcing">قانونمند</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Sort (Action first)</string>
|
||||
<string name="module_sort_enabled_first">Sort (Enabled first)</string>
|
||||
<string name="uninstall">لغو نصب</string>
|
||||
<string name="restore">Restore</string>
|
||||
<string name="module_install">نصب</string>
|
||||
<string name="install">نصب</string>
|
||||
<string name="reboot">راه اندازی دوباره</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">قالب</string>
|
||||
<string name="profile_custom">شخصی سازی شده</string>
|
||||
<string name="profile_name">اسم پروفایل</string>
|
||||
<string name="profile_namespace">Mount namespace</string>
|
||||
<string name="profile_namespace_inherited">اثر گرفته</string>
|
||||
<string name="profile_namespace_global">گلوبال</string>
|
||||
<string name="profile_namespace_individual">تکی</string>
|
||||
<string name="profile_groups">Groups</string>
|
||||
<string name="profile_capabilities">Capabilities</string>
|
||||
<string name="profile_selinux_context">SELinux context</string>
|
||||
<string name="profile_umount_modules">جداکردن ماژول ها</string>
|
||||
<string name="failed_to_update_app_profile">Failed to update App Profile for %s</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %d is too low for the manager to work properly. Please upgrade to version %d or higher!</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %s is too low for the manager to work properly. Please upgrade to version %s or higher!</string>
|
||||
<string name="settings_umount_modules_default">Umount modules by default</string>
|
||||
<string name="settings_umount_modules_default_summary">The global default value for \"Umount modules\" in App Profile. If enabled, it will remove all module modifications to the system for apps that don\'t have a profile set.</string>
|
||||
<string name="settings_susfs_toggle">Disable kprobe hooks</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Automatically check for updates when opening the app</string>
|
||||
<string name="grant_root_failed">Failed to grant root!</string>
|
||||
<string name="action">Action</string>
|
||||
<string name="open">Open</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="enable_web_debugging">Enable WebView debugging</string>
|
||||
<string name="enable_web_debugging_summary">Can be used to debug WebUI. Please enable only when needed.</string>
|
||||
@@ -136,9 +125,6 @@
|
||||
<string name="selected_lkm">Selected LKM: %s</string>
|
||||
<string name="save_log">ذخیره گزارشها</string>
|
||||
<string name="log_saved">Logs saved</string>
|
||||
<string name="status_supported">Supported</string>
|
||||
<string name="status_not_supported">Not Supported</string>
|
||||
<string name="status_unknown">Unknown</string>
|
||||
<string name="sus_su_mode">SuS SU mode:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">confirm install module %1$s?</string>
|
||||
@@ -172,14 +158,11 @@
|
||||
<string name="settings_custom_background">Custom App Background</string>
|
||||
<string name="settings_custom_background_summary">Select an image as background</string>
|
||||
<string name="settings_card_alpha">Navigation bar transparency</string>
|
||||
<string name="settings_restore_default">Restore default</string>
|
||||
<string name="home_android_version">Android version</string>
|
||||
<string name="home_device_model">Device model</string>
|
||||
<string name="su_not_allowed">Granting superuser to %s is not allowed</string>
|
||||
<string name="settings_disable_su">Disable su compatibility</string>
|
||||
<string name="settings_disable_su_summary">Temporarily disable any applications from obtaining root privileges via the su command (existing root processes will not be affected).</string>
|
||||
<string name="using_mksu_manager">You are using the SukiSU Beta manager</string>
|
||||
<string name="module_install_multiple_confirm">Are you sure you want to install the selected %d modules?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Sure you want to install the following %1$d modules? \n\n%2$s</string>
|
||||
<string name="more_settings">More settings</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -210,20 +193,14 @@
|
||||
<string name="color_pink">Pink</string>
|
||||
<string name="color_gray">Gray</string>
|
||||
<string name="color_yellow">Yellow</string>
|
||||
<string name="flash_option">Brush Options</string>
|
||||
<string name="flash_option_tip">Select the file to be flashed</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash AnyKernel3 kernel file</string>
|
||||
<string name="root_required">Requires root privileges</string>
|
||||
<string name="copy_failed">File Copy Failure</string>
|
||||
<string name="reboot_complete_title">Scrubbing complete</string>
|
||||
<string name="reboot_complete_msg">Whether to reboot immediately?</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="failed_reboot">Reboot Failed</string>
|
||||
<string name="batch_authorization">empower</string>
|
||||
<string name="batch_cancel_authorization">withdraw</string>
|
||||
<string name="backup">Backup</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">No installed kernel modules at this time</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
@@ -231,7 +208,6 @@
|
||||
<string name="kpm_uninstall">Uninstall</string>
|
||||
<string name="kpm_uninstall_success">Uninstalled successfully</string>
|
||||
<string name="kpm_uninstall_failed">Failed to uninstall</string>
|
||||
<string name="kpm_install">Install</string>
|
||||
<string name="kpm_install_success">Load of kpm module successful</string>
|
||||
<string name="kpm_install_failed">Load of kpm module failed</string>
|
||||
<string name="kpm_args">Parameters</string>
|
||||
@@ -245,8 +221,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra will be a relatively independent branch of KSU in the future, but we still appreciate the official KernelSU and MKSU etc. for their contributions!</string>
|
||||
<string name="not_supported">Unsupported</string>
|
||||
<string name="supported">Supported</string>
|
||||
<string name="home_kpm_module">"Number of KPMs: %d "</string>
|
||||
<string name="kpm_invalid_file">Invalid KPM file</string>
|
||||
<string name="kernel_patched">Kernel not patched</string>
|
||||
<string name="kernel_not_enabled">Kernel not configured</string>
|
||||
<string name="custom_settings">Custom settings</string>
|
||||
@@ -254,19 +228,13 @@
|
||||
<string name="kpm_install_mode_load">Load</string>
|
||||
<string name="kpm_install_mode_embed">Embed</string>
|
||||
<string name="kpm_install_mode_description">Please select: %1\$s Module Installation Mode \n\nLoad: Temporarily load the module \nEmbedded: Permanently install into the system</string>
|
||||
<string name="log_failed_to_check_module_file">Failed to check module file existence</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Unable to check if module file exists</string>
|
||||
<string name="confirm_uninstall_title">Confirm uninstallation</string>
|
||||
<string name="confirm_uninstall_confirm">Uninstall</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancel</string>
|
||||
<string name="theme_color">Theme Color</string>
|
||||
<string name="invalid_file_type">Incorrect file type! Please select .kpm file.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Uninstall</string>
|
||||
<string name="confirm_uninstall_content">The following KPM will be uninstalled: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Disable kprobe hooks created by KernelSU, using inline hooks instead, which is similar to non-GKI kernel hooking method.</string>
|
||||
<string name="image_editor_title">Adjust background image</string>
|
||||
<string name="image_editor_hint">Use two fingers to zoom the image, and one finger to drag it to adjust the position</string>
|
||||
<string name="background_image_error">Could not load image</string>
|
||||
<string name="reprovision">Reprovision</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
@@ -303,10 +271,6 @@
|
||||
<string name="app_settings">Application Settings</string>
|
||||
<string name="tools">Tools</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Removals</string>
|
||||
<string name="apps_with_root">Applications with root privileges</string>
|
||||
<string name="apps_with_custom_profile">Applications with customized configurations</string>
|
||||
<string name="other_apps">Applications with unchanged defaults</string>
|
||||
<string name="no_apps_found">Application not found</string>
|
||||
<string name="selinux_enabled_toast">SELinux Enabled</string>
|
||||
<string name="selinux_disabled_toast">SELinux Disabled</string>
|
||||
@@ -314,8 +278,6 @@
|
||||
<string name="advanced_settings">Advanced Settings</string>
|
||||
<string name="appearance_settings">Customize the toolbar</string>
|
||||
<string name="back">Comeback</string>
|
||||
<string name="expand">Be in full swing</string>
|
||||
<string name="collapse">put away</string>
|
||||
<string name="susfs_enabled">SuSFS enabled</string>
|
||||
<string name="susfs_disabled">SuSFS disabled</string>
|
||||
<string name="background_set_success">Background set successfully</string>
|
||||
@@ -323,7 +285,6 @@
|
||||
<string name="icon_switch_title">Alternate icon</string>
|
||||
<string name="icon_switch_summary">Change the launcher icon to KernelSU\'s icon.</string>
|
||||
<string name="icon_switched">Icon switched</string>
|
||||
<string name="root_require_for_install">Requires root privileges</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Display KPM Function</string>
|
||||
<string name="show_kpm_info_summary">Display KPM information and Function in home and bottom bar (Need to reopen the app)</string>
|
||||
@@ -335,7 +296,6 @@
|
||||
<string name="use_webuix_eruda">Inject Eruda into WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Inject a debug console into WebUI X to make debugging easier. Requires web debugging to be on.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI setting</string>
|
||||
<string name="app_dpi_title">Applied DPI</string>
|
||||
<string name="app_dpi_summary">Adjust the screen display density for the current application only</string>
|
||||
<string name="dpi_size_small">Small </string>
|
||||
@@ -353,16 +313,6 @@
|
||||
<string name="language_follow_system">Follow System</string>
|
||||
<string name="language_changed">Language changed, restarting to apply changes</string>
|
||||
<string name="settings_card_dim">Card Darkness Adjustment</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="scroll_to_top_description">Scroll to top</string>
|
||||
<string name="scroll_to_bottom_description">Scroll to the bottom</string>
|
||||
<string name="authorized">authorized</string>
|
||||
<string name="unauthorized">unauthorized</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<string name="profile_umount_modules_disable">Disable custom uninstallation module</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">error code</string>
|
||||
<string name="check_log">Please check the log</string>
|
||||
@@ -370,4 +320,51 @@
|
||||
<string name="module_failed_count">%d Failed to install a new module</string>
|
||||
<string name="module_download_error">Module download failed</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">Hindi naka-install</string>
|
||||
<string name="home_click_to_install">Pindutin para mag-install</string>
|
||||
<string name="home_working">Gumagana</string>
|
||||
<string name="home_working_version">Bersyon: %d</string>
|
||||
<string name="home_superuser_count">Superusers: %d</string>
|
||||
<string name="home_module_count">Mga Modyul: %d</string>
|
||||
<string name="home_working_version">Bersyon: %s</string>
|
||||
<string name="home_unsupported">Hindi Suportado</string>
|
||||
<string name="home_unsupported_reason">Sinusuportahan lang ng KernelSU ang mga kernel ng GKI ngayon</string>
|
||||
<string name="home_kernel">Kernel version</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS Version</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">Bersyon ng Manager</string>
|
||||
<string name="home_fingerprint">Fingerprint</string>
|
||||
<string name="home_selinux_status">Katayuan ng SELinux</string>
|
||||
<string name="selinux_status_disabled">Hindi pinagana</string>
|
||||
<string name="selinux_status_enforcing">Enforcing</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Sort (Action first)</string>
|
||||
<string name="module_sort_enabled_first">Sort (Enabled first)</string>
|
||||
<string name="uninstall">I-uninstall</string>
|
||||
<string name="restore">Restore</string>
|
||||
<string name="module_install">I-install</string>
|
||||
<string name="install">I-install</string>
|
||||
<string name="reboot">I-reboot</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">Template</string>
|
||||
<string name="profile_custom">Custom</string>
|
||||
<string name="profile_name">Pangalan ng profile</string>
|
||||
<string name="profile_namespace">I-mount ang namespace</string>
|
||||
<string name="profile_namespace_inherited">Minana</string>
|
||||
<string name="profile_namespace_global">Global</string>
|
||||
<string name="profile_namespace_individual">Indibidwal</string>
|
||||
<string name="profile_groups">Mga Grupo</string>
|
||||
<string name="profile_capabilities">Mga Kakayanan</string>
|
||||
<string name="profile_selinux_context">Konteksto ng SELinux</string>
|
||||
<string name="profile_umount_modules">I-unmount ang mga modyul</string>
|
||||
<string name="failed_to_update_app_profile">Nabigong i-update ang App Profile para sa %s</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %d is too low for the manager to work properly. Please upgrade to version %d or higher!</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %s is too low for the manager to work properly. Please upgrade to version %s or higher!</string>
|
||||
<string name="settings_umount_modules_default">Umount modules by default</string>
|
||||
<string name="settings_umount_modules_default_summary">Ang pangkalahatang default na halaga para sa \"Umount modules\" sa Mga Profile ng App. Kung pinagana, aalisin nito ang lahat ng mga pagbabago sa modyul sa system para sa mga aplikasyon na walang hanay ng Profile.</string>
|
||||
<string name="settings_susfs_toggle">Disable kprobe hooks</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Automatically check for updates when opening the app</string>
|
||||
<string name="grant_root_failed">Failed to grant root!</string>
|
||||
<string name="action">Action</string>
|
||||
<string name="open">Open</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="enable_web_debugging">Enable WebView debugging</string>
|
||||
<string name="enable_web_debugging_summary">Can be used to debug WebUI. Please enable only when needed.</string>
|
||||
@@ -136,9 +125,6 @@
|
||||
<string name="selected_lkm">Selected LKM: %s</string>
|
||||
<string name="save_log">I-save ang mga Log</string>
|
||||
<string name="log_saved">Logs saved</string>
|
||||
<string name="status_supported">Supported</string>
|
||||
<string name="status_not_supported">Not Supported</string>
|
||||
<string name="status_unknown">Unknown</string>
|
||||
<string name="sus_su_mode">SuS SU mode:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">confirm install module %1$s?</string>
|
||||
@@ -172,14 +158,11 @@
|
||||
<string name="settings_custom_background">Custom App Background</string>
|
||||
<string name="settings_custom_background_summary">Select an image as background</string>
|
||||
<string name="settings_card_alpha">Navigation bar transparency</string>
|
||||
<string name="settings_restore_default">Restore default</string>
|
||||
<string name="home_android_version">Android version</string>
|
||||
<string name="home_device_model">Device model</string>
|
||||
<string name="su_not_allowed">Granting superuser to %s is not allowed</string>
|
||||
<string name="settings_disable_su">Disable su compatibility</string>
|
||||
<string name="settings_disable_su_summary">Temporarily disable any applications from obtaining root privileges via the su command (existing root processes will not be affected).</string>
|
||||
<string name="using_mksu_manager">You are using the SukiSU Beta manager</string>
|
||||
<string name="module_install_multiple_confirm">Are you sure you want to install the selected %d modules?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Sure you want to install the following %1$d modules? \n\n%2$s</string>
|
||||
<string name="more_settings">More settings</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -210,20 +193,14 @@
|
||||
<string name="color_pink">Pink</string>
|
||||
<string name="color_gray">Gray</string>
|
||||
<string name="color_yellow">Yellow</string>
|
||||
<string name="flash_option">Brush Options</string>
|
||||
<string name="flash_option_tip">Select the file to be flashed</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash AnyKernel3 kernel file</string>
|
||||
<string name="root_required">Requires root privileges</string>
|
||||
<string name="copy_failed">File Copy Failure</string>
|
||||
<string name="reboot_complete_title">Scrubbing complete</string>
|
||||
<string name="reboot_complete_msg">Whether to reboot immediately?</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="failed_reboot">Reboot Failed</string>
|
||||
<string name="batch_authorization">empower</string>
|
||||
<string name="batch_cancel_authorization">withdraw</string>
|
||||
<string name="backup">Backup</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">No installed kernel modules at this time</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
@@ -231,7 +208,6 @@
|
||||
<string name="kpm_uninstall">Uninstall</string>
|
||||
<string name="kpm_uninstall_success">Uninstalled successfully</string>
|
||||
<string name="kpm_uninstall_failed">Failed to uninstall</string>
|
||||
<string name="kpm_install">Install</string>
|
||||
<string name="kpm_install_success">Load of kpm module successful</string>
|
||||
<string name="kpm_install_failed">Load of kpm module failed</string>
|
||||
<string name="kpm_args">Parameters</string>
|
||||
@@ -245,8 +221,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra will be a relatively independent branch of KSU in the future, but we still appreciate the official KernelSU and MKSU etc. for their contributions!</string>
|
||||
<string name="not_supported">Unsupported</string>
|
||||
<string name="supported">Supported</string>
|
||||
<string name="home_kpm_module">"Number of KPMs: %d "</string>
|
||||
<string name="kpm_invalid_file">Invalid KPM file</string>
|
||||
<string name="kernel_patched">Kernel not patched</string>
|
||||
<string name="kernel_not_enabled">Kernel not configured</string>
|
||||
<string name="custom_settings">Custom settings</string>
|
||||
@@ -254,19 +228,13 @@
|
||||
<string name="kpm_install_mode_load">Load</string>
|
||||
<string name="kpm_install_mode_embed">Embed</string>
|
||||
<string name="kpm_install_mode_description">Please select: %1\$s Module Installation Mode \n\nLoad: Temporarily load the module \nEmbedded: Permanently install into the system</string>
|
||||
<string name="log_failed_to_check_module_file">Failed to check module file existence</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Unable to check if module file exists</string>
|
||||
<string name="confirm_uninstall_title">Confirm uninstallation</string>
|
||||
<string name="confirm_uninstall_confirm">Uninstall</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancel</string>
|
||||
<string name="theme_color">Theme Color</string>
|
||||
<string name="invalid_file_type">Incorrect file type! Please select .kpm file.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Uninstall</string>
|
||||
<string name="confirm_uninstall_content">The following KPM will be uninstalled: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Disable kprobe hooks created by KernelSU, using inline hooks instead, which is similar to non-GKI kernel hooking method.</string>
|
||||
<string name="image_editor_title">Adjust background image</string>
|
||||
<string name="image_editor_hint">Use two fingers to zoom the image, and one finger to drag it to adjust the position</string>
|
||||
<string name="background_image_error">Could not load image</string>
|
||||
<string name="reprovision">Reprovision</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
@@ -303,10 +271,6 @@
|
||||
<string name="app_settings">Application Settings</string>
|
||||
<string name="tools">Tools</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Removals</string>
|
||||
<string name="apps_with_root">Applications with root privileges</string>
|
||||
<string name="apps_with_custom_profile">Applications with customized configurations</string>
|
||||
<string name="other_apps">Applications with unchanged defaults</string>
|
||||
<string name="no_apps_found">Application not found</string>
|
||||
<string name="selinux_enabled_toast">SELinux Enabled</string>
|
||||
<string name="selinux_disabled_toast">SELinux Disabled</string>
|
||||
@@ -314,8 +278,6 @@
|
||||
<string name="advanced_settings">Advanced Settings</string>
|
||||
<string name="appearance_settings">Customize the toolbar</string>
|
||||
<string name="back">Comeback</string>
|
||||
<string name="expand">Be in full swing</string>
|
||||
<string name="collapse">put away</string>
|
||||
<string name="susfs_enabled">SuSFS enabled</string>
|
||||
<string name="susfs_disabled">SuSFS disabled</string>
|
||||
<string name="background_set_success">Background set successfully</string>
|
||||
@@ -323,7 +285,6 @@
|
||||
<string name="icon_switch_title">Alternate icon</string>
|
||||
<string name="icon_switch_summary">Change the launcher icon to KernelSU\'s icon.</string>
|
||||
<string name="icon_switched">Icon switched</string>
|
||||
<string name="root_require_for_install">Requires root privileges</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Display KPM Function</string>
|
||||
<string name="show_kpm_info_summary">Display KPM information and Function in home and bottom bar (Need to reopen the app)</string>
|
||||
@@ -335,7 +296,6 @@
|
||||
<string name="use_webuix_eruda">Inject Eruda into WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Inject a debug console into WebUI X to make debugging easier. Requires web debugging to be on.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI setting</string>
|
||||
<string name="app_dpi_title">Applied DPI</string>
|
||||
<string name="app_dpi_summary">Adjust the screen display density for the current application only</string>
|
||||
<string name="dpi_size_small">Small </string>
|
||||
@@ -353,16 +313,6 @@
|
||||
<string name="language_follow_system">Follow System</string>
|
||||
<string name="language_changed">Language changed, restarting to apply changes</string>
|
||||
<string name="settings_card_dim">Card Darkness Adjustment</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="scroll_to_top_description">Scroll to top</string>
|
||||
<string name="scroll_to_bottom_description">Scroll to the bottom</string>
|
||||
<string name="authorized">authorized</string>
|
||||
<string name="unauthorized">unauthorized</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<string name="profile_umount_modules_disable">Disable custom uninstallation module</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">error code</string>
|
||||
<string name="check_log">Please check the log</string>
|
||||
@@ -370,4 +320,51 @@
|
||||
<string name="module_failed_count">%d Failed to install a new module</string>
|
||||
<string name="module_download_error">Module download failed</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">Non installé</string>
|
||||
<string name="home_click_to_install">Appuyez ici pour installer</string>
|
||||
<string name="home_working">Fonctionnel</string>
|
||||
<string name="home_working_version">Version : %d</string>
|
||||
<string name="home_superuser_count">Super-utilisateurs : %d</string>
|
||||
<string name="home_module_count">Modules : %d</string>
|
||||
<string name="home_working_version">Version : %s</string>
|
||||
<string name="home_unsupported">Non pris en charge</string>
|
||||
<string name="home_unsupported_reason">KernelSU ne prend désormais en charge que les noyaux GKI</string>
|
||||
<string name="home_kernel">Noyau</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">Version SuSFS</string>
|
||||
<string name="home_susfs_sus_su">SuS Su</string>
|
||||
<string name="home_manager_version">Version du gestionnaire</string>
|
||||
<string name="home_fingerprint">Empreinte digitale</string>
|
||||
<string name="home_selinux_status">Mode SELinux</string>
|
||||
<string name="selinux_status_disabled">Désactivé</string>
|
||||
<string name="selinux_status_enforcing">Enforcing</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Trier par action</string>
|
||||
<string name="module_sort_enabled_first">Trier par activé</string>
|
||||
<string name="uninstall">Désinstaller</string>
|
||||
<string name="restore">Restaure</string>
|
||||
<string name="module_install">Installer</string>
|
||||
<string name="install">Installer</string>
|
||||
<string name="reboot">Redémarrer</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">Modèle</string>
|
||||
<string name="profile_custom">Personnalisé</string>
|
||||
<string name="profile_name">Nom du profil</string>
|
||||
<string name="profile_namespace">Espace de noms de montage</string>
|
||||
<string name="profile_namespace_inherited">Hérité</string>
|
||||
<string name="profile_namespace_global">Global</string>
|
||||
<string name="profile_namespace_individual">Individuel</string>
|
||||
<string name="profile_groups">Groupes</string>
|
||||
<string name="profile_capabilities">Capacités</string>
|
||||
<string name="profile_selinux_context">Contexte SELinux</string>
|
||||
<string name="profile_umount_modules">Démonter les modules</string>
|
||||
<string name="failed_to_update_app_profile">Échec de la modification du profil d\'application de %s</string>
|
||||
<string name="require_kernel_version" formatted="false">La version actuelle de KernelSU (%d) est trop ancienne pour que le gestionnaire fonctionne correctement. Veuillez passer à la version %d ou à une version supérieure !</string>
|
||||
<string name="require_kernel_version" formatted="false">La version actuelle de KernelSU (%s) est trop ancienne pour que le gestionnaire fonctionne correctement. Veuillez passer à la version %s ou à une version supérieure !</string>
|
||||
<string name="settings_umount_modules_default">Démonter les modules par défaut</string>
|
||||
<string name="settings_umount_modules_default_summary">Valeur globale par défaut pour l\'option \"Démonter les modules\" dans les profils d\'application. Lorsque l\'option est activée, les modifications apportées au système par les modules sont supprimées pour les applications qui n\'ont pas de profil défini.</string>
|
||||
<string name="settings_susfs_toggle">Désactiver les crochets kprobe</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Vérifier automatiquement les mises à jour à l\'ouverture de l\'application</string>
|
||||
<string name="grant_root_failed">Échec de l\'octroi des privilèges root !</string>
|
||||
<string name="action">Action</string>
|
||||
<string name="open">Ouvrir</string>
|
||||
<string name="close">Fermer</string>
|
||||
<string name="enable_web_debugging">Activer le débogage WebView</string>
|
||||
<string name="enable_web_debugging_summary">Peut être utilisé pour déboguer WebUI. Activez uniquement cette option si nécessaire.</string>
|
||||
@@ -138,9 +127,6 @@
|
||||
<string name="selected_lkm">LKM sélectionné : %s</string>
|
||||
<string name="save_log">Enregistrer les journaux</string>
|
||||
<string name="log_saved">Journaux enregistrés</string>
|
||||
<string name="status_supported">Supporté</string>
|
||||
<string name="status_not_supported">Non supporté</string>
|
||||
<string name="status_unknown">Inconnu</string>
|
||||
<string name="sus_su_mode">Mode Sus</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">confirmer l\'installation du module %1$s?</string>
|
||||
@@ -174,14 +160,11 @@
|
||||
<string name="settings_custom_background">Arrière-plan personnalisé de l\'application</string>
|
||||
<string name="settings_custom_background_summary">Image as arrière-plan</string>
|
||||
<string name="settings_card_alpha">Transparence de la barre de navigation</string>
|
||||
<string name="settings_restore_default">Restaurer par défaut</string>
|
||||
<string name="home_android_version">Version Android</string>
|
||||
<string name="home_device_model">Modèle du téléphone</string>
|
||||
<string name="su_not_allowed">Donner un super-utilisateur à %s n\'est pas autorisé</string>
|
||||
<string name="settings_disable_su">Désactiver la compatibilité su</string>
|
||||
<string name="settings_disable_su_summary">Désactiver temporairement l\'accès des applications aux privilèges root via la commande su (les processus root existants ne seront pas affectés).</string>
|
||||
<string name="using_mksu_manager">Vous utilisez le gestionnaire SukiSU Beta</string>
|
||||
<string name="module_install_multiple_confirm">Êtes-vous sûr de vouloir installer les modules %d sélectionnés ?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Êtes-vous sûr de vouloir installer les modules %1$d suivants ? \n\n%2$s</string>
|
||||
<string name="more_settings">Autres configurations</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -212,20 +195,14 @@
|
||||
<string name="color_pink">Rose</string>
|
||||
<string name="color_gray">Gris</string>
|
||||
<string name="color_yellow">Jaune</string>
|
||||
<string name="flash_option">Options du flash</string>
|
||||
<string name="flash_option_tip">Sélectionnez le fichier à installer</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Fichier noyau AnyKernel3</string>
|
||||
<string name="root_required">Nécessite les privilèges root</string>
|
||||
<string name="copy_failed">Échec de la copie du fichier</string>
|
||||
<string name="reboot_complete_title">Traitement terminé</string>
|
||||
<string name="reboot_complete_msg">Redémarrer immédiatement ?</string>
|
||||
<string name="yes">Oui</string>
|
||||
<string name="no">Non</string>
|
||||
<string name="failed_reboot">Échec du redémarrage</string>
|
||||
<string name="batch_authorization">ePouvoir</string>
|
||||
<string name="batch_cancel_authorization">retirer</string>
|
||||
<string name="backup">Sauvegarder</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">Aucun module de noyau installé pour le moment</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
@@ -233,7 +210,6 @@
|
||||
<string name="kpm_uninstall">Désinstaller</string>
|
||||
<string name="kpm_uninstall_success">Désinstallé avec succès</string>
|
||||
<string name="kpm_uninstall_failed">Échec de la désinstallation : </string>
|
||||
<string name="kpm_install">Installer</string>
|
||||
<string name="kpm_install_success">Chargement du module kpm réussi</string>
|
||||
<string name="kpm_install_failed">Le chargement du module kpm a échoué</string>
|
||||
<string name="kpm_args">Paramètres</string>
|
||||
@@ -247,8 +223,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra sera une branche relativement indépendante de KSU dans le futur, mais nous apprécions toujours le KernelSU officiel, MKSU etc. pour leurs contributions!</string>
|
||||
<string name="not_supported">Non pris en charge</string>
|
||||
<string name="supported">Pris en charge</string>
|
||||
<string name="home_kpm_module">"Nombre de modules KPM : %d "</string>
|
||||
<string name="kpm_invalid_file">Fichier KPM invalide</string>
|
||||
<string name="kernel_patched">Noyau non corrigé</string>
|
||||
<string name="kernel_not_enabled">Noyau non configuré</string>
|
||||
<string name="custom_settings">Paramètres personnalisés</string>
|
||||
@@ -256,19 +230,13 @@
|
||||
<string name="kpm_install_mode_load">Charger</string>
|
||||
<string name="kpm_install_mode_embed">Intégrer</string>
|
||||
<string name="kpm_install_mode_description">Veuillez sélectionner : %1\$s Mode d\'installation du module \n\nCharge : Chargez temporairement le module \nIntégré: Installez définitivement dans le système</string>
|
||||
<string name="log_failed_to_check_module_file">Impossible de vérifier l\'existence du fichier du module</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Impossible de vérifier si le fichier du module existe</string>
|
||||
<string name="confirm_uninstall_title">Confirmer la désinstallation.</string>
|
||||
<string name="confirm_uninstall_confirm">Désinstaller</string>
|
||||
<string name="confirm_uninstall_dismiss">Annuler</string>
|
||||
<string name="theme_color">Couleur du thème</string>
|
||||
<string name="invalid_file_type">Type de fichier incorrect ! Veuillez sélectionner un fichier .kpm.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Désinstaller</string>
|
||||
<string name="confirm_uninstall_content">Le KPM suivant sera désinstallé : %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Désactivez les crochets kprobe créés par KernelSU, en utilisant des crochets en ligne à la place, ce qui est similaire à la méthode de crochet du noyau non-GKI.</string>
|
||||
<string name="image_editor_title">Ajuster l\'image de fond</string>
|
||||
<string name="image_editor_hint">Utilisez deux doigts pour zoomer l\'image, et un doigt pour le faire glisser pour ajuster la position</string>
|
||||
<string name="background_image_error">Impossible de charger l\'image</string>
|
||||
<string name="reprovision">Remise à disposition</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Clignotement du noyau</string>
|
||||
@@ -305,10 +273,6 @@
|
||||
<string name="app_settings">Paramètres de l\'application</string>
|
||||
<string name="tools">Outils</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Suppressions</string>
|
||||
<string name="apps_with_root">Applications avec droits root</string>
|
||||
<string name="apps_with_custom_profile">Applications avec configurations personnalisées</string>
|
||||
<string name="other_apps">Applications avec valeurs par défaut non modifiées</string>
|
||||
<string name="no_apps_found">Application introuvable</string>
|
||||
<string name="selinux_enabled_toast">SELinux activé</string>
|
||||
<string name="selinux_disabled_toast">SELinux désactivé</string>
|
||||
@@ -316,8 +280,6 @@
|
||||
<string name="advanced_settings">Paramètres avancés</string>
|
||||
<string name="appearance_settings">Choisir les boutons à afficher</string>
|
||||
<string name="back">Reviens</string>
|
||||
<string name="expand">Etre en plein swing</string>
|
||||
<string name="collapse">rangé</string>
|
||||
<string name="susfs_enabled">SuSFS activé</string>
|
||||
<string name="susfs_disabled">SuSFS désactivé</string>
|
||||
<string name="background_set_success">Fond d\'écran défini avec succès</string>
|
||||
@@ -325,7 +287,6 @@
|
||||
<string name="icon_switch_title">Icône alternative</string>
|
||||
<string name="icon_switch_summary">Changer l\'icône du lanceur en icône de KernelSU.</string>
|
||||
<string name="icon_switched">Icône changée</string>
|
||||
<string name="root_require_for_install">Nécessite les privilèges root</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Afficher la fonction KPM</string>
|
||||
<string name="show_kpm_info_summary">Masque les informations et fonctions KPM dans la barre d\'accueil et en bas</string>
|
||||
@@ -337,7 +298,6 @@
|
||||
<string name="use_webuix_eruda">Injecter Eruda dans WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Injectez une console de débogage dans WebUI X pour faciliter le débogage. Nécessite que le débogage soit activé.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">Réglage du DPI</string>
|
||||
<string name="app_dpi_title">DPI appliqué</string>
|
||||
<string name="app_dpi_summary">Ajuster la densité d\'affichage de l\'écran pour l\'application actuelle uniquement</string>
|
||||
<string name="dpi_size_small">Petit </string>
|
||||
@@ -355,16 +315,6 @@
|
||||
<string name="language_follow_system">Suivre le paramètre système</string>
|
||||
<string name="language_changed">Langue modifiée, redémarrage pour appliquer les modifications</string>
|
||||
<string name="settings_card_dim">Ajustement de l\'obscurité de la carte</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">En haut</string>
|
||||
<string name="scroll_to_bottom">En Bas</string>
|
||||
<string name="scroll_to_top_description">Aller en haut</string>
|
||||
<string name="scroll_to_bottom_description">Faire défiler vers le bas</string>
|
||||
<string name="authorized">Autorisé</string>
|
||||
<string name="unauthorized">non autorisé</string>
|
||||
<string name="selected">Sélectionné</string>
|
||||
<string name="select">option</string>
|
||||
<string name="profile_umount_modules_disable">Désactiver le module de désinstallation personnalisé</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">code d\'erreur</string>
|
||||
<string name="check_log">Veuillez vérifier le journal</string>
|
||||
@@ -372,4 +322,51 @@
|
||||
<string name="module_failed_count">%d a échoué à installer un nouveau module</string>
|
||||
<string name="module_download_error">Le téléchargement du modèle a échoué</string>
|
||||
<string name="kernel_flashing">Clignotement du noyau</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">En haut</string>
|
||||
<string name="scroll_to_bottom">En Bas</string>
|
||||
<string name="selected">Sélectionné</string>
|
||||
<string name="select">option</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">इंस्टाल नहीं हुआ</string>
|
||||
<string name="home_click_to_install">इंस्टाल करने के लिए क्लिक करें</string>
|
||||
<string name="home_working">काम कर रहा है</string>
|
||||
<string name="home_working_version">वर्जन: %d</string>
|
||||
<string name="home_superuser_count">सुपरयूजर : %d</string>
|
||||
<string name="home_module_count">मॉड्यूल्स : %d</string>
|
||||
<string name="home_working_version">वर्जन: %s</string>
|
||||
<string name="home_unsupported">सपोर्ट नहीं करता है</string>
|
||||
<string name="home_unsupported_reason">KernelSU अभी केवल GKI कर्नल्स को सपोर्ट करता है</string>
|
||||
<string name="home_kernel">कर्नल</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS Version</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">मैनेजर वर्जन</string>
|
||||
<string name="home_fingerprint">फिंगरप्रिंट</string>
|
||||
<string name="home_selinux_status">SELinux स्थिति</string>
|
||||
<string name="selinux_status_disabled">डिसेबल्ड (बंद)</string>
|
||||
<string name="selinux_status_enforcing">एनफोर्सिंग</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Sort (Action first)</string>
|
||||
<string name="module_sort_enabled_first">Sort (Enabled first)</string>
|
||||
<string name="uninstall">अनइंस्टॉल करें</string>
|
||||
<string name="restore">Restore</string>
|
||||
<string name="module_install">इंस्टाल करें</string>
|
||||
<string name="install">इंस्टाल करें</string>
|
||||
<string name="reboot">रीबूट करें</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">टेम्पलेट</string>
|
||||
<string name="profile_custom">कस्टम</string>
|
||||
<string name="profile_name">प्रोफाइल का नाम</string>
|
||||
<string name="profile_namespace">Namspace माउंट करें</string>
|
||||
<string name="profile_namespace_inherited">Inherited</string>
|
||||
<string name="profile_namespace_global">Global</string>
|
||||
<string name="profile_namespace_individual">Individual</string>
|
||||
<string name="profile_groups">समूह</string>
|
||||
<string name="profile_capabilities">क्षमताएं</string>
|
||||
<string name="profile_selinux_context">SELinux context</string>
|
||||
<string name="profile_umount_modules">मॉड्यूल्स अनमाउंट करें</string>
|
||||
<string name="failed_to_update_app_profile">%s के लिए ऐप प्रोफ़ाइल अपडेट करने में विफल</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %d is too low for the manager to work properly. Please upgrade to version %d or higher!</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %s is too low for the manager to work properly. Please upgrade to version %s or higher!</string>
|
||||
<string name="settings_umount_modules_default">डिफ़ॉल्ट रूप से मॉड्यूल अनमाउन्ट करें</string>
|
||||
<string name="settings_umount_modules_default_summary">ऐप प्रोफाइल में \"अनमाउंट मॉड्यूल\" के लिए ग्लोबल डिफ़ॉल्ट वैल्यू। यदि चालू किया गया है, तो यह एप्लीकेशंस के लिऐ सिस्टम के सभी मॉड्यूल मोडिफिकेशन को हटा देगा जिनकी प्रोफ़ाइल सेट नहीं है।</string>
|
||||
<string name="settings_susfs_toggle">Disable kprobe hooks</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Automatically check for updates when opening the app</string>
|
||||
<string name="grant_root_failed">Failed to grant root!</string>
|
||||
<string name="action">Action</string>
|
||||
<string name="open">Open</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="enable_web_debugging">Enable WebView debugging</string>
|
||||
<string name="enable_web_debugging_summary">Can be used to debug WebUI. Please enable only when needed.</string>
|
||||
@@ -136,9 +125,6 @@
|
||||
<string name="selected_lkm">Selected LKM: %s</string>
|
||||
<string name="save_log">लॉग सहेजें</string>
|
||||
<string name="log_saved">Logs saved</string>
|
||||
<string name="status_supported">Supported</string>
|
||||
<string name="status_not_supported">Not Supported</string>
|
||||
<string name="status_unknown">Unknown</string>
|
||||
<string name="sus_su_mode">SuS SU mode:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">confirm install module %1$s?</string>
|
||||
@@ -172,14 +158,11 @@
|
||||
<string name="settings_custom_background">Custom App Background</string>
|
||||
<string name="settings_custom_background_summary">Select an image as background</string>
|
||||
<string name="settings_card_alpha">Navigation bar transparency</string>
|
||||
<string name="settings_restore_default">Restore default</string>
|
||||
<string name="home_android_version">Android version</string>
|
||||
<string name="home_device_model">Device model</string>
|
||||
<string name="su_not_allowed">Granting superuser to %s is not allowed</string>
|
||||
<string name="settings_disable_su">Disable su compatibility</string>
|
||||
<string name="settings_disable_su_summary">Temporarily disable any applications from obtaining root privileges via the su command (existing root processes will not be affected).</string>
|
||||
<string name="using_mksu_manager">You are using the SukiSU Beta manager</string>
|
||||
<string name="module_install_multiple_confirm">Are you sure you want to install the selected %d modules?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Sure you want to install the following %1$d modules? \n\n%2$s</string>
|
||||
<string name="more_settings">More settings</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -210,20 +193,14 @@
|
||||
<string name="color_pink">Pink</string>
|
||||
<string name="color_gray">Gray</string>
|
||||
<string name="color_yellow">Yellow</string>
|
||||
<string name="flash_option">Brush Options</string>
|
||||
<string name="flash_option_tip">Select the file to be flashed</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash AnyKernel3 kernel file</string>
|
||||
<string name="root_required">Requires root privileges</string>
|
||||
<string name="copy_failed">File Copy Failure</string>
|
||||
<string name="reboot_complete_title">Scrubbing complete</string>
|
||||
<string name="reboot_complete_msg">Whether to reboot immediately?</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="failed_reboot">Reboot Failed</string>
|
||||
<string name="batch_authorization">empower</string>
|
||||
<string name="batch_cancel_authorization">withdraw</string>
|
||||
<string name="backup">Backup</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">No installed kernel modules at this time</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
@@ -231,7 +208,6 @@
|
||||
<string name="kpm_uninstall">Uninstall</string>
|
||||
<string name="kpm_uninstall_success">Uninstalled successfully</string>
|
||||
<string name="kpm_uninstall_failed">Failed to uninstall</string>
|
||||
<string name="kpm_install">Install</string>
|
||||
<string name="kpm_install_success">Load of kpm module successful</string>
|
||||
<string name="kpm_install_failed">Load of kpm module failed</string>
|
||||
<string name="kpm_args">Parameters</string>
|
||||
@@ -245,8 +221,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra will be a relatively independent branch of KSU in the future, but we still appreciate the official KernelSU and MKSU etc. for their contributions!</string>
|
||||
<string name="not_supported">Unsupported</string>
|
||||
<string name="supported">Supported</string>
|
||||
<string name="home_kpm_module">"Number of KPMs: %d "</string>
|
||||
<string name="kpm_invalid_file">Invalid KPM file</string>
|
||||
<string name="kernel_patched">Kernel not patched</string>
|
||||
<string name="kernel_not_enabled">Kernel not configured</string>
|
||||
<string name="custom_settings">Custom settings</string>
|
||||
@@ -254,19 +228,13 @@
|
||||
<string name="kpm_install_mode_load">Load</string>
|
||||
<string name="kpm_install_mode_embed">Embed</string>
|
||||
<string name="kpm_install_mode_description">Please select: %1\$s Module Installation Mode \n\nLoad: Temporarily load the module \nEmbedded: Permanently install into the system</string>
|
||||
<string name="log_failed_to_check_module_file">Failed to check module file existence</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Unable to check if module file exists</string>
|
||||
<string name="confirm_uninstall_title">Confirm uninstallation</string>
|
||||
<string name="confirm_uninstall_confirm">Uninstall</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancel</string>
|
||||
<string name="theme_color">Theme Color</string>
|
||||
<string name="invalid_file_type">Incorrect file type! Please select .kpm file.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Uninstall</string>
|
||||
<string name="confirm_uninstall_content">The following KPM will be uninstalled: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Disable kprobe hooks created by KernelSU, using inline hooks instead, which is similar to non-GKI kernel hooking method.</string>
|
||||
<string name="image_editor_title">Adjust background image</string>
|
||||
<string name="image_editor_hint">Use two fingers to zoom the image, and one finger to drag it to adjust the position</string>
|
||||
<string name="background_image_error">Could not load image</string>
|
||||
<string name="reprovision">Reprovision</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
@@ -303,10 +271,6 @@
|
||||
<string name="app_settings">Application Settings</string>
|
||||
<string name="tools">Tools</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Removals</string>
|
||||
<string name="apps_with_root">Applications with root privileges</string>
|
||||
<string name="apps_with_custom_profile">Applications with customized configurations</string>
|
||||
<string name="other_apps">Applications with unchanged defaults</string>
|
||||
<string name="no_apps_found">Application not found</string>
|
||||
<string name="selinux_enabled_toast">SELinux Enabled</string>
|
||||
<string name="selinux_disabled_toast">SELinux Disabled</string>
|
||||
@@ -314,8 +278,6 @@
|
||||
<string name="advanced_settings">Advanced Settings</string>
|
||||
<string name="appearance_settings">Customize the toolbar</string>
|
||||
<string name="back">Comeback</string>
|
||||
<string name="expand">Be in full swing</string>
|
||||
<string name="collapse">put away</string>
|
||||
<string name="susfs_enabled">SuSFS enabled</string>
|
||||
<string name="susfs_disabled">SuSFS disabled</string>
|
||||
<string name="background_set_success">Background set successfully</string>
|
||||
@@ -323,7 +285,6 @@
|
||||
<string name="icon_switch_title">Alternate icon</string>
|
||||
<string name="icon_switch_summary">Change the launcher icon to KernelSU\'s icon.</string>
|
||||
<string name="icon_switched">Icon switched</string>
|
||||
<string name="root_require_for_install">Requires root privileges</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Display KPM Function</string>
|
||||
<string name="show_kpm_info_summary">Display KPM information and Function in home and bottom bar (Need to reopen the app)</string>
|
||||
@@ -335,7 +296,6 @@
|
||||
<string name="use_webuix_eruda">Inject Eruda into WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Inject a debug console into WebUI X to make debugging easier. Requires web debugging to be on.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI setting</string>
|
||||
<string name="app_dpi_title">Applied DPI</string>
|
||||
<string name="app_dpi_summary">Adjust the screen display density for the current application only</string>
|
||||
<string name="dpi_size_small">Small </string>
|
||||
@@ -353,16 +313,6 @@
|
||||
<string name="language_follow_system">Follow System</string>
|
||||
<string name="language_changed">Language changed, restarting to apply changes</string>
|
||||
<string name="settings_card_dim">Card Darkness Adjustment</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="scroll_to_top_description">Scroll to top</string>
|
||||
<string name="scroll_to_bottom_description">Scroll to the bottom</string>
|
||||
<string name="authorized">authorized</string>
|
||||
<string name="unauthorized">unauthorized</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<string name="profile_umount_modules_disable">Disable custom uninstallation module</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">error code</string>
|
||||
<string name="check_log">Please check the log</string>
|
||||
@@ -370,4 +320,51 @@
|
||||
<string name="module_failed_count">%d Failed to install a new module</string>
|
||||
<string name="module_download_error">Module download failed</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">Nije instalirano</string>
|
||||
<string name="home_click_to_install">Kliknite da instalirate</string>
|
||||
<string name="home_working">Radi</string>
|
||||
<string name="home_working_version">Verzija: %d</string>
|
||||
<string name="home_superuser_count">Superkorisnici: %d</string>
|
||||
<string name="home_module_count">Module: %d</string>
|
||||
<string name="home_working_version">Verzija: %s</string>
|
||||
<string name="home_unsupported">Nepodržano</string>
|
||||
<string name="home_unsupported_reason">KernelSU samo podržava GKI kernele sad</string>
|
||||
<string name="home_kernel">Kernel</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS Version</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">Verzija Voditelja</string>
|
||||
<string name="home_fingerprint">Otisak prsta</string>
|
||||
<string name="home_selinux_status">SELinux stanje</string>
|
||||
<string name="selinux_status_disabled">Isključeno</string>
|
||||
<string name="selinux_status_enforcing">U Provođenju</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Sort (Action first)</string>
|
||||
<string name="module_sort_enabled_first">Sort (Enabled first)</string>
|
||||
<string name="uninstall">Deinstalirajte</string>
|
||||
<string name="restore">Restore</string>
|
||||
<string name="module_install">Instalirajte</string>
|
||||
<string name="install">Instalirajte</string>
|
||||
<string name="reboot">Ponovno pokrenite</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">Šablon</string>
|
||||
<string name="profile_custom">Prilagođeno</string>
|
||||
<string name="profile_name">Naziv profila</string>
|
||||
<string name="profile_namespace">Imenski prostor nosača</string>
|
||||
<string name="profile_namespace_inherited">Naslijeđen</string>
|
||||
<string name="profile_namespace_global">Globalan</string>
|
||||
<string name="profile_namespace_individual">Pojedinačan</string>
|
||||
<string name="profile_groups">Grupe</string>
|
||||
<string name="profile_capabilities">Sposobnosti</string>
|
||||
<string name="profile_selinux_context">SELinux kontekst</string>
|
||||
<string name="profile_umount_modules">Umount module</string>
|
||||
<string name="failed_to_update_app_profile">Ažuriranje Profila Aplikacije za %s nije uspjelo</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %d is too low for the manager to work properly. Please upgrade to version %d or higher!</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %s is too low for the manager to work properly. Please upgrade to version %s or higher!</string>
|
||||
<string name="settings_umount_modules_default">Umount module po zadanom</string>
|
||||
<string name="settings_umount_modules_default_summary">Globalna zadana vrijednost za \"Umount module\" u Profilima Aplikacije. Ako je omogućeno, uklonit će sve izmjene modula na sistemu za aplikacije koje nemaju postavljen Profil.</string>
|
||||
<string name="settings_susfs_toggle">Disable kprobe hooks</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Automatically check for updates when opening the app</string>
|
||||
<string name="grant_root_failed">Failed to grant root!</string>
|
||||
<string name="action">Action</string>
|
||||
<string name="open">Open</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="enable_web_debugging">Enable WebView debugging</string>
|
||||
<string name="enable_web_debugging_summary">Can be used to debug WebUI. Please enable only when needed.</string>
|
||||
@@ -136,9 +125,6 @@
|
||||
<string name="selected_lkm">Selected LKM: %s</string>
|
||||
<string name="save_log">Spremi Zapise</string>
|
||||
<string name="log_saved">Logs saved</string>
|
||||
<string name="status_supported">Supported</string>
|
||||
<string name="status_not_supported">Not Supported</string>
|
||||
<string name="status_unknown">Unknown</string>
|
||||
<string name="sus_su_mode">SuS SU mode:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">confirm install module %1$s?</string>
|
||||
@@ -172,14 +158,11 @@
|
||||
<string name="settings_custom_background">Custom App Background</string>
|
||||
<string name="settings_custom_background_summary">Select an image as background</string>
|
||||
<string name="settings_card_alpha">Navigation bar transparency</string>
|
||||
<string name="settings_restore_default">Restore default</string>
|
||||
<string name="home_android_version">Android version</string>
|
||||
<string name="home_device_model">Device model</string>
|
||||
<string name="su_not_allowed">Granting superuser to %s is not allowed</string>
|
||||
<string name="settings_disable_su">Disable su compatibility</string>
|
||||
<string name="settings_disable_su_summary">Temporarily disable any applications from obtaining root privileges via the su command (existing root processes will not be affected).</string>
|
||||
<string name="using_mksu_manager">You are using the SukiSU Beta manager</string>
|
||||
<string name="module_install_multiple_confirm">Are you sure you want to install the selected %d modules?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Sure you want to install the following %1$d modules? \n\n%2$s</string>
|
||||
<string name="more_settings">More settings</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -210,20 +193,14 @@
|
||||
<string name="color_pink">Pink</string>
|
||||
<string name="color_gray">Gray</string>
|
||||
<string name="color_yellow">Yellow</string>
|
||||
<string name="flash_option">Brush Options</string>
|
||||
<string name="flash_option_tip">Select the file to be flashed</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash AnyKernel3 kernel file</string>
|
||||
<string name="root_required">Requires root privileges</string>
|
||||
<string name="copy_failed">File Copy Failure</string>
|
||||
<string name="reboot_complete_title">Scrubbing complete</string>
|
||||
<string name="reboot_complete_msg">Whether to reboot immediately?</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="failed_reboot">Reboot Failed</string>
|
||||
<string name="batch_authorization">empower</string>
|
||||
<string name="batch_cancel_authorization">withdraw</string>
|
||||
<string name="backup">Backup</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">No installed kernel modules at this time</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
@@ -231,7 +208,6 @@
|
||||
<string name="kpm_uninstall">Uninstall</string>
|
||||
<string name="kpm_uninstall_success">Uninstalled successfully</string>
|
||||
<string name="kpm_uninstall_failed">Failed to uninstall</string>
|
||||
<string name="kpm_install">Install</string>
|
||||
<string name="kpm_install_success">Load of kpm module successful</string>
|
||||
<string name="kpm_install_failed">Load of kpm module failed</string>
|
||||
<string name="kpm_args">Parameters</string>
|
||||
@@ -245,8 +221,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra will be a relatively independent branch of KSU in the future, but we still appreciate the official KernelSU and MKSU etc. for their contributions!</string>
|
||||
<string name="not_supported">Unsupported</string>
|
||||
<string name="supported">Supported</string>
|
||||
<string name="home_kpm_module">"Number of KPMs: %d "</string>
|
||||
<string name="kpm_invalid_file">Invalid KPM file</string>
|
||||
<string name="kernel_patched">Kernel not patched</string>
|
||||
<string name="kernel_not_enabled">Kernel not configured</string>
|
||||
<string name="custom_settings">Custom settings</string>
|
||||
@@ -254,19 +228,13 @@
|
||||
<string name="kpm_install_mode_load">Load</string>
|
||||
<string name="kpm_install_mode_embed">Embed</string>
|
||||
<string name="kpm_install_mode_description">Please select: %1\$s Module Installation Mode \n\nLoad: Temporarily load the module \nEmbedded: Permanently install into the system</string>
|
||||
<string name="log_failed_to_check_module_file">Failed to check module file existence</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Unable to check if module file exists</string>
|
||||
<string name="confirm_uninstall_title">Confirm uninstallation</string>
|
||||
<string name="confirm_uninstall_confirm">Uninstall</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancel</string>
|
||||
<string name="theme_color">Theme Color</string>
|
||||
<string name="invalid_file_type">Incorrect file type! Please select .kpm file.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Uninstall</string>
|
||||
<string name="confirm_uninstall_content">The following KPM will be uninstalled: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Disable kprobe hooks created by KernelSU, using inline hooks instead, which is similar to non-GKI kernel hooking method.</string>
|
||||
<string name="image_editor_title">Adjust background image</string>
|
||||
<string name="image_editor_hint">Use two fingers to zoom the image, and one finger to drag it to adjust the position</string>
|
||||
<string name="background_image_error">Could not load image</string>
|
||||
<string name="reprovision">Reprovision</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
@@ -303,10 +271,6 @@
|
||||
<string name="app_settings">Application Settings</string>
|
||||
<string name="tools">Tools</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Removals</string>
|
||||
<string name="apps_with_root">Applications with root privileges</string>
|
||||
<string name="apps_with_custom_profile">Applications with customized configurations</string>
|
||||
<string name="other_apps">Applications with unchanged defaults</string>
|
||||
<string name="no_apps_found">Application not found</string>
|
||||
<string name="selinux_enabled_toast">SELinux Enabled</string>
|
||||
<string name="selinux_disabled_toast">SELinux Disabled</string>
|
||||
@@ -314,8 +278,6 @@
|
||||
<string name="advanced_settings">Advanced Settings</string>
|
||||
<string name="appearance_settings">Customize the toolbar</string>
|
||||
<string name="back">Comeback</string>
|
||||
<string name="expand">Be in full swing</string>
|
||||
<string name="collapse">put away</string>
|
||||
<string name="susfs_enabled">SuSFS enabled</string>
|
||||
<string name="susfs_disabled">SuSFS disabled</string>
|
||||
<string name="background_set_success">Background set successfully</string>
|
||||
@@ -323,7 +285,6 @@
|
||||
<string name="icon_switch_title">Alternate icon</string>
|
||||
<string name="icon_switch_summary">Change the launcher icon to KernelSU\'s icon.</string>
|
||||
<string name="icon_switched">Icon switched</string>
|
||||
<string name="root_require_for_install">Requires root privileges</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Display KPM Function</string>
|
||||
<string name="show_kpm_info_summary">Display KPM information and Function in home and bottom bar (Need to reopen the app)</string>
|
||||
@@ -335,7 +296,6 @@
|
||||
<string name="use_webuix_eruda">Inject Eruda into WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Inject a debug console into WebUI X to make debugging easier. Requires web debugging to be on.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI setting</string>
|
||||
<string name="app_dpi_title">Applied DPI</string>
|
||||
<string name="app_dpi_summary">Adjust the screen display density for the current application only</string>
|
||||
<string name="dpi_size_small">Small </string>
|
||||
@@ -353,16 +313,6 @@
|
||||
<string name="language_follow_system">Follow System</string>
|
||||
<string name="language_changed">Language changed, restarting to apply changes</string>
|
||||
<string name="settings_card_dim">Card Darkness Adjustment</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="scroll_to_top_description">Scroll to top</string>
|
||||
<string name="scroll_to_bottom_description">Scroll to the bottom</string>
|
||||
<string name="authorized">authorized</string>
|
||||
<string name="unauthorized">unauthorized</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<string name="profile_umount_modules_disable">Disable custom uninstallation module</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">error code</string>
|
||||
<string name="check_log">Please check the log</string>
|
||||
@@ -370,4 +320,51 @@
|
||||
<string name="module_failed_count">%d Failed to install a new module</string>
|
||||
<string name="module_download_error">Module download failed</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">Nincs telepítve</string>
|
||||
<string name="home_click_to_install">Kattintson a telepítéshez</string>
|
||||
<string name="home_working">Működik</string>
|
||||
<string name="home_working_version">Verzió: %d</string>
|
||||
<string name="home_superuser_count">Engedélyezett alkalmazások: %d</string>
|
||||
<string name="home_module_count">Modulok: %d</string>
|
||||
<string name="home_working_version">Verzió: %s</string>
|
||||
<string name="home_unsupported">Nem támogatott</string>
|
||||
<string name="home_unsupported_reason">A KernelSU jelenleg csak GKI kerneleket támogat</string>
|
||||
<string name="home_kernel">Kernel</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS Version</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">Alkalmazás verziója</string>
|
||||
<string name="home_fingerprint">Ujjlenyomat</string>
|
||||
<string name="home_selinux_status">SELinux állapot</string>
|
||||
<string name="selinux_status_disabled">Letiltva</string>
|
||||
<string name="selinux_status_enforcing">Kényszerített</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Sort (Action first)</string>
|
||||
<string name="module_sort_enabled_first">Sort (Enabled first)</string>
|
||||
<string name="uninstall">Eltávolítás</string>
|
||||
<string name="restore">Restore</string>
|
||||
<string name="module_install">Telepítés</string>
|
||||
<string name="install">Telepítés</string>
|
||||
<string name="reboot">Újraindítás</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">Sablon</string>
|
||||
<string name="profile_custom">Egyedi</string>
|
||||
<string name="profile_name">Profil neve</string>
|
||||
<string name="profile_namespace">Névtér csatlakoztatása</string>
|
||||
<string name="profile_namespace_inherited">Örökölt</string>
|
||||
<string name="profile_namespace_global">Globális</string>
|
||||
<string name="profile_namespace_individual">Különálló</string>
|
||||
<string name="profile_groups">Csoportok</string>
|
||||
<string name="profile_capabilities">Jogosultságok</string>
|
||||
<string name="profile_selinux_context">SELinux kontextus</string>
|
||||
<string name="profile_umount_modules">Modulok leválasztása</string>
|
||||
<string name="failed_to_update_app_profile">Nem sikerült frissíteni az App Profilt ehhez: %s</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %d is too low for the manager to work properly. Please upgrade to version %d or higher!</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %s is too low for the manager to work properly. Please upgrade to version %s or higher!</string>
|
||||
<string name="settings_umount_modules_default">Modulok leválasztása alapértelmezetten</string>
|
||||
<string name="settings_umount_modules_default_summary">A \"Modulok leválasztása\" globális alapértelmezett értéke az App Profile-ban. Ha engedélyezve van, eltávolít minden modulmódosítást a rendszerből azon alkalmazások esetében, amelyeknek nincs profilja beállítva.</string>
|
||||
<string name="settings_susfs_toggle">Disable kprobe hooks</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Automatikusan keressen frissítéseket az alkalmazás megnyitásakor</string>
|
||||
<string name="grant_root_failed">A root jog megadása sikertelen!</string>
|
||||
<string name="action">Művelet</string>
|
||||
<string name="open">Megnyitás</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="enable_web_debugging">WebView hibakeresés engedélyezése</string>
|
||||
<string name="enable_web_debugging_summary">A WebUI hibakeresésére használható, csak szükség esetén engedélyezze.</string>
|
||||
@@ -136,9 +125,6 @@
|
||||
<string name="selected_lkm">Kiválasztott LKM: %s</string>
|
||||
<string name="save_log">Naplók mentése</string>
|
||||
<string name="log_saved">Mentett naplók</string>
|
||||
<string name="status_supported">Supported</string>
|
||||
<string name="status_not_supported">Not Supported</string>
|
||||
<string name="status_unknown">Unknown</string>
|
||||
<string name="sus_su_mode">SuS SU mode:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">confirm install module %1$s?</string>
|
||||
@@ -172,14 +158,11 @@
|
||||
<string name="settings_custom_background">Custom App Background</string>
|
||||
<string name="settings_custom_background_summary">Select an image as background</string>
|
||||
<string name="settings_card_alpha">Navigation bar transparency</string>
|
||||
<string name="settings_restore_default">Restore default</string>
|
||||
<string name="home_android_version">Android version</string>
|
||||
<string name="home_device_model">Device model</string>
|
||||
<string name="su_not_allowed">Granting superuser to %s is not allowed</string>
|
||||
<string name="settings_disable_su">Disable su compatibility</string>
|
||||
<string name="settings_disable_su_summary">Temporarily disable any applications from obtaining root privileges via the su command (existing root processes will not be affected).</string>
|
||||
<string name="using_mksu_manager">You are using the SukiSU Beta manager</string>
|
||||
<string name="module_install_multiple_confirm">Are you sure you want to install the selected %d modules?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Sure you want to install the following %1$d modules? \n\n%2$s</string>
|
||||
<string name="more_settings">More settings</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -210,20 +193,14 @@
|
||||
<string name="color_pink">Pink</string>
|
||||
<string name="color_gray">Gray</string>
|
||||
<string name="color_yellow">Yellow</string>
|
||||
<string name="flash_option">Brush Options</string>
|
||||
<string name="flash_option_tip">Select the file to be flashed</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash AnyKernel3 kernel file</string>
|
||||
<string name="root_required">Requires root privileges</string>
|
||||
<string name="copy_failed">File Copy Failure</string>
|
||||
<string name="reboot_complete_title">Scrubbing complete</string>
|
||||
<string name="reboot_complete_msg">Whether to reboot immediately?</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="failed_reboot">Reboot Failed</string>
|
||||
<string name="batch_authorization">empower</string>
|
||||
<string name="batch_cancel_authorization">withdraw</string>
|
||||
<string name="backup">Backup</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">No installed kernel modules at this time</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
@@ -231,7 +208,6 @@
|
||||
<string name="kpm_uninstall">Uninstall</string>
|
||||
<string name="kpm_uninstall_success">Uninstalled successfully</string>
|
||||
<string name="kpm_uninstall_failed">Failed to uninstall</string>
|
||||
<string name="kpm_install">Install</string>
|
||||
<string name="kpm_install_success">Load of kpm module successful</string>
|
||||
<string name="kpm_install_failed">Load of kpm module failed</string>
|
||||
<string name="kpm_args">Parameters</string>
|
||||
@@ -245,8 +221,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra will be a relatively independent branch of KSU in the future, but we still appreciate the official KernelSU and MKSU etc. for their contributions!</string>
|
||||
<string name="not_supported">Unsupported</string>
|
||||
<string name="supported">Supported</string>
|
||||
<string name="home_kpm_module">"Number of KPMs: %d "</string>
|
||||
<string name="kpm_invalid_file">Invalid KPM file</string>
|
||||
<string name="kernel_patched">Kernel not patched</string>
|
||||
<string name="kernel_not_enabled">Kernel not configured</string>
|
||||
<string name="custom_settings">Custom settings</string>
|
||||
@@ -254,19 +228,13 @@
|
||||
<string name="kpm_install_mode_load">Load</string>
|
||||
<string name="kpm_install_mode_embed">Embed</string>
|
||||
<string name="kpm_install_mode_description">Please select: %1\$s Module Installation Mode \n\nLoad: Temporarily load the module \nEmbedded: Permanently install into the system</string>
|
||||
<string name="log_failed_to_check_module_file">Failed to check module file existence</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Unable to check if module file exists</string>
|
||||
<string name="confirm_uninstall_title">Confirm uninstallation</string>
|
||||
<string name="confirm_uninstall_confirm">Uninstall</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancel</string>
|
||||
<string name="theme_color">Theme Color</string>
|
||||
<string name="invalid_file_type">Incorrect file type! Please select .kpm file.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Uninstall</string>
|
||||
<string name="confirm_uninstall_content">The following KPM will be uninstalled: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Disable kprobe hooks created by KernelSU, using inline hooks instead, which is similar to non-GKI kernel hooking method.</string>
|
||||
<string name="image_editor_title">Adjust background image</string>
|
||||
<string name="image_editor_hint">Use two fingers to zoom the image, and one finger to drag it to adjust the position</string>
|
||||
<string name="background_image_error">Could not load image</string>
|
||||
<string name="reprovision">Reprovision</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
@@ -303,10 +271,6 @@
|
||||
<string name="app_settings">Application Settings</string>
|
||||
<string name="tools">Tools</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Removals</string>
|
||||
<string name="apps_with_root">Applications with root privileges</string>
|
||||
<string name="apps_with_custom_profile">Applications with customized configurations</string>
|
||||
<string name="other_apps">Applications with unchanged defaults</string>
|
||||
<string name="no_apps_found">Application not found</string>
|
||||
<string name="selinux_enabled_toast">SELinux Enabled</string>
|
||||
<string name="selinux_disabled_toast">SELinux Disabled</string>
|
||||
@@ -314,8 +278,6 @@
|
||||
<string name="advanced_settings">Advanced Settings</string>
|
||||
<string name="appearance_settings">Customize the toolbar</string>
|
||||
<string name="back">Comeback</string>
|
||||
<string name="expand">Be in full swing</string>
|
||||
<string name="collapse">put away</string>
|
||||
<string name="susfs_enabled">SuSFS enabled</string>
|
||||
<string name="susfs_disabled">SuSFS disabled</string>
|
||||
<string name="background_set_success">Background set successfully</string>
|
||||
@@ -323,7 +285,6 @@
|
||||
<string name="icon_switch_title">Alternate icon</string>
|
||||
<string name="icon_switch_summary">Change the launcher icon to KernelSU\'s icon.</string>
|
||||
<string name="icon_switched">Icon switched</string>
|
||||
<string name="root_require_for_install">Requires root privileges</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Display KPM Function</string>
|
||||
<string name="show_kpm_info_summary">Display KPM information and Function in home and bottom bar (Need to reopen the app)</string>
|
||||
@@ -335,7 +296,6 @@
|
||||
<string name="use_webuix_eruda">Inject Eruda into WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Inject a debug console into WebUI X to make debugging easier. Requires web debugging to be on.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI setting</string>
|
||||
<string name="app_dpi_title">Applied DPI</string>
|
||||
<string name="app_dpi_summary">Adjust the screen display density for the current application only</string>
|
||||
<string name="dpi_size_small">Small </string>
|
||||
@@ -353,16 +313,6 @@
|
||||
<string name="language_follow_system">Follow System</string>
|
||||
<string name="language_changed">Language changed, restarting to apply changes</string>
|
||||
<string name="settings_card_dim">Card Darkness Adjustment</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="scroll_to_top_description">Scroll to top</string>
|
||||
<string name="scroll_to_bottom_description">Scroll to the bottom</string>
|
||||
<string name="authorized">authorized</string>
|
||||
<string name="unauthorized">unauthorized</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<string name="profile_umount_modules_disable">Disable custom uninstallation module</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">error code</string>
|
||||
<string name="check_log">Please check the log</string>
|
||||
@@ -370,4 +320,51 @@
|
||||
<string name="module_failed_count">%d Failed to install a new module</string>
|
||||
<string name="module_download_error">Module download failed</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -4,14 +4,12 @@
|
||||
<string name="home_not_installed">Tidak terinstal</string>
|
||||
<string name="home_click_to_install">Klik untuk menginstal</string>
|
||||
<string name="home_working">Berfungsi</string>
|
||||
<string name="home_working_version">Versi: %d</string>
|
||||
<string name="home_superuser_count">SuperUser: %d</string>
|
||||
<string name="home_module_count">Modul: %d</string>
|
||||
<string name="home_working_version">Versi: %s</string>
|
||||
<string name="home_unsupported">Tidak didukung</string>
|
||||
<string name="home_unsupported_reason">KernelSU saat ini hanya mendukung kernel GKI</string>
|
||||
<string name="home_kernel">Kernel</string>
|
||||
<string name="home_susfs_version">Versi SuSFS</string>
|
||||
<string name="home_manager_version">Versi manager</string>
|
||||
<string name="home_fingerprint">Identitas</string>
|
||||
<string name="home_selinux_status">Status SELinux</string>
|
||||
<string name="selinux_status_disabled">Nonaktif</string>
|
||||
<string name="selinux_status_enforcing">Enforcing</string>
|
||||
@@ -22,6 +20,8 @@
|
||||
<string name="module_failed_to_disable">Gagal menonaktifkan modul: %s</string>
|
||||
<string name="module_empty">Tidak ada modul yang terpasang</string>
|
||||
<string name="module">Modul</string>
|
||||
<string name="module_sort_action_first">Urut (Tindakan pertama)</string>
|
||||
<string name="module_sort_enabled_first">Urut (Diaktifkan terlebih dahulu)</string>
|
||||
<string name="uninstall">Hapus</string>
|
||||
<string name="module_install">Instal</string>
|
||||
<string name="install">Instal</string>
|
||||
@@ -50,14 +50,11 @@
|
||||
<string name="home_click_to_learn_kernelsu">Pelajari cara instal KernelSU dan menggunakan modul</string>
|
||||
<string name="home_support_title">Dukung Kami</string>
|
||||
<string name="home_support_content">KernelSU akan selalu menjadi aplikasi gratis dan terbuka. Anda dapat memberikan donasi sebagai bentuk dukungan.</string>
|
||||
<string name="about_source_code"><![CDATA[Lihat kode sumber di %1$s<br/>Gabung dengan kami di saluran %2$s]]></string>
|
||||
<string name="profile_default">Bawaan</string>
|
||||
<string name="profile_template">Templat</string>
|
||||
<string name="profile_custom">Khusus</string>
|
||||
<string name="profile_name">Nama profil</string>
|
||||
<string name="profile_namespace">Mount Namespace</string>
|
||||
<string name="profile_namespace_inherited">Diwariskan</string>
|
||||
<string name="profile_namespace_global">Universal</string>
|
||||
<string name="profile_namespace_individual">Individual</string>
|
||||
<string name="profile_groups">Kelompok</string>
|
||||
<string name="profile_capabilities">Kemampuan</string>
|
||||
<string name="profile_selinux_context">Konteks SELinux</string>
|
||||
@@ -65,6 +62,7 @@
|
||||
<string name="failed_to_update_app_profile">Gagal membarui Profil pada %s</string>
|
||||
<string name="settings_umount_modules_default">Melepas Modul secara bawaan</string>
|
||||
<string name="settings_umount_modules_default_summary">Menggunakan \"Umount Modul\" secara universal pada Profil Aplikasi. Jika diaktifkan, akan menghapus semua modifikasi sistem untuk aplikasi yang tidak memiliki set profil.</string>
|
||||
<string name="settings_susfs_toggle">Nonaktifkan kprobe hooks</string>
|
||||
<string name="profile_umount_modules_summary">Aktifkan opsi ini agar KernelSU dapat memulihkan kembali berkas termodifikasi oleh modul pada aplikasi ini.</string>
|
||||
<string name="profile_selinux_domain">Domain</string>
|
||||
<string name="profile_selinux_rules">Aturan</string>
|
||||
@@ -77,58 +75,183 @@
|
||||
<string name="restart_app">Mulai ulang</string>
|
||||
<string name="failed_to_update_sepolicy">Gagal membarui aturan SELinux pada: %s</string>
|
||||
<string name="module_changelog">Catatan Perubahan</string>
|
||||
<string name="app_profile_template_import_success">Berhasil diimpor</string>
|
||||
<string name="app_profile_export_to_clipboard">Ekspor ke papan klip</string>
|
||||
<string name="app_profile_template_export_empty">Tidak ditemukan templat lokal untuk diekspor!</string>
|
||||
<string name="app_profile_template_id_exist">ID templat sudah ada!</string>
|
||||
<string name="app_profile_import_from_clipboard">Impor dari papan klip</string>
|
||||
<string name="module_changelog_failed">Gagal mengambil Changelog: %s</string>
|
||||
<string name="app_profile_template_name">Nama</string>
|
||||
<string name="app_profile_template_id_invalid">ID template tidak valid</string>
|
||||
<string name="app_profile_template_sync">Sinkronkan templat daring</string>
|
||||
<string name="settings_profile_template">Templat Profil Aplikasi</string>
|
||||
<string name="settings_profile_template_summary">Atur templat Profil yang lokal dan daring</string>
|
||||
<string name="app_profile_template_create">Buat templat</string>
|
||||
<string name="app_profile_import_export">Impor/Ekspor</string>
|
||||
<string name="app_profile_template_save_failed">Gagal menyimpan templat</string>
|
||||
<string name="app_profile_template_edit">Edit templat</string>
|
||||
<string name="app_profile_template_id">ID</string>
|
||||
<string name="settings_profile_template">Templat Profil Aplikasi</string>
|
||||
<string name="app_profile_template_id_invalid">ID template tidak valid</string>
|
||||
<string name="app_profile_template_name">Nama</string>
|
||||
<string name="app_profile_template_description">Deskripsi</string>
|
||||
<string name="app_profile_template_save">Simpan</string>
|
||||
<string name="settings_profile_template_summary">Atur templat Profil yang lokal dan daring</string>
|
||||
<string name="app_profile_template_delete">Hapus</string>
|
||||
<string name="app_profile_template_import_empty">Papan klip kosong!</string>
|
||||
<string name="app_profile_template_view">Lihat templat</string>
|
||||
<string name="app_profile_template_readonly">readonly</string>
|
||||
<string name="app_profile_template_id_exist">ID templat sudah ada!</string>
|
||||
<string name="app_profile_import_export">Impor/Ekspor</string>
|
||||
<string name="app_profile_import_from_clipboard">Impor dari papan klip</string>
|
||||
<string name="app_profile_export_to_clipboard">Ekspor ke papan klip</string>
|
||||
<string name="app_profile_template_export_empty">Tidak ditemukan templat lokal untuk diekspor!</string>
|
||||
<string name="app_profile_template_import_success">Berhasil diimpor</string>
|
||||
<string name="app_profile_template_sync">Sinkronkan templat daring</string>
|
||||
<string name="app_profile_template_save_failed">Gagal menyimpan templat</string>
|
||||
<string name="app_profile_template_import_empty">Papan klip kosong!</string>
|
||||
<string name="module_changelog_failed">Gagal mengambil Changelog: %s</string>
|
||||
<string name="settings_check_update">Cek terbaru</string>
|
||||
<string name="settings_check_update_summary">Cek terbaru setiap membuka aplikasi</string>
|
||||
<string name="grant_root_failed">Gagal memberikan akses root!</string>
|
||||
<string name="action">Tindakan</string>
|
||||
<string name="close">Tutup</string>
|
||||
<string name="enable_web_debugging">Pengawakutuan WebView</string>
|
||||
<string name="enable_web_debugging_summary">Dapat digunakan untuk men-debug WebUI. Harap aktifkan hanya bila diperlukan.</string>
|
||||
<string name="select_file_tip">%1$s image partisi terekomendasi</string>
|
||||
<string name="select_kmi">Pilih KMI</string>
|
||||
<string name="install_next">Selanjutnya</string>
|
||||
<string name="install_inactive_slot_warning">Gawai akan **DIPAKSA** untuk but ke slot nonaktif!
|
||||
\nHANYA gunakan setelah proses OTA selesai.
|
||||
\nLanjutkan?</string>
|
||||
<string name="direct_install">Instal langsung (rekomendasi)</string>
|
||||
<string name="select_file">Pilih berkas</string>
|
||||
<string name="install_inactive_slot">Instal ke slot nonaktif (setelah OTA)</string>
|
||||
<string name="grant_root_failed">Gagal memberikan akses root!</string>
|
||||
<string name="open">Buka</string>
|
||||
<string name="close">Tutup</string>
|
||||
<string name="settings_check_update">Cek terbaru</string>
|
||||
<string name="settings_check_update_summary">Cek terbaru setiap membuka aplikasi</string>
|
||||
<string name="settings_uninstall_permanent_message">Hapus permanen KernelSU (root dan modul).</string>
|
||||
<string name="settings_uninstall_temporary">Hapus sementara</string>
|
||||
<string name="settings_restore_stock_image">Pulihkan image bawaan</string>
|
||||
<string name="install_inactive_slot_warning">Gawai akan **DIPAKSA** untuk but ke slot nonaktif!
|
||||
\nHANYA gunakan setelah proses OTA selesai.
|
||||
\nLanjutkan?</string>
|
||||
<string name="install_next">Selanjutnya</string>
|
||||
<string name="select_file_tip">%1$s image partisi terekomendasi</string>
|
||||
<string name="select_kmi">Pilih KMI</string>
|
||||
<string name="settings_uninstall">Hapus</string>
|
||||
<string name="settings_uninstall_temporary_message">Sementara menghapus KernelSU, memulihkan ke kondisi asal setelah reboot berikutnya.</string>
|
||||
<string name="settings_uninstall_temporary">Hapus sementara</string>
|
||||
<string name="settings_uninstall_permanent">Hapus permanen</string>
|
||||
<string name="settings_restore_stock_image">Pulihkan image bawaan</string>
|
||||
<string name="settings_uninstall_temporary_message">Sementara menghapus KernelSU, memulihkan ke kondisi asal setelah reboot berikutnya.</string>
|
||||
<string name="settings_uninstall_permanent_message">Hapus permanen KernelSU (root dan modul).</string>
|
||||
<string name="settings_restore_stock_image_message">Pulihkan image bawaan ROM (jika cadangan tersedia), umumnya dilakukan sebelum OTA; jika ingin menghapus KernelSU, gunakan fungsi \"Hapus permanen\".</string>
|
||||
<string name="flash_success">Pemasangan Berhasil</string>
|
||||
<string name="selected_lkm">LKM dipilih: %s</string>
|
||||
<string name="flashing">Pasang</string>
|
||||
<string name="flash_success">Pemasangan Berhasil</string>
|
||||
<string name="flash_failed">Pemasangan Gagal</string>
|
||||
<string name="selected_lkm">LKM dipilih: %s</string>
|
||||
<string name="save_log">Simpan Log</string>
|
||||
<string name="action">Action</string>
|
||||
<string name="log_saved">Log disimpan</string>
|
||||
<string name="module_sort_enabled_first">Urut (Diaktifkan terlebih dahulu)</string>
|
||||
<string name="module_sort_action_first">Urut (Tindakan pertama)</string>
|
||||
<string name="sus_su_mode">Mode SuS SU:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">konfirmasi pemasangan modul %1$s?</string>
|
||||
<!-- Restore related -->
|
||||
<string name="restore_confirm_message">Operasi ini akan menimpa semua modul yang ada. Lanjutkan?</string>
|
||||
<string name="confirm">Konfirmasi</string>
|
||||
<string name="cancel">Batal</string>
|
||||
<!-- Backup related -->
|
||||
<string name="backup_success">Pencadangan berhasil (tar.gz)</string>
|
||||
<string name="backup_failed">Pencadangan gagal: %1$s</string>
|
||||
<string name="backup_modules">cadangkan modul</string>
|
||||
<string name="restore_modules">pulihkan modul</string>
|
||||
<!-- Restore related messages -->
|
||||
<string name="restore_success">Modul berhasil dipulihkan, restart diperlukan</string>
|
||||
<string name="restore_failed">Pemulihan gagal: %1$s</string>
|
||||
<string name="restart_now">Mulai Ulang Sekarang</string>
|
||||
<string name="unknown_error">Kesalahan tidak diketahui</string>
|
||||
<!-- Command related -->
|
||||
<!-- Allowlist related -->
|
||||
<string name="settings_custom_background">Latar belakang kustom</string>
|
||||
<string name="settings_custom_background_summary">Pilih gambar untuk latar belakang</string>
|
||||
<string name="settings_card_alpha">NavBar transparant</string>
|
||||
<string name="home_android_version">Versi Android</string>
|
||||
<string name="home_device_model">Model Perangkat</string>
|
||||
<string name="settings_disable_su">Nonaktifkan kompatibilitas SU</string>
|
||||
<string name="settings_disable_su_summary">Nonaktifkan sementara kemampuan aplikasi untuk mendapatkan hak akses root melalui perintah su (proses root yang sedang berjalan tidak akan terpengaruh)</string>
|
||||
<string name="more_settings">Setelan lainnya</string>
|
||||
<string name="simple_mode">Mode simple</string>
|
||||
<string name="simple_mode_summary">Sembunyikan papan kartu di beranda</string>
|
||||
<string name="hide_kernel_kernelsu_version">Sembunyikan versi kernel</string>
|
||||
<string name="hide_kernel_kernelsu_version_summary">Sembunyikan versi kernel jika namanya tidak yakin</string>
|
||||
<string name="hide_other_info">Sembunyikan info lain</string>
|
||||
<string name="hide_other_info_summary">Sembunyikan notifikasi titik merah (jumlah Super User, modul, dan modul KPM) di bilah navigasi</string>
|
||||
<string name="hide_susfs_status">Sembunyikan status SuSFs</string>
|
||||
<string name="hide_susfs_status_summary">Sembunyikan status susfs di halaman awal beranda</string>
|
||||
<string name="hide_link_card">Sembunyikan kartu tautan</string>
|
||||
<string name="hide_link_card_summary">Sembunyikan papan kartu URL di halaman awal beranda</string>
|
||||
<string name="hide_tag_card">Sembunyikan baris label modul</string>
|
||||
<string name="hide_tag_card_summary">Sembunyikan label nama folder dan ukuran di kartu modul</string>
|
||||
<string name="theme_mode">Tema</string>
|
||||
<string name="theme_follow_system">Mengikuti sistem</string>
|
||||
<string name="theme_light">Terang</string>
|
||||
<string name="theme_dark">Hitam</string>
|
||||
<string name="dynamic_color_title">Warna dinamik</string>
|
||||
<string name="dynamic_color_summary">Warna dinamik, menggunakan sistem tema</string>
|
||||
<string name="choose_theme_color">Pilih warna tema</string>
|
||||
<string name="color_default">Biru</string>
|
||||
<string name="color_green">Hijau</string>
|
||||
<string name="color_purple">Ungu</string>
|
||||
<string name="color_orange">Oren</string>
|
||||
<string name="color_gray">Abu</string>
|
||||
<string name="color_yellow">Kuning</string>
|
||||
<string name="kpm_empty">Tidak ada modul kernel yang terpasang saat ini</string>
|
||||
<string name="kpm_version">Versi</string>
|
||||
<string name="kpm_author">Pembuat</string>
|
||||
<string name="kpm_uninstall">Uninstal</string>
|
||||
<string name="kpm_uninstall_success">Berhasil di Uninstal</string>
|
||||
<string name="kpm_uninstall_failed">Gagal Uninstal</string>
|
||||
<string name="kpm_install_success">Memuat module KPM berhasil</string>
|
||||
<string name="kpm_install_failed">Memuat module KPM gagal!</string>
|
||||
<string name="kpm_args">Parameter</string>
|
||||
<string name="kpm_control">Eksekusi</string>
|
||||
<string name="home_kpm_version">Versi KPM</string>
|
||||
<string name="kernel_module_notice">Fungsi-fungsi modul kernel berikut dikembangkan oleh KernelPatch dan dimodifikasi untuk menyertakan fungsi modul kernel dari SukiSU Ultra</string>
|
||||
<string name="home_ContributionCard_kernelsu">Antusias Untuk SukiSU Ultra</string>
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra akan menjadi cabang KSU yang relatif independen di masa mendatang, tetapi kami tetap menghargai KernelSU dan MKSU resmi dan sebagainya atas kontribusi mereka!</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<!-- Flash Status Related -->
|
||||
<!-- Slot selection related strings -->
|
||||
<!-- Error Messages -->
|
||||
<!-- lkm/gki install -->
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="appearance_settings">Kustomisasi toolbar</string>
|
||||
<string name="icon_switch_title">Ubah ikon</string>
|
||||
<string name="icon_switch_summary">Ubah ikon peluncur aplikasi ke ikon KernelSU</string>
|
||||
<string name="icon_switched">Ikon dirubah</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Tampilkan fungsi KPM</string>
|
||||
<string name="show_kpm_info_summary">Tampilkan fungsi informasi KPM dan menu KPM di bilah navigasi</string>
|
||||
<!-- Webui X settings -->
|
||||
<string name="use_webuix">Pilih jenis webUI untuk digunakan</string>
|
||||
<string name="engine_auto_select">Otomatis memilih</string>
|
||||
<string name="engine_force_webuix">Paksa menggunakan WebUI X</string>
|
||||
<string name="engine_force_ksu">Penggunaan wajib KSU WebUI</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="app_dpi_title">Ubah DPI</string>
|
||||
<string name="app_dpi_summary">Pengaturan DPI hanya untuk aplikasi ini saja</string>
|
||||
<string name="dpi_size_small">Kecil</string>
|
||||
<string name="dpi_size_medium">Sedang</string>
|
||||
<string name="dpi_size_large">Besar</string>
|
||||
<string name="dpi_size_extra_large">Jumbo</string>
|
||||
<string name="dpi_size_custom">Kustomisasi</string>
|
||||
<string name="dpi_apply_settings">Terapkan setelan DPI</string>
|
||||
<string name="dpi_confirm_title">Konfirmasi perubahan DPI</string>
|
||||
<string name="dpi_confirm_message">Apa kamu yakin ingin merubah DPI aplikasi dari %1$d ke %2$d?</string>
|
||||
<string name="dpi_confirm_summary">Aplikasi membutuhkan restar untuk menerapkan opsi DPI ini, perubahan ini tidak mengganggu DPI sistem</string>
|
||||
<string name="dpi_applied_success">DPI telah di rubah ke %1$d, efektif setelah aplikasi di restar</string>
|
||||
<!-- Language settings related strings -->
|
||||
<string name="language_setting">Bahasa Aplikasi</string>
|
||||
<string name="language_follow_system">Mengikuti sistem</string>
|
||||
<string name="language_changed">Bahasa dirubah, mulai ulang aplikasi untuk menerapkan</string>
|
||||
<!-- Flash related -->
|
||||
<!-- 分类相关 -->
|
||||
<!-- 排序相关 -->
|
||||
<!-- 状态相关 -->
|
||||
<!-- 标签相关 -->
|
||||
<!-- BottomSheet相关 -->
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
<string name="show_more_module_info">Tampilkan info modul lainnya</string>
|
||||
<string name="show_more_module_info_summary">Pajang info modul tambahan seperti URL pembaruan JSON</string>
|
||||
<!-- SuSFS 自启动相关字符串 -->
|
||||
<!-- SuSFS Kstat相关字符串 -->
|
||||
<!-- SuSFS Mount Hiding Control Related Strings -->
|
||||
<!-- 备份和还原相关字符串 -->
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">Non installato</string>
|
||||
<string name="home_click_to_install">Clicca per installare</string>
|
||||
<string name="home_working">In esecuzione</string>
|
||||
<string name="home_working_version">Versione: %d</string>
|
||||
<string name="home_superuser_count">Applicazioni con accesso root: %d</string>
|
||||
<string name="home_module_count">Moduli installati: %d</string>
|
||||
<string name="home_working_version">Versione: %s</string>
|
||||
<string name="home_unsupported">Non supportato</string>
|
||||
<string name="home_unsupported_reason">KernelSU ora supporta solo i kernel GKI</string>
|
||||
<string name="home_kernel">Kernel</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS Version</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">Versione del manager</string>
|
||||
<string name="home_fingerprint">Impronta della build di Android</string>
|
||||
<string name="home_selinux_status">Stato di SELinux</string>
|
||||
<string name="selinux_status_disabled">Disabilitato</string>
|
||||
<string name="selinux_status_enforcing">Enforcing</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Sort (Action first)</string>
|
||||
<string name="module_sort_enabled_first">Sort (Enabled first)</string>
|
||||
<string name="uninstall">Disinstalla</string>
|
||||
<string name="restore">Restore</string>
|
||||
<string name="module_install">Installa</string>
|
||||
<string name="install">Installa</string>
|
||||
<string name="reboot">Riavvia</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">Modello</string>
|
||||
<string name="profile_custom">Personalizzato</string>
|
||||
<string name="profile_name">Nome profilo</string>
|
||||
<string name="profile_namespace">Spazio dei nomi del mount</string>
|
||||
<string name="profile_namespace_inherited">Ereditato</string>
|
||||
<string name="profile_namespace_global">Globale</string>
|
||||
<string name="profile_namespace_individual">Individuale</string>
|
||||
<string name="profile_groups">Gruppi</string>
|
||||
<string name="profile_capabilities">Capacità</string>
|
||||
<string name="profile_selinux_context">Contesto SELinux</string>
|
||||
<string name="profile_umount_modules">Scollega moduli</string>
|
||||
<string name="failed_to_update_app_profile">Aggiornamento App Profile per %s fallito</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %d is too low for the manager to work properly. Please upgrade to version %d or higher!</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %s is too low for the manager to work properly. Please upgrade to version %s or higher!</string>
|
||||
<string name="settings_umount_modules_default">Scollega moduli da default</string>
|
||||
<string name="settings_umount_modules_default_summary">Il valore predefinito per \"Scollega moduli\" in App Profile. Se attivato, rimuoverà tutte le modifiche al sistema da parte dei moduli per le applicazioni che non hanno un profilo impostato.</string>
|
||||
<string name="settings_susfs_toggle">Disable kprobe hooks</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Controlla automaticamente la disponibilità di aggiornamenti all\'apertura dell\'applicazione</string>
|
||||
<string name="grant_root_failed">Impossibile ottenere l\'accesso root!</string>
|
||||
<string name="action">Action</string>
|
||||
<string name="open">Apri</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="enable_web_debugging">Abilita il debug di WebView</string>
|
||||
<string name="enable_web_debugging_summary">Può essere usato per svolgere il debug di WebUI, è consigliato attivarlo solo quando necessario.</string>
|
||||
@@ -138,9 +127,6 @@
|
||||
<string name="selected_lkm">LKM selezionato: %s</string>
|
||||
<string name="save_log">Salva Registri</string>
|
||||
<string name="log_saved">Logs saved</string>
|
||||
<string name="status_supported">Supported</string>
|
||||
<string name="status_not_supported">Not Supported</string>
|
||||
<string name="status_unknown">Unknown</string>
|
||||
<string name="sus_su_mode">SuS SU mode:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">confirm install module %1$s?</string>
|
||||
@@ -174,14 +160,11 @@
|
||||
<string name="settings_custom_background">Custom App Background</string>
|
||||
<string name="settings_custom_background_summary">Select an image as background</string>
|
||||
<string name="settings_card_alpha">Navigation bar transparency</string>
|
||||
<string name="settings_restore_default">Restore default</string>
|
||||
<string name="home_android_version">Android version</string>
|
||||
<string name="home_device_model">Device model</string>
|
||||
<string name="su_not_allowed">Granting superuser to %s is not allowed</string>
|
||||
<string name="settings_disable_su">Disable su compatibility</string>
|
||||
<string name="settings_disable_su_summary">Temporarily disable any applications from obtaining root privileges via the su command (existing root processes will not be affected).</string>
|
||||
<string name="using_mksu_manager">You are using the SukiSU Beta manager</string>
|
||||
<string name="module_install_multiple_confirm">Are you sure you want to install the selected %d modules?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Sure you want to install the following %1$d modules? \n\n%2$s</string>
|
||||
<string name="more_settings">More settings</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -212,20 +195,14 @@
|
||||
<string name="color_pink">Pink</string>
|
||||
<string name="color_gray">Gray</string>
|
||||
<string name="color_yellow">Yellow</string>
|
||||
<string name="flash_option">Brush Options</string>
|
||||
<string name="flash_option_tip">Select the file to be flashed</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash AnyKernel3 kernel file</string>
|
||||
<string name="root_required">Requires root privileges</string>
|
||||
<string name="copy_failed">File Copy Failure</string>
|
||||
<string name="reboot_complete_title">Scrubbing complete</string>
|
||||
<string name="reboot_complete_msg">Whether to reboot immediately?</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="failed_reboot">Reboot Failed</string>
|
||||
<string name="batch_authorization">empower</string>
|
||||
<string name="batch_cancel_authorization">withdraw</string>
|
||||
<string name="backup">Backup</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">No installed kernel modules at this time</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
@@ -233,7 +210,6 @@
|
||||
<string name="kpm_uninstall">Uninstall</string>
|
||||
<string name="kpm_uninstall_success">Uninstalled successfully</string>
|
||||
<string name="kpm_uninstall_failed">Failed to uninstall</string>
|
||||
<string name="kpm_install">Install</string>
|
||||
<string name="kpm_install_success">Load of kpm module successful</string>
|
||||
<string name="kpm_install_failed">Load of kpm module failed</string>
|
||||
<string name="kpm_args">Parameters</string>
|
||||
@@ -247,8 +223,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra will be a relatively independent branch of KSU in the future, but we still appreciate the official KernelSU and MKSU etc. for their contributions!</string>
|
||||
<string name="not_supported">Unsupported</string>
|
||||
<string name="supported">Supported</string>
|
||||
<string name="home_kpm_module">"Number of KPMs: %d "</string>
|
||||
<string name="kpm_invalid_file">Invalid KPM file</string>
|
||||
<string name="kernel_patched">Kernel not patched</string>
|
||||
<string name="kernel_not_enabled">Kernel not configured</string>
|
||||
<string name="custom_settings">Custom settings</string>
|
||||
@@ -256,19 +230,13 @@
|
||||
<string name="kpm_install_mode_load">Load</string>
|
||||
<string name="kpm_install_mode_embed">Embed</string>
|
||||
<string name="kpm_install_mode_description">Please select: %1\$s Module Installation Mode \n\nLoad: Temporarily load the module \nEmbedded: Permanently install into the system</string>
|
||||
<string name="log_failed_to_check_module_file">Failed to check module file existence</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Unable to check if module file exists</string>
|
||||
<string name="confirm_uninstall_title">Confirm uninstallation</string>
|
||||
<string name="confirm_uninstall_confirm">Uninstall</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancel</string>
|
||||
<string name="theme_color">Theme Color</string>
|
||||
<string name="invalid_file_type">Incorrect file type! Please select .kpm file.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Uninstall</string>
|
||||
<string name="confirm_uninstall_content">The following KPM will be uninstalled: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Disable kprobe hooks created by KernelSU, using inline hooks instead, which is similar to non-GKI kernel hooking method.</string>
|
||||
<string name="image_editor_title">Adjust background image</string>
|
||||
<string name="image_editor_hint">Use two fingers to zoom the image, and one finger to drag it to adjust the position</string>
|
||||
<string name="background_image_error">Could not load image</string>
|
||||
<string name="reprovision">Reprovision</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
@@ -305,10 +273,6 @@
|
||||
<string name="app_settings">Application Settings</string>
|
||||
<string name="tools">Tools</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Removals</string>
|
||||
<string name="apps_with_root">Applications with root privileges</string>
|
||||
<string name="apps_with_custom_profile">Applications with customized configurations</string>
|
||||
<string name="other_apps">Applications with unchanged defaults</string>
|
||||
<string name="no_apps_found">Application not found</string>
|
||||
<string name="selinux_enabled_toast">SELinux Enabled</string>
|
||||
<string name="selinux_disabled_toast">SELinux Disabled</string>
|
||||
@@ -316,8 +280,6 @@
|
||||
<string name="advanced_settings">Advanced Settings</string>
|
||||
<string name="appearance_settings">Customize the toolbar</string>
|
||||
<string name="back">Comeback</string>
|
||||
<string name="expand">Be in full swing</string>
|
||||
<string name="collapse">put away</string>
|
||||
<string name="susfs_enabled">SuSFS enabled</string>
|
||||
<string name="susfs_disabled">SuSFS disabled</string>
|
||||
<string name="background_set_success">Background set successfully</string>
|
||||
@@ -325,7 +287,6 @@
|
||||
<string name="icon_switch_title">Alternate icon</string>
|
||||
<string name="icon_switch_summary">Change the launcher icon to KernelSU\'s icon.</string>
|
||||
<string name="icon_switched">Icon switched</string>
|
||||
<string name="root_require_for_install">Requires root privileges</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Display KPM Function</string>
|
||||
<string name="show_kpm_info_summary">Display KPM information and Function in home and bottom bar (Need to reopen the app)</string>
|
||||
@@ -337,7 +298,6 @@
|
||||
<string name="use_webuix_eruda">Inject Eruda into WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Inject a debug console into WebUI X to make debugging easier. Requires web debugging to be on.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI setting</string>
|
||||
<string name="app_dpi_title">Applied DPI</string>
|
||||
<string name="app_dpi_summary">Adjust the screen display density for the current application only</string>
|
||||
<string name="dpi_size_small">Small </string>
|
||||
@@ -355,16 +315,6 @@
|
||||
<string name="language_follow_system">Follow System</string>
|
||||
<string name="language_changed">Language changed, restarting to apply changes</string>
|
||||
<string name="settings_card_dim">Card Darkness Adjustment</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="scroll_to_top_description">Scroll to top</string>
|
||||
<string name="scroll_to_bottom_description">Scroll to the bottom</string>
|
||||
<string name="authorized">authorized</string>
|
||||
<string name="unauthorized">unauthorized</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<string name="profile_umount_modules_disable">Disable custom uninstallation module</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">error code</string>
|
||||
<string name="check_log">Please check the log</string>
|
||||
@@ -372,4 +322,51 @@
|
||||
<string name="module_failed_count">%d Failed to install a new module</string>
|
||||
<string name="module_download_error">Module download failed</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -9,27 +9,21 @@
|
||||
<string name="send_log">שלח לוג</string>
|
||||
<string name="selinux_status_disabled">מושבת</string>
|
||||
<string name="home_support_title">תמכו בנו</string>
|
||||
<string name="profile_namespace_inherited">ירושה</string>
|
||||
<string name="module_magisk_conflict">מודולים מושבתים מכיוון שהם מתנגשים עם זה של Magisk!</string>
|
||||
<string name="module_changelog">יומן שינויים</string>
|
||||
<string name="selinux_status_permissive">התרים</string>
|
||||
<string name="reboot_download">הפעלה מחדש למצב הורדה</string>
|
||||
<string name="settings_umount_modules_default">טעינת מודולים כברירת מחדל</string>
|
||||
<string name="profile_umount_modules_summary">הפעלת אפשרות זו תאפשר ל-KernelSU לשחזר קבצים שהשתנו על ידי המודולים עבור יישום זה.</string>
|
||||
<string name="profile_namespace_individual">אישי</string>
|
||||
<string name="module_failed_to_enable">הפעלת המודל נכשלה: %s</string>
|
||||
<string name="force_stop_app">עצירה בכח</string>
|
||||
<string name="reboot_edl" formatted="false">הפעלה מחדש למצב EDL</string>
|
||||
<string name="restart_app">איתחול</string>
|
||||
<string name="profile_capabilities">יכולת</string>
|
||||
<string name="home_superuser_count">משתמשי על: %d</string>
|
||||
<string name="module_start_downloading">מפעיל מודל: %s</string>
|
||||
<string name="profile_namespace_global">גלובלי</string>
|
||||
<string name="settings_umount_modules_default_summary">ערך ברירת המחדל הגלובלי עבור \"טעינת מודולים\" בפרופילי אפליקציה. אם מופעל, זה יסיר את כל שינויי המודול למערכת עבור יישומים שאין להם ערכת פרופיל.</string>
|
||||
<string name="home_module_count">מודלים:%d</string>
|
||||
<string name="selinux_status_enforcing">אכיפה</string>
|
||||
<string name="profile_selinux_context">הקשר SELinux</string>
|
||||
<string name="home_fingerprint">טביעת אצבע</string>
|
||||
<string name="profile_default">ברירת מחדל</string>
|
||||
<string name="launch_app">להשיק</string>
|
||||
<string name="safe_mode">מצב בטוח</string>
|
||||
@@ -38,7 +32,6 @@
|
||||
<string name="profile_name">שם פרופיל</string>
|
||||
<string name="home_support_content">KernelSU הוא, ותמיד יהיה, חינמי וקוד פתוח. עם זאת, תוכל להראות לנו שאכפת לך על ידי תרומה.</string>
|
||||
<string name="uninstall">הסרה</string>
|
||||
<string name="profile_namespace">טעינת מרחב שמות</string>
|
||||
<string name="module_install">התקנה</string>
|
||||
<string name="home_click_to_install">לחץ להתקנה</string>
|
||||
<string name="profile_selinux_rules">כללים</string>
|
||||
@@ -46,7 +39,7 @@
|
||||
<string name="module">מודולים</string>
|
||||
<string name="module_author">יוצר</string>
|
||||
<string name="about">אודות</string>
|
||||
<string name="home_working_version">גרסה: %d</string>
|
||||
<string name="home_working_version">גרסה: %s</string>
|
||||
<string name="reboot">הפעלה מחדש</string>
|
||||
<string name="home_unsupported_reason">KernelSU תומך רק בליבת GKI כעת</string>
|
||||
<string name="home_selinux_status">סטטוס SELinux</string>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">未インストール</string>
|
||||
<string name="home_click_to_install">タップでインストール</string>
|
||||
<string name="home_working">動作中</string>
|
||||
<string name="home_working_version">バージョン: %d</string>
|
||||
<string name="home_superuser_count">スーパーユーザー: %d</string>
|
||||
<string name="home_module_count">モジュール: %d</string>
|
||||
<string name="home_working_version">バージョン: %s</string>
|
||||
<string name="home_unsupported">非対応</string>
|
||||
<string name="home_unsupported_reason">カーネルの KernelSU ドライバが未検出です。カーネルが間違ってませんか?</string>
|
||||
<string name="home_kernel">カーネルのバージョン</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS のバージョン</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">マネージャーのバージョン</string>
|
||||
<string name="home_fingerprint">Fingerprint</string>
|
||||
<string name="home_selinux_status">SELinux のステータス</string>
|
||||
<string name="selinux_status_disabled">無効</string>
|
||||
<string name="selinux_status_enforcing">Enforcing</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">並べ替え (アクション優先)</string>
|
||||
<string name="module_sort_enabled_first">並べ替え (最初に有効)</string>
|
||||
<string name="uninstall">アンインストール</string>
|
||||
<string name="restore">復元</string>
|
||||
<string name="module_install">インストール</string>
|
||||
<string name="install">インストール</string>
|
||||
<string name="reboot">再起動</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">テンプレート</string>
|
||||
<string name="profile_custom">カスタム</string>
|
||||
<string name="profile_name">プロファイル名</string>
|
||||
<string name="profile_namespace">名前空間のマウント</string>
|
||||
<string name="profile_namespace_inherited">継承</string>
|
||||
<string name="profile_namespace_global">共通</string>
|
||||
<string name="profile_namespace_individual">分離</string>
|
||||
<string name="profile_groups">グループ</string>
|
||||
<string name="profile_capabilities">ケーパビリティ</string>
|
||||
<string name="profile_capabilities">ケイパビリティ</string>
|
||||
<string name="profile_selinux_context">SELinux コンテキスト</string>
|
||||
<string name="profile_umount_modules">モジュールのアンマウント</string>
|
||||
<string name="failed_to_update_app_profile">%s のアプリのプロファイルの更新をできませでした</string>
|
||||
<string name="require_kernel_version" formatted="false">現在の KernelSU のバージョン %d は低すぎるため、マネージャーは正常に動作しません。バージョン %d 以上に更新してください!</string>
|
||||
<string name="require_kernel_version" formatted="false">現在の KernelSU のバージョン %s は低すぎるため、マネージャーは正常に動作しません。バージョン %s 以上に更新してください!</string>
|
||||
<string name="settings_umount_modules_default">デフォルトでモジュールのマウントを解除する</string>
|
||||
<string name="settings_umount_modules_default_summary">アプリプロファイルの「モジュールのアンマウント」の共通となるデフォルト値です。 有効にすると、プロファイルセットを持たないアプリのシステムに対するすべてのモジュールの変更が削除されます。</string>
|
||||
<string name="settings_susfs_toggle">kprobe フックを無効化</string>
|
||||
@@ -87,7 +77,7 @@
|
||||
<string name="failed_to_update_sepolicy">SELinux ルールの更新に失敗しました %s</string>
|
||||
<string name="module_changelog">変更履歴</string>
|
||||
<string name="settings_profile_template">アプリプロファイルのテンプレート</string>
|
||||
<string name="settings_profile_template_summary">アプリプロファイルのローカルおよびオンラインテンプレートを管理します</string>
|
||||
<string name="settings_profile_template_summary">アプリプロファイルのローカルおよびオンラインテンプレートを管理します。</string>
|
||||
<string name="app_profile_template_create">テンプレートの作成</string>
|
||||
<string name="app_profile_template_edit">テンプレートの編集</string>
|
||||
<string name="app_profile_template_id">ID</string>
|
||||
@@ -109,21 +99,21 @@
|
||||
<string name="app_profile_template_import_empty">クリップボードが空です!</string>
|
||||
<string name="module_changelog_failed">変更ログの取得に失敗しました: %s</string>
|
||||
<string name="settings_check_update">更新を確認する</string>
|
||||
<string name="settings_check_update_summary">アプリの起動時に更新を自動で確認します</string>
|
||||
<string name="settings_check_update_summary">アプリの起動時に更新を自動で確認します。</string>
|
||||
<string name="grant_root_failed">root の付与に失敗しました!</string>
|
||||
<string name="action">アクション</string>
|
||||
<string name="open">開く</string>
|
||||
<string name="close">閉じる</string>
|
||||
<string name="enable_web_debugging">WebView デバッグを有効化する</string>
|
||||
<string name="enable_web_debugging_summary">WebUI のデバッグに使用できます。必要な場合でのみ有効化してください</string>
|
||||
<string name="enable_web_debugging_summary">WebUI のデバッグに使用できます。必要な場合でのみ有効化してください。</string>
|
||||
<string name="direct_install">直接インストール (推奨)</string>
|
||||
<string name="select_file">パッチを行うイメージを選択</string>
|
||||
<string name="install_inactive_slot">非アクティブなスロットにインストール (OTA 後)</string>
|
||||
<string name="install_inactive_slot_warning">再起動後、デバイスは**強制的に**、現在非アクティブなスロットから起動します。
|
||||
<string name="install_inactive_slot_warning">再起動後、デバイスは**強制的に**、現在の非アクティブスロットから起動します。
|
||||
\nこのオプションは、OTA が完了した後にのみ使用してください。
|
||||
\n続行しますか?</string>
|
||||
<string name="install_next">次へ</string>
|
||||
<string name="select_file_tip">%1$s のパーティションイメージを推奨します</string>
|
||||
<string name="select_file_tip">%1$s のパーティションイメージを推奨します。</string>
|
||||
<string name="select_file_tip_vendor">(不安定)</string>
|
||||
<string name="select_kmi">KMI を選択してください</string>
|
||||
<string name="settings_uninstall">アンインストール</string>
|
||||
<string name="settings_uninstall_temporary">一時的にアンインストールする</string>
|
||||
@@ -138,9 +128,6 @@
|
||||
<string name="selected_lkm">選択された LKM: %s</string>
|
||||
<string name="save_log">ログを保存</string>
|
||||
<string name="log_saved">保存されたログ</string>
|
||||
<string name="status_supported">対応</string>
|
||||
<string name="status_not_supported">非対応</string>
|
||||
<string name="status_unknown">不明</string>
|
||||
<string name="sus_su_mode">SuS SU モード:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">%1$s のモジュールをインストールしますか?</string>
|
||||
@@ -174,36 +161,35 @@
|
||||
<string name="settings_custom_background">アプリの背景を変更</string>
|
||||
<string name="settings_custom_background_summary">背景にする画像を選択してください</string>
|
||||
<string name="settings_card_alpha">ナビゲーションバーの透過</string>
|
||||
<string name="settings_restore_default">デフォルトに復元</string>
|
||||
<string name="home_android_version">Android のバージョン</string>
|
||||
<string name="home_device_model">デバイスモデル</string>
|
||||
<string name="su_not_allowed">%s にスーパーユーザー権限を付与することはできません</string>
|
||||
<string name="settings_disable_su">su の互換性を無効化する</string>
|
||||
<string name="settings_disable_su_summary">su コマンドを使用してアプリが root 権限を取得する動作を一時的に無効化します (既存の root プロセスは影響を受けません)。</string>
|
||||
<string name="using_mksu_manager">SukiSU Beta Manager を使用しています。</string>
|
||||
<string name="module_install_multiple_confirm">選択した %d 個のモジュールをインストールしてもよろしいですか?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">%1$d 個のモジュールをインストールしてもよろしいですか?\n\n%2$s</string>
|
||||
<string name="more_settings">その他の設定</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
<string name="selinux_enabled">有効</string>
|
||||
<string name="selinux_disabled">無効</string>
|
||||
<string name="simple_mode">シンプルモード</string>
|
||||
<string name="simple_mode_summary">ON にすると不要なカードを非表示にします</string>
|
||||
<string name="simple_mode_summary">ON にすると不要なカードを非表示にします。</string>
|
||||
<string name="hide_kernel_kernelsu_version">カーネルのバージョンを非表示</string>
|
||||
<string name="hide_kernel_kernelsu_version_summary">カーネルのバージョンを非表示にします</string>
|
||||
<string name="hide_kernel_kernelsu_version_summary">カーネルのバージョンを非表示にします。</string>
|
||||
<string name="hide_other_info">その他の情報を非表示</string>
|
||||
<string name="hide_other_info_summary">ナビゲーションバーページでスーパーユーザー、モジュール、KPM モジュールの数に関する赤いドットを非表示にします</string>
|
||||
<string name="hide_other_info_summary">ナビゲーションバーページでスーパーユーザー、モジュール、KPM モジュールの数に関する赤いドットを非表示にします。</string>
|
||||
<string name="hide_susfs_status">SuSFS ステータスを非表示</string>
|
||||
<string name="hide_susfs_status_summary">ホームページ上の SuSFS ステータス情報を非表示にします</string>
|
||||
<string name="hide_susfs_status_summary">ホームページ上の SuSFS ステータス情報を非表示にします。</string>
|
||||
<string name="hide_link_card">リンクカードのステータスを非表示</string>
|
||||
<string name="hide_link_card_summary">ホームページ上のリンクカード情報を非表示にします</string>
|
||||
<string name="hide_link_card_summary">ホームページ上のリンクカード情報を非表示にします。</string>
|
||||
<string name="hide_tag_card">モジュールラベルの行を非表示</string>
|
||||
<string name="hide_tag_card_summary">モジュールカード内のフォルダ名とサイズのラベルを非表示にします。</string>
|
||||
<string name="theme_mode">テーマ</string>
|
||||
<string name="theme_follow_system">システムに従う</string>
|
||||
<string name="theme_light">ライト</string>
|
||||
<string name="theme_dark">ダーク</string>
|
||||
<string name="manual_hook">手動でフック</string>
|
||||
<string name="dynamic_color_title">ダイナミックカラー</string>
|
||||
<string name="dynamic_color_summary">システムテーマのダイナミックカラーを使用します</string>
|
||||
<string name="dynamic_color_summary">システムテーマのダイナミックカラーを使用します。</string>
|
||||
<string name="choose_theme_color">テーマカラーを選択</string>
|
||||
<string name="color_default">ブルー</string>
|
||||
<string name="color_green">グリーン</string>
|
||||
@@ -212,20 +198,14 @@
|
||||
<string name="color_pink">ピンク</string>
|
||||
<string name="color_gray">グレー</string>
|
||||
<string name="color_yellow">イエロー</string>
|
||||
<string name="flash_option">フラッシュオプション</string>
|
||||
<string name="flash_option_tip">フラッシュするファイルを選択</string>
|
||||
<string name="horizon_kernel">AnyKernel3 をインストール</string>
|
||||
<string name="horizon_kernel_summary">AnyKernel3 カーネルファイルをフラッシュします</string>
|
||||
<string name="root_required">root 権限が必要です</string>
|
||||
<string name="copy_failed">ファイルのコピーに失敗しました</string>
|
||||
<string name="reboot_complete_title">スクラブが完了しました</string>
|
||||
<string name="reboot_complete_msg">すぐに再起動しますか?</string>
|
||||
<string name="yes">はい</string>
|
||||
<string name="no">いいえ</string>
|
||||
<string name="failed_reboot">再起動に失敗しました</string>
|
||||
<string name="batch_authorization">権限を付与</string>
|
||||
<string name="batch_cancel_authorization">撤回する</string>
|
||||
<string name="backup">バックアップ</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">カーネルモジュールは現在インストールされていません</string>
|
||||
<string name="kpm_version">バージョン</string>
|
||||
@@ -233,7 +213,6 @@
|
||||
<string name="kpm_uninstall">アンインストール</string>
|
||||
<string name="kpm_uninstall_success">アンインストールに失敗しました</string>
|
||||
<string name="kpm_uninstall_failed">アンインストールに失敗しました</string>
|
||||
<string name="kpm_install">インストール</string>
|
||||
<string name="kpm_install_success">KPM モジュールの読み込みに成功しました</string>
|
||||
<string name="kpm_install_failed">KPM モジュールの読み込みに失敗しました</string>
|
||||
<string name="kpm_args">パラメータ</string>
|
||||
@@ -247,8 +226,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra は将来的に KSU から比較的に独立したブランチになりますが、公式の KernelSU や MKSU などの貢献に感謝しています!</string>
|
||||
<string name="not_supported">非対応</string>
|
||||
<string name="supported">対応</string>
|
||||
<string name="home_kpm_module">"KPM モジュールの数: %d "</string>
|
||||
<string name="kpm_invalid_file">無効な KPM ファイル</string>
|
||||
<string name="kernel_patched">カーネルはパッチされていません</string>
|
||||
<string name="kernel_not_enabled">カーネルは未設定です</string>
|
||||
<string name="custom_settings">カスタム設定</string>
|
||||
@@ -256,19 +233,13 @@
|
||||
<string name="kpm_install_mode_load">読み込む</string>
|
||||
<string name="kpm_install_mode_embed">埋め込む</string>
|
||||
<string name="kpm_install_mode_description">選択してください: %1\$s モジュールのインストールモード \n\n読み込む: モジュールを一時的に読み込みます\n埋め込む: システムで恒久的にインストールします</string>
|
||||
<string name="log_failed_to_check_module_file">モジュールファイルの存在を確認できませんでした</string>
|
||||
<string name="snackbar_failed_to_check_module_file">モジュールファイルが存在するか確認できません</string>
|
||||
<string name="confirm_uninstall_title">アンインストールを確認</string>
|
||||
<string name="confirm_uninstall_confirm">アンインストール</string>
|
||||
<string name="confirm_uninstall_dismiss">キャンセル</string>
|
||||
<string name="theme_color">テーマカラー</string>
|
||||
<string name="invalid_file_type">ファイルの種類が間違っています!.kpm ファイルを選択してください。</string>
|
||||
<string name="confirm_uninstall_title_with_filename">アンインストール</string>
|
||||
<string name="confirm_uninstall_content">次の KPM がアンインストールされます: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">KernelSU によって作成された kprobe フックを無効化して、代替となるインラインフックを使用します。これは、非 GKI カーネルのフック方式に似た物になります。</string>
|
||||
<string name="image_editor_title">背景画像を調整</string>
|
||||
<string name="image_editor_hint">2 本の指で画像を拡大、1 本の指でドラッグで位置を調整します</string>
|
||||
<string name="background_image_error">イメージを読み込めません</string>
|
||||
<string name="image_editor_hint">2 本の指で画像を拡大、1 本の指でドラッグで位置を調整します。</string>
|
||||
<string name="reprovision">再プロビジョニング</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">カーネルをフラッシュ</string>
|
||||
@@ -305,10 +276,6 @@
|
||||
<string name="app_settings">アプリの設定</string>
|
||||
<string name="tools">ツール</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">削除</string>
|
||||
<string name="apps_with_root">root アプリの権限</string>
|
||||
<string name="apps_with_custom_profile">カスタマイズされたアプリ構成</string>
|
||||
<string name="other_apps">その他のアプリ</string>
|
||||
<string name="no_apps_found">アプリがありません</string>
|
||||
<string name="selinux_enabled_toast">SELinux 有効</string>
|
||||
<string name="selinux_disabled_toast">SELinux 無効</string>
|
||||
@@ -316,19 +283,16 @@
|
||||
<string name="advanced_settings">高度な設定</string>
|
||||
<string name="appearance_settings">ツールバーをカスタマイズ</string>
|
||||
<string name="back">戻る</string>
|
||||
<string name="expand">展開する</string>
|
||||
<string name="collapse">折りたたむ</string>
|
||||
<string name="susfs_enabled">SuSFS 有効</string>
|
||||
<string name="susfs_disabled">SuSFS 無効</string>
|
||||
<string name="background_set_success">背景の設定が成功しました</string>
|
||||
<string name="background_removed">カスタム背景を削除しました</string>
|
||||
<string name="icon_switch_title">代替アイコン</string>
|
||||
<string name="icon_switch_summary">ランチャーアイコンを KernelSU のアイコンに変更します</string>
|
||||
<string name="icon_switch_summary">ランチャーアイコンを KernelSU のアイコンに変更します。</string>
|
||||
<string name="icon_switched">アイコンを変更しました</string>
|
||||
<string name="root_require_for_install">root 権限が必要です</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">KPM 機能を非表示</string>
|
||||
<string name="show_kpm_info_summary">ホームとボトムバーから KPM の情報と機能を非表示にします</string>
|
||||
<string name="show_kpm_info_summary">ホームとボトムバーから KPM の情報と機能を非表示にします。</string>
|
||||
<!-- Webui X settings -->
|
||||
<string name="use_webuix">WebUI で使用するエンジン</string>
|
||||
<string name="engine_auto_select">自動選択</string>
|
||||
@@ -337,9 +301,8 @@
|
||||
<string name="use_webuix_eruda">WebUI に Eruda をインジェクトする</string>
|
||||
<string name="use_webuix_eruda_summary">デバッグを容易にするために WebUI X にデバッグコンソールを挿入します。Web デバッグが ON になっている必要があります。</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI の設定</string>
|
||||
<string name="app_dpi_title">DPI の変更を適用</string>
|
||||
<string name="app_dpi_summary">このアプリのみで画面表示密度を調整します</string>
|
||||
<string name="app_dpi_summary">このアプリのみで画面表示密度を調整します。</string>
|
||||
<string name="dpi_size_small">小 </string>
|
||||
<string name="dpi_size_medium">中 </string>
|
||||
<string name="dpi_size_large">大</string>
|
||||
@@ -355,16 +318,6 @@
|
||||
<string name="language_follow_system">システムに従う</string>
|
||||
<string name="language_changed">言語の変更を適用するために再起動しています</string>
|
||||
<string name="settings_card_dim">カードの暗さを調整</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">上詰め</string>
|
||||
<string name="scroll_to_bottom">画面下</string>
|
||||
<string name="scroll_to_top_description">一番上までスクロール</string>
|
||||
<string name="scroll_to_bottom_description">下までスクロールします</string>
|
||||
<string name="authorized">承認済み</string>
|
||||
<string name="unauthorized">未認証</string>
|
||||
<string name="selected">選択中</string>
|
||||
<string name="select">オプション</string>
|
||||
<string name="profile_umount_modules_disable">カスタムアンインストールモジュールを無効にする</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">エラーコード</string>
|
||||
<string name="check_log">ログを確認してください</string>
|
||||
@@ -372,4 +325,199 @@
|
||||
<string name="module_failed_count">%d モジュールのインストールに失敗しました</string>
|
||||
<string name="module_download_error">モデルのダウンロードに失敗しました</string>
|
||||
<string name="kernel_flashing">カーネルをフラッシュ中</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">すべて</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">カスタム</string>
|
||||
<string name="category_default_apps">デフォルト</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">名前の昇順</string>
|
||||
<string name="sort_name_desc">名前の降順</string>
|
||||
<string name="sort_install_time_new">インストール日時 (新しい)</string>
|
||||
<string name="sort_install_time_old">インストール日時 (古い)</string>
|
||||
<string name="sort_size_desc">サイズの降順</string>
|
||||
<string name="sort_size_asc">サイズの昇順</string>
|
||||
<string name="sort_usage_freq">使用頻度</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">このカテゴリーにアプリはありません</string>
|
||||
<!-- 标签相关 -->
|
||||
<string name="deny_authorization">権限の認証</string>
|
||||
<string name="grant_authorization">認証</string>
|
||||
<string name="unmount_modules">モジュールのマウントを解除</string>
|
||||
<string name="disable_unmount">アンインストールするモジュールのマウントを無効化します。</string>
|
||||
<string name="expand_menu">メニューを展開</string>
|
||||
<string name="collapse_menu">メニューを収納</string>
|
||||
<string name="scroll_to_top">上詰め</string>
|
||||
<string name="scroll_to_bottom">画面下</string>
|
||||
<string name="selected">選択中</string>
|
||||
<string name="select">オプション</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">メニューのオプション</string>
|
||||
<string name="sort_options">並べ替え</string>
|
||||
<string name="app_categories">アプリタイプを選択</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<string name="susfs_config_title">SuSFS の構成</string>
|
||||
<string name="susfs_config_description">構成の説明</string>
|
||||
<string name="susfs_config_description_text">この機能を使用すると SuSFS の uname の値とビルド日時の偽装をカスタマイズできます。設定する値を入力後に「適用」をタップで有効になります。</string>
|
||||
<string name="susfs_uname_label">uname の値</string>
|
||||
<string name="susfs_uname_placeholder">カスタム uname の値を入力してください</string>
|
||||
<string name="susfs_build_time_label">ビルド日時を偽装</string>
|
||||
<string name="susfs_build_time_placeholder">偽装するビルド日時を入力してください</string>
|
||||
<string name="susfs_current_value">現在の値: %s</string>
|
||||
<string name="susfs_current_build_time">現在のビルド日時: %s</string>
|
||||
<string name="susfs_reset_to_default">デフォルトにリセット</string>
|
||||
<string name="susfs_apply">適用</string>
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<string name="susfs_reset_confirm_title">リセットを確認</string>
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<string name="susfs_binary_not_found">ksu_susfs ファイルが見つかりません</string>
|
||||
<string name="susfs_command_failed">SuSFS コマンドの実行に失敗しました</string>
|
||||
<string name="susfs_command_error">SuSFS コマンドの実行エラー: %s</string>
|
||||
<string name="susfs_uname_set_success" formatted="false">SuSFS uname とビルド日時が正常に設定されました: %s - %s</string>
|
||||
<!-- SuSFS Settings Item -->
|
||||
<string name="susfs_config_setting_title">SuSFS の構成</string>
|
||||
<!-- 开机自启动相关 -->
|
||||
<string name="susfs_autostart_title">自動起動</string>
|
||||
<string name="susfs_autostart_description">システムの起動時に自動で uname の構成を適用する</string>
|
||||
<string name="susfs_autostart_requirement">有効化するには uname を構成するかパスを追加する必要があります</string>
|
||||
<string name="susfs_autostart_enable_failed">自動起動の有効化に失敗しました</string>
|
||||
<string name="susfs_autostart_disable_failed">自動起動の無効化に失敗しました</string>
|
||||
<string name="susfs_autostart_error">自動起動の構成エラー: %s</string>
|
||||
<string name="susfs_no_config_to_autostart">自動起動に利用可能な構成がありません</string>
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<string name="susfs_tab_basic_settings">基本設定</string>
|
||||
<string name="susfs_tab_sus_paths">SUS のパス</string>
|
||||
<string name="susfs_tab_sus_mounts">SUS マウント</string>
|
||||
<string name="susfs_tab_try_umount">アンマウントを試す</string>
|
||||
<string name="susfs_tab_path_settings">パスの設定</string>
|
||||
<string name="susfs_tab_enabled_features">有効な機能のステータス</string>
|
||||
<!-- SuSFS Path Management -->
|
||||
<string name="susfs_add_sus_path">SUS パスを追加</string>
|
||||
<string name="susfs_add_sus_mount">SUS マウントを追加</string>
|
||||
<string name="susfs_add_try_umount">アンマウントを試すを追加</string>
|
||||
<string name="susfs_sus_path_added_success">SUS パスが正常に追加されました</string>
|
||||
<string name="susfs_path_not_found_error">パスが見つかりません</string>
|
||||
<string name="susfs_path_label">パス</string>
|
||||
<string name="susfs_mount_path_label">マウントのパス</string>
|
||||
<string name="susfs_path_placeholder">例 : /system/addon.d</string>
|
||||
<string name="susfs_no_paths_configured">SUS パスが未構成です</string>
|
||||
<string name="susfs_no_mounts_configured">SUS マウントが未構成です</string>
|
||||
<string name="susfs_no_umounts_configured">アンマウントを試すが未構成です</string>
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<string name="susfs_umount_mode_label">アンマウントモード</string>
|
||||
<string name="susfs_umount_mode_normal">通常のアンマウント (0)</string>
|
||||
<string name="susfs_umount_mode_detach">アンマウントを分離 (1)</string>
|
||||
<string name="susfs_umount_mode_normal_short">通常</string>
|
||||
<string name="susfs_umount_mode_detach_short">分離</string>
|
||||
<string name="susfs_umount_mode_display">モード: %1$s (%2$s)</string>
|
||||
<string name="susfs_try_umount_added_success">追加されたパスのアンマウントに成功しました: %s</string>
|
||||
<string name="susfs_try_umount_added_saved">アンマウントのパスの保存に成功しました: %s</string>
|
||||
<!-- SuSFS Run Umount -->
|
||||
<string name="susfs_run_umount_confirm_title">実行を確認してアンマウントを試す</string>
|
||||
<string name="susfs_run_umount_confirm_message">設定されたすべてのアンマウントの試行操作が直ちに実行されます。続行してもよろしいですか?</string>
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<string name="susfs_reset_paths_title">SUS パスをリセット</string>
|
||||
<string name="susfs_reset_paths_message">すべての SUS パスの構成が消去されます。続行してもよろしいですか?</string>
|
||||
<string name="susfs_reset_mounts_title">SUS マウントをリセット</string>
|
||||
<string name="susfs_reset_mounts_message">すべての SUS マウントの構成が消去されます。続行してもよろしいですか?</string>
|
||||
<string name="susfs_reset_umounts_title">リセットしてアンマウントを試す</string>
|
||||
<string name="susfs_reset_umounts_message">すべてのアンマウント構成がリセットされます。続行してもよろしいですか?</string>
|
||||
<string name="susfs_reset_path_title">パスの設定をリセット</string>
|
||||
<!-- SuSFS Path Settings -->
|
||||
<string name="susfs_android_data_path_label">Android データパス</string>
|
||||
<string name="susfs_sdcard_path_label">SD カードのパス</string>
|
||||
<string name="susfs_set_android_data_path">Android データパスを設定</string>
|
||||
<string name="susfs_set_sdcard_path">SD カードのパスを設定</string>
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<string name="susfs_enabled_features_description">SuSFS で有効な機能のステータスを表示します。</string>
|
||||
<string name="susfs_no_features_found">機能のステータス情報が見つかりません</string>
|
||||
<string name="susfs_feature_enabled">有効</string>
|
||||
<string name="susfs_feature_disabled">無効</string>
|
||||
<!-- Feature Labels -->
|
||||
<string name="sus_path_feature_label">SUS パスの対応</string>
|
||||
<string name="sus_mount_feature_label">SUS マウントの対応</string>
|
||||
<string name="try_umount_feature_label">アンマウントを試すの対応</string>
|
||||
<string name="spoof_uname_feature_label">uname 偽装の対応</string>
|
||||
<string name="spoof_cmdline_feature_label">Cmdline/Bootconfig を偽装</string>
|
||||
<string name="open_redirect_feature_label">オープンリダイレクトの対応</string>
|
||||
<string name="enable_log_feature_label">ログの対応</string>
|
||||
<string name="auto_default_mount_feature_label">自動でデフォルトのマウント</string>
|
||||
<string name="auto_bind_mount_feature_label">自動でバインドマウント</string>
|
||||
<string name="auto_try_umount_bind_feature_label">自動でバインドマウントのアンマウントを試す</string>
|
||||
<string name="hide_symbols_feature_label">KSU SUSFS シンボルを非表示</string>
|
||||
<string name="magic_mount_feature_label">Magic Mount の対応</string>
|
||||
<string name="sus_kstat_feature_label">SUS Kstat の対応</string>
|
||||
<string name="sus_su_feature_label">SUS SU モード切り替え機能</string>
|
||||
<!-- 可切换状态 -->
|
||||
<string name="susfs_feature_configurable">構成可能な SuSFS の機能</string>
|
||||
<string name="susfs_enable_log_label">SuSFS のログ取得を有効化</string>
|
||||
<string name="susfs_log_config_description">SuSFS のログ取得を有効化または無効化します。</string>
|
||||
<string name="susfs_log_config_title">SuSFS ログ取得の構成</string>
|
||||
<string name="susfs_log_enabled">SuSFS のログ取得を有効化中</string>
|
||||
<string name="susfs_log_disabled">SuSFS のログ取得を無効化</string>
|
||||
<string name="module_update_json">更新用の JSON</string>
|
||||
<string name="module_update_json_copied">更新用 JSON の URL をクリップボードにコピーしました</string>
|
||||
<!-- Settings related strings -->
|
||||
<string name="show_more_module_info">モジュール情報の詳細を表示</string>
|
||||
<string name="show_more_module_info_summary">更新用 JSON の URL など追加の情報を表示します。</string>
|
||||
<string name="susfs_execution_location_label">実行先</string>
|
||||
<string name="susfs_current_execution_location">現在の実行先: %s</string>
|
||||
<string name="susfs_execution_location_service">サービス</string>
|
||||
<string name="susfs_execution_location_post_fs_data">Post-FS-Data</string>
|
||||
<string name="susfs_execution_location_service_description">システムサービスの開始後に実行</string>
|
||||
<string name="susfs_execution_location_post_fs_data_description">ファイルシステムのマウント後にシステムが完全に起動する前に実行をすることで、ブートループが発生する可能性があります。</string>
|
||||
<string name="susfs_slot_info_title">スロット情報</string>
|
||||
<string name="susfs_slot_info_description">現在のブートスロット情報の表示と値のコピーをします。</string>
|
||||
<string name="susfs_current_active_slot">現在のアクティブスロット: %s</string>
|
||||
<string name="susfs_slot_uname">Uname: %s</string>
|
||||
<string name="susfs_slot_build_time">ビルド日時: %s</string>
|
||||
<string name="susfs_slot_current_badge">現在</string>
|
||||
<string name="susfs_slot_use_uname">Uname を使用する</string>
|
||||
<string name="susfs_slot_use_build_time">ビルド日時を使用する</string>
|
||||
<string name="susfs_slot_info_unavailable">スロット情報を取得できません</string>
|
||||
<!-- SuSFS 自启动相关字符串 -->
|
||||
<string name="susfs_autostart_enabled_success">SuSFS 自動起動モジュールが有効、モジュールのパス: %s</string>
|
||||
<string name="susfs_autostart_disabled_success">SuSFS 自動起動モジュールが無効</string>
|
||||
<!-- SuSFS Kstat相关字符串 -->
|
||||
<string name="susfs_tab_kstat_config">Kstat の構成</string>
|
||||
<string name="kstat_static_config_added">Kstat の静的構成を追加しました: %1$s</string>
|
||||
<string name="kstat_config_removed">Kstat の構成を削除しました: %1$s</string>
|
||||
<string name="kstat_path_added">Kstat パスを追加しました: %1$s</string>
|
||||
<string name="kstat_path_removed">Kstat パスを削除しました: %1$s</string>
|
||||
<string name="kstat_updated">Kstat が更新されました: %1$s</string>
|
||||
<string name="kstat_full_clone_updated">Kstat のフルクローンが更新されました: %1$s</string>
|
||||
<string name="add_kstat_statically_title">Kstat 静的構成を追加</string>
|
||||
<string name="file_or_directory_path_label">ファイルまたはディレクトリのパス</string>
|
||||
<string name="hint_use_default_value">ヒント: オリジナルの値を使用するには「default」を使用します</string>
|
||||
<string name="add_kstat_path_title">Kstat のパスを追加</string>
|
||||
<string name="add">追加</string>
|
||||
<string name="reset_kstat_config_title">Kstat の構成をリセット</string>
|
||||
<string name="reset_kstat_config_message">すべての Kstat の構成を消去しますか?この操作は元に戻せません。</string>
|
||||
<string name="kstat_config_description_title">Kstat の構成の説明</string>
|
||||
<string name="kstat_config_description_add_statically">• add_sus_kstat_statically: ファイル、ディレクトリの静的な状態情報</string>
|
||||
<string name="kstat_config_description_add">• add_sus_kstat: バインドマウント前にパスを追加して元の状態情報を保存します</string>
|
||||
<string name="kstat_config_description_update">• update_sus_kstat: ターゲットとなる ino を更新、サイズとブロックは変更しません</string>
|
||||
<string name="kstat_config_description_update_full_clone">• update_sus_kstat_full_clone: ino のみ更新、他の値はそのままにします</string>
|
||||
<string name="static_kstat_config">Kstat の静的構成</string>
|
||||
<string name="kstat_path_management">Kstat パスの管理</string>
|
||||
<string name="no_kstat_config_message">Kstat の構成が未設定です。上のボタンをタップで追加します。</string>
|
||||
<!-- SuSFS Mount Hiding Control Related Strings -->
|
||||
<string name="susfs_hide_mounts_control_title">SUS マウントの非表示制御</string>
|
||||
<string name="susfs_hide_mounts_control_description">プロセスの SUS マウントを非表示する動作を制御します。</string>
|
||||
<string name="susfs_hide_mounts_for_all_procs_label">すべてのプロセスで SUS マウントを非表示</string>
|
||||
<string name="susfs_hide_mounts_for_all_procs_enabled_description">有効化すると SUS マウントは KSU プロセスを含むすべてのプロセスから非表示になります。</string>
|
||||
<string name="susfs_hide_mounts_for_all_procs_disabled_description">無効化すると SUS マウントは非 KSU プロセスからのみ非表示になり、KSU プロセスはマウントを見ることができます。</string>
|
||||
<string name="susfs_hide_mounts_all_enabled">すべてのプロセスで SUS マウントの非表示を有効化しました</string>
|
||||
<string name="susfs_hide_mounts_all_disabled">すべてのプロセスで SUS マウントの非表示を無効化しました</string>
|
||||
<string name="susfs_hide_mounts_recommendation">画面のロック解除後または service.sh または boot-completed.sh の段階で無効に設定することを推奨します。これにより、KSU プロセスによってマウントされたマウントに依存する一部の root 化されたアプリの問題が解決されるはずです。</string>
|
||||
<string name="susfs_hide_mounts_current_setting">現在の設定: %s</string>
|
||||
<string name="susfs_hide_mounts_setting_all">すべてのプロセスを非表示</string>
|
||||
<string name="susfs_hide_mounts_setting_non_ksu">非 KSU プロセスのみ非表示</string>
|
||||
<string name="susfs_run">実行</string>
|
||||
<string name="kernel_simple_kernel">簡潔モードなカーネル バージョン</string>
|
||||
<string name="kernel_simple_kernel_summary">SukiSU のカーネル バージョンによって表示されるクリーンモードを有効または無効します。</string>
|
||||
<string name="susfs_android_data_path_set">Android のデータパスが設定されました: %s</string>
|
||||
<string name="susfs_sdcard_path_set">SD カードのパスは次のように設定済みです: %s</string>
|
||||
<string name="susfs_path_setup_warning">パスの設定は完全に成功しない可能性がありますが、SUS パスは引き続き追加されます。</string>
|
||||
<!-- 备份和还原相关字符串 -->
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">Not installed</string>
|
||||
<string name="home_click_to_install">Click to install</string>
|
||||
<string name="home_working">ಕೆಲಸ ಮಾಡುತ್ತಿದೆ</string>
|
||||
<string name="home_working_version">ವರ್ಷನ್: %d</string>
|
||||
<string name="home_superuser_count">ಸೂಪರ್ಯೂಸರ್ಗಳು: %d</string>
|
||||
<string name="home_module_count">ಮಾಡ್ಯೂಲ್ಗಳು: %d</string>
|
||||
<string name="home_working_version">ವರ್ಷನ್: %s</string>
|
||||
<string name="home_unsupported">ಬೆಂಬಲಿತವಾಗಿಲ್ಲ</string>
|
||||
<string name="home_unsupported_reason">KernelSU ಈಗ GKI ಕರ್ನಲ್ಗಳನ್ನು ಮಾತ್ರ ಬೆಂಬಲಿಸುತ್ತದೆ</string>
|
||||
<string name="home_kernel">ಕರ್ನಲ್</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS Version</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">ಮ್ಯಾನೇಜರ್ ವರ್ಷನ್</string>
|
||||
<string name="home_fingerprint">Fingerprint</string>
|
||||
<string name="home_selinux_status">SELinux ಸ್ಥಿತಿ</string>
|
||||
<string name="selinux_status_disabled">Disabled</string>
|
||||
<string name="selinux_status_enforcing">Enforcing</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Sort (Action first)</string>
|
||||
<string name="module_sort_enabled_first">Sort (Enabled first)</string>
|
||||
<string name="uninstall">ಅನ್ಇನ್ಸ್ಟಾಲ್</string>
|
||||
<string name="restore">Restore</string>
|
||||
<string name="module_install">Install</string>
|
||||
<string name="install">Install</string>
|
||||
<string name="reboot">ರೀಬೂಟ್</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">ಟೆಂಪ್ಲೇಟ್</string>
|
||||
<string name="profile_custom">ಕಸ್ಟಮ್</string>
|
||||
<string name="profile_name">ಪ್ರೊಫೈಲ್ ಹೆಸರು</string>
|
||||
<string name="profile_namespace">ಮೌಂಟ್ ನೇಮ್ಸ್ಪೇಸ್</string>
|
||||
<string name="profile_namespace_inherited">ಪಿತ್ರಾರ್ಜಿತ</string>
|
||||
<string name="profile_namespace_global">ಜಾಗತಿಕ</string>
|
||||
<string name="profile_namespace_individual">ವೈಯಕ್ತಿಕ</string>
|
||||
<string name="profile_groups">ಗುಂಪುಗಳು</string>
|
||||
<string name="profile_capabilities">ಸಾಮರ್ಥ್ಯಗಳು</string>
|
||||
<string name="profile_selinux_context">SELinux ಸಂದರ್ಭ</string>
|
||||
<string name="profile_umount_modules">Umount ಮಾಡ್ಯೂಲ್ಗಳು</string>
|
||||
<string name="failed_to_update_app_profile">%s ಗಾಗಿ ಅಪ್ಲಿಕೇಶನ್ ಪ್ರೊಫೈಲ್ ಅನ್ನು ನವೀಕರಿಸಲು ವಿಫಲವಾಗಿದೆ</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %d is too low for the manager to work properly. Please upgrade to version %d or higher!</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %s is too low for the manager to work properly. Please upgrade to version %s or higher!</string>
|
||||
<string name="settings_umount_modules_default">ಡೀಫಾಲ್ಟ್ ಆಗಿ Umount ಮಾಡ್ಯೂಲ್</string>
|
||||
<string name="settings_umount_modules_default_summary">ಅಪ್ಲಿಕೇಶನ್ ಪ್ರೊಫೈಲ್ಗಳಲ್ಲಿ \"Umount ಮಾಡ್ಯೂಲ್\" ಗಾಗಿ ಜಾಗತಿಕ ಡೀಫಾಲ್ಟ್ ಮೌಲ್ಯ. ಸಕ್ರಿಯಗೊಳಿಸಿದರೆ, ಪ್ರೊಫೈಲ್ ಸೆಟ್ ಅನ್ನು ಹೊಂದಿರದ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗಾಗಿ ಸಿಸ್ಟಮ್ಗೆ ಎಲ್ಲಾ ಮಾಡ್ಯೂಲ್ ಮಾರ್ಪಾಡುಗಳನ್ನು ಇದು ತೆಗೆದುಹಾಕುತ್ತದೆ.</string>
|
||||
<string name="settings_susfs_toggle">Disable kprobe hooks</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Automatically check for updates when opening the app</string>
|
||||
<string name="grant_root_failed">Failed to grant root!</string>
|
||||
<string name="action">Action</string>
|
||||
<string name="open">Open</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="enable_web_debugging">Enable WebView debugging</string>
|
||||
<string name="enable_web_debugging_summary">Can be used to debug WebUI. Please enable only when needed.</string>
|
||||
@@ -136,9 +125,6 @@
|
||||
<string name="selected_lkm">Selected LKM: %s</string>
|
||||
<string name="save_log">ಲಾಗ್ಗಳನ್ನು ಉಳಿಸಿ</string>
|
||||
<string name="log_saved">Logs saved</string>
|
||||
<string name="status_supported">Supported</string>
|
||||
<string name="status_not_supported">Not Supported</string>
|
||||
<string name="status_unknown">Unknown</string>
|
||||
<string name="sus_su_mode">SuS SU mode:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">confirm install module %1$s?</string>
|
||||
@@ -172,14 +158,11 @@
|
||||
<string name="settings_custom_background">Custom App Background</string>
|
||||
<string name="settings_custom_background_summary">Select an image as background</string>
|
||||
<string name="settings_card_alpha">Navigation bar transparency</string>
|
||||
<string name="settings_restore_default">Restore default</string>
|
||||
<string name="home_android_version">Android version</string>
|
||||
<string name="home_device_model">Device model</string>
|
||||
<string name="su_not_allowed">Granting superuser to %s is not allowed</string>
|
||||
<string name="settings_disable_su">Disable su compatibility</string>
|
||||
<string name="settings_disable_su_summary">Temporarily disable any applications from obtaining root privileges via the su command (existing root processes will not be affected).</string>
|
||||
<string name="using_mksu_manager">You are using the SukiSU Beta manager</string>
|
||||
<string name="module_install_multiple_confirm">Are you sure you want to install the selected %d modules?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Sure you want to install the following %1$d modules? \n\n%2$s</string>
|
||||
<string name="more_settings">More settings</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -210,20 +193,14 @@
|
||||
<string name="color_pink">Pink</string>
|
||||
<string name="color_gray">Gray</string>
|
||||
<string name="color_yellow">Yellow</string>
|
||||
<string name="flash_option">Brush Options</string>
|
||||
<string name="flash_option_tip">Select the file to be flashed</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash AnyKernel3 kernel file</string>
|
||||
<string name="root_required">Requires root privileges</string>
|
||||
<string name="copy_failed">File Copy Failure</string>
|
||||
<string name="reboot_complete_title">Scrubbing complete</string>
|
||||
<string name="reboot_complete_msg">Whether to reboot immediately?</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="failed_reboot">Reboot Failed</string>
|
||||
<string name="batch_authorization">empower</string>
|
||||
<string name="batch_cancel_authorization">withdraw</string>
|
||||
<string name="backup">Backup</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">No installed kernel modules at this time</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
@@ -231,7 +208,6 @@
|
||||
<string name="kpm_uninstall">Uninstall</string>
|
||||
<string name="kpm_uninstall_success">Uninstalled successfully</string>
|
||||
<string name="kpm_uninstall_failed">Failed to uninstall</string>
|
||||
<string name="kpm_install">Install</string>
|
||||
<string name="kpm_install_success">Load of kpm module successful</string>
|
||||
<string name="kpm_install_failed">Load of kpm module failed</string>
|
||||
<string name="kpm_args">Parameters</string>
|
||||
@@ -245,8 +221,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra will be a relatively independent branch of KSU in the future, but we still appreciate the official KernelSU and MKSU etc. for their contributions!</string>
|
||||
<string name="not_supported">Unsupported</string>
|
||||
<string name="supported">Supported</string>
|
||||
<string name="home_kpm_module">"Number of KPMs: %d "</string>
|
||||
<string name="kpm_invalid_file">Invalid KPM file</string>
|
||||
<string name="kernel_patched">Kernel not patched</string>
|
||||
<string name="kernel_not_enabled">Kernel not configured</string>
|
||||
<string name="custom_settings">Custom settings</string>
|
||||
@@ -254,19 +228,13 @@
|
||||
<string name="kpm_install_mode_load">Load</string>
|
||||
<string name="kpm_install_mode_embed">Embed</string>
|
||||
<string name="kpm_install_mode_description">Please select: %1\$s Module Installation Mode \n\nLoad: Temporarily load the module \nEmbedded: Permanently install into the system</string>
|
||||
<string name="log_failed_to_check_module_file">Failed to check module file existence</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Unable to check if module file exists</string>
|
||||
<string name="confirm_uninstall_title">Confirm uninstallation</string>
|
||||
<string name="confirm_uninstall_confirm">Uninstall</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancel</string>
|
||||
<string name="theme_color">Theme Color</string>
|
||||
<string name="invalid_file_type">Incorrect file type! Please select .kpm file.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Uninstall</string>
|
||||
<string name="confirm_uninstall_content">The following KPM will be uninstalled: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Disable kprobe hooks created by KernelSU, using inline hooks instead, which is similar to non-GKI kernel hooking method.</string>
|
||||
<string name="image_editor_title">Adjust background image</string>
|
||||
<string name="image_editor_hint">Use two fingers to zoom the image, and one finger to drag it to adjust the position</string>
|
||||
<string name="background_image_error">Could not load image</string>
|
||||
<string name="reprovision">Reprovision</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
@@ -303,10 +271,6 @@
|
||||
<string name="app_settings">Application Settings</string>
|
||||
<string name="tools">Tools</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Removals</string>
|
||||
<string name="apps_with_root">Applications with root privileges</string>
|
||||
<string name="apps_with_custom_profile">Applications with customized configurations</string>
|
||||
<string name="other_apps">Applications with unchanged defaults</string>
|
||||
<string name="no_apps_found">Application not found</string>
|
||||
<string name="selinux_enabled_toast">SELinux Enabled</string>
|
||||
<string name="selinux_disabled_toast">SELinux Disabled</string>
|
||||
@@ -314,8 +278,6 @@
|
||||
<string name="advanced_settings">Advanced Settings</string>
|
||||
<string name="appearance_settings">Customize the toolbar</string>
|
||||
<string name="back">Comeback</string>
|
||||
<string name="expand">Be in full swing</string>
|
||||
<string name="collapse">put away</string>
|
||||
<string name="susfs_enabled">SuSFS enabled</string>
|
||||
<string name="susfs_disabled">SuSFS disabled</string>
|
||||
<string name="background_set_success">Background set successfully</string>
|
||||
@@ -323,7 +285,6 @@
|
||||
<string name="icon_switch_title">Alternate icon</string>
|
||||
<string name="icon_switch_summary">Change the launcher icon to KernelSU\'s icon.</string>
|
||||
<string name="icon_switched">Icon switched</string>
|
||||
<string name="root_require_for_install">Requires root privileges</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Display KPM Function</string>
|
||||
<string name="show_kpm_info_summary">Display KPM information and Function in home and bottom bar (Need to reopen the app)</string>
|
||||
@@ -335,7 +296,6 @@
|
||||
<string name="use_webuix_eruda">Inject Eruda into WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Inject a debug console into WebUI X to make debugging easier. Requires web debugging to be on.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI setting</string>
|
||||
<string name="app_dpi_title">Applied DPI</string>
|
||||
<string name="app_dpi_summary">Adjust the screen display density for the current application only</string>
|
||||
<string name="dpi_size_small">Small </string>
|
||||
@@ -353,16 +313,6 @@
|
||||
<string name="language_follow_system">Follow System</string>
|
||||
<string name="language_changed">Language changed, restarting to apply changes</string>
|
||||
<string name="settings_card_dim">Card Darkness Adjustment</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="scroll_to_top_description">Scroll to top</string>
|
||||
<string name="scroll_to_bottom_description">Scroll to the bottom</string>
|
||||
<string name="authorized">authorized</string>
|
||||
<string name="unauthorized">unauthorized</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<string name="profile_umount_modules_disable">Disable custom uninstallation module</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">error code</string>
|
||||
<string name="check_log">Please check the log</string>
|
||||
@@ -370,4 +320,51 @@
|
||||
<string name="module_failed_count">%d Failed to install a new module</string>
|
||||
<string name="module_download_error">Module download failed</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">설치되지 않음</string>
|
||||
<string name="home_click_to_install">이 곳을 눌러 설치하기</string>
|
||||
<string name="home_working">정상 작동 중</string>
|
||||
<string name="home_working_version">버전: %d</string>
|
||||
<string name="home_superuser_count">루트 권한: %d개</string>
|
||||
<string name="home_module_count">설치된 모듈: %d개</string>
|
||||
<string name="home_working_version">버전: %s</string>
|
||||
<string name="home_unsupported">지원되지 않음</string>
|
||||
<string name="home_unsupported_reason">KernelSU는 현재 GKI 커널만 지원합니다</string>
|
||||
<string name="home_kernel">커널</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS Version</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">매니저 버전</string>
|
||||
<string name="home_fingerprint">빌드 정보</string>
|
||||
<string name="home_selinux_status">SELinux 상태</string>
|
||||
<string name="selinux_status_disabled">비활성화됨</string>
|
||||
<string name="selinux_status_enforcing">적용</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">정렬 (동작이 있는 것 우선)</string>
|
||||
<string name="module_sort_enabled_first">정렬 (활성화됨 우선)</string>
|
||||
<string name="uninstall">삭제</string>
|
||||
<string name="restore">Restore</string>
|
||||
<string name="module_install">설치</string>
|
||||
<string name="install">설치</string>
|
||||
<string name="reboot">다시 시작</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">템플릿</string>
|
||||
<string name="profile_custom">사용자 지정</string>
|
||||
<string name="profile_name">프로필 이름</string>
|
||||
<string name="profile_namespace">이름 공간 마운트</string>
|
||||
<string name="profile_namespace_inherited">상속</string>
|
||||
<string name="profile_namespace_global">전역</string>
|
||||
<string name="profile_namespace_individual">개별</string>
|
||||
<string name="profile_groups">사용자 그룹</string>
|
||||
<string name="profile_capabilities">권한</string>
|
||||
<string name="profile_selinux_context">SELinux 컨텍스트</string>
|
||||
<string name="profile_umount_modules">모듈 사용 해제</string>
|
||||
<string name="failed_to_update_app_profile">%s에 대한 앱 프로필 업데이트 실패</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %d is too low for the manager to work properly. Please upgrade to version %d or higher!</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %s is too low for the manager to work properly. Please upgrade to version %s or higher!</string>
|
||||
<string name="settings_umount_modules_default">기본값으로 모듈 사용 해제</string>
|
||||
<string name="settings_umount_modules_default_summary">앱 프로필 메뉴의 \"모듈 마운트 해제\" 설정에 대한 전역 기본값을 설정합니다. 활성화 시, 개별 프로필이 설정되지 않은 앱은 시스템에 대한 모듈의 모든 수정사항이 적용되지 않습니다.</string>
|
||||
<string name="settings_susfs_toggle">Disable kprobe hooks</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">앱 실행시 자동으로 업데이트 확인</string>
|
||||
<string name="grant_root_failed">루트 부여 실패!</string>
|
||||
<string name="action">동작</string>
|
||||
<string name="open">열기</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="enable_web_debugging">WebView 디버깅 활성화</string>
|
||||
<string name="enable_web_debugging_summary">WebUI 디버깅에 사용 가능, 필요할 때만 활성화해주세요.</string>
|
||||
@@ -136,9 +125,6 @@
|
||||
<string name="selected_lkm">선택된 LKM: %s</string>
|
||||
<string name="save_log">로그 저장</string>
|
||||
<string name="log_saved">로그 저장됨</string>
|
||||
<string name="status_supported">Supported</string>
|
||||
<string name="status_not_supported">Not Supported</string>
|
||||
<string name="status_unknown">Unknown</string>
|
||||
<string name="sus_su_mode">SuS SU mode:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">confirm install module %1$s?</string>
|
||||
@@ -172,14 +158,11 @@
|
||||
<string name="settings_custom_background">Custom App Background</string>
|
||||
<string name="settings_custom_background_summary">Select an image as background</string>
|
||||
<string name="settings_card_alpha">Navigation bar transparency</string>
|
||||
<string name="settings_restore_default">Restore default</string>
|
||||
<string name="home_android_version">Android version</string>
|
||||
<string name="home_device_model">Device model</string>
|
||||
<string name="su_not_allowed">Granting superuser to %s is not allowed</string>
|
||||
<string name="settings_disable_su">Disable su compatibility</string>
|
||||
<string name="settings_disable_su_summary">Temporarily disable any applications from obtaining root privileges via the su command (existing root processes will not be affected).</string>
|
||||
<string name="using_mksu_manager">You are using the SukiSU Beta manager</string>
|
||||
<string name="module_install_multiple_confirm">Are you sure you want to install the selected %d modules?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Sure you want to install the following %1$d modules? \n\n%2$s</string>
|
||||
<string name="more_settings">More settings</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -210,20 +193,14 @@
|
||||
<string name="color_pink">Pink</string>
|
||||
<string name="color_gray">Gray</string>
|
||||
<string name="color_yellow">Yellow</string>
|
||||
<string name="flash_option">Brush Options</string>
|
||||
<string name="flash_option_tip">Select the file to be flashed</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash AnyKernel3 kernel file</string>
|
||||
<string name="root_required">Requires root privileges</string>
|
||||
<string name="copy_failed">File Copy Failure</string>
|
||||
<string name="reboot_complete_title">Scrubbing complete</string>
|
||||
<string name="reboot_complete_msg">Whether to reboot immediately?</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="failed_reboot">Reboot Failed</string>
|
||||
<string name="batch_authorization">empower</string>
|
||||
<string name="batch_cancel_authorization">withdraw</string>
|
||||
<string name="backup">Backup</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">No installed kernel modules at this time</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
@@ -231,7 +208,6 @@
|
||||
<string name="kpm_uninstall">Uninstall</string>
|
||||
<string name="kpm_uninstall_success">Uninstalled successfully</string>
|
||||
<string name="kpm_uninstall_failed">Failed to uninstall</string>
|
||||
<string name="kpm_install">Install</string>
|
||||
<string name="kpm_install_success">Load of kpm module successful</string>
|
||||
<string name="kpm_install_failed">Load of kpm module failed</string>
|
||||
<string name="kpm_args">Parameters</string>
|
||||
@@ -245,8 +221,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra will be a relatively independent branch of KSU in the future, but we still appreciate the official KernelSU and MKSU etc. for their contributions!</string>
|
||||
<string name="not_supported">Unsupported</string>
|
||||
<string name="supported">Supported</string>
|
||||
<string name="home_kpm_module">"Number of KPMs: %d "</string>
|
||||
<string name="kpm_invalid_file">Invalid KPM file</string>
|
||||
<string name="kernel_patched">Kernel not patched</string>
|
||||
<string name="kernel_not_enabled">Kernel not configured</string>
|
||||
<string name="custom_settings">Custom settings</string>
|
||||
@@ -254,19 +228,13 @@
|
||||
<string name="kpm_install_mode_load">Load</string>
|
||||
<string name="kpm_install_mode_embed">Embed</string>
|
||||
<string name="kpm_install_mode_description">Please select: %1\$s Module Installation Mode \n\nLoad: Temporarily load the module \nEmbedded: Permanently install into the system</string>
|
||||
<string name="log_failed_to_check_module_file">Failed to check module file existence</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Unable to check if module file exists</string>
|
||||
<string name="confirm_uninstall_title">Confirm uninstallation</string>
|
||||
<string name="confirm_uninstall_confirm">Uninstall</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancel</string>
|
||||
<string name="theme_color">Theme Color</string>
|
||||
<string name="invalid_file_type">Incorrect file type! Please select .kpm file.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Uninstall</string>
|
||||
<string name="confirm_uninstall_content">The following KPM will be uninstalled: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Disable kprobe hooks created by KernelSU, using inline hooks instead, which is similar to non-GKI kernel hooking method.</string>
|
||||
<string name="image_editor_title">Adjust background image</string>
|
||||
<string name="image_editor_hint">Use two fingers to zoom the image, and one finger to drag it to adjust the position</string>
|
||||
<string name="background_image_error">Could not load image</string>
|
||||
<string name="reprovision">Reprovision</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
@@ -303,10 +271,6 @@
|
||||
<string name="app_settings">Application Settings</string>
|
||||
<string name="tools">Tools</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Removals</string>
|
||||
<string name="apps_with_root">Applications with root privileges</string>
|
||||
<string name="apps_with_custom_profile">Applications with customized configurations</string>
|
||||
<string name="other_apps">Applications with unchanged defaults</string>
|
||||
<string name="no_apps_found">Application not found</string>
|
||||
<string name="selinux_enabled_toast">SELinux Enabled</string>
|
||||
<string name="selinux_disabled_toast">SELinux Disabled</string>
|
||||
@@ -314,8 +278,6 @@
|
||||
<string name="advanced_settings">Advanced Settings</string>
|
||||
<string name="appearance_settings">Customize the toolbar</string>
|
||||
<string name="back">Comeback</string>
|
||||
<string name="expand">Be in full swing</string>
|
||||
<string name="collapse">put away</string>
|
||||
<string name="susfs_enabled">SuSFS enabled</string>
|
||||
<string name="susfs_disabled">SuSFS disabled</string>
|
||||
<string name="background_set_success">Background set successfully</string>
|
||||
@@ -323,7 +285,6 @@
|
||||
<string name="icon_switch_title">Alternate icon</string>
|
||||
<string name="icon_switch_summary">Change the launcher icon to KernelSU\'s icon.</string>
|
||||
<string name="icon_switched">Icon switched</string>
|
||||
<string name="root_require_for_install">Requires root privileges</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Display KPM Function</string>
|
||||
<string name="show_kpm_info_summary">Display KPM information and Function in home and bottom bar (Need to reopen the app)</string>
|
||||
@@ -335,7 +296,6 @@
|
||||
<string name="use_webuix_eruda">Inject Eruda into WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Inject a debug console into WebUI X to make debugging easier. Requires web debugging to be on.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI setting</string>
|
||||
<string name="app_dpi_title">Applied DPI</string>
|
||||
<string name="app_dpi_summary">Adjust the screen display density for the current application only</string>
|
||||
<string name="dpi_size_small">Small </string>
|
||||
@@ -353,16 +313,6 @@
|
||||
<string name="language_follow_system">Follow System</string>
|
||||
<string name="language_changed">Language changed, restarting to apply changes</string>
|
||||
<string name="settings_card_dim">Card Darkness Adjustment</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="scroll_to_top_description">Scroll to top</string>
|
||||
<string name="scroll_to_bottom_description">Scroll to the bottom</string>
|
||||
<string name="authorized">authorized</string>
|
||||
<string name="unauthorized">unauthorized</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<string name="profile_umount_modules_disable">Disable custom uninstallation module</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">error code</string>
|
||||
<string name="check_log">Please check the log</string>
|
||||
@@ -370,4 +320,51 @@
|
||||
<string name="module_failed_count">%d Failed to install a new module</string>
|
||||
<string name="module_download_error">Module download failed</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">Neįdiegta</string>
|
||||
<string name="home_click_to_install">Spustelėkite norėdami įdiegti</string>
|
||||
<string name="home_working">Veikia</string>
|
||||
<string name="home_working_version">Versija: %d</string>
|
||||
<string name="home_superuser_count">Supernaudotojai: %d</string>
|
||||
<string name="home_module_count">Moduliai: %d</string>
|
||||
<string name="home_working_version">Versija: %s</string>
|
||||
<string name="home_unsupported">Nepalaikoma</string>
|
||||
<string name="home_unsupported_reason">KernelSU dabar palaiko tik GKI branduolius</string>
|
||||
<string name="home_kernel">Branduolys</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS Version</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">Tvarkyklės versija</string>
|
||||
<string name="home_fingerprint">Pirštų atspaudas</string>
|
||||
<string name="home_selinux_status">SELinux statusas</string>
|
||||
<string name="selinux_status_disabled">Išjungta</string>
|
||||
<string name="selinux_status_enforcing">Priverstinas</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Sort (Action first)</string>
|
||||
<string name="module_sort_enabled_first">Sort (Enabled first)</string>
|
||||
<string name="uninstall">Išdiegti</string>
|
||||
<string name="restore">Restore</string>
|
||||
<string name="module_install">Įdiegti</string>
|
||||
<string name="install">Įdiegti</string>
|
||||
<string name="reboot">Paleisti iš naujo</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">Šablonas</string>
|
||||
<string name="profile_custom">Pasirinktinis</string>
|
||||
<string name="profile_name">Profilio pavadinimas</string>
|
||||
<string name="profile_namespace">Prijungti vardų erdvę</string>
|
||||
<string name="profile_namespace_inherited">Paveldėtas</string>
|
||||
<string name="profile_namespace_global">Globalus</string>
|
||||
<string name="profile_namespace_individual">Individualus</string>
|
||||
<string name="profile_groups">Grupės</string>
|
||||
<string name="profile_capabilities">Galimybės</string>
|
||||
<string name="profile_selinux_context">SELinux kontekstas</string>
|
||||
<string name="profile_umount_modules">Atjungti modulius</string>
|
||||
<string name="failed_to_update_app_profile">Nepavyko atnaujinti programos profilio %s</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %d is too low for the manager to work properly. Please upgrade to version %d or higher!</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %s is too low for the manager to work properly. Please upgrade to version %s or higher!</string>
|
||||
<string name="settings_umount_modules_default">Atjungti modulius pagal numatytuosius parametrus</string>
|
||||
<string name="settings_umount_modules_default_summary">Visuotinė numatytoji „Modulių atjungimo“ reikšmė programų profiliuose. Jei įjungta, ji pašalins visus sistemos modulio pakeitimus programoms, kurios neturi profilio.</string>
|
||||
<string name="settings_susfs_toggle">Disable kprobe hooks</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Automatically check for updates when opening the app</string>
|
||||
<string name="grant_root_failed">Failed to grant root!</string>
|
||||
<string name="action">Action</string>
|
||||
<string name="open">Open</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="enable_web_debugging">Enable WebView debugging</string>
|
||||
<string name="enable_web_debugging_summary">Can be used to debug WebUI. Please enable only when needed.</string>
|
||||
@@ -136,9 +125,6 @@
|
||||
<string name="selected_lkm">Selected LKM: %s</string>
|
||||
<string name="save_log">Saglabāt Žurnālus</string>
|
||||
<string name="log_saved">Logs saved</string>
|
||||
<string name="status_supported">Supported</string>
|
||||
<string name="status_not_supported">Not Supported</string>
|
||||
<string name="status_unknown">Unknown</string>
|
||||
<string name="sus_su_mode">SuS SU mode:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">confirm install module %1$s?</string>
|
||||
@@ -172,14 +158,11 @@
|
||||
<string name="settings_custom_background">Custom App Background</string>
|
||||
<string name="settings_custom_background_summary">Select an image as background</string>
|
||||
<string name="settings_card_alpha">Navigation bar transparency</string>
|
||||
<string name="settings_restore_default">Restore default</string>
|
||||
<string name="home_android_version">Android version</string>
|
||||
<string name="home_device_model">Device model</string>
|
||||
<string name="su_not_allowed">Granting superuser to %s is not allowed</string>
|
||||
<string name="settings_disable_su">Disable su compatibility</string>
|
||||
<string name="settings_disable_su_summary">Temporarily disable any applications from obtaining root privileges via the su command (existing root processes will not be affected).</string>
|
||||
<string name="using_mksu_manager">You are using the SukiSU Beta manager</string>
|
||||
<string name="module_install_multiple_confirm">Are you sure you want to install the selected %d modules?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Sure you want to install the following %1$d modules? \n\n%2$s</string>
|
||||
<string name="more_settings">More settings</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -210,20 +193,14 @@
|
||||
<string name="color_pink">Pink</string>
|
||||
<string name="color_gray">Gray</string>
|
||||
<string name="color_yellow">Yellow</string>
|
||||
<string name="flash_option">Brush Options</string>
|
||||
<string name="flash_option_tip">Select the file to be flashed</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash AnyKernel3 kernel file</string>
|
||||
<string name="root_required">Requires root privileges</string>
|
||||
<string name="copy_failed">File Copy Failure</string>
|
||||
<string name="reboot_complete_title">Scrubbing complete</string>
|
||||
<string name="reboot_complete_msg">Whether to reboot immediately?</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="failed_reboot">Reboot Failed</string>
|
||||
<string name="batch_authorization">empower</string>
|
||||
<string name="batch_cancel_authorization">withdraw</string>
|
||||
<string name="backup">Backup</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">No installed kernel modules at this time</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
@@ -231,7 +208,6 @@
|
||||
<string name="kpm_uninstall">Uninstall</string>
|
||||
<string name="kpm_uninstall_success">Uninstalled successfully</string>
|
||||
<string name="kpm_uninstall_failed">Failed to uninstall</string>
|
||||
<string name="kpm_install">Install</string>
|
||||
<string name="kpm_install_success">Load of kpm module successful</string>
|
||||
<string name="kpm_install_failed">Load of kpm module failed</string>
|
||||
<string name="kpm_args">Parameters</string>
|
||||
@@ -245,8 +221,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra will be a relatively independent branch of KSU in the future, but we still appreciate the official KernelSU and MKSU etc. for their contributions!</string>
|
||||
<string name="not_supported">Unsupported</string>
|
||||
<string name="supported">Supported</string>
|
||||
<string name="home_kpm_module">"Number of KPMs: %d "</string>
|
||||
<string name="kpm_invalid_file">Invalid KPM file</string>
|
||||
<string name="kernel_patched">Kernel not patched</string>
|
||||
<string name="kernel_not_enabled">Kernel not configured</string>
|
||||
<string name="custom_settings">Custom settings</string>
|
||||
@@ -254,19 +228,13 @@
|
||||
<string name="kpm_install_mode_load">Load</string>
|
||||
<string name="kpm_install_mode_embed">Embed</string>
|
||||
<string name="kpm_install_mode_description">Please select: %1\$s Module Installation Mode \n\nLoad: Temporarily load the module \nEmbedded: Permanently install into the system</string>
|
||||
<string name="log_failed_to_check_module_file">Failed to check module file existence</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Unable to check if module file exists</string>
|
||||
<string name="confirm_uninstall_title">Confirm uninstallation</string>
|
||||
<string name="confirm_uninstall_confirm">Uninstall</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancel</string>
|
||||
<string name="theme_color">Theme Color</string>
|
||||
<string name="invalid_file_type">Incorrect file type! Please select .kpm file.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Uninstall</string>
|
||||
<string name="confirm_uninstall_content">The following KPM will be uninstalled: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Disable kprobe hooks created by KernelSU, using inline hooks instead, which is similar to non-GKI kernel hooking method.</string>
|
||||
<string name="image_editor_title">Adjust background image</string>
|
||||
<string name="image_editor_hint">Use two fingers to zoom the image, and one finger to drag it to adjust the position</string>
|
||||
<string name="background_image_error">Could not load image</string>
|
||||
<string name="reprovision">Reprovision</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
@@ -303,10 +271,6 @@
|
||||
<string name="app_settings">Application Settings</string>
|
||||
<string name="tools">Tools</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Removals</string>
|
||||
<string name="apps_with_root">Applications with root privileges</string>
|
||||
<string name="apps_with_custom_profile">Applications with customized configurations</string>
|
||||
<string name="other_apps">Applications with unchanged defaults</string>
|
||||
<string name="no_apps_found">Application not found</string>
|
||||
<string name="selinux_enabled_toast">SELinux Enabled</string>
|
||||
<string name="selinux_disabled_toast">SELinux Disabled</string>
|
||||
@@ -314,8 +278,6 @@
|
||||
<string name="advanced_settings">Advanced Settings</string>
|
||||
<string name="appearance_settings">Customize the toolbar</string>
|
||||
<string name="back">Comeback</string>
|
||||
<string name="expand">Be in full swing</string>
|
||||
<string name="collapse">put away</string>
|
||||
<string name="susfs_enabled">SuSFS enabled</string>
|
||||
<string name="susfs_disabled">SuSFS disabled</string>
|
||||
<string name="background_set_success">Background set successfully</string>
|
||||
@@ -323,7 +285,6 @@
|
||||
<string name="icon_switch_title">Alternate icon</string>
|
||||
<string name="icon_switch_summary">Change the launcher icon to KernelSU\'s icon.</string>
|
||||
<string name="icon_switched">Icon switched</string>
|
||||
<string name="root_require_for_install">Requires root privileges</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Display KPM Function</string>
|
||||
<string name="show_kpm_info_summary">Display KPM information and Function in home and bottom bar (Need to reopen the app)</string>
|
||||
@@ -335,7 +296,6 @@
|
||||
<string name="use_webuix_eruda">Inject Eruda into WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Inject a debug console into WebUI X to make debugging easier. Requires web debugging to be on.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI setting</string>
|
||||
<string name="app_dpi_title">Applied DPI</string>
|
||||
<string name="app_dpi_summary">Adjust the screen display density for the current application only</string>
|
||||
<string name="dpi_size_small">Small </string>
|
||||
@@ -353,16 +313,6 @@
|
||||
<string name="language_follow_system">Follow System</string>
|
||||
<string name="language_changed">Language changed, restarting to apply changes</string>
|
||||
<string name="settings_card_dim">Card Darkness Adjustment</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="scroll_to_top_description">Scroll to top</string>
|
||||
<string name="scroll_to_bottom_description">Scroll to the bottom</string>
|
||||
<string name="authorized">authorized</string>
|
||||
<string name="unauthorized">unauthorized</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<string name="profile_umount_modules_disable">Disable custom uninstallation module</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">error code</string>
|
||||
<string name="check_log">Please check the log</string>
|
||||
@@ -370,4 +320,51 @@
|
||||
<string name="module_failed_count">%d Failed to install a new module</string>
|
||||
<string name="module_download_error">Module download failed</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">Nav ieinstalēts</string>
|
||||
<string name="home_click_to_install">Noklikšķiniet, lai instalētu</string>
|
||||
<string name="home_working">Darbojas</string>
|
||||
<string name="home_working_version">Versija: %d</string>
|
||||
<string name="home_superuser_count">Superlietotāji: %d</string>
|
||||
<string name="home_module_count">Moduļi: %d</string>
|
||||
<string name="home_working_version">Versija: %s</string>
|
||||
<string name="home_unsupported">Neatbalstīts</string>
|
||||
<string name="home_unsupported_reason">KernelSU atbalsta tikai GKI kodolus</string>
|
||||
<string name="home_kernel">Kodols</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS Version</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">Pārvaldnieka versija</string>
|
||||
<string name="home_fingerprint">Pirkstu nospiedums</string>
|
||||
<string name="home_selinux_status">SELinux statuss</string>
|
||||
<string name="selinux_status_disabled">Atspējots</string>
|
||||
<string name="selinux_status_enforcing">Izpildīšana</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Sort (Action first)</string>
|
||||
<string name="module_sort_enabled_first">Sort (Enabled first)</string>
|
||||
<string name="uninstall">Atinstalēt</string>
|
||||
<string name="restore">Restore</string>
|
||||
<string name="module_install">Instalēt</string>
|
||||
<string name="install">Instalēt</string>
|
||||
<string name="reboot">Restartēt</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">Veidne</string>
|
||||
<string name="profile_custom">Pielāgots</string>
|
||||
<string name="profile_name">Profila vārds</string>
|
||||
<string name="profile_namespace">Mount nosaukumvieta</string>
|
||||
<string name="profile_namespace_inherited">Mantots</string>
|
||||
<string name="profile_namespace_global">Globāli</string>
|
||||
<string name="profile_namespace_individual">Individuāls</string>
|
||||
<string name="profile_groups">Grupas</string>
|
||||
<string name="profile_capabilities">Iespējas</string>
|
||||
<string name="profile_selinux_context">SELinux konteksts</string>
|
||||
<string name="profile_umount_modules">Atvienot moduļus</string>
|
||||
<string name="failed_to_update_app_profile">Neizdevās atjaunināt lietotnes profilu %s</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %d is too low for the manager to work properly. Please upgrade to version %d or higher!</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %s is too low for the manager to work properly. Please upgrade to version %s or higher!</string>
|
||||
<string name="settings_umount_modules_default">Pēc noklusējuma atvienot moduļus</string>
|
||||
<string name="settings_umount_modules_default_summary">Globālā noklusējuma vērtība vienumam “Atvienot moduļus” lietotņu profilos. Ja tas ir iespējots, lietojumprogrammām, kurām nav iestatīts profils, tiks noņemtas visas sistēmas moduļu modifikācijas.</string>
|
||||
<string name="settings_susfs_toggle">Disable kprobe hooks</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Automātiski pārbaudīt atjauninājumus atverot aplikāciju</string>
|
||||
<string name="grant_root_failed">Neizdevās piešķirt sakni!</string>
|
||||
<string name="action">Action</string>
|
||||
<string name="open">Atvērt</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="enable_web_debugging">Iespējot WebView atkļūdošanu</string>
|
||||
<string name="enable_web_debugging_summary">Var izmantot WebUI atkļūdošanai, lūdzu, izmantot tikai tad, kad tas ir nepieciešams.</string>
|
||||
@@ -138,9 +127,6 @@
|
||||
<string name="selected_lkm">Izvēlētais lkm: %s</string>
|
||||
<string name="save_log">Išsaugoti Žurnalus</string>
|
||||
<string name="log_saved">Logs saved</string>
|
||||
<string name="status_supported">Supported</string>
|
||||
<string name="status_not_supported">Not Supported</string>
|
||||
<string name="status_unknown">Unknown</string>
|
||||
<string name="sus_su_mode">SuS SU mode:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">confirm install module %1$s?</string>
|
||||
@@ -174,14 +160,11 @@
|
||||
<string name="settings_custom_background">Custom App Background</string>
|
||||
<string name="settings_custom_background_summary">Select an image as background</string>
|
||||
<string name="settings_card_alpha">Navigation bar transparency</string>
|
||||
<string name="settings_restore_default">Restore default</string>
|
||||
<string name="home_android_version">Android version</string>
|
||||
<string name="home_device_model">Device model</string>
|
||||
<string name="su_not_allowed">Granting superuser to %s is not allowed</string>
|
||||
<string name="settings_disable_su">Disable su compatibility</string>
|
||||
<string name="settings_disable_su_summary">Temporarily disable any applications from obtaining root privileges via the su command (existing root processes will not be affected).</string>
|
||||
<string name="using_mksu_manager">You are using the SukiSU Beta manager</string>
|
||||
<string name="module_install_multiple_confirm">Are you sure you want to install the selected %d modules?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Sure you want to install the following %1$d modules? \n\n%2$s</string>
|
||||
<string name="more_settings">More settings</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -212,20 +195,14 @@
|
||||
<string name="color_pink">Pink</string>
|
||||
<string name="color_gray">Gray</string>
|
||||
<string name="color_yellow">Yellow</string>
|
||||
<string name="flash_option">Brush Options</string>
|
||||
<string name="flash_option_tip">Select the file to be flashed</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash AnyKernel3 kernel file</string>
|
||||
<string name="root_required">Requires root privileges</string>
|
||||
<string name="copy_failed">File Copy Failure</string>
|
||||
<string name="reboot_complete_title">Scrubbing complete</string>
|
||||
<string name="reboot_complete_msg">Whether to reboot immediately?</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="failed_reboot">Reboot Failed</string>
|
||||
<string name="batch_authorization">empower</string>
|
||||
<string name="batch_cancel_authorization">withdraw</string>
|
||||
<string name="backup">Backup</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">No installed kernel modules at this time</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
@@ -233,7 +210,6 @@
|
||||
<string name="kpm_uninstall">Uninstall</string>
|
||||
<string name="kpm_uninstall_success">Uninstalled successfully</string>
|
||||
<string name="kpm_uninstall_failed">Failed to uninstall</string>
|
||||
<string name="kpm_install">Install</string>
|
||||
<string name="kpm_install_success">Load of kpm module successful</string>
|
||||
<string name="kpm_install_failed">Load of kpm module failed</string>
|
||||
<string name="kpm_args">Parameters</string>
|
||||
@@ -247,8 +223,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra will be a relatively independent branch of KSU in the future, but we still appreciate the official KernelSU and MKSU etc. for their contributions!</string>
|
||||
<string name="not_supported">Unsupported</string>
|
||||
<string name="supported">Supported</string>
|
||||
<string name="home_kpm_module">"Number of KPMs: %d "</string>
|
||||
<string name="kpm_invalid_file">Invalid KPM file</string>
|
||||
<string name="kernel_patched">Kernel not patched</string>
|
||||
<string name="kernel_not_enabled">Kernel not configured</string>
|
||||
<string name="custom_settings">Custom settings</string>
|
||||
@@ -256,19 +230,13 @@
|
||||
<string name="kpm_install_mode_load">Load</string>
|
||||
<string name="kpm_install_mode_embed">Embed</string>
|
||||
<string name="kpm_install_mode_description">Please select: %1\$s Module Installation Mode \n\nLoad: Temporarily load the module \nEmbedded: Permanently install into the system</string>
|
||||
<string name="log_failed_to_check_module_file">Failed to check module file existence</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Unable to check if module file exists</string>
|
||||
<string name="confirm_uninstall_title">Confirm uninstallation</string>
|
||||
<string name="confirm_uninstall_confirm">Uninstall</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancel</string>
|
||||
<string name="theme_color">Theme Color</string>
|
||||
<string name="invalid_file_type">Incorrect file type! Please select .kpm file.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Uninstall</string>
|
||||
<string name="confirm_uninstall_content">The following KPM will be uninstalled: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Disable kprobe hooks created by KernelSU, using inline hooks instead, which is similar to non-GKI kernel hooking method.</string>
|
||||
<string name="image_editor_title">Adjust background image</string>
|
||||
<string name="image_editor_hint">Use two fingers to zoom the image, and one finger to drag it to adjust the position</string>
|
||||
<string name="background_image_error">Could not load image</string>
|
||||
<string name="reprovision">Reprovision</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
@@ -305,10 +273,6 @@
|
||||
<string name="app_settings">Application Settings</string>
|
||||
<string name="tools">Tools</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Removals</string>
|
||||
<string name="apps_with_root">Applications with root privileges</string>
|
||||
<string name="apps_with_custom_profile">Applications with customized configurations</string>
|
||||
<string name="other_apps">Applications with unchanged defaults</string>
|
||||
<string name="no_apps_found">Application not found</string>
|
||||
<string name="selinux_enabled_toast">SELinux Enabled</string>
|
||||
<string name="selinux_disabled_toast">SELinux Disabled</string>
|
||||
@@ -316,8 +280,6 @@
|
||||
<string name="advanced_settings">Advanced Settings</string>
|
||||
<string name="appearance_settings">Customize the toolbar</string>
|
||||
<string name="back">Comeback</string>
|
||||
<string name="expand">Be in full swing</string>
|
||||
<string name="collapse">put away</string>
|
||||
<string name="susfs_enabled">SuSFS enabled</string>
|
||||
<string name="susfs_disabled">SuSFS disabled</string>
|
||||
<string name="background_set_success">Background set successfully</string>
|
||||
@@ -325,7 +287,6 @@
|
||||
<string name="icon_switch_title">Alternate icon</string>
|
||||
<string name="icon_switch_summary">Change the launcher icon to KernelSU\'s icon.</string>
|
||||
<string name="icon_switched">Icon switched</string>
|
||||
<string name="root_require_for_install">Requires root privileges</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Display KPM Function</string>
|
||||
<string name="show_kpm_info_summary">Display KPM information and Function in home and bottom bar (Need to reopen the app)</string>
|
||||
@@ -337,7 +298,6 @@
|
||||
<string name="use_webuix_eruda">Inject Eruda into WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Inject a debug console into WebUI X to make debugging easier. Requires web debugging to be on.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI setting</string>
|
||||
<string name="app_dpi_title">Applied DPI</string>
|
||||
<string name="app_dpi_summary">Adjust the screen display density for the current application only</string>
|
||||
<string name="dpi_size_small">Small </string>
|
||||
@@ -355,16 +315,6 @@
|
||||
<string name="language_follow_system">Follow System</string>
|
||||
<string name="language_changed">Language changed, restarting to apply changes</string>
|
||||
<string name="settings_card_dim">Card Darkness Adjustment</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="scroll_to_top_description">Scroll to top</string>
|
||||
<string name="scroll_to_bottom_description">Scroll to the bottom</string>
|
||||
<string name="authorized">authorized</string>
|
||||
<string name="unauthorized">unauthorized</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<string name="profile_umount_modules_disable">Disable custom uninstallation module</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">error code</string>
|
||||
<string name="check_log">Please check the log</string>
|
||||
@@ -372,4 +322,51 @@
|
||||
<string name="module_failed_count">%d Failed to install a new module</string>
|
||||
<string name="module_download_error">Module download failed</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">इंस्टॉल केले नाही</string>
|
||||
<string name="home_click_to_install">इंस्टॉल साठी क्लिक करा</string>
|
||||
<string name="home_working">कार्यरत</string>
|
||||
<string name="home_working_version">आवृत्ती: %d</string>
|
||||
<string name="home_superuser_count">सुपरयूझर: %d</string>
|
||||
<string name="home_module_count">मॉड्यूल्स: %d</string>
|
||||
<string name="home_working_version">आवृत्ती: %s</string>
|
||||
<string name="home_unsupported">असमर्थित</string>
|
||||
<string name="home_unsupported_reason">KernelSU आता फक्त GKI कर्नलचे समर्थन करते</string>
|
||||
<string name="home_kernel">कर्नल</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS Version</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">व्यवस्थापक आवृत्ती</string>
|
||||
<string name="home_fingerprint">फिंगरप्रिंट</string>
|
||||
<string name="home_selinux_status">SELinux स्थिती</string>
|
||||
<string name="selinux_status_disabled">अक्षम</string>
|
||||
<string name="selinux_status_enforcing">एनफोर्सिंग</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Sort (Action first)</string>
|
||||
<string name="module_sort_enabled_first">Sort (Enabled first)</string>
|
||||
<string name="uninstall">विस्थापित करा</string>
|
||||
<string name="restore">Restore</string>
|
||||
<string name="module_install">स्थापित करा</string>
|
||||
<string name="install">स्थापित करा</string>
|
||||
<string name="reboot">रीबूट करा</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">साचा</string>
|
||||
<string name="profile_custom">कस्टम</string>
|
||||
<string name="profile_name">प्रोफाइल नाव</string>
|
||||
<string name="profile_namespace">माउंट नेमस्पेस</string>
|
||||
<string name="profile_namespace_inherited">इनहेरीटेड</string>
|
||||
<string name="profile_namespace_global">जागतिक</string>
|
||||
<string name="profile_namespace_individual">वैयक्तिक</string>
|
||||
<string name="profile_groups">गट</string>
|
||||
<string name="profile_capabilities">क्षमता</string>
|
||||
<string name="profile_selinux_context">SELinux संदर्भ</string>
|
||||
<string name="profile_umount_modules">उमाउंट मॉड्यूल्स</string>
|
||||
<string name="failed_to_update_app_profile">%s साठी अॅप प्रोफाइल अपडेट करण्यात अयशस्वी</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %d is too low for the manager to work properly. Please upgrade to version %d or higher!</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %s is too low for the manager to work properly. Please upgrade to version %s or higher!</string>
|
||||
<string name="settings_umount_modules_default">डीफॉल्टनुसार मॉड्यूल्स उमाउंट करा</string>
|
||||
<string name="settings_umount_modules_default_summary">अॅप प्रोफाइलमधील \"उमाउंट मॉड्यूल्स\" साठी जागतिक डीफॉल्ट मूल्य. सक्षम असल्यास, ते प्रोफाइल सेट नसलेल्या ॲप्लिकेशनचे सिस्टममधील सर्व मॉड्यूल बदल काढून टाकेल.</string>
|
||||
<string name="settings_susfs_toggle">Disable kprobe hooks</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Automatically check for updates when opening the app</string>
|
||||
<string name="grant_root_failed">Failed to grant root!</string>
|
||||
<string name="action">Action</string>
|
||||
<string name="open">Open</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="enable_web_debugging">Enable WebView debugging</string>
|
||||
<string name="enable_web_debugging_summary">Can be used to debug WebUI. Please enable only when needed.</string>
|
||||
@@ -136,9 +125,6 @@
|
||||
<string name="selected_lkm">Selected LKM: %s</string>
|
||||
<string name="save_log">लॉग जतन करा</string>
|
||||
<string name="log_saved">Logs saved</string>
|
||||
<string name="status_supported">Supported</string>
|
||||
<string name="status_not_supported">Not Supported</string>
|
||||
<string name="status_unknown">Unknown</string>
|
||||
<string name="sus_su_mode">SuS SU mode:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">confirm install module %1$s?</string>
|
||||
@@ -172,14 +158,11 @@
|
||||
<string name="settings_custom_background">Custom App Background</string>
|
||||
<string name="settings_custom_background_summary">Select an image as background</string>
|
||||
<string name="settings_card_alpha">Navigation bar transparency</string>
|
||||
<string name="settings_restore_default">Restore default</string>
|
||||
<string name="home_android_version">Android version</string>
|
||||
<string name="home_device_model">Device model</string>
|
||||
<string name="su_not_allowed">Granting superuser to %s is not allowed</string>
|
||||
<string name="settings_disable_su">Disable su compatibility</string>
|
||||
<string name="settings_disable_su_summary">Temporarily disable any applications from obtaining root privileges via the su command (existing root processes will not be affected).</string>
|
||||
<string name="using_mksu_manager">You are using the SukiSU Beta manager</string>
|
||||
<string name="module_install_multiple_confirm">Are you sure you want to install the selected %d modules?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Sure you want to install the following %1$d modules? \n\n%2$s</string>
|
||||
<string name="more_settings">More settings</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -210,20 +193,14 @@
|
||||
<string name="color_pink">Pink</string>
|
||||
<string name="color_gray">Gray</string>
|
||||
<string name="color_yellow">Yellow</string>
|
||||
<string name="flash_option">Brush Options</string>
|
||||
<string name="flash_option_tip">Select the file to be flashed</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash AnyKernel3 kernel file</string>
|
||||
<string name="root_required">Requires root privileges</string>
|
||||
<string name="copy_failed">File Copy Failure</string>
|
||||
<string name="reboot_complete_title">Scrubbing complete</string>
|
||||
<string name="reboot_complete_msg">Whether to reboot immediately?</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="failed_reboot">Reboot Failed</string>
|
||||
<string name="batch_authorization">empower</string>
|
||||
<string name="batch_cancel_authorization">withdraw</string>
|
||||
<string name="backup">Backup</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">No installed kernel modules at this time</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
@@ -231,7 +208,6 @@
|
||||
<string name="kpm_uninstall">Uninstall</string>
|
||||
<string name="kpm_uninstall_success">Uninstalled successfully</string>
|
||||
<string name="kpm_uninstall_failed">Failed to uninstall</string>
|
||||
<string name="kpm_install">Install</string>
|
||||
<string name="kpm_install_success">Load of kpm module successful</string>
|
||||
<string name="kpm_install_failed">Load of kpm module failed</string>
|
||||
<string name="kpm_args">Parameters</string>
|
||||
@@ -245,8 +221,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra will be a relatively independent branch of KSU in the future, but we still appreciate the official KernelSU and MKSU etc. for their contributions!</string>
|
||||
<string name="not_supported">Unsupported</string>
|
||||
<string name="supported">Supported</string>
|
||||
<string name="home_kpm_module">"Number of KPMs: %d "</string>
|
||||
<string name="kpm_invalid_file">Invalid KPM file</string>
|
||||
<string name="kernel_patched">Kernel not patched</string>
|
||||
<string name="kernel_not_enabled">Kernel not configured</string>
|
||||
<string name="custom_settings">Custom settings</string>
|
||||
@@ -254,19 +228,13 @@
|
||||
<string name="kpm_install_mode_load">Load</string>
|
||||
<string name="kpm_install_mode_embed">Embed</string>
|
||||
<string name="kpm_install_mode_description">Please select: %1\$s Module Installation Mode \n\nLoad: Temporarily load the module \nEmbedded: Permanently install into the system</string>
|
||||
<string name="log_failed_to_check_module_file">Failed to check module file existence</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Unable to check if module file exists</string>
|
||||
<string name="confirm_uninstall_title">Confirm uninstallation</string>
|
||||
<string name="confirm_uninstall_confirm">Uninstall</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancel</string>
|
||||
<string name="theme_color">Theme Color</string>
|
||||
<string name="invalid_file_type">Incorrect file type! Please select .kpm file.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Uninstall</string>
|
||||
<string name="confirm_uninstall_content">The following KPM will be uninstalled: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Disable kprobe hooks created by KernelSU, using inline hooks instead, which is similar to non-GKI kernel hooking method.</string>
|
||||
<string name="image_editor_title">Adjust background image</string>
|
||||
<string name="image_editor_hint">Use two fingers to zoom the image, and one finger to drag it to adjust the position</string>
|
||||
<string name="background_image_error">Could not load image</string>
|
||||
<string name="reprovision">Reprovision</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
@@ -303,10 +271,6 @@
|
||||
<string name="app_settings">Application Settings</string>
|
||||
<string name="tools">Tools</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Removals</string>
|
||||
<string name="apps_with_root">Applications with root privileges</string>
|
||||
<string name="apps_with_custom_profile">Applications with customized configurations</string>
|
||||
<string name="other_apps">Applications with unchanged defaults</string>
|
||||
<string name="no_apps_found">Application not found</string>
|
||||
<string name="selinux_enabled_toast">SELinux Enabled</string>
|
||||
<string name="selinux_disabled_toast">SELinux Disabled</string>
|
||||
@@ -314,8 +278,6 @@
|
||||
<string name="advanced_settings">Advanced Settings</string>
|
||||
<string name="appearance_settings">Customize the toolbar</string>
|
||||
<string name="back">Comeback</string>
|
||||
<string name="expand">Be in full swing</string>
|
||||
<string name="collapse">put away</string>
|
||||
<string name="susfs_enabled">SuSFS enabled</string>
|
||||
<string name="susfs_disabled">SuSFS disabled</string>
|
||||
<string name="background_set_success">Background set successfully</string>
|
||||
@@ -323,7 +285,6 @@
|
||||
<string name="icon_switch_title">Alternate icon</string>
|
||||
<string name="icon_switch_summary">Change the launcher icon to KernelSU\'s icon.</string>
|
||||
<string name="icon_switched">Icon switched</string>
|
||||
<string name="root_require_for_install">Requires root privileges</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Display KPM Function</string>
|
||||
<string name="show_kpm_info_summary">Display KPM information and Function in home and bottom bar (Need to reopen the app)</string>
|
||||
@@ -335,7 +296,6 @@
|
||||
<string name="use_webuix_eruda">Inject Eruda into WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Inject a debug console into WebUI X to make debugging easier. Requires web debugging to be on.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI setting</string>
|
||||
<string name="app_dpi_title">Applied DPI</string>
|
||||
<string name="app_dpi_summary">Adjust the screen display density for the current application only</string>
|
||||
<string name="dpi_size_small">Small </string>
|
||||
@@ -353,16 +313,6 @@
|
||||
<string name="language_follow_system">Follow System</string>
|
||||
<string name="language_changed">Language changed, restarting to apply changes</string>
|
||||
<string name="settings_card_dim">Card Darkness Adjustment</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="scroll_to_top_description">Scroll to top</string>
|
||||
<string name="scroll_to_bottom_description">Scroll to the bottom</string>
|
||||
<string name="authorized">authorized</string>
|
||||
<string name="unauthorized">unauthorized</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<string name="profile_umount_modules_disable">Disable custom uninstallation module</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">error code</string>
|
||||
<string name="check_log">Please check the log</string>
|
||||
@@ -370,4 +320,51 @@
|
||||
<string name="module_failed_count">%d Failed to install a new module</string>
|
||||
<string name="module_download_error">Module download failed</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">Tidak terpasang</string>
|
||||
<string name="home_click_to_install">Tekan untuk memasang</string>
|
||||
<string name="home_working">Berjalan</string>
|
||||
<string name="home_working_version">Versi: %d</string>
|
||||
<string name="home_superuser_count">Superusers: %d</string>
|
||||
<string name="home_module_count">Modul: %d</string>
|
||||
<string name="home_working_version">Versi: %s</string>
|
||||
<string name="home_unsupported">Tidak Disokong</string>
|
||||
<string name="home_unsupported_reason">KernelSU ketika ini hanya menyokong kernel GKI</string>
|
||||
<string name="home_kernel">Kernel</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS Version</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">Versi manager</string>
|
||||
<string name="home_fingerprint">Cap Jari</string>
|
||||
<string name="home_selinux_status">Status SELinux</string>
|
||||
<string name="selinux_status_disabled">Lumpuhkan</string>
|
||||
<string name="selinux_status_enforcing">Enforcing</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Sort (Action first)</string>
|
||||
<string name="module_sort_enabled_first">Sort (Enabled first)</string>
|
||||
<string name="uninstall">Padam</string>
|
||||
<string name="restore">Restore</string>
|
||||
<string name="module_install">Pasang</string>
|
||||
<string name="install">Pasang</string>
|
||||
<string name="reboot">Reboot</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">Template</string>
|
||||
<string name="profile_custom">Custom</string>
|
||||
<string name="profile_name">Profile name</string>
|
||||
<string name="profile_namespace">Mount namespace</string>
|
||||
<string name="profile_namespace_inherited">Inherited</string>
|
||||
<string name="profile_namespace_global">Global</string>
|
||||
<string name="profile_namespace_individual">Individual</string>
|
||||
<string name="profile_groups">Groups</string>
|
||||
<string name="profile_capabilities">Capabilities</string>
|
||||
<string name="profile_selinux_context">SELinux context</string>
|
||||
<string name="profile_umount_modules">Umount modules</string>
|
||||
<string name="failed_to_update_app_profile">Failed to update App Profile for %s</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %d is too low for the manager to work properly. Please upgrade to version %d or higher!</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %s is too low for the manager to work properly. Please upgrade to version %s or higher!</string>
|
||||
<string name="settings_umount_modules_default">Umount modules by default</string>
|
||||
<string name="settings_umount_modules_default_summary">The global default value for \"Umount modules\" in App Profile. If enabled, it will remove all module modifications to the system for apps that don\'t have a profile set.</string>
|
||||
<string name="settings_susfs_toggle">Disable kprobe hooks</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Automatically check for updates when opening the app</string>
|
||||
<string name="grant_root_failed">Failed to grant root!</string>
|
||||
<string name="action">Action</string>
|
||||
<string name="open">Open</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="enable_web_debugging">Enable WebView debugging</string>
|
||||
<string name="enable_web_debugging_summary">Can be used to debug WebUI. Please enable only when needed.</string>
|
||||
@@ -136,9 +125,6 @@
|
||||
<string name="selected_lkm">Selected LKM: %s</string>
|
||||
<string name="save_log">Simpan Log</string>
|
||||
<string name="log_saved">Logs saved</string>
|
||||
<string name="status_supported">Supported</string>
|
||||
<string name="status_not_supported">Not Supported</string>
|
||||
<string name="status_unknown">Unknown</string>
|
||||
<string name="sus_su_mode">SuS SU mode:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">confirm install module %1$s?</string>
|
||||
@@ -172,14 +158,11 @@
|
||||
<string name="settings_custom_background">Custom App Background</string>
|
||||
<string name="settings_custom_background_summary">Select an image as background</string>
|
||||
<string name="settings_card_alpha">Navigation bar transparency</string>
|
||||
<string name="settings_restore_default">Restore default</string>
|
||||
<string name="home_android_version">Android version</string>
|
||||
<string name="home_device_model">Device model</string>
|
||||
<string name="su_not_allowed">Granting superuser to %s is not allowed</string>
|
||||
<string name="settings_disable_su">Disable su compatibility</string>
|
||||
<string name="settings_disable_su_summary">Temporarily disable any applications from obtaining root privileges via the su command (existing root processes will not be affected).</string>
|
||||
<string name="using_mksu_manager">You are using the SukiSU Beta manager</string>
|
||||
<string name="module_install_multiple_confirm">Are you sure you want to install the selected %d modules?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Sure you want to install the following %1$d modules? \n\n%2$s</string>
|
||||
<string name="more_settings">More settings</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -210,20 +193,14 @@
|
||||
<string name="color_pink">Pink</string>
|
||||
<string name="color_gray">Gray</string>
|
||||
<string name="color_yellow">Yellow</string>
|
||||
<string name="flash_option">Brush Options</string>
|
||||
<string name="flash_option_tip">Select the file to be flashed</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash AnyKernel3 kernel file</string>
|
||||
<string name="root_required">Requires root privileges</string>
|
||||
<string name="copy_failed">File Copy Failure</string>
|
||||
<string name="reboot_complete_title">Scrubbing complete</string>
|
||||
<string name="reboot_complete_msg">Whether to reboot immediately?</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="failed_reboot">Reboot Failed</string>
|
||||
<string name="batch_authorization">empower</string>
|
||||
<string name="batch_cancel_authorization">withdraw</string>
|
||||
<string name="backup">Backup</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">No installed kernel modules at this time</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
@@ -231,7 +208,6 @@
|
||||
<string name="kpm_uninstall">Uninstall</string>
|
||||
<string name="kpm_uninstall_success">Uninstalled successfully</string>
|
||||
<string name="kpm_uninstall_failed">Failed to uninstall</string>
|
||||
<string name="kpm_install">Install</string>
|
||||
<string name="kpm_install_success">Load of kpm module successful</string>
|
||||
<string name="kpm_install_failed">Load of kpm module failed</string>
|
||||
<string name="kpm_args">Parameters</string>
|
||||
@@ -245,8 +221,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra will be a relatively independent branch of KSU in the future, but we still appreciate the official KernelSU and MKSU etc. for their contributions!</string>
|
||||
<string name="not_supported">Unsupported</string>
|
||||
<string name="supported">Supported</string>
|
||||
<string name="home_kpm_module">"Number of KPMs: %d "</string>
|
||||
<string name="kpm_invalid_file">Invalid KPM file</string>
|
||||
<string name="kernel_patched">Kernel not patched</string>
|
||||
<string name="kernel_not_enabled">Kernel not configured</string>
|
||||
<string name="custom_settings">Custom settings</string>
|
||||
@@ -254,19 +228,13 @@
|
||||
<string name="kpm_install_mode_load">Load</string>
|
||||
<string name="kpm_install_mode_embed">Embed</string>
|
||||
<string name="kpm_install_mode_description">Please select: %1\$s Module Installation Mode \n\nLoad: Temporarily load the module \nEmbedded: Permanently install into the system</string>
|
||||
<string name="log_failed_to_check_module_file">Failed to check module file existence</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Unable to check if module file exists</string>
|
||||
<string name="confirm_uninstall_title">Confirm uninstallation</string>
|
||||
<string name="confirm_uninstall_confirm">Uninstall</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancel</string>
|
||||
<string name="theme_color">Theme Color</string>
|
||||
<string name="invalid_file_type">Incorrect file type! Please select .kpm file.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Uninstall</string>
|
||||
<string name="confirm_uninstall_content">The following KPM will be uninstalled: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Disable kprobe hooks created by KernelSU, using inline hooks instead, which is similar to non-GKI kernel hooking method.</string>
|
||||
<string name="image_editor_title">Adjust background image</string>
|
||||
<string name="image_editor_hint">Use two fingers to zoom the image, and one finger to drag it to adjust the position</string>
|
||||
<string name="background_image_error">Could not load image</string>
|
||||
<string name="reprovision">Reprovision</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
@@ -303,10 +271,6 @@
|
||||
<string name="app_settings">Application Settings</string>
|
||||
<string name="tools">Tools</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Removals</string>
|
||||
<string name="apps_with_root">Applications with root privileges</string>
|
||||
<string name="apps_with_custom_profile">Applications with customized configurations</string>
|
||||
<string name="other_apps">Applications with unchanged defaults</string>
|
||||
<string name="no_apps_found">Application not found</string>
|
||||
<string name="selinux_enabled_toast">SELinux Enabled</string>
|
||||
<string name="selinux_disabled_toast">SELinux Disabled</string>
|
||||
@@ -314,8 +278,6 @@
|
||||
<string name="advanced_settings">Advanced Settings</string>
|
||||
<string name="appearance_settings">Customize the toolbar</string>
|
||||
<string name="back">Comeback</string>
|
||||
<string name="expand">Be in full swing</string>
|
||||
<string name="collapse">put away</string>
|
||||
<string name="susfs_enabled">SuSFS enabled</string>
|
||||
<string name="susfs_disabled">SuSFS disabled</string>
|
||||
<string name="background_set_success">Background set successfully</string>
|
||||
@@ -323,7 +285,6 @@
|
||||
<string name="icon_switch_title">Alternate icon</string>
|
||||
<string name="icon_switch_summary">Change the launcher icon to KernelSU\'s icon.</string>
|
||||
<string name="icon_switched">Icon switched</string>
|
||||
<string name="root_require_for_install">Requires root privileges</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Display KPM Function</string>
|
||||
<string name="show_kpm_info_summary">Display KPM information and Function in home and bottom bar (Need to reopen the app)</string>
|
||||
@@ -335,7 +296,6 @@
|
||||
<string name="use_webuix_eruda">Inject Eruda into WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Inject a debug console into WebUI X to make debugging easier. Requires web debugging to be on.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI setting</string>
|
||||
<string name="app_dpi_title">Applied DPI</string>
|
||||
<string name="app_dpi_summary">Adjust the screen display density for the current application only</string>
|
||||
<string name="dpi_size_small">Small </string>
|
||||
@@ -353,16 +313,6 @@
|
||||
<string name="language_follow_system">Follow System</string>
|
||||
<string name="language_changed">Language changed, restarting to apply changes</string>
|
||||
<string name="settings_card_dim">Card Darkness Adjustment</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="scroll_to_top_description">Scroll to top</string>
|
||||
<string name="scroll_to_bottom_description">Scroll to the bottom</string>
|
||||
<string name="authorized">authorized</string>
|
||||
<string name="unauthorized">unauthorized</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<string name="profile_umount_modules_disable">Disable custom uninstallation module</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">error code</string>
|
||||
<string name="check_log">Please check the log</string>
|
||||
@@ -370,4 +320,51 @@
|
||||
<string name="module_failed_count">%d Failed to install a new module</string>
|
||||
<string name="module_download_error">Module download failed</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">Niet geïnstalleerd</string>
|
||||
<string name="home_click_to_install">Klik om te installeren</string>
|
||||
<string name="home_working">Werkend</string>
|
||||
<string name="home_working_version">Versie: %d</string>
|
||||
<string name="home_superuser_count">Supergebruikers: %d</string>
|
||||
<string name="home_module_count">Modules: %d</string>
|
||||
<string name="home_working_version">Versie: %s</string>
|
||||
<string name="home_unsupported">Niet ondersteund</string>
|
||||
<string name="home_unsupported_reason">KernelSU ondersteunt alleen GKI kernels</string>
|
||||
<string name="home_kernel">Kernel</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS Version</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">Manager versie</string>
|
||||
<string name="home_fingerprint">Fingerprint</string>
|
||||
<string name="home_selinux_status">SELinux status</string>
|
||||
<string name="selinux_status_disabled">Uitgeschakeld</string>
|
||||
<string name="selinux_status_enforcing">Afgedwongen</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Sorteren (actie eerst)</string>
|
||||
<string name="module_sort_enabled_first">Sorteren (eerst ingeschakeld)</string>
|
||||
<string name="uninstall">Verwijderen</string>
|
||||
<string name="restore">Restore</string>
|
||||
<string name="module_install">Installeren</string>
|
||||
<string name="install">Installeren</string>
|
||||
<string name="reboot">Herstart</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">Sjabloon</string>
|
||||
<string name="profile_custom">Aangepast</string>
|
||||
<string name="profile_name">Profiel naam</string>
|
||||
<string name="profile_namespace">Koppel naamruimte</string>
|
||||
<string name="profile_namespace_inherited">Overgenomen</string>
|
||||
<string name="profile_namespace_global">Globaal</string>
|
||||
<string name="profile_namespace_individual">Individuëel</string>
|
||||
<string name="profile_groups">Groepen</string>
|
||||
<string name="profile_capabilities">Mogelijkheden</string>
|
||||
<string name="profile_selinux_context">SELinux context</string>
|
||||
<string name="profile_umount_modules">Ontkoppel modules</string>
|
||||
<string name="failed_to_update_app_profile">Mislukt om App Profiel te updaten voor %s</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %d is too low for the manager to work properly. Please upgrade to version %d or higher!</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %s is too low for the manager to work properly. Please upgrade to version %s or higher!</string>
|
||||
<string name="settings_umount_modules_default">Ontkoppel standaard de modules</string>
|
||||
<string name="settings_umount_modules_default_summary">De globale standaardwaarde voor \"Umount modules\" in App Profile. Als dit is ingeschakeld, worden alle modulewijzigingen in het systeem verwijderd voor apps waarvoor geen profiel is ingesteld.</string>
|
||||
<string name="settings_susfs_toggle">Disable kprobe hooks</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Controleer automatisch op updates bij het openen van de app</string>
|
||||
<string name="grant_root_failed">Kan geen root verlenen!</string>
|
||||
<string name="action">Actie</string>
|
||||
<string name="open">Open</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="enable_web_debugging">Schakel WebView-foutopsporing</string>
|
||||
<string name="enable_web_debugging_summary">Kan worden gebruikt om WebUI te debuggen. Schakel dit alleen in als dat nodig is.</string>
|
||||
@@ -138,9 +127,6 @@
|
||||
<string name="selected_lkm">Geselecteerde LKM: %s</string>
|
||||
<string name="save_log">Logboeken Opslaan</string>
|
||||
<string name="log_saved">Logs opgeslagen</string>
|
||||
<string name="status_supported">Supported</string>
|
||||
<string name="status_not_supported">Not Supported</string>
|
||||
<string name="status_unknown">Unknown</string>
|
||||
<string name="sus_su_mode">SuS SU mode:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">confirm install module %1$s?</string>
|
||||
@@ -174,14 +160,11 @@
|
||||
<string name="settings_custom_background">Custom App Background</string>
|
||||
<string name="settings_custom_background_summary">Select an image as background</string>
|
||||
<string name="settings_card_alpha">Navigation bar transparency</string>
|
||||
<string name="settings_restore_default">Restore default</string>
|
||||
<string name="home_android_version">Android version</string>
|
||||
<string name="home_device_model">Device model</string>
|
||||
<string name="su_not_allowed">Granting superuser to %s is not allowed</string>
|
||||
<string name="settings_disable_su">Disable su compatibility</string>
|
||||
<string name="settings_disable_su_summary">Temporarily disable any applications from obtaining root privileges via the su command (existing root processes will not be affected).</string>
|
||||
<string name="using_mksu_manager">You are using the SukiSU Beta manager</string>
|
||||
<string name="module_install_multiple_confirm">Are you sure you want to install the selected %d modules?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Sure you want to install the following %1$d modules? \n\n%2$s</string>
|
||||
<string name="more_settings">More settings</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -212,20 +195,14 @@
|
||||
<string name="color_pink">Pink</string>
|
||||
<string name="color_gray">Gray</string>
|
||||
<string name="color_yellow">Yellow</string>
|
||||
<string name="flash_option">Brush Options</string>
|
||||
<string name="flash_option_tip">Select the file to be flashed</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash AnyKernel3 kernel file</string>
|
||||
<string name="root_required">Requires root privileges</string>
|
||||
<string name="copy_failed">File Copy Failure</string>
|
||||
<string name="reboot_complete_title">Scrubbing complete</string>
|
||||
<string name="reboot_complete_msg">Whether to reboot immediately?</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="failed_reboot">Reboot Failed</string>
|
||||
<string name="batch_authorization">empower</string>
|
||||
<string name="batch_cancel_authorization">withdraw</string>
|
||||
<string name="backup">Backup</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">No installed kernel modules at this time</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
@@ -233,7 +210,6 @@
|
||||
<string name="kpm_uninstall">Uninstall</string>
|
||||
<string name="kpm_uninstall_success">Uninstalled successfully</string>
|
||||
<string name="kpm_uninstall_failed">Failed to uninstall</string>
|
||||
<string name="kpm_install">Install</string>
|
||||
<string name="kpm_install_success">Load of kpm module successful</string>
|
||||
<string name="kpm_install_failed">Load of kpm module failed</string>
|
||||
<string name="kpm_args">Parameters</string>
|
||||
@@ -247,8 +223,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra will be a relatively independent branch of KSU in the future, but we still appreciate the official KernelSU and MKSU etc. for their contributions!</string>
|
||||
<string name="not_supported">Unsupported</string>
|
||||
<string name="supported">Supported</string>
|
||||
<string name="home_kpm_module">"Number of KPMs: %d "</string>
|
||||
<string name="kpm_invalid_file">Invalid KPM file</string>
|
||||
<string name="kernel_patched">Kernel not patched</string>
|
||||
<string name="kernel_not_enabled">Kernel not configured</string>
|
||||
<string name="custom_settings">Custom settings</string>
|
||||
@@ -256,19 +230,13 @@
|
||||
<string name="kpm_install_mode_load">Load</string>
|
||||
<string name="kpm_install_mode_embed">Embed</string>
|
||||
<string name="kpm_install_mode_description">Please select: %1\$s Module Installation Mode \n\nLoad: Temporarily load the module \nEmbedded: Permanently install into the system</string>
|
||||
<string name="log_failed_to_check_module_file">Failed to check module file existence</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Unable to check if module file exists</string>
|
||||
<string name="confirm_uninstall_title">Confirm uninstallation</string>
|
||||
<string name="confirm_uninstall_confirm">Uninstall</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancel</string>
|
||||
<string name="theme_color">Theme Color</string>
|
||||
<string name="invalid_file_type">Incorrect file type! Please select .kpm file.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Uninstall</string>
|
||||
<string name="confirm_uninstall_content">The following KPM will be uninstalled: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Disable kprobe hooks created by KernelSU, using inline hooks instead, which is similar to non-GKI kernel hooking method.</string>
|
||||
<string name="image_editor_title">Adjust background image</string>
|
||||
<string name="image_editor_hint">Use two fingers to zoom the image, and one finger to drag it to adjust the position</string>
|
||||
<string name="background_image_error">Could not load image</string>
|
||||
<string name="reprovision">Reprovision</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
@@ -305,10 +273,6 @@
|
||||
<string name="app_settings">Application Settings</string>
|
||||
<string name="tools">Tools</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Removals</string>
|
||||
<string name="apps_with_root">Applications with root privileges</string>
|
||||
<string name="apps_with_custom_profile">Applications with customized configurations</string>
|
||||
<string name="other_apps">Applications with unchanged defaults</string>
|
||||
<string name="no_apps_found">Application not found</string>
|
||||
<string name="selinux_enabled_toast">SELinux Enabled</string>
|
||||
<string name="selinux_disabled_toast">SELinux Disabled</string>
|
||||
@@ -316,8 +280,6 @@
|
||||
<string name="advanced_settings">Advanced Settings</string>
|
||||
<string name="appearance_settings">Customize the toolbar</string>
|
||||
<string name="back">Comeback</string>
|
||||
<string name="expand">Be in full swing</string>
|
||||
<string name="collapse">put away</string>
|
||||
<string name="susfs_enabled">SuSFS enabled</string>
|
||||
<string name="susfs_disabled">SuSFS disabled</string>
|
||||
<string name="background_set_success">Background set successfully</string>
|
||||
@@ -325,7 +287,6 @@
|
||||
<string name="icon_switch_title">Alternate icon</string>
|
||||
<string name="icon_switch_summary">Change the launcher icon to KernelSU\'s icon.</string>
|
||||
<string name="icon_switched">Icon switched</string>
|
||||
<string name="root_require_for_install">Requires root privileges</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Display KPM Function</string>
|
||||
<string name="show_kpm_info_summary">Display KPM information and Function in home and bottom bar (Need to reopen the app)</string>
|
||||
@@ -337,7 +298,6 @@
|
||||
<string name="use_webuix_eruda">Inject Eruda into WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Inject a debug console into WebUI X to make debugging easier. Requires web debugging to be on.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI setting</string>
|
||||
<string name="app_dpi_title">Applied DPI</string>
|
||||
<string name="app_dpi_summary">Adjust the screen display density for the current application only</string>
|
||||
<string name="dpi_size_small">Small </string>
|
||||
@@ -355,16 +315,6 @@
|
||||
<string name="language_follow_system">Follow System</string>
|
||||
<string name="language_changed">Language changed, restarting to apply changes</string>
|
||||
<string name="settings_card_dim">Card Darkness Adjustment</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="scroll_to_top_description">Scroll to top</string>
|
||||
<string name="scroll_to_bottom_description">Scroll to the bottom</string>
|
||||
<string name="authorized">authorized</string>
|
||||
<string name="unauthorized">unauthorized</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<string name="profile_umount_modules_disable">Disable custom uninstallation module</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">error code</string>
|
||||
<string name="check_log">Please check the log</string>
|
||||
@@ -372,4 +322,51 @@
|
||||
<string name="module_failed_count">%d Failed to install a new module</string>
|
||||
<string name="module_download_error">Module download failed</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">Nie zainstalowano</string>
|
||||
<string name="home_click_to_install">Kliknij, aby zainstalować</string>
|
||||
<string name="home_working">Działa</string>
|
||||
<string name="home_working_version">Wersja: %d</string>
|
||||
<string name="home_superuser_count">Superużytkownicy: %d</string>
|
||||
<string name="home_module_count">Moduły: %d</string>
|
||||
<string name="home_working_version">Wersja: %s</string>
|
||||
<string name="home_unsupported">Nieobsługiwany</string>
|
||||
<string name="home_unsupported_reason">KernelSU obsługuje obecnie tylko jądra GKI</string>
|
||||
<string name="home_kernel">Jądro</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS Version</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">Wersja menedżera</string>
|
||||
<string name="home_fingerprint">Odcisk</string>
|
||||
<string name="home_selinux_status">Status SELinux</string>
|
||||
<string name="selinux_status_disabled">Wyłączony</string>
|
||||
<string name="selinux_status_enforcing">Enforcing</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Sortuj (najpierw działania)</string>
|
||||
<string name="module_sort_enabled_first">Sortuj (najpierw włączone)</string>
|
||||
<string name="uninstall">Odinstaluj</string>
|
||||
<string name="restore">Restore</string>
|
||||
<string name="module_install">Instaluj</string>
|
||||
<string name="install">Instaluj</string>
|
||||
<string name="reboot">Uruchom ponownie</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">Szablon</string>
|
||||
<string name="profile_custom">Własny</string>
|
||||
<string name="profile_name">Nazwa profilu</string>
|
||||
<string name="profile_namespace">Przestrzeń nazw montowania</string>
|
||||
<string name="profile_namespace_inherited">Odziedziczona</string>
|
||||
<string name="profile_namespace_global">Globalna</string>
|
||||
<string name="profile_namespace_individual">Indywidualna</string>
|
||||
<string name="profile_groups">Grupy</string>
|
||||
<string name="profile_capabilities">Uprawnienia</string>
|
||||
<string name="profile_selinux_context">Kontekst SELinux</string>
|
||||
<string name="profile_umount_modules">Odmontuj moduły</string>
|
||||
<string name="failed_to_update_app_profile">Nie udało się zaktualizować profilu aplikacji dla %s</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %d is too low for the manager to work properly. Please upgrade to version %d or higher!</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %s is too low for the manager to work properly. Please upgrade to version %s or higher!</string>
|
||||
<string name="settings_umount_modules_default">Domyślnie odmontuj moduły</string>
|
||||
<string name="settings_umount_modules_default_summary">Globalna wartość domyślna opcji \"Odmontuj moduły\" w profilu aplikacji. Jeśli jest włączona, wycofuje wszystkie modyfikacje dokonane przez moduły dla aplikacji, które nie mają ustawionego profilu.</string>
|
||||
<string name="settings_susfs_toggle">Disable kprobe hooks</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Wyszukuj aktualizacje automatycznie przy otwieraniu aplikacji</string>
|
||||
<string name="grant_root_failed">Nie udało się przyznać roota!</string>
|
||||
<string name="action">Akcja</string>
|
||||
<string name="open">Otwórz</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="enable_web_debugging">Włącz debugowanie WebView</string>
|
||||
<string name="enable_web_debugging_summary">Może być użyte do debugowania WebUI. Włącz tylko w razie potrzeby.</string>
|
||||
@@ -138,9 +127,6 @@
|
||||
<string name="selected_lkm">Wybrano LKM: %s</string>
|
||||
<string name="save_log">Zapisz dzienniki</string>
|
||||
<string name="log_saved">Dzienniki zapisane</string>
|
||||
<string name="status_supported">Supported</string>
|
||||
<string name="status_not_supported">Not Supported</string>
|
||||
<string name="status_unknown">Unknown</string>
|
||||
<string name="sus_su_mode">SuS SU mode:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">confirm install module %1$s?</string>
|
||||
@@ -174,14 +160,11 @@
|
||||
<string name="settings_custom_background">Custom App Background</string>
|
||||
<string name="settings_custom_background_summary">Select an image as background</string>
|
||||
<string name="settings_card_alpha">Navigation bar transparency</string>
|
||||
<string name="settings_restore_default">Restore default</string>
|
||||
<string name="home_android_version">Android version</string>
|
||||
<string name="home_device_model">Device model</string>
|
||||
<string name="su_not_allowed">Granting superuser to %s is not allowed</string>
|
||||
<string name="settings_disable_su">Disable su compatibility</string>
|
||||
<string name="settings_disable_su_summary">Temporarily disable any applications from obtaining root privileges via the su command (existing root processes will not be affected).</string>
|
||||
<string name="using_mksu_manager">You are using the SukiSU Beta manager</string>
|
||||
<string name="module_install_multiple_confirm">Are you sure you want to install the selected %d modules?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Sure you want to install the following %1$d modules? \n\n%2$s</string>
|
||||
<string name="more_settings">More settings</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -212,20 +195,14 @@
|
||||
<string name="color_pink">Pink</string>
|
||||
<string name="color_gray">Gray</string>
|
||||
<string name="color_yellow">Yellow</string>
|
||||
<string name="flash_option">Brush Options</string>
|
||||
<string name="flash_option_tip">Select the file to be flashed</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash AnyKernel3 kernel file</string>
|
||||
<string name="root_required">Requires root privileges</string>
|
||||
<string name="copy_failed">File Copy Failure</string>
|
||||
<string name="reboot_complete_title">Scrubbing complete</string>
|
||||
<string name="reboot_complete_msg">Whether to reboot immediately?</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="failed_reboot">Reboot Failed</string>
|
||||
<string name="batch_authorization">empower</string>
|
||||
<string name="batch_cancel_authorization">withdraw</string>
|
||||
<string name="backup">Backup</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">No installed kernel modules at this time</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
@@ -233,7 +210,6 @@
|
||||
<string name="kpm_uninstall">Uninstall</string>
|
||||
<string name="kpm_uninstall_success">Uninstalled successfully</string>
|
||||
<string name="kpm_uninstall_failed">Failed to uninstall</string>
|
||||
<string name="kpm_install">Install</string>
|
||||
<string name="kpm_install_success">Load of kpm module successful</string>
|
||||
<string name="kpm_install_failed">Load of kpm module failed</string>
|
||||
<string name="kpm_args">Parameters</string>
|
||||
@@ -247,8 +223,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra will be a relatively independent branch of KSU in the future, but we still appreciate the official KernelSU and MKSU etc. for their contributions!</string>
|
||||
<string name="not_supported">Unsupported</string>
|
||||
<string name="supported">Supported</string>
|
||||
<string name="home_kpm_module">"Number of KPMs: %d "</string>
|
||||
<string name="kpm_invalid_file">Invalid KPM file</string>
|
||||
<string name="kernel_patched">Kernel not patched</string>
|
||||
<string name="kernel_not_enabled">Kernel not configured</string>
|
||||
<string name="custom_settings">Custom settings</string>
|
||||
@@ -256,19 +230,13 @@
|
||||
<string name="kpm_install_mode_load">Load</string>
|
||||
<string name="kpm_install_mode_embed">Embed</string>
|
||||
<string name="kpm_install_mode_description">Please select: %1\$s Module Installation Mode \n\nLoad: Temporarily load the module \nEmbedded: Permanently install into the system</string>
|
||||
<string name="log_failed_to_check_module_file">Failed to check module file existence</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Unable to check if module file exists</string>
|
||||
<string name="confirm_uninstall_title">Confirm uninstallation</string>
|
||||
<string name="confirm_uninstall_confirm">Uninstall</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancel</string>
|
||||
<string name="theme_color">Theme Color</string>
|
||||
<string name="invalid_file_type">Incorrect file type! Please select .kpm file.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Uninstall</string>
|
||||
<string name="confirm_uninstall_content">The following KPM will be uninstalled: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Disable kprobe hooks created by KernelSU, using inline hooks instead, which is similar to non-GKI kernel hooking method.</string>
|
||||
<string name="image_editor_title">Adjust background image</string>
|
||||
<string name="image_editor_hint">Use two fingers to zoom the image, and one finger to drag it to adjust the position</string>
|
||||
<string name="background_image_error">Could not load image</string>
|
||||
<string name="reprovision">Reprovision</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
@@ -305,10 +273,6 @@
|
||||
<string name="app_settings">Application Settings</string>
|
||||
<string name="tools">Tools</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Removals</string>
|
||||
<string name="apps_with_root">Applications with root privileges</string>
|
||||
<string name="apps_with_custom_profile">Applications with customized configurations</string>
|
||||
<string name="other_apps">Applications with unchanged defaults</string>
|
||||
<string name="no_apps_found">Application not found</string>
|
||||
<string name="selinux_enabled_toast">SELinux Enabled</string>
|
||||
<string name="selinux_disabled_toast">SELinux Disabled</string>
|
||||
@@ -316,8 +280,6 @@
|
||||
<string name="advanced_settings">Advanced Settings</string>
|
||||
<string name="appearance_settings">Customize the toolbar</string>
|
||||
<string name="back">Comeback</string>
|
||||
<string name="expand">Be in full swing</string>
|
||||
<string name="collapse">put away</string>
|
||||
<string name="susfs_enabled">SuSFS enabled</string>
|
||||
<string name="susfs_disabled">SuSFS disabled</string>
|
||||
<string name="background_set_success">Background set successfully</string>
|
||||
@@ -325,7 +287,6 @@
|
||||
<string name="icon_switch_title">Alternate icon</string>
|
||||
<string name="icon_switch_summary">Change the launcher icon to KernelSU\'s icon.</string>
|
||||
<string name="icon_switched">Icon switched</string>
|
||||
<string name="root_require_for_install">Requires root privileges</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Display KPM Function</string>
|
||||
<string name="show_kpm_info_summary">Display KPM information and Function in home and bottom bar (Need to reopen the app)</string>
|
||||
@@ -337,7 +298,6 @@
|
||||
<string name="use_webuix_eruda">Inject Eruda into WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Inject a debug console into WebUI X to make debugging easier. Requires web debugging to be on.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI setting</string>
|
||||
<string name="app_dpi_title">Applied DPI</string>
|
||||
<string name="app_dpi_summary">Adjust the screen display density for the current application only</string>
|
||||
<string name="dpi_size_small">Small </string>
|
||||
@@ -355,16 +315,6 @@
|
||||
<string name="language_follow_system">Follow System</string>
|
||||
<string name="language_changed">Language changed, restarting to apply changes</string>
|
||||
<string name="settings_card_dim">Card Darkness Adjustment</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="scroll_to_top_description">Scroll to top</string>
|
||||
<string name="scroll_to_bottom_description">Scroll to the bottom</string>
|
||||
<string name="authorized">authorized</string>
|
||||
<string name="unauthorized">unauthorized</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<string name="profile_umount_modules_disable">Disable custom uninstallation module</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">error code</string>
|
||||
<string name="check_log">Please check the log</string>
|
||||
@@ -372,4 +322,51 @@
|
||||
<string name="module_failed_count">%d Failed to install a new module</string>
|
||||
<string name="module_download_error">Module download failed</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -4,14 +4,11 @@
|
||||
<string name="home_not_installed">Não instalado</string>
|
||||
<string name="home_click_to_install">Clique para instalar</string>
|
||||
<string name="home_working">Em execução</string>
|
||||
<string name="home_working_version">Versão: %d</string>
|
||||
<string name="home_superuser_count">SuperUsuários: %d</string>
|
||||
<string name="home_module_count">Módulos: %d</string>
|
||||
<string name="home_working_version">Versão: %s</string>
|
||||
<string name="home_unsupported">Sem suporte</string>
|
||||
<string name="home_unsupported_reason">KernelSU suporta apenas kernels GKI agora</string>
|
||||
<string name="home_kernel">Kernel</string>
|
||||
<string name="home_manager_version">Versão do gerenciador</string>
|
||||
<string name="home_fingerprint">Impressão digital</string>
|
||||
<string name="home_selinux_status">Status do SELinux</string>
|
||||
<string name="selinux_status_disabled">Desativado</string>
|
||||
<string name="selinux_status_enforcing">Impondo</string>
|
||||
@@ -54,10 +51,6 @@
|
||||
<string name="profile_template">Modelo</string>
|
||||
<string name="profile_custom">Personalizado</string>
|
||||
<string name="profile_name">Nome do perfil</string>
|
||||
<string name="profile_namespace">Montar namespace</string>
|
||||
<string name="profile_namespace_inherited">Herdado</string>
|
||||
<string name="profile_namespace_global">Global</string>
|
||||
<string name="profile_namespace_individual">Individual</string>
|
||||
<string name="profile_groups">Grupos</string>
|
||||
<string name="profile_capabilities">Capacidades</string>
|
||||
<string name="profile_selinux_context">Contexto do SELinux</string>
|
||||
@@ -102,7 +95,6 @@
|
||||
<string name="settings_check_update">Verificar por atualização</string>
|
||||
<string name="settings_check_update_summary">Verifique automaticamente se há atualizações ao abrir o app</string>
|
||||
<string name="grant_root_failed">Falha ao conceder acesso root!</string>
|
||||
<string name="open">Abrir</string>
|
||||
<string name="enable_web_debugging">Ativar depuração do WebView</string>
|
||||
<string name="enable_web_debugging_summary">Pode ser usado para depurar o WebUI. Por favor, ative somente quando necessário.</string>
|
||||
<string name="select_file">Selecione um arquivo</string>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">Não instalado</string>
|
||||
<string name="home_click_to_install">Clique para instalar</string>
|
||||
<string name="home_working">Funcionando</string>
|
||||
<string name="home_working_version">Versão: %d</string>
|
||||
<string name="home_superuser_count">Super Usuário: %d</string>
|
||||
<string name="home_module_count">Módulos: %d</string>
|
||||
<string name="home_working_version">Versão: %s</string>
|
||||
<string name="home_unsupported">Sem suporte</string>
|
||||
<string name="home_unsupported_reason">KernelSU suporta apenas kernels GKI agora</string>
|
||||
<string name="home_kernel">Kernel</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">Versão SuSFS</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">Versão do aplicativo</string>
|
||||
<string name="home_fingerprint">Impressão digital</string>
|
||||
<string name="home_selinux_status">Status do SELinux</string>
|
||||
<string name="selinux_status_disabled">Desabilitado</string>
|
||||
<string name="selinux_status_enforcing">Impondo</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Ordenar (exceto primeiro)</string>
|
||||
<string name="module_sort_enabled_first">Ordenar (Habilitado primeiro)</string>
|
||||
<string name="uninstall">Desinstalar</string>
|
||||
<string name="restore">Restaurar</string>
|
||||
<string name="module_install">Instalar</string>
|
||||
<string name="install">Instalar</string>
|
||||
<string name="reboot">Reiniciar</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">Modelo</string>
|
||||
<string name="profile_custom">Personalizado</string>
|
||||
<string name="profile_name">Nome do perfil</string>
|
||||
<string name="profile_namespace">Montar namespace</string>
|
||||
<string name="profile_namespace_inherited">Herdado</string>
|
||||
<string name="profile_namespace_global">Global</string>
|
||||
<string name="profile_namespace_individual">Individual</string>
|
||||
<string name="profile_groups">Grupos</string>
|
||||
<string name="profile_capabilities">Capacidades</string>
|
||||
<string name="profile_selinux_context">contexto SELinux</string>
|
||||
<string name="profile_umount_modules">Desativar modulos</string>
|
||||
<string name="failed_to_update_app_profile">Falha ao atualizar o perfil do aplicativo para %s</string>
|
||||
<string name="require_kernel_version" formatted="false">A versão atual do KernelSU %d é muito baixa para o gerenciador funcionar corretamente. Atualize para a versão %d ou superior!</string>
|
||||
<string name="require_kernel_version" formatted="false">A versão atual do KernelSU %s é muito baixa para o gerenciador funcionar corretamente. Atualize para a versão %s ou superior!</string>
|
||||
<string name="settings_umount_modules_default">Módulos desativados por padrão</string>
|
||||
<string name="settings_umount_modules_default_summary">O valor padrão global para \"Módulos Umount\" em Perfis de Aplicativos. Se ativado, removerá todas as modificações de módulo do sistema para aplicativos que não possuem um Perfil definido.</string>
|
||||
<string name="settings_susfs_toggle">Desabilitar ganchos de \"Kprobe\"</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Verifique automaticamente se há atualizações ao abrir o app</string>
|
||||
<string name="grant_root_failed">Falha ao conceder acesso root!</string>
|
||||
<string name="action">Ações</string>
|
||||
<string name="open">Abrir</string>
|
||||
<string name="close">Fechar</string>
|
||||
<string name="enable_web_debugging">Ativar depuração do WebView</string>
|
||||
<string name="enable_web_debugging_summary">Pode ser usado para depurar o WebUI. Por favor, ative somente quando necessário.</string>
|
||||
@@ -136,9 +125,6 @@
|
||||
<string name="selected_lkm">LKM selecionado: %s</string>
|
||||
<string name="save_log">Salvar Registros</string>
|
||||
<string name="log_saved">Registros salvos</string>
|
||||
<string name="status_supported">Apoie-nos</string>
|
||||
<string name="status_not_supported">Não Suportado</string>
|
||||
<string name="status_unknown">Desconhecido</string>
|
||||
<string name="sus_su_mode">Modo SU SuSU:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">¿confirmar la instalación del módulo %1$s?</string>
|
||||
@@ -172,14 +158,11 @@
|
||||
<string name="settings_custom_background">Fundo personalizado do App</string>
|
||||
<string name="settings_custom_background_summary">Selecione uma imagem como plano de fundo</string>
|
||||
<string name="settings_card_alpha">Transparência da barra de navegação</string>
|
||||
<string name="settings_restore_default">Restaurar padrões</string>
|
||||
<string name="home_android_version">Android Version: </string>
|
||||
<string name="home_device_model">Modelo do aparelho</string>
|
||||
<string name="su_not_allowed">Conceder superusuário à %s não é permitido</string>
|
||||
<string name="settings_disable_su">Desativar compatibilidade com su</string>
|
||||
<string name="settings_disable_su_summary">Temporariamente desativar qualquer aplicativo de obter privilégios de superusuário através do comando Wait su (os processos raiz existentes não serão afetados).</string>
|
||||
<string name="using_mksu_manager">Você está usando o gerenciador do SukiSU Beta</string>
|
||||
<string name="module_install_multiple_confirm">Você tem certeza que deseja instalar os módulos %d selecionados?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Tem certeza que deseja instalar os seguintes módulos %1$d ? \n\n%2$s</string>
|
||||
<string name="more_settings">More settings</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -210,20 +193,14 @@
|
||||
<string name="color_pink">Rosa</string>
|
||||
<string name="color_gray">Cinza</string>
|
||||
<string name="color_yellow">Amarelo</string>
|
||||
<string name="flash_option">Opções do pincel</string>
|
||||
<string name="flash_option_tip">Selecione o arquivo a ser instalado</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Instalar o arquivo kernel AnyKernel3</string>
|
||||
<string name="root_required">Requer privilégios de superusuário</string>
|
||||
<string name="copy_failed">Falha ao copiar arquivo</string>
|
||||
<string name="reboot_complete_title">Esboço completo</string>
|
||||
<string name="reboot_complete_msg">Reiniciar imediatamente?</string>
|
||||
<string name="yes">Sim</string>
|
||||
<string name="no">Não</string>
|
||||
<string name="failed_reboot">Reinicialização falhou</string>
|
||||
<string name="batch_authorization">empoderar</string>
|
||||
<string name="batch_cancel_authorization">retirar</string>
|
||||
<string name="backup">Backup</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">Não há módulos do kernel instalados neste momento</string>
|
||||
<string name="kpm_version">Versão</string>
|
||||
@@ -231,7 +208,6 @@
|
||||
<string name="kpm_uninstall">Desinstalar</string>
|
||||
<string name="kpm_uninstall_success">Desinstalado com sucesso</string>
|
||||
<string name="kpm_uninstall_failed">Falha ao desinstalar</string>
|
||||
<string name="kpm_install">Instalar</string>
|
||||
<string name="kpm_install_success">Carregamento do módulo kpm com sucesso</string>
|
||||
<string name="kpm_install_failed">Falha ao carregar o módulo kpm</string>
|
||||
<string name="kpm_args">Parâmetros</string>
|
||||
@@ -245,8 +221,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra será uma ramificação relativamente independente da KSU no futuro, mas ainda apreciamos o KernelSU e o MKSU, etc. para suas contribuições!</string>
|
||||
<string name="not_supported">Sem suporte</string>
|
||||
<string name="supported">Apoie-nos</string>
|
||||
<string name="home_kpm_module">"Número de módulos KPM: %d "</string>
|
||||
<string name="kpm_invalid_file">Arquivo KPM inválido</string>
|
||||
<string name="kernel_patched">Kernel não corrigido</string>
|
||||
<string name="kernel_not_enabled">Kernel não configurado</string>
|
||||
<string name="custom_settings">Configurações personalizadas</string>
|
||||
@@ -254,19 +228,13 @@
|
||||
<string name="kpm_install_mode_load">Carga</string>
|
||||
<string name="kpm_install_mode_embed">Embutir</string>
|
||||
<string name="kpm_install_mode_description">Por favor seleccione: %1\$s Modo de instalación del Módulo \n\nCarga: Cargar temporalmente el módulo \nInsertar: Instalar permanentemente en el sistema</string>
|
||||
<string name="log_failed_to_check_module_file">Falha ao verificar a existência do arquivo do módulo</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Não foi possível verificar se o arquivo do módulo existe</string>
|
||||
<string name="confirm_uninstall_title">Confirmar Desinstalação</string>
|
||||
<string name="confirm_uninstall_confirm">Desinstalar</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancelar</string>
|
||||
<string name="theme_color">Cor do tema</string>
|
||||
<string name="invalid_file_type">Tipo de arquivo incorreto! Selecione o arquivo .kpm.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Desinstalar</string>
|
||||
<string name="confirm_uninstall_content">O seguinte KPM será desinstalado: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Desative os hooks kprobe criados pelo KernelSU, usando ganchos embutidos em vez disso, o que é semelhante ao método de gancho do kernel GKI.</string>
|
||||
<string name="image_editor_title">Ajustar imagem de fundo</string>
|
||||
<string name="image_editor_hint">Use dois dedos para ampliar a imagem e um dedo para arrastá-la para ajustar a posição</string>
|
||||
<string name="background_image_error">Não foi possível carregar a imagem</string>
|
||||
<string name="reprovision">Restituição</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
@@ -303,10 +271,6 @@
|
||||
<string name="app_settings">Configurações Do Aplicativo</string>
|
||||
<string name="tools">Ferramentas</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Remoções</string>
|
||||
<string name="apps_with_root">Aplicativos com privilégios de superusuário</string>
|
||||
<string name="apps_with_custom_profile">Aplicativos com configurações personalizadas</string>
|
||||
<string name="other_apps">Aplicações com padrões não alterados</string>
|
||||
<string name="no_apps_found">Aplicativo não encontrado</string>
|
||||
<string name="selinux_enabled_toast">SELinux habilitado</string>
|
||||
<string name="selinux_disabled_toast">SELinux Desativado</string>
|
||||
@@ -314,8 +278,6 @@
|
||||
<string name="advanced_settings">Configurações Avançadas</string>
|
||||
<string name="appearance_settings">Personaliza a barra de ferramentas.</string>
|
||||
<string name="back">Retorno</string>
|
||||
<string name="expand">Esteja em pleno balanço</string>
|
||||
<string name="collapse">jogou fora</string>
|
||||
<string name="susfs_enabled">SuSFS habilitado</string>
|
||||
<string name="susfs_disabled">SuSFS desativado</string>
|
||||
<string name="background_set_success">Fundo definido com sucesso</string>
|
||||
@@ -323,7 +285,6 @@
|
||||
<string name="icon_switch_title">Ícone alternativo</string>
|
||||
<string name="icon_switch_summary">Alterar o ícone do launcher para o ícone do KernelSU.</string>
|
||||
<string name="icon_switched">Ícone alterado</string>
|
||||
<string name="root_require_for_install">Requer privilégios de superusuário</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Exibir função KPM</string>
|
||||
<string name="show_kpm_info_summary">Oculta as informações e funções do KPM na barra inicial e inferior</string>
|
||||
@@ -335,7 +296,6 @@
|
||||
<string name="use_webuix_eruda">Injetar Eruda na WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Injetar um console de depuração na WebUI X para facilitar a depuração. Requer depuração da web para estar ligada.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">Configuração de DPI</string>
|
||||
<string name="app_dpi_title">DPI aplicado</string>
|
||||
<string name="app_dpi_summary">Ajustar a densidade de exibição da tela apenas para o aplicativo atual</string>
|
||||
<string name="dpi_size_small">Pequeno </string>
|
||||
@@ -353,16 +313,6 @@
|
||||
<string name="language_follow_system">Padrão do sistema</string>
|
||||
<string name="language_changed">Idioma alterado, reiniciando para aplicar as alterações</string>
|
||||
<string name="settings_card_dim">Ajuste da escuridão do cartão</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Mais votados</string>
|
||||
<string name="scroll_to_bottom">Parte Inferior</string>
|
||||
<string name="scroll_to_top_description">Rolar para o topo</string>
|
||||
<string name="scroll_to_bottom_description">Role até o final</string>
|
||||
<string name="authorized">autorizado</string>
|
||||
<string name="unauthorized">Não autorizado</string>
|
||||
<string name="selected">Selecionado</string>
|
||||
<string name="select">opção</string>
|
||||
<string name="profile_umount_modules_disable">Desativar o módulo personalizado de desinstalação</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">Código de erro</string>
|
||||
<string name="check_log">Por favor, verifique o log</string>
|
||||
@@ -370,4 +320,51 @@
|
||||
<string name="module_failed_count">%d Falha ao instalar um novo módulo</string>
|
||||
<string name="module_download_error">Falha ao baixar módulo</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Mais votados</string>
|
||||
<string name="scroll_to_bottom">Parte Inferior</string>
|
||||
<string name="selected">Selecionado</string>
|
||||
<string name="select">opção</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">Nu este instalat</string>
|
||||
<string name="home_click_to_install">Click pentru a instala</string>
|
||||
<string name="home_working">Funcționează</string>
|
||||
<string name="home_working_version">Versiune: %d</string>
|
||||
<string name="home_superuser_count">Super-utilizatori: %d</string>
|
||||
<string name="home_module_count">Module: %d</string>
|
||||
<string name="home_working_version">Versiune: %s</string>
|
||||
<string name="home_unsupported">Necompatibil</string>
|
||||
<string name="home_unsupported_reason">KernelSU suportă doar nuclee GKI acum</string>
|
||||
<string name="home_kernel">Nucleu</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS Version</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">Versiune Manager</string>
|
||||
<string name="home_fingerprint">Amprentă</string>
|
||||
<string name="home_selinux_status">Stare SELinux</string>
|
||||
<string name="selinux_status_disabled">Dezactivat</string>
|
||||
<string name="selinux_status_enforcing">Obligatoriu</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Sort (Action first)</string>
|
||||
<string name="module_sort_enabled_first">Sort (Enabled first)</string>
|
||||
<string name="uninstall">Dezinstalează</string>
|
||||
<string name="restore">Restore</string>
|
||||
<string name="module_install">Instalează</string>
|
||||
<string name="install">Instalează</string>
|
||||
<string name="reboot">Repornește</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">Șablon</string>
|
||||
<string name="profile_custom">Personalizat</string>
|
||||
<string name="profile_name">Nume profil</string>
|
||||
<string name="profile_namespace">Montare spațiu de nume</string>
|
||||
<string name="profile_namespace_inherited">Moștenit</string>
|
||||
<string name="profile_namespace_global">Global</string>
|
||||
<string name="profile_namespace_individual">Individual</string>
|
||||
<string name="profile_groups">Grupuri</string>
|
||||
<string name="profile_capabilities">Capabilități</string>
|
||||
<string name="profile_selinux_context">Context SELinux</string>
|
||||
<string name="profile_umount_modules">Module u-montate</string>
|
||||
<string name="failed_to_update_app_profile">Nu s-a putut actualiza profilul aplicației pentru %s</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %d is too low for the manager to work properly. Please upgrade to version %d or higher!</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %s is too low for the manager to work properly. Please upgrade to version %s or higher!</string>
|
||||
<string name="settings_umount_modules_default">U-montează modulele în mod implicit</string>
|
||||
<string name="settings_umount_modules_default_summary">Valoarea implicită globală pentru „Module u-montate” în Profilurile aplicațiilor. Dacă este activat, va elimina toate modificările modulelor aduse sistemului pentru aplicațiile care nu au un profil setat.</string>
|
||||
<string name="settings_susfs_toggle">Disable kprobe hooks</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Se verifică automat actualizările când deschizi aplicația</string>
|
||||
<string name="grant_root_failed">Nu s-a acordat acces root!</string>
|
||||
<string name="action">Action</string>
|
||||
<string name="open">Deschide</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="enable_web_debugging">Activează depanarea WebView</string>
|
||||
<string name="enable_web_debugging_summary">Poate fi folosit pentru a depana WebUI, activează numai când este necesar.</string>
|
||||
@@ -138,9 +127,6 @@
|
||||
<string name="selected_lkm">Lkm selectat: %s</string>
|
||||
<string name="save_log">Salvează Jurnale</string>
|
||||
<string name="log_saved">Logs saved</string>
|
||||
<string name="status_supported">Supported</string>
|
||||
<string name="status_not_supported">Not Supported</string>
|
||||
<string name="status_unknown">Unknown</string>
|
||||
<string name="sus_su_mode">SuS SU mode:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">confirm install module %1$s?</string>
|
||||
@@ -174,14 +160,11 @@
|
||||
<string name="settings_custom_background">Custom App Background</string>
|
||||
<string name="settings_custom_background_summary">Select an image as background</string>
|
||||
<string name="settings_card_alpha">Navigation bar transparency</string>
|
||||
<string name="settings_restore_default">Restore default</string>
|
||||
<string name="home_android_version">Android version</string>
|
||||
<string name="home_device_model">Device model</string>
|
||||
<string name="su_not_allowed">Granting superuser to %s is not allowed</string>
|
||||
<string name="settings_disable_su">Disable su compatibility</string>
|
||||
<string name="settings_disable_su_summary">Temporarily disable any applications from obtaining root privileges via the su command (existing root processes will not be affected).</string>
|
||||
<string name="using_mksu_manager">You are using the SukiSU Beta manager</string>
|
||||
<string name="module_install_multiple_confirm">Are you sure you want to install the selected %d modules?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Sure you want to install the following %1$d modules? \n\n%2$s</string>
|
||||
<string name="more_settings">More settings</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -212,20 +195,14 @@
|
||||
<string name="color_pink">Pink</string>
|
||||
<string name="color_gray">Gray</string>
|
||||
<string name="color_yellow">Yellow</string>
|
||||
<string name="flash_option">Brush Options</string>
|
||||
<string name="flash_option_tip">Select the file to be flashed</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash AnyKernel3 kernel file</string>
|
||||
<string name="root_required">Requires root privileges</string>
|
||||
<string name="copy_failed">File Copy Failure</string>
|
||||
<string name="reboot_complete_title">Scrubbing complete</string>
|
||||
<string name="reboot_complete_msg">Whether to reboot immediately?</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="failed_reboot">Reboot Failed</string>
|
||||
<string name="batch_authorization">empower</string>
|
||||
<string name="batch_cancel_authorization">withdraw</string>
|
||||
<string name="backup">Backup</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">No installed kernel modules at this time</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
@@ -233,7 +210,6 @@
|
||||
<string name="kpm_uninstall">Uninstall</string>
|
||||
<string name="kpm_uninstall_success">Uninstalled successfully</string>
|
||||
<string name="kpm_uninstall_failed">Failed to uninstall</string>
|
||||
<string name="kpm_install">Install</string>
|
||||
<string name="kpm_install_success">Load of kpm module successful</string>
|
||||
<string name="kpm_install_failed">Load of kpm module failed</string>
|
||||
<string name="kpm_args">Parameters</string>
|
||||
@@ -247,8 +223,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra will be a relatively independent branch of KSU in the future, but we still appreciate the official KernelSU and MKSU etc. for their contributions!</string>
|
||||
<string name="not_supported">Unsupported</string>
|
||||
<string name="supported">Supported</string>
|
||||
<string name="home_kpm_module">"Number of KPMs: %d "</string>
|
||||
<string name="kpm_invalid_file">Invalid KPM file</string>
|
||||
<string name="kernel_patched">Kernel not patched</string>
|
||||
<string name="kernel_not_enabled">Kernel not configured</string>
|
||||
<string name="custom_settings">Custom settings</string>
|
||||
@@ -256,19 +230,13 @@
|
||||
<string name="kpm_install_mode_load">Load</string>
|
||||
<string name="kpm_install_mode_embed">Embed</string>
|
||||
<string name="kpm_install_mode_description">Please select: %1\$s Module Installation Mode \n\nLoad: Temporarily load the module \nEmbedded: Permanently install into the system</string>
|
||||
<string name="log_failed_to_check_module_file">Failed to check module file existence</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Unable to check if module file exists</string>
|
||||
<string name="confirm_uninstall_title">Confirm uninstallation</string>
|
||||
<string name="confirm_uninstall_confirm">Uninstall</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancel</string>
|
||||
<string name="theme_color">Theme Color</string>
|
||||
<string name="invalid_file_type">Incorrect file type! Please select .kpm file.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Uninstall</string>
|
||||
<string name="confirm_uninstall_content">The following KPM will be uninstalled: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Disable kprobe hooks created by KernelSU, using inline hooks instead, which is similar to non-GKI kernel hooking method.</string>
|
||||
<string name="image_editor_title">Adjust background image</string>
|
||||
<string name="image_editor_hint">Use two fingers to zoom the image, and one finger to drag it to adjust the position</string>
|
||||
<string name="background_image_error">Could not load image</string>
|
||||
<string name="reprovision">Reprovision</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
@@ -305,10 +273,6 @@
|
||||
<string name="app_settings">Application Settings</string>
|
||||
<string name="tools">Tools</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Removals</string>
|
||||
<string name="apps_with_root">Applications with root privileges</string>
|
||||
<string name="apps_with_custom_profile">Applications with customized configurations</string>
|
||||
<string name="other_apps">Applications with unchanged defaults</string>
|
||||
<string name="no_apps_found">Application not found</string>
|
||||
<string name="selinux_enabled_toast">SELinux Enabled</string>
|
||||
<string name="selinux_disabled_toast">SELinux Disabled</string>
|
||||
@@ -316,8 +280,6 @@
|
||||
<string name="advanced_settings">Advanced Settings</string>
|
||||
<string name="appearance_settings">Customize the toolbar</string>
|
||||
<string name="back">Comeback</string>
|
||||
<string name="expand">Be in full swing</string>
|
||||
<string name="collapse">put away</string>
|
||||
<string name="susfs_enabled">SuSFS enabled</string>
|
||||
<string name="susfs_disabled">SuSFS disabled</string>
|
||||
<string name="background_set_success">Background set successfully</string>
|
||||
@@ -325,7 +287,6 @@
|
||||
<string name="icon_switch_title">Alternate icon</string>
|
||||
<string name="icon_switch_summary">Change the launcher icon to KernelSU\'s icon.</string>
|
||||
<string name="icon_switched">Icon switched</string>
|
||||
<string name="root_require_for_install">Requires root privileges</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Display KPM Function</string>
|
||||
<string name="show_kpm_info_summary">Display KPM information and Function in home and bottom bar (Need to reopen the app)</string>
|
||||
@@ -337,7 +298,6 @@
|
||||
<string name="use_webuix_eruda">Inject Eruda into WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Inject a debug console into WebUI X to make debugging easier. Requires web debugging to be on.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI setting</string>
|
||||
<string name="app_dpi_title">Applied DPI</string>
|
||||
<string name="app_dpi_summary">Adjust the screen display density for the current application only</string>
|
||||
<string name="dpi_size_small">Small </string>
|
||||
@@ -355,16 +315,6 @@
|
||||
<string name="language_follow_system">Follow System</string>
|
||||
<string name="language_changed">Language changed, restarting to apply changes</string>
|
||||
<string name="settings_card_dim">Card Darkness Adjustment</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="scroll_to_top_description">Scroll to top</string>
|
||||
<string name="scroll_to_bottom_description">Scroll to the bottom</string>
|
||||
<string name="authorized">authorized</string>
|
||||
<string name="unauthorized">unauthorized</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<string name="profile_umount_modules_disable">Disable custom uninstallation module</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">error code</string>
|
||||
<string name="check_log">Please check the log</string>
|
||||
@@ -372,4 +322,51 @@
|
||||
<string name="module_failed_count">%d Failed to install a new module</string>
|
||||
<string name="module_download_error">Module download failed</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">Не установлен</string>
|
||||
<string name="home_click_to_install">Нажмите, чтобы установить</string>
|
||||
<string name="home_working">Работает</string>
|
||||
<string name="home_working_version">Версия: %d</string>
|
||||
<string name="home_superuser_count">Рут-доступ: %d</string>
|
||||
<string name="home_module_count">Модули: %d</string>
|
||||
<string name="home_working_version">Версия: %s</string>
|
||||
<string name="home_unsupported">Не поддерживается</string>
|
||||
<string name="home_unsupported_reason">Драйвера KernelSU не найдены в ядре, не то ядро?</string>
|
||||
<string name="home_kernel">Ядро</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">Статус SuSFS</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">Версия менеджера</string>
|
||||
<string name="home_fingerprint">Подпись</string>
|
||||
<string name="home_selinux_status">Состояние SELinux</string>
|
||||
<string name="selinux_status_disabled">Выключен</string>
|
||||
<string name="selinux_status_enforcing">Принудительный</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Сортировать (Сначала с действием)</string>
|
||||
<string name="module_sort_enabled_first">Сортировать (Сначала включённые)</string>
|
||||
<string name="uninstall">Удалить</string>
|
||||
<string name="restore">Восстановить</string>
|
||||
<string name="module_install">Установить</string>
|
||||
<string name="install">Установка</string>
|
||||
<string name="reboot">Перезагрузить</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">Шаблон</string>
|
||||
<string name="profile_custom">Пользовательский</string>
|
||||
<string name="profile_name">Название профиля</string>
|
||||
<string name="profile_namespace">Монтировать пространство имен</string>
|
||||
<string name="profile_namespace_inherited">Унаследованный</string>
|
||||
<string name="profile_namespace_global">Глобальный</string>
|
||||
<string name="profile_namespace_individual">Индивидуальный</string>
|
||||
<string name="profile_groups">Группы</string>
|
||||
<string name="profile_capabilities">Возможности</string>
|
||||
<string name="profile_selinux_context">Контекст SELinux</string>
|
||||
<string name="profile_umount_modules">Размонтировать модули</string>
|
||||
<string name="failed_to_update_app_profile">Не удалось обновить профиль приложения для %s</string>
|
||||
<string name="require_kernel_version" formatted="false">Текущая версия KernelSU %d слишком низкая для правильной работы менеджера. Пожалуйста, обновите до версии %d или выше!</string>
|
||||
<string name="require_kernel_version" formatted="false">Текущая версия KernelSU %s слишком низкая для правильной работы менеджера. Пожалуйста, обновите до версии %s или выше!</string>
|
||||
<string name="settings_umount_modules_default">Размонтировать модули по умолчанию</string>
|
||||
<string name="settings_umount_modules_default_summary">Глобальное значение по умолчанию для \"Размонтировать модули\" в профиле приложения. При включении будут удалены все модификации модулей в системе для приложений, у которых не задан профиль</string>
|
||||
<string name="settings_susfs_toggle">Отключить kprobe хуки</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Автоматически проверять обновления при открытии приложения</string>
|
||||
<string name="grant_root_failed">Не удалось выдать root!</string>
|
||||
<string name="action">Действие</string>
|
||||
<string name="open">Открыть</string>
|
||||
<string name="close">Закрыть</string>
|
||||
<string name="enable_web_debugging">Включить отладку WebView</string>
|
||||
<string name="enable_web_debugging_summary">Используется для отладки WebUI. Пожалуйста, включайте только при необходимости.</string>
|
||||
@@ -124,6 +113,7 @@
|
||||
\n Продолжить?</string>
|
||||
<string name="install_next">Далее</string>
|
||||
<string name="select_file_tip">Образ раздела %1$s рекомендуется</string>
|
||||
<string name="select_file_tip_vendor">(нестабильный)</string>
|
||||
<string name="select_kmi">Выбрать KMI</string>
|
||||
<string name="settings_uninstall">Удалить</string>
|
||||
<string name="settings_uninstall_temporary">Удалить на время</string>
|
||||
@@ -138,9 +128,6 @@
|
||||
<string name="selected_lkm">Выбран LKM: %s</string>
|
||||
<string name="save_log">Сохранить логи</string>
|
||||
<string name="log_saved">Логи сохранены</string>
|
||||
<string name="status_supported">Поддерживается</string>
|
||||
<string name="status_not_supported">Не поддерживается</string>
|
||||
<string name="status_unknown">Неизвестно</string>
|
||||
<string name="sus_su_mode">SuS SU режим:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">подтвердите установку модуля %1$s?</string>
|
||||
@@ -174,14 +161,11 @@
|
||||
<string name="settings_custom_background">Пользовательский фон приложения</string>
|
||||
<string name="settings_custom_background_summary">Выберите изображение в качестве фона</string>
|
||||
<string name="settings_card_alpha">Прозрачность панели навигации</string>
|
||||
<string name="settings_restore_default">По умолчанию</string>
|
||||
<string name="home_android_version">Версия Android</string>
|
||||
<string name="home_device_model">Модель устройства</string>
|
||||
<string name="su_not_allowed">Предоставление рут-доступа %s запрещено</string>
|
||||
<string name="settings_disable_su">Отключить su совместимость</string>
|
||||
<string name="settings_disable_su_summary">Временно отключить все приложения от получения рут-доступа через su команду (запущенные процессы с рут-доступом не будут затронуты).</string>
|
||||
<string name="using_mksu_manager">Вы используете менеджер SukiSU бета-версии</string>
|
||||
<string name="module_install_multiple_confirm">Вы уверены, что хотите установить выбранные модули %d?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Уверены, что хотите установить следующие %1$d модули? \n\n%2$s</string>
|
||||
<string name="more_settings">Доп. настройки</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -197,6 +181,8 @@
|
||||
<string name="hide_susfs_status_summary">Скрывать информацию о статусе SuSFS на главной странице</string>
|
||||
<string name="hide_link_card">Скрыть карточки со ссылками</string>
|
||||
<string name="hide_link_card_summary">Скрывать карточки со ссылками на главной странице</string>
|
||||
<string name="hide_tag_card">Скрыть строки модуля</string>
|
||||
<string name="hide_tag_card_summary">Скрывать имя пакета и размер в карточке модуля</string>
|
||||
<string name="theme_mode">Тема</string>
|
||||
<string name="theme_follow_system">Как в системе</string>
|
||||
<string name="theme_light">Светлая</string>
|
||||
@@ -212,20 +198,14 @@
|
||||
<string name="color_pink">Розовый</string>
|
||||
<string name="color_gray">Серый</string>
|
||||
<string name="color_yellow">Желтый</string>
|
||||
<string name="flash_option">Параметры прошивки</string>
|
||||
<string name="flash_option_tip">Выберите файл для прошивки</string>
|
||||
<string name="horizon_kernel">Установка AnyKernel3</string>
|
||||
<string name="horizon_kernel_summary">Прошить файл ядра AnyKernel3</string>
|
||||
<string name="root_required">Требуется root-права</string>
|
||||
<string name="copy_failed">Ошибка копирования файла</string>
|
||||
<string name="reboot_complete_title">Скрабровка завершена</string>
|
||||
<string name="reboot_complete_msg">Будет ли перезагрузка немедленно?</string>
|
||||
<string name="yes">Да</string>
|
||||
<string name="no">Нет</string>
|
||||
<string name="failed_reboot">Не удалось перезагрузиться</string>
|
||||
<string name="batch_authorization">расширить власть</string>
|
||||
<string name="batch_cancel_authorization">расход</string>
|
||||
<string name="backup">Резервное копирование</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">На данный момент нет установленных модулей ядра</string>
|
||||
<string name="kpm_version">Версия</string>
|
||||
@@ -233,7 +213,6 @@
|
||||
<string name="kpm_uninstall">Удалить</string>
|
||||
<string name="kpm_uninstall_success">Удаление завершено</string>
|
||||
<string name="kpm_uninstall_failed">Не удалось удалить</string>
|
||||
<string name="kpm_install">Установить</string>
|
||||
<string name="kpm_install_success">KPM модуль успешно загружен</string>
|
||||
<string name="kpm_install_failed">Ошибка загрузки KPM модуля</string>
|
||||
<string name="kpm_args">Параметры</string>
|
||||
@@ -247,8 +226,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">В будущем SukiSU Ultra будет относительно независимым ответвлением KSU, но мы по-прежнему ценим официальный KernelSU и MKSU и т.д. за их вклад!</string>
|
||||
<string name="not_supported">Не поддерживается</string>
|
||||
<string name="supported">Поддерживается</string>
|
||||
<string name="home_kpm_module">"KPM-модули: %d "</string>
|
||||
<string name="kpm_invalid_file">Недопустимый файл KPM</string>
|
||||
<string name="kernel_patched">Ядро не изменено</string>
|
||||
<string name="kernel_not_enabled">Ядро не настроено</string>
|
||||
<string name="custom_settings">Персонализация</string>
|
||||
@@ -256,19 +233,13 @@
|
||||
<string name="kpm_install_mode_load">Загрузить</string>
|
||||
<string name="kpm_install_mode_embed">Код для вставки</string>
|
||||
<string name="kpm_install_mode_description">Пожалуйста, выберите %1\$s режим установки модуля \n\nЗагрузить: Временно загрузить модуль \nВстроенный: Окончательно установить в систему</string>
|
||||
<string name="log_failed_to_check_module_file">Не удалось проверить наличие файла модуля</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Не удалось проверить наличие файла модуля</string>
|
||||
<string name="confirm_uninstall_title">Подтверждение удаления</string>
|
||||
<string name="confirm_uninstall_confirm">Удалить</string>
|
||||
<string name="confirm_uninstall_dismiss">Отмена</string>
|
||||
<string name="theme_color">Цвет темы</string>
|
||||
<string name="invalid_file_type">Неверный тип файла! Пожалуйста, выберите .kpm файл.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Удалить</string>
|
||||
<string name="confirm_uninstall_content">Следующие KPM будут удалены: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Отключите хуки kprobe, созданные KernelSU, используя встроенные хуки, которые похожи на метод расширения ядра вне GKI.</string>
|
||||
<string name="image_editor_title">Настроить фоновое изображение</string>
|
||||
<string name="image_editor_hint">Используйте два пальца для увеличения изображения, и один палец для изменения положения</string>
|
||||
<string name="background_image_error">Не удалось загрузить изображение</string>
|
||||
<string name="reprovision">Реализация</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Мигание ядра</string>
|
||||
@@ -305,10 +276,6 @@
|
||||
<string name="app_settings">Настройки приложения</string>
|
||||
<string name="tools">Инструменты</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Удаление</string>
|
||||
<string name="apps_with_root">Приложения с привилегиями root</string>
|
||||
<string name="apps_with_custom_profile">Приложения с настроенными конфигурациями</string>
|
||||
<string name="other_apps">Приложения со значениями по умолчанию</string>
|
||||
<string name="no_apps_found">Приложение не найдено</string>
|
||||
<string name="selinux_enabled_toast">SELinux включен</string>
|
||||
<string name="selinux_disabled_toast">SELinux отключен</string>
|
||||
@@ -316,8 +283,6 @@
|
||||
<string name="advanced_settings">Расширенные</string>
|
||||
<string name="appearance_settings">Внешний вид</string>
|
||||
<string name="back">Возвращение</string>
|
||||
<string name="expand">Будьте в полном шаге</string>
|
||||
<string name="collapse">Свернуть</string>
|
||||
<string name="susfs_enabled">SuSFS включен</string>
|
||||
<string name="susfs_disabled">SuSFS выключен</string>
|
||||
<string name="background_set_success">Фон успешно установлен</string>
|
||||
@@ -325,7 +290,6 @@
|
||||
<string name="icon_switch_title">Альт. иконка</string>
|
||||
<string name="icon_switch_summary">Поменять иконку приложения на иконку KernelSU</string>
|
||||
<string name="icon_switched">Иконка поменяна</string>
|
||||
<string name="root_require_for_install">Требуется root-права</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Скрыть статус KPM</string>
|
||||
<string name="show_kpm_info_summary">Скрывать информацию и функции KPM на домашней странице и панели навигации</string>
|
||||
@@ -337,7 +301,6 @@
|
||||
<string name="use_webuix_eruda">Вставить Eruda в WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Вставьте консоль отладки в WebUI X для упрощения отладки. Для этого требуется включение веб-отладки.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">Настройка DPI</string>
|
||||
<string name="app_dpi_title">Изменить DPI</string>
|
||||
<string name="app_dpi_summary">Регулировка плотности экрана только для текущего приложения</string>
|
||||
<string name="dpi_size_small">маленький</string>
|
||||
@@ -355,16 +318,6 @@
|
||||
<string name="language_follow_system">Как в системе</string>
|
||||
<string name="language_changed">Язык изменён, перезапуск для применения изменений</string>
|
||||
<string name="settings_card_dim">Затемнение карточек</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Лучшие</string>
|
||||
<string name="scroll_to_bottom">Снизу</string>
|
||||
<string name="scroll_to_top_description">Прокрутить к началу</string>
|
||||
<string name="scroll_to_bottom_description">Прокрутить в конец страницы</string>
|
||||
<string name="authorized">авторизован</string>
|
||||
<string name="unauthorized">неавторизован</string>
|
||||
<string name="selected">Выбранные</string>
|
||||
<string name="select">опция</string>
|
||||
<string name="profile_umount_modules_disable">Отключить пользовательский модуль удаления</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">код ошибки</string>
|
||||
<string name="check_log">Пожалуйста, проверьте журнал</string>
|
||||
@@ -372,4 +325,222 @@
|
||||
<string name="module_failed_count">%d не удалось установить новый модуль</string>
|
||||
<string name="module_download_error">Ошибка загрузки модуля</string>
|
||||
<string name="kernel_flashing">Прошить ядро</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">Все</string>
|
||||
<string name="category_root_apps">Рут-доступ</string>
|
||||
<string name="category_custom_apps">Пользовательские</string>
|
||||
<string name="category_default_apps">Стандартные</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Название (по возрастанию)</string>
|
||||
<string name="sort_name_desc">Название (по убыванию)</string>
|
||||
<string name="sort_install_time_new">Время установки (новые)</string>
|
||||
<string name="sort_install_time_old">Время установки (старые)</string>
|
||||
<string name="sort_size_desc">Размер (по убыванию)</string>
|
||||
<string name="sort_size_asc">Размер (по возрастанию)</string>
|
||||
<string name="sort_usage_freq">Частота использования</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">В этой категории нет приложений</string>
|
||||
<!-- 标签相关 -->
|
||||
<string name="deny_authorization">Доступ отклонён</string>
|
||||
<string name="grant_authorization">Доступ выдан</string>
|
||||
<string name="unmount_modules">Размонтирование модулей</string>
|
||||
<string name="disable_unmount">Отключить монтирование модуля</string>
|
||||
<string name="expand_menu">Развернуть</string>
|
||||
<string name="collapse_menu">Свернуть</string>
|
||||
<string name="scroll_to_top">Наверх</string>
|
||||
<string name="scroll_to_bottom">Вниз</string>
|
||||
<string name="selected">Выбранные</string>
|
||||
<string name="select">опция</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Настройки списка</string>
|
||||
<string name="sort_options">Сортировка</string>
|
||||
<string name="app_categories">Выбор типа приложения</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<string name="susfs_config_title">Конфигурация SuSFS</string>
|
||||
<string name="susfs_config_description">Описание конфигурации</string>
|
||||
<string name="susfs_config_description_text">Эта функция позволяет вам настраивать переменную uname для SuSFS. Впишите значение и нажмите \"Применить\" для изменения.</string>
|
||||
<string name="susfs_uname_label">Значение uname</string>
|
||||
<string name="susfs_uname_placeholder">Пожалуйста, введите пользовательское значение uname</string>
|
||||
<string name="susfs_build_time_label">Подмена времени сборки</string>
|
||||
<string name="susfs_build_time_placeholder">Пожалуйста, введите значение для подмены времени сборки</string>
|
||||
<string name="susfs_current_value">Текущее значение: %s</string>
|
||||
<string name="susfs_current_build_time">Текущее время сборки: %s</string>
|
||||
<string name="susfs_reset_to_default">Значение по умолчанию</string>
|
||||
<string name="susfs_apply">Применить</string>
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<string name="susfs_reset_confirm_title">Подтвердить сброс</string>
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<string name="susfs_binary_not_found">Не удалось найти файл ksu_susfs</string>
|
||||
<string name="susfs_command_failed">Выполнение команды SuSFS не удалось</string>
|
||||
<string name="susfs_command_error">Ошибка выполнения команды SuSFS: %s</string>
|
||||
<string name="susfs_uname_set_success" formatted="false">Значение uname для SuSFS установлено успешно: %s</string>
|
||||
<!-- SuSFS Settings Item -->
|
||||
<string name="susfs_config_setting_title">Конфигурация SuSFS</string>
|
||||
<!-- 开机自启动相关 -->
|
||||
<string name="susfs_autostart_title">Автозапуск</string>
|
||||
<string name="susfs_autostart_description">Автоматически применять все конфигурации не по умолчанию при перезагрузке</string>
|
||||
<string name="susfs_autostart_requirement">Для включения необходимо добавить конфигурацию</string>
|
||||
<string name="susfs_autostart_enable_failed">Не удалось включить автозапуск</string>
|
||||
<string name="susfs_autostart_disable_failed">Не удалось отключить автозапуск</string>
|
||||
<string name="susfs_autostart_error">Ошибка автозапуска конфигурации: %s</string>
|
||||
<string name="susfs_no_config_to_autostart">Нет доступных конфигураций для автозапуска</string>
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<string name="susfs_tab_basic_settings">Базовые настройки</string>
|
||||
<string name="susfs_tab_sus_paths">SUS пути</string>
|
||||
<string name="susfs_tab_sus_mounts">SUS монтирование</string>
|
||||
<string name="susfs_tab_try_umount">Попробовать размонтировать</string>
|
||||
<string name="susfs_tab_path_settings">Настройки пути</string>
|
||||
<string name="susfs_tab_enabled_features">Статус включённых функций</string>
|
||||
<!-- SuSFS Path Management -->
|
||||
<string name="susfs_add_sus_path">Добавить SUS путь</string>
|
||||
<string name="susfs_add_sus_mount">Добавить SUS монтирование</string>
|
||||
<string name="susfs_add_try_umount">Добавить попробовать размонтировать</string>
|
||||
<string name="susfs_sus_path_added_success">Путь SUS успешно добавлен</string>
|
||||
<string name="susfs_path_not_found_error">Ошибка пути</string>
|
||||
<string name="susfs_path_label">Путь</string>
|
||||
<string name="susfs_mount_path_label">Путь монтирования</string>
|
||||
<string name="susfs_path_placeholder">например: /system/addon.d</string>
|
||||
<string name="susfs_no_paths_configured">SUS пути не настроены</string>
|
||||
<string name="susfs_no_mounts_configured">SUS монтирование не настроено</string>
|
||||
<string name="susfs_no_umounts_configured">Попытка размонтировать не настроена</string>
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<string name="susfs_umount_mode_label">Режим размонтирования</string>
|
||||
<string name="susfs_umount_mode_normal">Обычное размонтирование (0)</string>
|
||||
<string name="susfs_umount_mode_detach">Размонтирование отсоединением (1)</string>
|
||||
<string name="susfs_umount_mode_normal_short">Нормальный</string>
|
||||
<string name="susfs_umount_mode_detach_short">Отсоединить</string>
|
||||
<string name="susfs_umount_mode_display">Режим: %1$s (%2$s)</string>
|
||||
<string name="susfs_try_umount_added_success">Попытка размонтировать путь успешно добавлена: %s</string>
|
||||
<string name="susfs_try_umount_added_saved">Попытка размонтировать путь успешно сохранена: %s</string>
|
||||
<!-- SuSFS Run Umount -->
|
||||
<string name="susfs_run_umount_confirm_title">Подтверждение запуска попробовать размонтировать</string>
|
||||
<string name="susfs_run_umount_confirm_message">Это немедленно выполнит все настроенные операции размонтирования. Вы уверены, что хотите продолжить?</string>
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<string name="susfs_reset_paths_title">Сбросить SUS пути</string>
|
||||
<string name="susfs_reset_paths_message">Это очистит все конфигурации пути SUS. Вы уверены, что хотите продолжить?</string>
|
||||
<string name="susfs_reset_mounts_title">Сброс SUS монтирования</string>
|
||||
<string name="susfs_reset_mounts_message">Это очистит все конфигурации SUS монтирования. Вы уверены, что хотите продолжить?</string>
|
||||
<string name="susfs_reset_umounts_title">Сбросить Umount</string>
|
||||
<string name="susfs_reset_umounts_message">Это очистит все конфигурации размонтирования. Вы уверены, что хотите продолжить?</string>
|
||||
<string name="susfs_reset_path_title">Сбросить настройки пути</string>
|
||||
<!-- SuSFS Path Settings -->
|
||||
<string name="susfs_android_data_path_label">Путь к данным Android</string>
|
||||
<string name="susfs_sdcard_path_label">Путь к SD-карте</string>
|
||||
<string name="susfs_set_android_data_path">Задать путь к данным Android</string>
|
||||
<string name="susfs_set_sdcard_path">Задать путь к SD-карте</string>
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<string name="susfs_enabled_features_description">Показывать текущее состояние функций SuSFS</string>
|
||||
<string name="susfs_no_features_found">Информация о состоянии объектов не найдена</string>
|
||||
<string name="susfs_feature_enabled">Включено</string>
|
||||
<string name="susfs_feature_disabled">Выключено</string>
|
||||
<!-- Feature Labels -->
|
||||
<string name="sus_path_feature_label">Поддержка SUS пути</string>
|
||||
<string name="sus_mount_feature_label">Поддержка SUS монтирования</string>
|
||||
<string name="try_umount_feature_label">Поддержка размонтирования</string>
|
||||
<string name="spoof_uname_feature_label">Поддержка подмены uname</string>
|
||||
<string name="spoof_cmdline_feature_label">Подмена Cmdline/Bootconfig</string>
|
||||
<string name="open_redirect_feature_label">Поддержка Open Redirect</string>
|
||||
<string name="enable_log_feature_label">Поддержка логов</string>
|
||||
<string name="auto_default_mount_feature_label">Автомонтирование по умолчанию</string>
|
||||
<string name="auto_bind_mount_feature_label">Автоматическое бинд монтирование</string>
|
||||
<string name="auto_try_umount_bind_feature_label">Автоматически попробовать размонтировать привязать монтировать</string>
|
||||
<string name="hide_symbols_feature_label">Скрытие KSU SUSFS Symbols</string>
|
||||
<string name="magic_mount_feature_label">Поддержка Magic Mount</string>
|
||||
<string name="sus_kstat_feature_label">Поддержка SUS Kstat</string>
|
||||
<string name="sus_su_feature_label">Функция переключения режима SUS SU</string>
|
||||
<!-- 可切换状态 -->
|
||||
<string name="susfs_feature_configurable">Настраиваемые функции SuSFS</string>
|
||||
<string name="susfs_enable_log_label">SuSFS включить лог</string>
|
||||
<string name="susfs_log_config_description">Включить или отключить логирование для SuSFS</string>
|
||||
<string name="susfs_log_config_title">SuSFS настройка логирования</string>
|
||||
<string name="susfs_log_enabled">Включить логирование SuSFS</string>
|
||||
<string name="susfs_log_disabled">Выключить логирование SuSFS</string>
|
||||
<string name="module_update_json">JSON обновления</string>
|
||||
<string name="module_update_json_copied">JSON ссылка обновления скопирована в буфер обмена</string>
|
||||
<!-- Settings related strings -->
|
||||
<string name="show_more_module_info">Показать больше информации о модуле</string>
|
||||
<string name="show_more_module_info_summary">Показывать доп. информацию о модулях, такую как JSON ссылку для обновления</string>
|
||||
<string name="susfs_execution_location_label">Место выполнения</string>
|
||||
<string name="susfs_current_execution_location">Текущее место выполнения: %s</string>
|
||||
<string name="susfs_execution_location_service">Сервис</string>
|
||||
<string name="susfs_execution_location_post_fs_data">Post-FS-Data</string>
|
||||
<string name="susfs_execution_location_service_description">Выполнить после запуска системных сервисов</string>
|
||||
<string name="susfs_execution_location_post_fs_data_description">Выполнить после монтирования файловой системы, но перед полной загрузкой. Может вызвать бутлуп</string>
|
||||
<string name="susfs_slot_info_title">Информация о слоте</string>
|
||||
<string name="susfs_slot_info_description">Просмотреть информацию о текущем слоте загрузки и скопировать значения</string>
|
||||
<string name="susfs_current_active_slot">Текущий слот: %s</string>
|
||||
<string name="susfs_slot_uname">Uname: %s</string>
|
||||
<string name="susfs_slot_build_time">Время сборки: %s</string>
|
||||
<string name="susfs_slot_current_badge">Текущее</string>
|
||||
<string name="susfs_slot_use_uname">Использовать Uname</string>
|
||||
<string name="susfs_slot_use_build_time">Использовать время сборки</string>
|
||||
<string name="susfs_slot_info_unavailable">Не удается получить информацию о слоте</string>
|
||||
<!-- SuSFS 自启动相关字符串 -->
|
||||
<string name="susfs_autostart_enabled_success">SuSFS автозапуск модуля включен, путь к модулям: %s</string>
|
||||
<string name="susfs_autostart_disabled_success">SuSFS модуль автозапуска отключен</string>
|
||||
<!-- SuSFS Kstat相关字符串 -->
|
||||
<string name="susfs_tab_kstat_config">Конфигурация Kstat</string>
|
||||
<string name="kstat_static_config_added">Добавлена статическая конфигурация Kstat: %1$s</string>
|
||||
<string name="kstat_config_removed">Конфигурация Kstat удалена: %1$s</string>
|
||||
<string name="kstat_path_added">Путь к Kstat добавлен: %1$s</string>
|
||||
<string name="kstat_path_removed">Путь к Kstat удалён: %1$s</string>
|
||||
<string name="kstat_updated">Kstat обновлен: %1$s</string>
|
||||
<string name="kstat_full_clone_updated">Полный клон Kstat обновлён: %1$s</string>
|
||||
<string name="add_kstat_statically_title">Добавить статическую конфигурацию Kstat</string>
|
||||
<string name="file_or_directory_path_label">Путь к файлу/папке</string>
|
||||
<string name="hint_use_default_value">Подсказка: Вы можете использовать «по умолчанию» для использования оригинального значения</string>
|
||||
<string name="add_kstat_path_title">Добавить путь Kstat</string>
|
||||
<string name="add">Добавить</string>
|
||||
<string name="reset_kstat_config_title">Сбросить конфигурацию Kstat</string>
|
||||
<string name="reset_kstat_config_message">Вы уверены, что хотите очистить все конфигурации Kstat? Это действие нельзя отменить.</string>
|
||||
<string name="kstat_config_description_title">Описание конфигурации Kstat</string>
|
||||
<string name="kstat_config_description_add_statically">• add_sus_kstat_staticall: Статическая статистика информации о файлах/директориях</string>
|
||||
<string name="kstat_config_description_add">• add_sus_kstat: Добавить путь перед привязкой, сохраняя исходную статистику</string>
|
||||
<string name="kstat_config_description_update">• update_sus_kstat: Обновление цели, сохранение размера и блоков без изменений</string>
|
||||
<string name="kstat_config_description_update_full_clone">• update_sus_kstat_full_clone: Обновление только новых, сохранить другие исходные значения</string>
|
||||
<string name="static_kstat_config">Статическая конфигурация Kstat</string>
|
||||
<string name="kstat_path_management">Управление путями Kstat</string>
|
||||
<string name="no_kstat_config_message">Пока нет конфигурации Kstat, нажмите кнопку выше, чтобы добавить</string>
|
||||
<!-- SuSFS Mount Hiding Control Related Strings -->
|
||||
<string name="susfs_hide_mounts_control_title">Контроль скрытия SUS монтирования</string>
|
||||
<string name="susfs_hide_mounts_control_description">Управление режимом скрытия SUS монтирования для процессов</string>
|
||||
<string name="susfs_hide_mounts_for_all_procs_label">Скрыть монтирования SUS для всех процессов</string>
|
||||
<string name="susfs_hide_mounts_for_all_procs_enabled_description">Когда включено, монтирования SUS будут скрыты от всех процессов, включая процессы KSU</string>
|
||||
<string name="susfs_hide_mounts_for_all_procs_disabled_description">Если отключено, монтирования SUS будут скрываться только из процессов, не связанных с KSU, процессы KSU могут видеть монтирования</string>
|
||||
<string name="susfs_hide_mounts_all_enabled">Включено скрытие монтирования SUS для всех процессов</string>
|
||||
<string name="susfs_hide_mounts_all_disabled">Отключено скрытие монтирования SUS для всех процессов</string>
|
||||
<string name="susfs_hide_mounts_recommendation">Рекомендуется отключить после разблокировки экрана или во время service.sh или boot-completed.sh, так как это должно исправить проблему на некоторых root-приложениях, которые опираются на монтирование, смонтированное процессом KSU</string>
|
||||
<string name="susfs_hide_mounts_current_setting">Текущие настройки: %s</string>
|
||||
<string name="susfs_hide_mounts_setting_all">Скрыть для всех процессов</string>
|
||||
<string name="susfs_hide_mounts_setting_non_ksu">Скрыть только для процессов, не связанных с KSU</string>
|
||||
<string name="susfs_run">Запустить</string>
|
||||
<string name="kernel_simple_kernel">Скрыть доп. информацию о ядре</string>
|
||||
<string name="kernel_simple_kernel_summary">Включить или отключить чистый режим, отображаемой версии ядра SukiSU</string>
|
||||
<string name="susfs_android_data_path_set">Путь к данным Android был установлен на: %s</string>
|
||||
<string name="susfs_sdcard_path_set">Путь к SD-карте был установлен на: %s</string>
|
||||
<string name="susfs_path_setup_warning">Установка пути может быть не вполне успешной, но SUS пути будут добавлены</string>
|
||||
<!-- 备份和还原相关字符串 -->
|
||||
<string name="susfs_backup_title">Резервное копирование</string>
|
||||
<string name="susfs_backup_description">Создайте резервную копию всех конфигураций SuSFS. Файл резервной копии будет содержать все настройки, пути и конфигурации.</string>
|
||||
<string name="susfs_backup_create">Создать резервную копию</string>
|
||||
<string name="susfs_backup_success">Резервная копия успешно создана: %s</string>
|
||||
<string name="susfs_backup_failed">Не удалось создать резервную копию: %s</string>
|
||||
<string name="susfs_backup_file_not_found">Файл резервной копии не найден</string>
|
||||
<string name="susfs_backup_invalid_format">Неверный формат файла резервной копии</string>
|
||||
<string name="susfs_backup_version_mismatch">Несоответствие версии резервного копирования</string>
|
||||
<string name="susfs_restore_title">Восстановить</string>
|
||||
<string name="susfs_restore_description">Восстановить настройки SuSFS из файла резервной копии. Это перезапишет все текущие настройки.</string>
|
||||
<string name="susfs_restore_select_file">Выберите файл резервной копии</string>
|
||||
<string name="susfs_restore_success" formatted="false">Конфигурация успешно восстановлена из резервной копии, созданной на %s с устройства: %s</string>
|
||||
<string name="susfs_restore_failed">Ошибка восстановления: %s</string>
|
||||
<string name="susfs_restore_confirm_title">Подтвердить восстановление</string>
|
||||
<string name="susfs_restore_confirm_description">Это очистит все конфигурации размонтирования. Вы уверены, что хотите продолжить?</string>
|
||||
<string name="susfs_restore_confirm">Восстановление</string>
|
||||
<string name="susfs_backup_info_date">Дата резервного копирования: %s</string>
|
||||
<string name="susfs_backup_info_device">Устройство: %s</string>
|
||||
<string name="susfs_backup_info_version">Версия: %s</string>
|
||||
<string name="hide_bl_script">Скрыть BL скрипт</string>
|
||||
<string name="hide_bl_script_description">Включить скрипт Hide Bootloader Unlock Status</string>
|
||||
<string name="cleanup_residue">Очистка</string>
|
||||
<string name="cleanup_residue_description">Очистка остаточных файлов и каталогов различных модулей и инструментов (может быть удален по ошибке, в результате потери и неспособности начаться, используйте с осторожностью)</string>
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">Ni nameščeno</string>
|
||||
<string name="home_click_to_install">Klikni za namestitev</string>
|
||||
<string name="home_working">V obdelavi</string>
|
||||
<string name="home_working_version">Verzija: %d</string>
|
||||
<string name="home_superuser_count">Superuporabniki: %d</string>
|
||||
<string name="home_module_count">Moduli: %d</string>
|
||||
<string name="home_working_version">Verzija: %s</string>
|
||||
<string name="home_unsupported">Ne podpira</string>
|
||||
<string name="home_unsupported_reason">KernelSU podpira samo GKI kernele</string>
|
||||
<string name="home_kernel">Kernel</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS Version</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">Verzija upravitelja</string>
|
||||
<string name="home_fingerprint">Prstni odtis</string>
|
||||
<string name="home_selinux_status">SELinux status</string>
|
||||
<string name="selinux_status_disabled">Onemogočeno</string>
|
||||
<string name="selinux_status_enforcing">Enforcing</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Sort (Action first)</string>
|
||||
<string name="module_sort_enabled_first">Sort (Enabled first)</string>
|
||||
<string name="uninstall">Odmesti</string>
|
||||
<string name="restore">Restore</string>
|
||||
<string name="module_install">Namesti</string>
|
||||
<string name="install">Namesti</string>
|
||||
<string name="reboot">Znova zaženi</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">Predloga</string>
|
||||
<string name="profile_custom">Po meri</string>
|
||||
<string name="profile_name">Ime profila</string>
|
||||
<string name="profile_namespace">Imenski prostor vmestitve</string>
|
||||
<string name="profile_namespace_inherited">Podedovano</string>
|
||||
<string name="profile_namespace_global">Globalno</string>
|
||||
<string name="profile_namespace_individual">Pozameznik</string>
|
||||
<string name="profile_groups">Skupine</string>
|
||||
<string name="profile_capabilities">Zmožnosti</string>
|
||||
<string name="profile_selinux_context">SELinux kontekst</string>
|
||||
<string name="profile_umount_modules">Izvrzi module</string>
|
||||
<string name="failed_to_update_app_profile">Napaka pri posodobitvi aplikacijskega profila za %s</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %d is too low for the manager to work properly. Please upgrade to version %d or higher!</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %s is too low for the manager to work properly. Please upgrade to version %s or higher!</string>
|
||||
<string name="settings_umount_modules_default">Po privzetem izvrzi module</string>
|
||||
<string name="settings_umount_modules_default_summary">Globalno privzeta vrednost za \"Izvrzi module\" v aplikacijskih profilih. Če je omogočena, bo to odstranilo vse sistemske modifikacije modulov za aplikacije, ki nimajo nastavljenega profila.</string>
|
||||
<string name="settings_susfs_toggle">Disable kprobe hooks</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Automatically check for updates when opening the app</string>
|
||||
<string name="grant_root_failed">Failed to grant root!</string>
|
||||
<string name="action">Action</string>
|
||||
<string name="open">Open</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="enable_web_debugging">Enable WebView debugging</string>
|
||||
<string name="enable_web_debugging_summary">Can be used to debug WebUI. Please enable only when needed.</string>
|
||||
@@ -136,9 +125,6 @@
|
||||
<string name="selected_lkm">Selected LKM: %s</string>
|
||||
<string name="save_log">Shrani Dnevnike</string>
|
||||
<string name="log_saved">Logs saved</string>
|
||||
<string name="status_supported">Supported</string>
|
||||
<string name="status_not_supported">Not Supported</string>
|
||||
<string name="status_unknown">Unknown</string>
|
||||
<string name="sus_su_mode">SuS SU mode:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">confirm install module %1$s?</string>
|
||||
@@ -172,14 +158,11 @@
|
||||
<string name="settings_custom_background">Custom App Background</string>
|
||||
<string name="settings_custom_background_summary">Select an image as background</string>
|
||||
<string name="settings_card_alpha">Navigation bar transparency</string>
|
||||
<string name="settings_restore_default">Restore default</string>
|
||||
<string name="home_android_version">Android version</string>
|
||||
<string name="home_device_model">Device model</string>
|
||||
<string name="su_not_allowed">Granting superuser to %s is not allowed</string>
|
||||
<string name="settings_disable_su">Disable su compatibility</string>
|
||||
<string name="settings_disable_su_summary">Temporarily disable any applications from obtaining root privileges via the su command (existing root processes will not be affected).</string>
|
||||
<string name="using_mksu_manager">You are using the SukiSU Beta manager</string>
|
||||
<string name="module_install_multiple_confirm">Are you sure you want to install the selected %d modules?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Sure you want to install the following %1$d modules? \n\n%2$s</string>
|
||||
<string name="more_settings">More settings</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -210,20 +193,14 @@
|
||||
<string name="color_pink">Pink</string>
|
||||
<string name="color_gray">Gray</string>
|
||||
<string name="color_yellow">Yellow</string>
|
||||
<string name="flash_option">Brush Options</string>
|
||||
<string name="flash_option_tip">Select the file to be flashed</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash AnyKernel3 kernel file</string>
|
||||
<string name="root_required">Requires root privileges</string>
|
||||
<string name="copy_failed">File Copy Failure</string>
|
||||
<string name="reboot_complete_title">Scrubbing complete</string>
|
||||
<string name="reboot_complete_msg">Whether to reboot immediately?</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="failed_reboot">Reboot Failed</string>
|
||||
<string name="batch_authorization">empower</string>
|
||||
<string name="batch_cancel_authorization">withdraw</string>
|
||||
<string name="backup">Backup</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">No installed kernel modules at this time</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
@@ -231,7 +208,6 @@
|
||||
<string name="kpm_uninstall">Uninstall</string>
|
||||
<string name="kpm_uninstall_success">Uninstalled successfully</string>
|
||||
<string name="kpm_uninstall_failed">Failed to uninstall</string>
|
||||
<string name="kpm_install">Install</string>
|
||||
<string name="kpm_install_success">Load of kpm module successful</string>
|
||||
<string name="kpm_install_failed">Load of kpm module failed</string>
|
||||
<string name="kpm_args">Parameters</string>
|
||||
@@ -245,8 +221,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra will be a relatively independent branch of KSU in the future, but we still appreciate the official KernelSU and MKSU etc. for their contributions!</string>
|
||||
<string name="not_supported">Unsupported</string>
|
||||
<string name="supported">Supported</string>
|
||||
<string name="home_kpm_module">"Number of KPMs: %d "</string>
|
||||
<string name="kpm_invalid_file">Invalid KPM file</string>
|
||||
<string name="kernel_patched">Kernel not patched</string>
|
||||
<string name="kernel_not_enabled">Kernel not configured</string>
|
||||
<string name="custom_settings">Custom settings</string>
|
||||
@@ -254,19 +228,13 @@
|
||||
<string name="kpm_install_mode_load">Load</string>
|
||||
<string name="kpm_install_mode_embed">Embed</string>
|
||||
<string name="kpm_install_mode_description">Please select: %1\$s Module Installation Mode \n\nLoad: Temporarily load the module \nEmbedded: Permanently install into the system</string>
|
||||
<string name="log_failed_to_check_module_file">Failed to check module file existence</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Unable to check if module file exists</string>
|
||||
<string name="confirm_uninstall_title">Confirm uninstallation</string>
|
||||
<string name="confirm_uninstall_confirm">Uninstall</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancel</string>
|
||||
<string name="theme_color">Theme Color</string>
|
||||
<string name="invalid_file_type">Incorrect file type! Please select .kpm file.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Uninstall</string>
|
||||
<string name="confirm_uninstall_content">The following KPM will be uninstalled: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Disable kprobe hooks created by KernelSU, using inline hooks instead, which is similar to non-GKI kernel hooking method.</string>
|
||||
<string name="image_editor_title">Adjust background image</string>
|
||||
<string name="image_editor_hint">Use two fingers to zoom the image, and one finger to drag it to adjust the position</string>
|
||||
<string name="background_image_error">Could not load image</string>
|
||||
<string name="reprovision">Reprovision</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
@@ -303,10 +271,6 @@
|
||||
<string name="app_settings">Application Settings</string>
|
||||
<string name="tools">Tools</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Removals</string>
|
||||
<string name="apps_with_root">Applications with root privileges</string>
|
||||
<string name="apps_with_custom_profile">Applications with customized configurations</string>
|
||||
<string name="other_apps">Applications with unchanged defaults</string>
|
||||
<string name="no_apps_found">Application not found</string>
|
||||
<string name="selinux_enabled_toast">SELinux Enabled</string>
|
||||
<string name="selinux_disabled_toast">SELinux Disabled</string>
|
||||
@@ -314,8 +278,6 @@
|
||||
<string name="advanced_settings">Advanced Settings</string>
|
||||
<string name="appearance_settings">Customize the toolbar</string>
|
||||
<string name="back">Comeback</string>
|
||||
<string name="expand">Be in full swing</string>
|
||||
<string name="collapse">put away</string>
|
||||
<string name="susfs_enabled">SuSFS enabled</string>
|
||||
<string name="susfs_disabled">SuSFS disabled</string>
|
||||
<string name="background_set_success">Background set successfully</string>
|
||||
@@ -323,7 +285,6 @@
|
||||
<string name="icon_switch_title">Alternate icon</string>
|
||||
<string name="icon_switch_summary">Change the launcher icon to KernelSU\'s icon.</string>
|
||||
<string name="icon_switched">Icon switched</string>
|
||||
<string name="root_require_for_install">Requires root privileges</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Display KPM Function</string>
|
||||
<string name="show_kpm_info_summary">Display KPM information and Function in home and bottom bar (Need to reopen the app)</string>
|
||||
@@ -335,7 +296,6 @@
|
||||
<string name="use_webuix_eruda">Inject Eruda into WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Inject a debug console into WebUI X to make debugging easier. Requires web debugging to be on.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI setting</string>
|
||||
<string name="app_dpi_title">Applied DPI</string>
|
||||
<string name="app_dpi_summary">Adjust the screen display density for the current application only</string>
|
||||
<string name="dpi_size_small">Small </string>
|
||||
@@ -353,16 +313,6 @@
|
||||
<string name="language_follow_system">Follow System</string>
|
||||
<string name="language_changed">Language changed, restarting to apply changes</string>
|
||||
<string name="settings_card_dim">Card Darkness Adjustment</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="scroll_to_top_description">Scroll to top</string>
|
||||
<string name="scroll_to_bottom_description">Scroll to the bottom</string>
|
||||
<string name="authorized">authorized</string>
|
||||
<string name="unauthorized">unauthorized</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<string name="profile_umount_modules_disable">Disable custom uninstallation module</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">error code</string>
|
||||
<string name="check_log">Please check the log</string>
|
||||
@@ -370,4 +320,51 @@
|
||||
<string name="module_failed_count">%d Failed to install a new module</string>
|
||||
<string name="module_download_error">Module download failed</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="home_superuser_count">Superkorisnici</string>
|
||||
<string name="home_module_count">Moduli: %d</string>
|
||||
<string name="home_click_to_install">Додирните да бисте инсталирали</string>
|
||||
<string name="home">Почетна</string>
|
||||
<string name="home_not_installed">Није инсталирано</string>
|
||||
<string name="home_working_version">Верзија: %d</string>
|
||||
<string name="home_working_version">Верзија: %s</string>
|
||||
<string name="home_working">Ради</string>
|
||||
<string name="save_log">Сачувај Дневнике</string>
|
||||
</resources>
|
||||
@@ -14,8 +14,6 @@
|
||||
<string name="home_not_installed">ఇన్స్టాల్ చేయలేదు</string>
|
||||
<string name="home_click_to_install">ఇన్స్టాల్ చేయడానికి క్లిక్ చేయండి</string>
|
||||
<string name="home_working">పని చేస్తోంది</string>
|
||||
<string name="home_working_version">వెర్షన్: %d</string>
|
||||
<string name="home_superuser_count">సూపర్యూజర్లు: %d</string>
|
||||
<string name="home_module_count">మాడ్యూల్స్: %d</string>
|
||||
<string name="home_working_version">వెర్షన్: %s</string>
|
||||
<string name="save_log">లాగ్లు సేవ్ చేయండి</string>
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">ยังไม่ได้ติดตั้ง</string>
|
||||
<string name="home_click_to_install">กดเพื่อติดตั้ง</string>
|
||||
<string name="home_working">กำลังทำงาน</string>
|
||||
<string name="home_working_version">เวอร์ชัน: %d</string>
|
||||
<string name="home_superuser_count">สิทธิ์ผู้ใช้ขั้นสูง: %d</string>
|
||||
<string name="home_module_count">โมดูล: %d</string>
|
||||
<string name="home_working_version">เวอร์ชัน: %s</string>
|
||||
<string name="home_unsupported">ไม่รองรับ</string>
|
||||
<string name="home_unsupported_reason">ตอนนี้ KernelSU รองรับเคอร์เนลประเภท GKI เท่านั้น</string>
|
||||
<string name="home_kernel">เคอร์เนล</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS Version</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">เวอร์ชันตัวจัดการ</string>
|
||||
<string name="home_fingerprint">ลายนิ้วมือ</string>
|
||||
<string name="home_selinux_status">สถานะ SELinux</string>
|
||||
<string name="selinux_status_disabled">ปิดใช้งาน</string>
|
||||
<string name="selinux_status_enforcing">Enforcing</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">เรียงลำดับ (แบบรันคำสั่งก่อน)</string>
|
||||
<string name="module_sort_enabled_first">เรียงลำดับ (แบบเปิดใช้งานก่อน)</string>
|
||||
<string name="uninstall">ถอนการติดตั้ง</string>
|
||||
<string name="restore">Restore</string>
|
||||
<string name="module_install">ติดตั้ง</string>
|
||||
<string name="install">ติดตั้ง</string>
|
||||
<string name="reboot">รีบูต</string>
|
||||
@@ -61,16 +55,12 @@
|
||||
<string name="profile_template">เทมเพลต</string>
|
||||
<string name="profile_custom">กำหนดเอง</string>
|
||||
<string name="profile_name">ชื่อโปรไฟล์</string>
|
||||
<string name="profile_namespace">Mount เนมสเปซ</string>
|
||||
<string name="profile_namespace_inherited">สืบทอด</string>
|
||||
<string name="profile_namespace_global">ทั่วไป</string>
|
||||
<string name="profile_namespace_individual">ส่วนบุคคล</string>
|
||||
<string name="profile_groups">หมวดหมู่</string>
|
||||
<string name="profile_capabilities">ความสามารถของแอป</string>
|
||||
<string name="profile_selinux_context">บริบท SELinux</string>
|
||||
<string name="profile_umount_modules">Umount โมดูล</string>
|
||||
<string name="failed_to_update_app_profile">ไม่สามารถอัปเดตโปรไฟล์แอปสำหรับ %s ได้</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %d is too low for the manager to work properly. Please upgrade to version %d or higher!</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %s is too low for the manager to work properly. Please upgrade to version %s or higher!</string>
|
||||
<string name="settings_umount_modules_default">Umount โมดูลตามค่าเริ่มต้น</string>
|
||||
<string name="settings_umount_modules_default_summary">หากเปิดใช้งานค่าเริ่มต้นโดยทั่วไปสำหรับ \"Umount โมดูล\" ในโปรไฟล์แอป จะเป็นการลบการแก้ไขโมดูลทั้งหมดในระบบสำหรับแอปพลิเคชันที่ไม่มีการตั้งค่าโปรไฟล์</string>
|
||||
<string name="settings_susfs_toggle">Disable kprobe hooks</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">ตรวจสอบการอัปเดตโดยอัตโนมัติเมื่อเปิดแอป</string>
|
||||
<string name="grant_root_failed">ไม่สามารถให้สิทธิ์รูทได้!</string>
|
||||
<string name="action">คำสั่ง</string>
|
||||
<string name="open">เปิด</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="enable_web_debugging">เปิดใช้งานการแก้ไขข้อบกพร่อง WebView</string>
|
||||
<string name="enable_web_debugging_summary">ใช้เพื่อดีบัก WebUI เท่านั้น โปรดเปิดใช้งานเมื่อจำเป็น</string>
|
||||
@@ -138,9 +127,6 @@
|
||||
<string name="selected_lkm">เลือก LKM: %s</string>
|
||||
<string name="save_log">บันทึกบันทึก</string>
|
||||
<string name="log_saved">บันทึก Log แล้ว</string>
|
||||
<string name="status_supported">Supported</string>
|
||||
<string name="status_not_supported">Not Supported</string>
|
||||
<string name="status_unknown">Unknown</string>
|
||||
<string name="sus_su_mode">SuS SU mode:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">confirm install module %1$s?</string>
|
||||
@@ -174,14 +160,11 @@
|
||||
<string name="settings_custom_background">Custom App Background</string>
|
||||
<string name="settings_custom_background_summary">Select an image as background</string>
|
||||
<string name="settings_card_alpha">Navigation bar transparency</string>
|
||||
<string name="settings_restore_default">Restore default</string>
|
||||
<string name="home_android_version">Android version</string>
|
||||
<string name="home_device_model">Device model</string>
|
||||
<string name="su_not_allowed">Granting superuser to %s is not allowed</string>
|
||||
<string name="settings_disable_su">Disable su compatibility</string>
|
||||
<string name="settings_disable_su_summary">Temporarily disable any applications from obtaining root privileges via the su command (existing root processes will not be affected).</string>
|
||||
<string name="using_mksu_manager">You are using the SukiSU Beta manager</string>
|
||||
<string name="module_install_multiple_confirm">Are you sure you want to install the selected %d modules?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Sure you want to install the following %1$d modules? \n\n%2$s</string>
|
||||
<string name="more_settings">More settings</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -212,20 +195,14 @@
|
||||
<string name="color_pink">Pink</string>
|
||||
<string name="color_gray">Gray</string>
|
||||
<string name="color_yellow">Yellow</string>
|
||||
<string name="flash_option">Brush Options</string>
|
||||
<string name="flash_option_tip">Select the file to be flashed</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash AnyKernel3 kernel file</string>
|
||||
<string name="root_required">Requires root privileges</string>
|
||||
<string name="copy_failed">File Copy Failure</string>
|
||||
<string name="reboot_complete_title">Scrubbing complete</string>
|
||||
<string name="reboot_complete_msg">Whether to reboot immediately?</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="failed_reboot">Reboot Failed</string>
|
||||
<string name="batch_authorization">empower</string>
|
||||
<string name="batch_cancel_authorization">withdraw</string>
|
||||
<string name="backup">Backup</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">No installed kernel modules at this time</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
@@ -233,7 +210,6 @@
|
||||
<string name="kpm_uninstall">Uninstall</string>
|
||||
<string name="kpm_uninstall_success">Uninstalled successfully</string>
|
||||
<string name="kpm_uninstall_failed">Failed to uninstall</string>
|
||||
<string name="kpm_install">Install</string>
|
||||
<string name="kpm_install_success">Load of kpm module successful</string>
|
||||
<string name="kpm_install_failed">Load of kpm module failed</string>
|
||||
<string name="kpm_args">Parameters</string>
|
||||
@@ -247,8 +223,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra will be a relatively independent branch of KSU in the future, but we still appreciate the official KernelSU and MKSU etc. for their contributions!</string>
|
||||
<string name="not_supported">Unsupported</string>
|
||||
<string name="supported">Supported</string>
|
||||
<string name="home_kpm_module">"Number of KPMs: %d "</string>
|
||||
<string name="kpm_invalid_file">Invalid KPM file</string>
|
||||
<string name="kernel_patched">Kernel not patched</string>
|
||||
<string name="kernel_not_enabled">Kernel not configured</string>
|
||||
<string name="custom_settings">Custom settings</string>
|
||||
@@ -256,19 +230,13 @@
|
||||
<string name="kpm_install_mode_load">Load</string>
|
||||
<string name="kpm_install_mode_embed">Embed</string>
|
||||
<string name="kpm_install_mode_description">Please select: %1\$s Module Installation Mode \n\nLoad: Temporarily load the module \nEmbedded: Permanently install into the system</string>
|
||||
<string name="log_failed_to_check_module_file">Failed to check module file existence</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Unable to check if module file exists</string>
|
||||
<string name="confirm_uninstall_title">Confirm uninstallation</string>
|
||||
<string name="confirm_uninstall_confirm">Uninstall</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancel</string>
|
||||
<string name="theme_color">Theme Color</string>
|
||||
<string name="invalid_file_type">Incorrect file type! Please select .kpm file.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Uninstall</string>
|
||||
<string name="confirm_uninstall_content">The following KPM will be uninstalled: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Disable kprobe hooks created by KernelSU, using inline hooks instead, which is similar to non-GKI kernel hooking method.</string>
|
||||
<string name="image_editor_title">Adjust background image</string>
|
||||
<string name="image_editor_hint">Use two fingers to zoom the image, and one finger to drag it to adjust the position</string>
|
||||
<string name="background_image_error">Could not load image</string>
|
||||
<string name="reprovision">Reprovision</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
@@ -305,10 +273,6 @@
|
||||
<string name="app_settings">Application Settings</string>
|
||||
<string name="tools">Tools</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Removals</string>
|
||||
<string name="apps_with_root">Applications with root privileges</string>
|
||||
<string name="apps_with_custom_profile">Applications with customized configurations</string>
|
||||
<string name="other_apps">Applications with unchanged defaults</string>
|
||||
<string name="no_apps_found">Application not found</string>
|
||||
<string name="selinux_enabled_toast">SELinux Enabled</string>
|
||||
<string name="selinux_disabled_toast">SELinux Disabled</string>
|
||||
@@ -316,8 +280,6 @@
|
||||
<string name="advanced_settings">Advanced Settings</string>
|
||||
<string name="appearance_settings">Customize the toolbar</string>
|
||||
<string name="back">Comeback</string>
|
||||
<string name="expand">Be in full swing</string>
|
||||
<string name="collapse">put away</string>
|
||||
<string name="susfs_enabled">SuSFS enabled</string>
|
||||
<string name="susfs_disabled">SuSFS disabled</string>
|
||||
<string name="background_set_success">Background set successfully</string>
|
||||
@@ -325,7 +287,6 @@
|
||||
<string name="icon_switch_title">Alternate icon</string>
|
||||
<string name="icon_switch_summary">Change the launcher icon to KernelSU\'s icon.</string>
|
||||
<string name="icon_switched">Icon switched</string>
|
||||
<string name="root_require_for_install">Requires root privileges</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Display KPM Function</string>
|
||||
<string name="show_kpm_info_summary">Display KPM information and Function in home and bottom bar (Need to reopen the app)</string>
|
||||
@@ -337,7 +298,6 @@
|
||||
<string name="use_webuix_eruda">Inject Eruda into WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Inject a debug console into WebUI X to make debugging easier. Requires web debugging to be on.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI setting</string>
|
||||
<string name="app_dpi_title">Applied DPI</string>
|
||||
<string name="app_dpi_summary">Adjust the screen display density for the current application only</string>
|
||||
<string name="dpi_size_small">Small </string>
|
||||
@@ -355,16 +315,6 @@
|
||||
<string name="language_follow_system">Follow System</string>
|
||||
<string name="language_changed">Language changed, restarting to apply changes</string>
|
||||
<string name="settings_card_dim">Card Darkness Adjustment</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="scroll_to_top_description">Scroll to top</string>
|
||||
<string name="scroll_to_bottom_description">Scroll to the bottom</string>
|
||||
<string name="authorized">authorized</string>
|
||||
<string name="unauthorized">unauthorized</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<string name="profile_umount_modules_disable">Disable custom uninstallation module</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">error code</string>
|
||||
<string name="check_log">Please check the log</string>
|
||||
@@ -372,4 +322,51 @@
|
||||
<string name="module_failed_count">%d Failed to install a new module</string>
|
||||
<string name="module_download_error">Module download failed</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<!-- FAB菜单相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<!-- SuSFS Settings Item -->
|
||||
<!-- 开机自启动相关 -->
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<!-- SuSFS Dialog Actions -->
|
||||
<!-- SuSFS Path Management -->
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<!-- SuSFS Run Umount -->
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<!-- SuSFS Path Settings -->
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<!-- Feature Labels -->
|
||||
<!-- 可切换状态 -->
|
||||
<!-- Settings related strings -->
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">Yüklü değil</string>
|
||||
<string name="home_click_to_install">Yüklemek için tıklayın</string>
|
||||
<string name="home_working">Çalışıyor</string>
|
||||
<string name="home_working_version">Sürüm: %d</string>
|
||||
<string name="home_superuser_count">SüperKullanıcılar: %d</string>
|
||||
<string name="home_module_count">Modüller: %d</string>
|
||||
<string name="home_working_version">Sürüm: %s</string>
|
||||
<string name="home_unsupported">Desteklenmiyor</string>
|
||||
<string name="home_unsupported_reason">Kernel\'inizde KernelSU sürücüsü algılanmadı, yanlış çekirdek mi?</string>
|
||||
<string name="home_kernel">Kernel sürümü</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS Sürümü</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">Yönetici sürümü</string>
|
||||
<string name="home_fingerprint">Parmak izi</string>
|
||||
<string name="home_selinux_status">SELinux durumu</string>
|
||||
<string name="selinux_status_disabled">Devre dışı</string>
|
||||
<string name="selinux_status_enforcing">Enfocing(Etkin)</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">Sırala (Action önce)</string>
|
||||
<string name="module_sort_enabled_first">Sırala (Etkin önce)</string>
|
||||
<string name="uninstall">Kaldır</string>
|
||||
<string name="restore">Geri yükle</string>
|
||||
<string name="module_install">Yükle</string>
|
||||
<string name="install">Yükle</string>
|
||||
<string name="reboot">Yeniden başlat</string>
|
||||
@@ -42,8 +36,6 @@
|
||||
<string name="module_uninstall_confirm">%s modülünü kaldırmak istediğinizden emin misiniz?</string>
|
||||
<string name="module_uninstall_success">%s kaldırıldı</string>
|
||||
<string name="module_uninstall_failed">Kaldırılamadı: %s</string>
|
||||
<string name="module_version">Version</string>
|
||||
<string name="module_author">Author</string>
|
||||
<string name="refresh">Yenile</string>
|
||||
<string name="show_system_apps">Sistem uygulamalarını göster</string>
|
||||
<string name="hide_system_apps">Sistem uygulamalarını gizle</string>
|
||||
@@ -52,7 +44,6 @@
|
||||
<string name="reboot_to_apply">Etkili olması için yeniden başlatın</string>
|
||||
<string name="module_magisk_conflict">Magisk ile çakışma nedeniyle modüller kullanılamıyor!</string>
|
||||
<string name="home_learn_kernelsu">KernelSU\'yu öğrenin</string>
|
||||
<string name="home_learn_kernelsu_url">https://kernelsu.org/guide/what-is-kernelsu.html</string>
|
||||
<string name="home_click_to_learn_kernelsu">KernelSU\'yu nasıl yükleyeceğinizi ve modülleri nasıl kullanacağınızı öğrenin</string>
|
||||
<string name="home_support_title">Bizi destekleyin</string>
|
||||
<string name="home_support_content">KernelSU, her zaman olduğu gibi ücretsiz ve açık kaynaklıdır. Ancak bir bağış yaparak bizi destekleyebilirsiniz.</string>
|
||||
@@ -61,16 +52,12 @@
|
||||
<string name="profile_template">Şablon</string>
|
||||
<string name="profile_custom">Özel</string>
|
||||
<string name="profile_name">Profil adı</string>
|
||||
<string name="profile_namespace">Bağlama adı alanı</string>
|
||||
<string name="profile_namespace_inherited">Miras alınan</string>
|
||||
<string name="profile_namespace_global">Global</string>
|
||||
<string name="profile_namespace_individual">Bireysel</string>
|
||||
<string name="profile_groups">Gruplar</string>
|
||||
<string name="profile_capabilities">Yetenekler</string>
|
||||
<string name="profile_selinux_context">SELinux bağlamı</string>
|
||||
<string name="profile_umount_modules">Modülleri bağlamayı kaldır</string>
|
||||
<string name="failed_to_update_app_profile">%s için Uygulama Profili güncellenemedi</string>
|
||||
<string name="require_kernel_version" formatted="false">Mevcut KernelSU sürümü %d, yöneticinin düzgün çalışması için çok düşük. Lütfen sürüm %d veya daha yüksek bir sürüme yükseltin!</string>
|
||||
<string name="require_kernel_version" formatted="false">Mevcut KernelSU sürümü %s, yöneticinin düzgün çalışması için çok düşük. Lütfen sürüm %s veya daha yüksek bir sürüme yükseltin!</string>
|
||||
<string name="settings_umount_modules_default">Modülleri varsayılan olarak bağlamayı kaldır</string>
|
||||
<string name="settings_umount_modules_default_summary">Uygulama Profilindeki \"Modülleri bağlamayı kaldır\" için küresel varsayılan değer. Etkinleştirilirse, profil ayarlanmamış uygulamalar için sistemdeki tüm modül değişikliklerini kaldırır.</string>
|
||||
<string name="settings_susfs_toggle">Kprobe kancalarını devre dışı bırak</string>
|
||||
@@ -111,8 +98,6 @@
|
||||
<string name="settings_check_update">Güncelleme kontrolü</string>
|
||||
<string name="settings_check_update_summary">Uygulama açıldığında otomatik olarak güncellemeleri kontrol et</string>
|
||||
<string name="grant_root_failed">Root yetkisi verilemedi!</string>
|
||||
<string name="action">Action</string>
|
||||
<string name="open">Aç</string>
|
||||
<string name="close">Kapat</string>
|
||||
<string name="enable_web_debugging">WebView hata ayıklama etkinleştir</string>
|
||||
<string name="enable_web_debugging_summary">WebUI\'yi hata ayıklamak için kullanılabilir. Sadece ihtiyaç duyulduğunda etkinleştirin.</string>
|
||||
@@ -136,9 +121,6 @@
|
||||
<string name="selected_lkm">Seçilen LKM: %s</string>
|
||||
<string name="save_log">Günlükleri kaydet</string>
|
||||
<string name="log_saved">Günlükler kaydedildi</string>
|
||||
<string name="status_supported">Destekleniyor</string>
|
||||
<string name="status_not_supported">Desteklenmiyor</string>
|
||||
<string name="status_unknown">Bilinmiyor</string>
|
||||
<string name="sus_su_mode">SuS SU modu:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">%1$s modülünü yüklemek istediğinizden emin misiniz?</string>
|
||||
@@ -172,17 +154,13 @@
|
||||
<string name="settings_custom_background">Özel Uygulama Arka Planı</string>
|
||||
<string name="settings_custom_background_summary">Bir görüntü seçin ve arka plan olarak ayarlayın</string>
|
||||
<string name="settings_card_alpha">Geçiş çubuğu şeffaflığı</string>
|
||||
<string name="settings_restore_default">Varsayılana geri dön</string>
|
||||
<string name="home_android_version">Android sürümü</string>
|
||||
<string name="home_device_model">Cihaz modeli</string>
|
||||
<string name="su_not_allowed">%s için süper kullanıcı yetkisi verilemiyor</string>
|
||||
<string name="settings_disable_su">Su uyumluluğunu devre dışı bırak</string>
|
||||
<string name="settings_disable_su_summary">Geçici olarak herhangi bir uygulamanın su komutu aracılığıyla root ayrıcalıkları elde etmesini devre dışı bırakır (mevcut root işlemleri etkilenmez).</string>
|
||||
<string name="using_mksu_manager">SukiSU Beta yöneticisini kullanıyorsunuz</string>
|
||||
<string name="module_install_multiple_confirm">Seçilen %d modülü yüklemek istediğinizden emin misiniz?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Aşağıdaki %1$d modülü yüklemek istediğinizden emin misiniz? \n\n%2$s</string>
|
||||
<string name="more_settings">Daha fazla ayar</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
<string name="selinux_enabled">Etkin</string>
|
||||
<string name="selinux_disabled">Devre dışı</string>
|
||||
<string name="simple_mode">Basit mod</string>
|
||||
@@ -195,6 +173,8 @@
|
||||
<string name="hide_susfs_status_summary">Ana sayfadaki SuSFS durum bilgilerini gizle</string>
|
||||
<string name="hide_link_card">Bağlantı Kartı Durumunu Gizle</string>
|
||||
<string name="hide_link_card_summary">Ana sayfadaki bağlantı kartı bilgilerini gizle</string>
|
||||
<string name="hide_tag_card">Modül etiket satırlarını gizle</string>
|
||||
<string name="hide_tag_card_summary">Modül kartlarında klasör adı ve boyut etiketlerini gizle</string>
|
||||
<string name="theme_mode">Tema</string>
|
||||
<string name="theme_follow_system">Sistemi takip et</string>
|
||||
<string name="theme_light">Açık</string>
|
||||
@@ -210,28 +190,19 @@
|
||||
<string name="color_pink">Pembe</string>
|
||||
<string name="color_gray">Gri</string>
|
||||
<string name="color_yellow">Sarı</string>
|
||||
<string name="flash_option">Fırça Seçenekleri</string>
|
||||
<string name="flash_option_tip">Yazılacak dosyayı seçin</string>
|
||||
<string name="horizon_kernel">Anykernel3 yükle</string>
|
||||
<string name="horizon_kernel_summary">AnyKernel3 çekirdek dosyasını yaz</string>
|
||||
<string name="root_required">Root ayrıcalıkları gerektirir</string>
|
||||
<string name="copy_failed">Dosya Kopyalama Başarısız</string>
|
||||
<string name="reboot_complete_title">Temizleme tamamlandı</string>
|
||||
<string name="reboot_complete_msg">Hemen yeniden başlatmak istiyor musunuz?</string>
|
||||
<string name="yes">Evet</string>
|
||||
<string name="no">Hayır</string>
|
||||
<string name="failed_reboot">Yeniden başlatma başarısız</string>
|
||||
<string name="batch_authorization">yetkilendir</string>
|
||||
<string name="batch_cancel_authorization">geri al</string>
|
||||
<string name="backup">Yedekle</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">Şu anda yüklü çekirdek modülü yok</string>
|
||||
<string name="kpm_version">Sürüm</string>
|
||||
<string name="kpm_author">Author</string>
|
||||
<string name="kpm_uninstall">Kaldır</string>
|
||||
<string name="kpm_uninstall_success">Başarıyla kaldırıldı</string>
|
||||
<string name="kpm_uninstall_failed">Kaldırılamadı</string>
|
||||
<string name="kpm_install">Yükle</string>
|
||||
<string name="kpm_install_success">Kpm modülü yükleme başarılı</string>
|
||||
<string name="kpm_install_failed">Kpm modülü yükleme başarısız</string>
|
||||
<string name="kpm_args">Parametreler</string>
|
||||
@@ -245,8 +216,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra, gelecekte KSU\'nun nispeten bağımsız bir dalı olacak, ancak yine de resmi KernelSU ve MKSU gibi katkılarından dolayı teşekkür ederiz!</string>
|
||||
<string name="not_supported">Desteklenmiyor</string>
|
||||
<string name="supported">Destekleniyor</string>
|
||||
<string name="home_kpm_module">"KPM modül sayısı: %d "</string>
|
||||
<string name="kpm_invalid_file">Geçersiz KPM dosyası</string>
|
||||
<string name="kernel_patched">Çekirdek yamalanmadı</string>
|
||||
<string name="kernel_not_enabled">Çekirdek yapılandırılmadı</string>
|
||||
<string name="custom_settings">Özel ayarlar</string>
|
||||
@@ -254,19 +223,13 @@
|
||||
<string name="kpm_install_mode_load">Yükle</string>
|
||||
<string name="kpm_install_mode_embed">Göm</string>
|
||||
<string name="kpm_install_mode_description">Lütfen seçin: %1$s Modül Yükleme Modu \n\nYükle: Modülü geçici olarak yükle \nGömülü: Kalıcı olarak sisteme yükle</string>
|
||||
<string name="log_failed_to_check_module_file">Modül dosyasının varlığını kontrol etme başarısız</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Modül dosyasının varlığını kontrol edilemiyor</string>
|
||||
<string name="confirm_uninstall_title">Kaldırmayı onayla</string>
|
||||
<string name="confirm_uninstall_confirm">Kaldır</string>
|
||||
<string name="confirm_uninstall_dismiss">İptal</string>
|
||||
<string name="theme_color">Tema Rengi</string>
|
||||
<string name="invalid_file_type">Yanlış dosya türü! Lütfen .kpm dosyasını seçin.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Kaldır</string>
|
||||
<string name="confirm_uninstall_content">Aşağıdaki KPM kaldırılacak: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">KernelSU tarafından oluşturulan kprobe kancalarını devre dışı bırakın, bunun yerine inline kancalar kullanın, bu da Non-GKI çekirdek kanca yöntemine benzer.</string>
|
||||
<string name="image_editor_title">Arka plan görüntüsünü ayarla</string>
|
||||
<string name="image_editor_hint">Görüntüyü yaklaştırmak için iki parmağınızı kullanın ve bir parmağınızla sürükleyerek konumu ayarlayın</string>
|
||||
<string name="background_image_error">Görüntü yüklenemedi</string>
|
||||
<string name="reprovision">Yeniden sağla</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Çekirdek Flash\'lama</string>
|
||||
@@ -296,17 +259,12 @@
|
||||
<string name="flash_failed_message">Flash\'lama başarısız</string>
|
||||
<!-- lkm/gki install -->
|
||||
<string name="Lkm_install_methods">LKM onarımı/yükle</string>
|
||||
<string name="GKI_install_methods">Flashing AnyKernel3</string>
|
||||
<string name="kernel_version_log">Çekirdek sürümü:%1$s</string>
|
||||
<string name="tool_version_log">Kullanılan yama aracı:%1$s</string>
|
||||
<string name="configuration">Yapılandır</string>
|
||||
<string name="app_settings">Uygulama Ayarları</string>
|
||||
<string name="tools">Araçlar</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Kaldır</string>
|
||||
<string name="apps_with_root">Root izinlerine sahip uygulamalar</string>
|
||||
<string name="apps_with_custom_profile">Özelleştirilmiş Yapılandırma Uygulaması</string>
|
||||
<string name="other_apps">Diğer Uygulamalar</string>
|
||||
<string name="no_apps_found">Uygulama bulunamadı</string>
|
||||
<string name="selinux_enabled_toast">SELinux Etkin</string>
|
||||
<string name="selinux_disabled_toast">SELinux Devre Dışı</string>
|
||||
@@ -314,8 +272,6 @@
|
||||
<string name="advanced_settings">Gelişmiş Ayarlar</string>
|
||||
<string name="appearance_settings">Araç çubuğunu özelleştir</string>
|
||||
<string name="back">Geri</string>
|
||||
<string name="expand">Tamamen aç</string>
|
||||
<string name="collapse">Kaldır</string>
|
||||
<string name="susfs_enabled">SuSFS etkin</string>
|
||||
<string name="susfs_disabled">SuSFS devre dışı</string>
|
||||
<string name="background_set_success">Arka plan başarıyla ayarlandı</string>
|
||||
@@ -323,7 +279,6 @@
|
||||
<string name="icon_switch_title">Alternatif simge</string>
|
||||
<string name="icon_switch_summary">Başlatıcı simgesini KernelSU simgesiyle değiştir.</string>
|
||||
<string name="icon_switched">Simge değiştirildi</string>
|
||||
<string name="root_require_for_install">Root ayrıcalıkları gerektirir</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">KPM İşlevini Gizle</string>
|
||||
<string name="show_kpm_info_summary">Ana sayfa ve alt çubuktaki KPM bilgilerini ve işlevini gizler</string>
|
||||
@@ -335,7 +290,6 @@
|
||||
<string name="use_webuix_eruda">WebUI X\'e Eruda enjekte et</string>
|
||||
<string name="use_webuix_eruda_summary">WebUI X\'e bir hata ayıklama konsolu enjekte edin, böylece hata ayıklama daha kolay olur. Web hata ayıklamanın açık olması gerekir.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI ayarı</string>
|
||||
<string name="app_dpi_title">Uygulanan DPI</string>
|
||||
<string name="app_dpi_summary">Sadece geçerli uygulama için ekran görüntüleme yoğunluğunu ayarlayın</string>
|
||||
<string name="dpi_size_small">Küçük</string>
|
||||
@@ -353,21 +307,144 @@
|
||||
<string name="language_follow_system">Sistemi takip et</string>
|
||||
<string name="language_changed">Dil değiştirildi, değişiklikleri uygulamak için yeniden başlatılıyor</string>
|
||||
<string name="settings_card_dim">Kart Karanlığını Ayarlama</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Üst</string>
|
||||
<string name="scroll_to_bottom">Alt</string>
|
||||
<string name="scroll_to_top_description">En üste kaydır</string>
|
||||
<string name="scroll_to_bottom_description">En alta kaydır</string>
|
||||
<string name="authorized">yetkilendirildi</string>
|
||||
<string name="unauthorized">yetkilendirilmedi</string>
|
||||
<string name="selected">Seçildi</string>
|
||||
<string name="select">seçenek</string>
|
||||
<string name="profile_umount_modules_disable">Özel kaldırma modülünü devre dışı bırak</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">hata kodu</string>
|
||||
<string name="check_log">Lütfen günlüğü kontrol edin</string>
|
||||
<string name="check_log">Lütfen günlük kaydını kontrol edin</string>
|
||||
<string name="installing_module">Modül yükleniyor %1$d/%2$d</string>
|
||||
<string name="module_failed_count">Yeni bir modül yüklenemedi: %d başarısız</string>
|
||||
<string name="module_download_error">Modül indirilemedi</string>
|
||||
<string name="kernel_flashing">Çekirdek Flash\'lama</string>
|
||||
<string name="module_failed_count">%d yeni modül yüklenemedi</string>
|
||||
<string name="module_download_error">Modül indirme başarısız</string>
|
||||
<string name="kernel_flashing">Çekirdek Yükleniyor</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">Tümü</string>
|
||||
<string name="category_custom_apps">Özel</string>
|
||||
<string name="category_default_apps">Varsayılan</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">İsme göre artan sırada</string>
|
||||
<string name="sort_name_desc">İsme göre azalan sırada</string>
|
||||
<string name="sort_install_time_new">Kurulum zamanı (yeni)</string>
|
||||
<string name="sort_install_time_old">Kurulum zamanı (eski)</string>
|
||||
<string name="sort_size_desc">Boyuta göre azalan sırada</string>
|
||||
<string name="sort_size_asc">Boyuta göre artan sırada</string>
|
||||
<string name="sort_usage_freq">Kullanım sıklığına göre</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">Bu kategoride uygulama yok</string>
|
||||
<!-- 标签相关 -->
|
||||
<string name="deny_authorization">Yetkilendirme reddedildi</string>
|
||||
<string name="grant_authorization">Yetki verildi</string>
|
||||
<string name="unmount_modules">Modül Bağlantıları Kaldırılıyor</string>
|
||||
<string name="disable_unmount">Modül kaldırma montajını devre dışı bırak</string>
|
||||
<string name="expand_menu">Menüyü genişlet</string>
|
||||
<string name="collapse_menu">Menüyü gizle</string>
|
||||
<string name="scroll_to_top">Üst</string>
|
||||
<string name="scroll_to_bottom">Alt</string>
|
||||
<string name="selected">Seçildi</string>
|
||||
<string name="select">seçenek</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menü Seçenekleri</string>
|
||||
<string name="sort_options">Sıralama Seçenekleri</string>
|
||||
<string name="app_categories">Uygulama Türü Seçimi</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<string name="susfs_config_title">SuSFS Yapılandırması</string>
|
||||
<string name="susfs_config_description">Yapılandırma Açıklaması</string>
|
||||
<string name="susfs_config_description_text">Bu özellik, SuSFS uname değerini ve build time spoofing\'i özelleştirmenize olanak tanır. Ayarlamak istediğiniz değerleri girin ve uygulayın.</string>
|
||||
<string name="susfs_uname_label">Uname Değeri</string>
|
||||
<string name="susfs_uname_placeholder">Lütfen özel uname değeri girin</string>
|
||||
<string name="susfs_build_time_placeholder">Lütfen build time spoofing değeri girin</string>
|
||||
<string name="susfs_current_value">Mevcut değer: %s</string>
|
||||
<string name="susfs_current_build_time">Mevcut build time: %s</string>
|
||||
<string name="susfs_reset_to_default">Varsayılana Sıfırla</string>
|
||||
<string name="susfs_apply">Uygula</string>
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<string name="susfs_reset_confirm_title">Sıfırlamayı Onayla</string>
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<string name="susfs_binary_not_found">ksu_susfs dosyası bulunamadı</string>
|
||||
<string name="susfs_command_failed">SuSFS komut çalıştırma başarısız</string>
|
||||
<string name="susfs_command_error">SuSFS komut çalıştırma hatası: %s</string>
|
||||
<string name="susfs_uname_set_success" formatted="false">SuSFS uname ve build time başarıyla ayarlandı: %s, %s</string>
|
||||
<!-- SuSFS Settings Item -->
|
||||
<string name="susfs_config_setting_title">SuSFS Yapılandırması</string>
|
||||
<!-- 开机自启动相关 -->
|
||||
<string name="susfs_autostart_title">Otomatik Başlat</string>
|
||||
<string name="susfs_autostart_description">Yeniden başlatma sırasında tüm varsayılan olmayan yapılandırmaları otomatik olarak uygula</string>
|
||||
<string name="susfs_autostart_requirement">Etkinleştirmek için yapılandırma eklenmesi gerekiyor</string>
|
||||
<string name="susfs_autostart_enable_failed">Otomatik başlatma etkinleştirilemedi</string>
|
||||
<string name="susfs_autostart_disable_failed">Otomatik başlatma devre dışı bırakılamadı</string>
|
||||
<string name="susfs_autostart_error">Otomatik başlatma yapılandırma hatası: %s</string>
|
||||
<string name="susfs_no_config_to_autostart">Otomatik başlatma için kullanılabilir yapılandırma yok</string>
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<string name="susfs_tab_basic_settings">Temel Ayarlar</string>
|
||||
<string name="susfs_tab_sus_paths">SUS Yolları</string>
|
||||
<string name="susfs_tab_sus_mounts">SUS Bağlama Noktaları</string>
|
||||
<string name="susfs_tab_try_umount">Bağlamayı Kaldırmayı Dene</string>
|
||||
<string name="susfs_tab_path_settings">Yol Ayarları</string>
|
||||
<string name="susfs_tab_enabled_features">Etkinleştirilen Özellikler Durumu</string>
|
||||
<!-- SuSFS Path Management -->
|
||||
<string name="susfs_add_sus_path">SUS Yolu Ekle</string>
|
||||
<string name="susfs_add_sus_mount">SUS Bağlama Noktası Ekle</string>
|
||||
<string name="susfs_add_try_umount">Bağlamayı Kaldırmayı Dene Ekle</string>
|
||||
<string name="susfs_path_label">Yol</string>
|
||||
<string name="susfs_mount_path_label">Bağlama Yolu</string>
|
||||
<string name="susfs_path_placeholder">örn.: /system/addon.d</string>
|
||||
<string name="susfs_no_paths_configured">Yapılandırılmış SUS yolu yok</string>
|
||||
<string name="susfs_no_mounts_configured">Yapılandırılmış SUS bağlama noktası yok</string>
|
||||
<string name="susfs_no_umounts_configured">Yapılandırılmış bağlamayı kaldırmayı dene yok</string>
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<string name="susfs_umount_mode_label">Bağlamayı Kaldır Modu</string>
|
||||
<string name="susfs_umount_mode_normal">Normal Bağlamayı Kaldır (0)</string>
|
||||
<string name="susfs_umount_mode_detach">Ayrı Bağlamayı Kaldır (1)</string>
|
||||
<string name="susfs_umount_mode_detach_short">Ayrı</string>
|
||||
<string name="susfs_umount_mode_display">Mod: %1$s (%2$s)</string>
|
||||
<string name="susfs_try_umount_added_success">Bağlamayı kaldırmayı dene yolu başarıyla eklendi: %s</string>
|
||||
<string name="susfs_try_umount_added_saved">Bağlamayı kaldırmayı dene yolu kaydetme başarılı: %s</string>
|
||||
<!-- SuSFS Run Umount -->
|
||||
<string name="susfs_run_umount_confirm_title">Bağlamayı Kaldırmayı Dene Çalıştırmayı Onayla</string>
|
||||
<string name="susfs_run_umount_confirm_message">Bu, yapılandırılmış tüm bağlamayı kaldırmayı dene işlemlerini hemen çalıştıracaktır. Devam etmek istiyor musunuz?</string>
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<string name="susfs_reset_paths_title">SUS Yollarını Sıfırla</string>
|
||||
<string name="susfs_reset_paths_message">Bu, tüm SUS yol yapılandırmalarını temizleyecektir. Devam etmek istiyor musunuz?</string>
|
||||
<string name="susfs_reset_mounts_title">SUS Bağlama Noktalarını Sıfırla</string>
|
||||
<string name="susfs_reset_mounts_message">Bu, tüm SUS bağlama noktası yapılandırmalarını temizleyecektir. Devam etmek istiyor musunuz?</string>
|
||||
<string name="susfs_reset_umounts_title">Bağlamayı Kaldırmayı Dene Sıfırla</string>
|
||||
<string name="susfs_reset_umounts_message">Bu, tüm bağlamayı kaldırmayı dene yapılandırmalarını temizleyecektir. Devam etmek istiyor musunuz?</string>
|
||||
<!-- SuSFS Path Settings -->
|
||||
<string name="susfs_android_data_path_label">Android Veri Yolu</string>
|
||||
<string name="susfs_sdcard_path_label">SD Kart Yolu</string>
|
||||
<string name="susfs_set_android_data_path">Android Veri Yolunu Ayarlayın</string>
|
||||
<string name="susfs_set_sdcard_path">SD Kart Yolunu Ayarlayın</string>
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<string name="susfs_enabled_features_description">Mevcut SuSFS etkinleştirilen özellikler durumunu göster</string>
|
||||
<string name="susfs_no_features_found">Özellik durumu bilgisi bulunamadı</string>
|
||||
<string name="susfs_feature_enabled">Etkinleştirildi</string>
|
||||
<string name="susfs_feature_disabled">Devre Dışı Bırakıldı</string>
|
||||
<!-- Feature Labels -->
|
||||
<string name="sus_path_feature_label">SUS Yol Desteği</string>
|
||||
<string name="sus_mount_feature_label">SUS Bağlama Noktası Desteği</string>
|
||||
<string name="try_umount_feature_label">Bağlamayı Kaldırmayı Dene Desteği</string>
|
||||
<string name="spoof_uname_feature_label">Uname Taklit Desteği</string>
|
||||
<string name="spoof_cmdline_feature_label">Cmdline/Bootconfig Taklit</string>
|
||||
<string name="open_redirect_feature_label">Açık Yönlendirme Desteği</string>
|
||||
<string name="enable_log_feature_label">Günlük Kaydı Desteği</string>
|
||||
<string name="auto_default_mount_feature_label">Otomatik Varsayılan Bağlama</string>
|
||||
<string name="auto_bind_mount_feature_label">Otomatik Bağlama Noktası Bağlama</string>
|
||||
<string name="auto_try_umount_bind_feature_label">Otomatik Bağlamayı Kaldırmayı Dene Bağlama</string>
|
||||
<string name="hide_symbols_feature_label">KSU SUSFS Sembollerini Gizle</string>
|
||||
<string name="magic_mount_feature_label">Magic Mount Desteği</string>
|
||||
<string name="sus_kstat_feature_label">SUS Kstat Desteği</string>
|
||||
<string name="sus_su_feature_label">SUS SU mod değiştirme işlevi</string>
|
||||
<!-- 可切换状态 -->
|
||||
<string name="susfs_feature_configurable">Yapılandırılabilir SuSFS Özellikleri</string>
|
||||
<string name="susfs_enable_log_label">SuSFS Günlük Kaydını Etkinleştir</string>
|
||||
<string name="susfs_log_config_description">SuSFS için günlük kaydını etkinleştir veya devre dışı bırak</string>
|
||||
<string name="susfs_log_config_title">SuSFS Günlük Kaydı Yapılandırması</string>
|
||||
<string name="susfs_log_enabled">SuSFS Günlük Kaydı Etkinleştiriliyor</string>
|
||||
<string name="susfs_log_disabled">SuSFS günlük kaydını kapat</string>
|
||||
<string name="module_update_json">Güncelleme JSON</string>
|
||||
<string name="module_update_json_copied">Güncelleme JSON URL\'si panoya kopyalandı</string>
|
||||
<!-- Settings related strings -->
|
||||
<string name="show_more_module_info">Daha Fazla Modül Bilgisi Göster</string>
|
||||
<string name="show_more_module_info_summary">Güncelleme JSON URL\'leri gibi ek modül bilgilerini göster</string>
|
||||
<!-- SuSFS 自启动相关字符串 -->
|
||||
<!-- SuSFS Kstat相关字符串 -->
|
||||
<!-- SuSFS Mount Hiding Control Related Strings -->
|
||||
<!-- 备份和还原相关字符串 -->
|
||||
</resources>
|
||||
|
||||
@@ -1,20 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name" translatable="false">SukiSU Ultra</string>
|
||||
<string name="home">Головна</string>
|
||||
<string name="home_not_installed">Не встановлено</string>
|
||||
<string name="home_click_to_install">Натисніть щоб встановити</string>
|
||||
<string name="home_click_to_install">Натисніть, щоб встановити</string>
|
||||
<string name="home_working">Працює</string>
|
||||
<string name="home_working_version">Версія: %d</string>
|
||||
<string name="home_superuser_count">Суперкористувачі: %d</string>
|
||||
<string name="home_module_count">Модулі: %d</string>
|
||||
<string name="home_working_version">Версія: %s</string>
|
||||
<string name="home_unsupported">Не підтримується</string>
|
||||
<string name="home_unsupported_reason">KernelSU підтримує лише GKI ядра на данний момент</string>
|
||||
<string name="home_kernel">Ядро</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS Version</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_unsupported_reason">Драйвер KernelSU не виявлено у вашому ядрі. Можливо, у вас неправильне ядро.</string>
|
||||
<string name="home_kernel">Версія ядра</string>
|
||||
<string name="home_susfs_version">Версія SuSFS</string>
|
||||
<string name="home_manager_version">Версія менеджера</string>
|
||||
<string name="home_fingerprint">Відбиток</string>
|
||||
<string name="home_selinux_status">Статус SELinux</string>
|
||||
<string name="selinux_status_disabled">Вимкнено</string>
|
||||
<string name="selinux_status_enforcing">Примусовий</string>
|
||||
@@ -25,351 +21,526 @@
|
||||
<string name="module_failed_to_disable">Не вдалося вимкнути модуль: %s</string>
|
||||
<string name="module_empty">Немає встановлених модулів</string>
|
||||
<string name="module">Модулі</string>
|
||||
<string name="module_sort_action_first">Sort (Action first)</string>
|
||||
<string name="module_sort_enabled_first">Sort (Enabled first)</string>
|
||||
<string name="module_sort_action_first">Сортувати (Спочатку дії)</string>
|
||||
<string name="module_sort_enabled_first">Сортувати (Спочатку ввімкнені)</string>
|
||||
<string name="uninstall">Видалити</string>
|
||||
<string name="restore">Restore</string>
|
||||
<string name="module_install">Встановити</string>
|
||||
<string name="install">Встановити</string>
|
||||
<string name="reboot">Перезавантажити</string>
|
||||
<string name="settings">Налаштування</string>
|
||||
<string name="reboot_userspace">М\'яке перезавантаження</string>
|
||||
<string name="reboot_recovery">Перезавантажити до Recovery</string>
|
||||
<string name="reboot_bootloader">Перезавантажити до Bootloader</string>
|
||||
<string name="reboot_download">Перезавантажити до Download</string>
|
||||
<string name="reboot_edl">Перезавантажити до EDL</string>
|
||||
<string name="reboot_recovery">Перезавантажити в Recovery</string>
|
||||
<string name="reboot_bootloader">Перезавантажити в Bootloader</string>
|
||||
<string name="reboot_download">Перезавантажити в режим Download</string>
|
||||
<string name="reboot_edl">Перезавантажити в режим EDL</string>
|
||||
<string name="about">Про додаток</string>
|
||||
<string name="module_uninstall_confirm">Ви впевнені, що хочете видалити модуль %s?</string>
|
||||
<string name="module_uninstall_success">%s видалено</string>
|
||||
<string name="module_uninstall_failed">Не вдалося видалити: %s</string>
|
||||
<string name="module_version">Версія</string>
|
||||
<string name="module_author">Автор</string>
|
||||
<string name="refresh">Освіжати(Оновити)</string>
|
||||
<string name="refresh">Оновити</string>
|
||||
<string name="show_system_apps">Показати системні додатки</string>
|
||||
<string name="hide_system_apps">Сховати системні додатки</string>
|
||||
<string name="send_log">Надіслати логи</string>
|
||||
<string name="safe_mode">Безпечний режим</string>
|
||||
<string name="reboot_to_apply">Перезавантажте, щоб застосувати</string>
|
||||
<string name="module_magisk_conflict">Модулі вимкнено, оскільки вони конфліктують із модулями Magisk!</string>
|
||||
<string name="home_learn_kernelsu">Дізнайтеся про KernelSU</string>
|
||||
<string name="module_magisk_conflict">Модулі недоступні через конфлікт з Magisk!</string>
|
||||
<string name="home_learn_kernelsu">Дізнатися про KernelSU</string>
|
||||
<string name="home_learn_kernelsu_url">https://kernelsu.org/guide/what-is-kernelsu.html</string>
|
||||
<string name="home_click_to_learn_kernelsu">Дізнайтеся, як інсталювати KernelSU і використовувати модулі</string>
|
||||
<string name="home_click_to_learn_kernelsu">Дізнайтеся, як встановити KernelSU та використовувати модулі</string>
|
||||
<string name="home_support_title">Підтримати нас</string>
|
||||
<string name="home_support_content">KernelSU є, і завжди буде безкоштовним та з відкритим кодом. Однак, якщо вам не байдуже, можете зробити невеличке пожертвування.</string>
|
||||
<string name="about_source_code"><![CDATA[View source code at %1$s<br/>Join our %2$s channel]]></string>
|
||||
<string name="profile_default">Типовий</string>
|
||||
<string name="home_support_content">KernelSU є, і завжди буде, безкоштовним та з відкритим вихідним кодом. Однак ви можете показати нам свою підтримку, зробивши пожертву.</string>
|
||||
<string name="about_source_code"><![CDATA[Переглянути вихідний код на %1$s<br/>Приєднуйтесь до нашого каналу %2$s]]></string>
|
||||
<string name="profile" translatable="false">Профіль додатку</string>
|
||||
<string name="profile_default">За замовчуванням</string>
|
||||
<string name="profile_template">Шаблон</string>
|
||||
<string name="profile_custom">Власний</string>
|
||||
<string name="profile_name">Назва профілю</string>
|
||||
<string name="profile_namespace">Змонтувати простір імен</string>
|
||||
<string name="profile_namespace_inherited">Наслідуваний</string>
|
||||
<string name="profile_namespace_global">Глобальний</string>
|
||||
<string name="profile_namespace_individual">Індивідуальний</string>
|
||||
<string name="profile_groups">Групи</string>
|
||||
<string name="profile_capabilities">Можливості</string>
|
||||
<string name="profile_selinux_context">Контекст SELinux</string>
|
||||
<string name="profile_umount_modules">Розмонтувати модулі</string>
|
||||
<string name="failed_to_update_app_profile">Не вдалося оновити профіль додатка для %s</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %d is too low for the manager to work properly. Please upgrade to version %d or higher!</string>
|
||||
<string name="settings_umount_modules_default">Розмонтувати модулі за замовчуванням</string>
|
||||
<string name="settings_umount_modules_default_summary">Загальне значення за замовчуванням для \"Розмонтувати модулі\" у профілях додатків. Якщо ввімкнено, буде видалено всі модифікації модулів у системі для додатків, які не мають встановленого профілю.</string>
|
||||
<string name="settings_susfs_toggle">Disable kprobe hooks</string>
|
||||
<string name="profile_umount_modules_summary">Увімкнення даної опції дозволить KernelSU відновити для цього додатка будь-які файли, змінені модулями.</string>
|
||||
<string name="profile_umount_modules">Відмонтувати модулі</string>
|
||||
<string name="failed_to_update_app_profile">Не вдалося оновити профіль додатку для %s</string>
|
||||
<string name="require_kernel_version" formatted="false">Поточна версія KernelSU %s занадто низька для коректної роботи менеджера. Будь ласка, оновіться до версії %s або вище!</string>
|
||||
<string name="settings_umount_modules_default">Відмонтовувати модулі за замовчуванням</string>
|
||||
<string name="settings_umount_modules_default_summary">Глобальне значення за замовчуванням для "Відмонтувати модулі" у профілі додатку. Якщо ввімкнено, це видалить усі зміни системи, зроблені модулями, для додатків без встановленого профілю.</string>
|
||||
<string name="settings_susfs_toggle">Вимкнути хуки kprobe</string>
|
||||
<string name="profile_umount_modules_summary">Увімкнення цієї опції дозволить KernelSU відновити будь-які змінені модулями файли для цього додатку.</string>
|
||||
<string name="profile_selinux_domain">Домен</string>
|
||||
<string name="profile_selinux_rules">Правила</string>
|
||||
<string name="module_update">Оновити</string>
|
||||
<string name="module_downloading">Завантаження модуля: %s</string>
|
||||
<string name="module_start_downloading">Початок завантаження: %s</string>
|
||||
<string name="new_version_available">Нова версія: %s доступна, натисніть, щоб завантажити</string>
|
||||
<string name="new_version_available">Доступна нова версія %s, натисніть для оновлення.</string>
|
||||
<string name="launch_app">Запустити</string>
|
||||
<string name="force_stop_app" formatted="false">Примусово зупинити</string>
|
||||
<string name="restart_app">Перезапустити</string>
|
||||
<string name="failed_to_update_sepolicy">Не вдалося оновити правила SELinux для: %s</string>
|
||||
<string name="module_changelog">Журнал змін</string>
|
||||
<string name="settings_profile_template">Шаблон Профілю Додатку</string>
|
||||
<string name="settings_profile_template_summary">Керувати локальними та мережевими шаблонами профілів додатків</string>
|
||||
<string name="failed_to_update_sepolicy">Не вдалося оновити правила SELinux для %s</string>
|
||||
<string name="module_changelog">Список змін</string>
|
||||
<string name="settings_profile_template">Шаблон профілю додатку</string>
|
||||
<string name="settings_profile_template_summary">Керування локальними та онлайн-шаблонами профілю додатку</string>
|
||||
<string name="app_profile_template_create">Створити шаблон</string>
|
||||
<string name="app_profile_template_edit">Редагувати шаблон</string>
|
||||
<string name="app_profile_template_id">Ідентифікатор</string>
|
||||
<string name="app_profile_template_id_invalid">Невірний ідентифікатор шаблону</string>
|
||||
<string name="app_profile_template_name">Ім\'я</string>
|
||||
<string name="app_profile_template_id">ID</string>
|
||||
<string name="app_profile_template_id_invalid">Недійсний ID шаблону</string>
|
||||
<string name="app_profile_template_name">Назва</string>
|
||||
<string name="app_profile_template_description">Опис</string>
|
||||
<string name="app_profile_template_save">Зберегти</string>
|
||||
<string name="app_profile_template_delete">Видалити</string>
|
||||
<string name="app_profile_template_view">Переглянути шаблон</string>
|
||||
<string name="app_profile_template_readonly">Тільки читання</string>
|
||||
<string name="app_profile_template_id_exist">Шаблон з таким ідентифікатором вже існує!</string>
|
||||
<string name="app_profile_template_readonly">Тільки для читання</string>
|
||||
<string name="app_profile_template_id_exist">ID шаблону вже існує!</string>
|
||||
<string name="app_profile_import_export">Імпорт/Експорт</string>
|
||||
<string name="app_profile_import_from_clipboard">Імпортувати з буферу обміну</string>
|
||||
<string name="app_profile_import_from_clipboard">Імпортувати з буфера обміну</string>
|
||||
<string name="app_profile_export_to_clipboard">Експортувати в буфер обміну</string>
|
||||
<string name="app_profile_template_export_empty">Неможливо знайти локальні шаблони для експорту!</string>
|
||||
<string name="app_profile_template_import_success">Успішно імпортовано</string>
|
||||
<string name="app_profile_template_sync">Синхронізувати мережеві шаблони</string>
|
||||
<string name="app_profile_template_save_failed">Помилка при збереженні шаблону</string>
|
||||
<string name="app_profile_template_import_empty">Буфер обміну пустий!</string>
|
||||
<string name="module_changelog_failed">Невдача при завантаженні списку змін: %s</string>
|
||||
<string name="settings_check_update">Перевірка оновлень</string>
|
||||
<string name="settings_check_update_summary">Автоматична перевірка оновлень під час відкриття програми</string>
|
||||
<string name="grant_root_failed">Не вдалося отримати root!</string>
|
||||
<string name="action">Action</string>
|
||||
<string name="open">Відкрити</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="app_profile_template_export_empty">Не знайдено локальних шаблонів для експорту!</string>
|
||||
<string name="app_profile_template_import_success">Імпортовано успішно</string>
|
||||
<string name="app_profile_template_sync">Синхронізувати онлайн-шаблони</string>
|
||||
<string name="app_profile_template_save_failed">Не вдалося зберегти шаблон</string>
|
||||
<string name="app_profile_template_import_empty">Буфер обміну порожній!</string>
|
||||
<string name="module_changelog_failed">Не вдалося завантажити список змін: %s</string>
|
||||
<string name="settings_check_update">Перевіряти оновлення</string>
|
||||
<string name="settings_check_update_summary">Автоматично перевіряти оновлення при відкритті додатку</string>
|
||||
<string name="grant_root_failed">Не вдалося надати root-права!</string>
|
||||
<string name="action">Дія</string>
|
||||
<string name="close">Закрити</string>
|
||||
<string name="enable_web_debugging">Увімкнути налагодження WebView</string>
|
||||
<string name="enable_web_debugging_summary">Використовується для налагодження WebUI. Будь ласка, вмикайте тільки за потреби.</string>
|
||||
<string name="enable_web_debugging_summary">Можна використовувати для налагодження WebUI. Будь ласка, вмикайте лише за потреби.</string>
|
||||
<string name="direct_install">Пряме встановлення (рекомендовано)</string>
|
||||
<string name="select_file">Виберіть файл</string>
|
||||
<string name="install_inactive_slot">Встановлення в неактивний слот (Після OTA)</string>
|
||||
<string name="install_inactive_slot_warning">Ваш пристрій буде **ПРИМУСОВО** завантажено в поточний неактивний слот після перезавантаження!
|
||||
\n Використовуйте цю опцію тільки після завершення OTA.
|
||||
\n Продовжити?</string>
|
||||
<string name="select_file">Виберіть образ для патчу</string>
|
||||
<string name="install_inactive_slot">Встановити в неактивний слот (після OTA)</string>
|
||||
<string name="install_inactive_slot_warning">Ваш пристрій буде **ПРИМУСОВО** завантажено в поточний неактивний слот після перезавантаження!\nВикористовуйте цю опцію лише після завершення OTA.\nПродовжити?</string>
|
||||
<string name="install_next">Далі</string>
|
||||
<string name="select_file_tip">%1$s образ розділу рекомендується</string>
|
||||
<string name="select_kmi">Виберіть KMI</string>
|
||||
<string name="select_file_tip">Рекомендується образ розділу %1$s</string>
|
||||
<string name="select_file_tip_vendor">(нестабільно)</string>
|
||||
<string name="select_kmi">Вибрати KMI</string>
|
||||
<string name="settings_uninstall">Видалити</string>
|
||||
<string name="settings_uninstall_temporary">Тимчасово видалити</string>
|
||||
<string name="settings_uninstall_permanent">Назавжди видалити</string>
|
||||
<string name="settings_restore_stock_image">Відновити Стоковий образ</string>
|
||||
<string name="settings_uninstall_temporary_message">Тимчасово видалити KernelSU, відновити початковий стан після наступного перезавантаження.</string>
|
||||
<string name="settings_uninstall_permanent_message">Видалити KernelSU (Root і всі модулі) повністю і назавжди.</string>
|
||||
<string name="settings_restore_stock_image_message">Відновити стоковий заводський образ (якщо є резервна копія), зазвичай використовується перед OTA; якщо вам потрібно видалити KernelSU, використовуйте \"Назавжди видалити\".</string>
|
||||
<string name="settings_uninstall_permanent">Видалити назавжди</string>
|
||||
<string name="settings_restore_stock_image">Відновити стоковий образ</string>
|
||||
<string name="settings_uninstall_temporary_message">Тимчасово видалити KernelSU, відновлення до початкового стану після наступного перезавантаження.</string>
|
||||
<string name="settings_uninstall_permanent_message">Повне та остаточне видалення KernelSU (Root та всі модулі).</string>
|
||||
<string name="settings_restore_stock_image_message">Відновити стоковий заводський образ (якщо існує резервна копія), зазвичай використовується перед OTA; якщо потрібно видалити KernelSU, використовуйте "Видалити назавжди".</string>
|
||||
<string name="flashing">Прошивка</string>
|
||||
<string name="flash_success">Прошивку виконано</string>
|
||||
<string name="flash_failed">Прошивка не виконана</string>
|
||||
<string name="selected_lkm">Обрано lkm: %s</string>
|
||||
<string name="save_log">Зберегти Журнали</string>
|
||||
<string name="log_saved">Logs saved</string>
|
||||
<string name="status_supported">Supported</string>
|
||||
<string name="status_not_supported">Not Supported</string>
|
||||
<string name="status_unknown">Unknown</string>
|
||||
<string name="sus_su_mode">SuS SU mode:</string>
|
||||
<string name="flash_success">Прошивка успішна</string>
|
||||
<string name="flash_failed">Прошивка не вдалася</string>
|
||||
<string name="selected_lkm">Обраний LKM: %s</string>
|
||||
<string name="save_log">Зберегти логи</string>
|
||||
<string name="log_saved">Логи збережено</string>
|
||||
<string name="sus_su_mode">Режим SuS SU:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">confirm install module %1$s?</string>
|
||||
<string name="unknown_module">unknown module</string>
|
||||
<string name="module_install_confirm">Підтвердити встановлення модуля %1$s?</string>
|
||||
<string name="unknown_module">невідомий модуль</string>
|
||||
<!-- Restore related -->
|
||||
<string name="restore_confirm_title">Confirm Module Restoration</string>
|
||||
<string name="restore_confirm_message">This operation will overwrite all existing modules. Continue?</string>
|
||||
<string name="confirm">Confirm</string>
|
||||
<string name="cancel">Cancel</string>
|
||||
<string name="restore_confirm_title">Підтвердити відновлення модулів</string>
|
||||
<string name="restore_confirm_message">Ця операція перезапише всі існуючі модулі. Продовжити?</string>
|
||||
<string name="confirm">Підтвердити</string>
|
||||
<string name="cancel">Скасувати</string>
|
||||
<!-- Backup related -->
|
||||
<string name="backup_success">Backup successful (tar.gz)</string>
|
||||
<string name="backup_failed">Backup failed: %1$s</string>
|
||||
<string name="backup_modules">backup modules</string>
|
||||
<string name="restore_modules">restore modules</string>
|
||||
<string name="backup_success">Резервне копіювання успішне (tar.gz)</string>
|
||||
<string name="backup_failed">Не вдалося створити резервну копію: %1$s</string>
|
||||
<string name="backup_modules">резервне копіювання модулів</string>
|
||||
<string name="restore_modules">відновлення модулів</string>
|
||||
<!-- Restore related messages -->
|
||||
<string name="restore_success">Modules restored successfully, restart required</string>
|
||||
<string name="restore_failed">Restore failed: %1$s</string>
|
||||
<string name="restart_now">Restart Now</string>
|
||||
<string name="unknown_error">Unknown error</string>
|
||||
<string name="restore_success">Модулі успішно відновлено, потрібне перезавантаження</string>
|
||||
<string name="restore_failed">Не вдалося відновити: %1$s</string>
|
||||
<string name="restart_now">Перезавантажити зараз</string>
|
||||
<string name="unknown_error">Невідома помилка</string>
|
||||
<!-- Command related -->
|
||||
<string name="command_execution_failed">Command execution failed: %1$s</string>
|
||||
<string name="command_execution_failed">Не вдалося виконати команду: %1$s</string>
|
||||
<!-- Allowlist related -->
|
||||
<string name="allowlist_backup_success">Allowlist backup successful</string>
|
||||
<string name="allowlist_backup_failed">Allowlist backup failed: %1$s</string>
|
||||
<string name="allowlist_restore_confirm_title">Confirm Allowlist Restoration</string>
|
||||
<string name="allowlist_restore_confirm_message">This operation will overwrite the current allowlist. Continue?</string>
|
||||
<string name="allowlist_restore_success">Allowlist restored successfully</string>
|
||||
<string name="allowlist_restore_failed">Allowlist restore failed: %1$s</string>
|
||||
<string name="backup_allowlist">Backup Allowlist</string>
|
||||
<string name="restore_allowlist">Restore Allowlist</string>
|
||||
<string name="settings_custom_background">Custom App Background</string>
|
||||
<string name="settings_custom_background_summary">Select an image as background</string>
|
||||
<string name="settings_card_alpha">Navigation bar transparency</string>
|
||||
<string name="settings_restore_default">Restore default</string>
|
||||
<string name="home_android_version">Android version</string>
|
||||
<string name="home_device_model">Device model</string>
|
||||
<string name="su_not_allowed">Granting superuser to %s is not allowed</string>
|
||||
<string name="settings_disable_su">Disable su compatibility</string>
|
||||
<string name="settings_disable_su_summary">Temporarily disable any applications from obtaining root privileges via the su command (existing root processes will not be affected).</string>
|
||||
<string name="using_mksu_manager">You are using the SukiSU Beta manager</string>
|
||||
<string name="module_install_multiple_confirm">Are you sure you want to install the selected %d modules?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Sure you want to install the following %1$d modules? \n\n%2$s</string>
|
||||
<string name="more_settings">More settings</string>
|
||||
<string name="allowlist_backup_success">Резервне копіювання білого списку успішне</string>
|
||||
<string name="allowlist_backup_failed">Не вдалося створити резервну копію білого списку: %1$s</string>
|
||||
<string name="allowlist_restore_confirm_title">Підтвердити відновлення білого списку</string>
|
||||
<string name="allowlist_restore_confirm_message">Ця операція перезапише поточний білий список. Продовжити?</string>
|
||||
<string name="allowlist_restore_success">Білий список успішно відновлено</string>
|
||||
<string name="allowlist_restore_failed">Не вдалося відновити білий список: %1$s</string>
|
||||
<string name="backup_allowlist">Резервна копія білого списку</string>
|
||||
<string name="restore_allowlist">Відновити білий список</string>
|
||||
<string name="settings_custom_background">Власний фон додатку</string>
|
||||
<string name="settings_custom_background_summary">Вибрати зображення як фон</string>
|
||||
<string name="settings_card_alpha">Прозорість панелі навігації</string>
|
||||
<string name="home_android_version">Версія Android</string>
|
||||
<string name="home_device_model">Модель пристрою</string>
|
||||
<string name="su_not_allowed">Надання прав суперкористувача для %s заборонено</string>
|
||||
<string name="settings_disable_su">Вимкнути сумісність з su</string>
|
||||
<string name="settings_disable_su_summary">Тимчасово заборонити будь-яким додаткам отримувати root-права через команду su (існуючі root-процеси не будуть зачеплені).</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Ви впевнені, що хочете встановити наступні %1$d модулі? \n\n%2$s</string>
|
||||
<string name="more_settings">Більше налаштувань</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
<string name="selinux_enabled">Enabled</string>
|
||||
<string name="selinux_disabled">Disabled</string>
|
||||
<string name="simple_mode">Simplicity mode</string>
|
||||
<string name="simple_mode_summary">Hides unnecessary cards when turned on</string>
|
||||
<string name="hide_kernel_kernelsu_version">Hide kernel version</string>
|
||||
<string name="hide_kernel_kernelsu_version_summary">Hide kernel version</string>
|
||||
<string name="hide_other_info">Hide other info</string>
|
||||
<string name="hide_other_info_summary">Hides information about the number of super users, modules and KPM modules on the home page</string>
|
||||
<string name="hide_susfs_status">Hide SuSFS status</string>
|
||||
<string name="hide_susfs_status_summary">Hide SuSFS status information on the home page</string>
|
||||
<string name="hide_link_card">Hide Link Card Status</string>
|
||||
<string name="hide_link_card_summary">Hide link card information on the home page</string>
|
||||
<string name="theme_mode">Theme</string>
|
||||
<string name="theme_follow_system">Follow system</string>
|
||||
<string name="theme_light">Light</string>
|
||||
<string name="theme_dark">Dark</string>
|
||||
<string name="manual_hook">Manual Hook</string>
|
||||
<string name="dynamic_color_title">Dynamic colours</string>
|
||||
<string name="dynamic_color_summary">Dynamic colours using system themes</string>
|
||||
<string name="choose_theme_color">Choose a theme colour</string>
|
||||
<string name="color_default">Blue</string>
|
||||
<string name="color_green">Green</string>
|
||||
<string name="color_purple">Purple</string>
|
||||
<string name="color_orange">Orange</string>
|
||||
<string name="color_pink">Pink</string>
|
||||
<string name="color_gray">Gray</string>
|
||||
<string name="color_yellow">Yellow</string>
|
||||
<string name="flash_option">Brush Options</string>
|
||||
<string name="flash_option_tip">Select the file to be flashed</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash AnyKernel3 kernel file</string>
|
||||
<string name="root_required">Requires root privileges</string>
|
||||
<string name="copy_failed">File Copy Failure</string>
|
||||
<string name="reboot_complete_title">Scrubbing complete</string>
|
||||
<string name="reboot_complete_msg">Whether to reboot immediately?</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="failed_reboot">Reboot Failed</string>
|
||||
<string name="batch_authorization">empower</string>
|
||||
<string name="batch_cancel_authorization">withdraw</string>
|
||||
<string name="backup">Backup</string>
|
||||
<string name="selinux_enabled">Увімкнено</string>
|
||||
<string name="selinux_disabled">Вимкнено</string>
|
||||
<string name="simple_mode">Спрощений режим</string>
|
||||
<string name="simple_mode_summary">Приховує непотрібні картки при ввімкненні</string>
|
||||
<string name="hide_kernel_kernelsu_version">Приховати версію ядра</string>
|
||||
<string name="hide_kernel_kernelsu_version_summary">Приховує версію ядра</string>
|
||||
<string name="hide_other_info">Приховати іншу інформацію</string>
|
||||
<string name="hide_other_info_summary">Приховує червону крапку про кількість суперкористувачів, модулів та KPM-модулів на сторінці навігаційної панелі</string>
|
||||
<string name="hide_susfs_status">Приховати статус SuSFS</string>
|
||||
<string name="hide_susfs_status_summary">Приховує інформацію про статус SuSFS на головній сторінці</string>
|
||||
<string name="hide_link_card">Приховати картку посилань</string>
|
||||
<string name="hide_link_card_summary">Приховує інформацію на картці посилань на головній сторінці</string>
|
||||
<string name="hide_tag_card">Приховати рядки тегів модуля</string>
|
||||
<string name="hide_tag_card_summary">Приховує мітки з назвою папки та розміром у картках модулів</string>
|
||||
<string name="theme_mode">Тема</string>
|
||||
<string name="theme_follow_system">Як у системі</string>
|
||||
<string name="theme_light">Світла</string>
|
||||
<string name="theme_dark">Темна</string>
|
||||
<string name="manual_hook">Ручний хук</string>
|
||||
<string name="dynamic_color_title">Динамічні кольори</string>
|
||||
<string name="dynamic_color_summary">Динамічні кольори з використанням системних тем</string>
|
||||
<string name="choose_theme_color">Вибрати колір теми</string>
|
||||
<string name="color_default">Синій</string>
|
||||
<string name="color_green">Зелений</string>
|
||||
<string name="color_purple">Фіолетовий</string>
|
||||
<string name="color_orange">Помаранчевий</string>
|
||||
<string name="color_pink">Рожевий</string>
|
||||
<string name="color_gray">Сірий</string>
|
||||
<string name="color_yellow">Жовтий</string>
|
||||
<string name="horizon_kernel">Встановити Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Прошити файл ядра AnyKernel3</string>
|
||||
<string name="root_required">Потрібні права суперкористувача</string>
|
||||
<string name="reboot_complete_title">Очищення завершено</string>
|
||||
<string name="reboot_complete_msg">Перезавантажитися негайно?</string>
|
||||
<string name="yes">Так</string>
|
||||
<string name="no">Ні</string>
|
||||
<string name="failed_reboot">Не вдалося перезавантажити</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">No installed kernel modules at this time</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
<string name="kpm_author">Author</string>
|
||||
<string name="kpm_uninstall">Uninstall</string>
|
||||
<string name="kpm_uninstall_success">Uninstalled successfully</string>
|
||||
<string name="kpm_uninstall_failed">Failed to uninstall</string>
|
||||
<string name="kpm_install">Install</string>
|
||||
<string name="kpm_install_success">Load of kpm module successful</string>
|
||||
<string name="kpm_install_failed">Load of kpm module failed</string>
|
||||
<string name="kpm_args">Parameters</string>
|
||||
<string name="kpm_control">Execute</string>
|
||||
<string name="home_kpm_version">KPM Version</string>
|
||||
<string name="close_notice">Close</string>
|
||||
<string name="kernel_module_notice">The following kernel module functions were developed by KernelPatch and modified to include the kernel module functions of SukiSU Ultra</string>
|
||||
<string name="home_ContributionCard_kernelsu">SukiSU Ultra Look forward to</string>
|
||||
<string name="kpm_control_success">Success</string>
|
||||
<string name="kpm_control_failed">Failed</string>
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra will be a relatively independent branch of KSU in the future, but we still appreciate the official KernelSU and MKSU etc. for their contributions!</string>
|
||||
<string name="not_supported">Unsupported</string>
|
||||
<string name="supported">Supported</string>
|
||||
<string name="home_kpm_module">"Number of KPMs: %d "</string>
|
||||
<string name="kpm_invalid_file">Invalid KPM file</string>
|
||||
<string name="kernel_patched">Kernel not patched</string>
|
||||
<string name="kernel_not_enabled">Kernel not configured</string>
|
||||
<string name="custom_settings">Custom settings</string>
|
||||
<string name="kpm_install_mode">KPM Install</string>
|
||||
<string name="kpm_install_mode_load">Load</string>
|
||||
<string name="kpm_install_mode_embed">Embed</string>
|
||||
<string name="kpm_install_mode_description">Please select: %1\$s Module Installation Mode \n\nLoad: Temporarily load the module \nEmbedded: Permanently install into the system</string>
|
||||
<string name="log_failed_to_check_module_file">Failed to check module file existence</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Unable to check if module file exists</string>
|
||||
<string name="confirm_uninstall_title">Confirm uninstallation</string>
|
||||
<string name="confirm_uninstall_confirm">Uninstall</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancel</string>
|
||||
<string name="theme_color">Theme Color</string>
|
||||
<string name="invalid_file_type">Incorrect file type! Please select .kpm file.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Uninstall</string>
|
||||
<string name="confirm_uninstall_content">The following KPM will be uninstalled: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Disable kprobe hooks created by KernelSU, using inline hooks instead, which is similar to non-GKI kernel hooking method.</string>
|
||||
<string name="image_editor_title">Adjust background image</string>
|
||||
<string name="image_editor_hint">Use two fingers to zoom the image, and one finger to drag it to adjust the position</string>
|
||||
<string name="background_image_error">Could not load image</string>
|
||||
<string name="reprovision">Reprovision</string>
|
||||
<string name="kpm_empty">На даний момент немає встановлених модулів ядра</string>
|
||||
<string name="kpm_version">Версія</string>
|
||||
<string name="kpm_author">Автор</string>
|
||||
<string name="kpm_uninstall">Видалити</string>
|
||||
<string name="kpm_uninstall_success">Видалено успішно</string>
|
||||
<string name="kpm_uninstall_failed">Не вдалося видалити</string>
|
||||
<string name="kpm_install_success">Завантаження модуля kpm успішне</string>
|
||||
<string name="kpm_install_failed">Не вдалося завантажити модуль kpm</string>
|
||||
<string name="kpm_args">Параметри</string>
|
||||
<string name="kpm_control">Виконати</string>
|
||||
<string name="home_kpm_version">Версія KPM</string>
|
||||
<string name="close_notice">Закрити</string>
|
||||
<string name="kernel_module_notice">Наступні функції модулів ядра були розроблені KernelPatch та модифіковані для включення функцій модулів ядра SukiSU Ultra</string>
|
||||
<string name="home_ContributionCard_kernelsu">SukiSU Ultra з нетерпінням чекає</string>
|
||||
<string name="kpm_control_success">Успішно</string>
|
||||
<string name="kpm_control_failed">Невдача</string>
|
||||
<string name="home_click_to_ContributionCard_kernelsu">У майбутньому SukiSU Ultra буде відносно незалежною гілкою KSU, але ми все ще вдячні офіційному KernelSU, MKSU та іншим за їхній внесок!</string>
|
||||
<string name="not_supported">Не підтримується</string>
|
||||
<string name="supported">Підтримується</string>
|
||||
<string name="kernel_patched">Ядро не пропатчене</string>
|
||||
<string name="kernel_not_enabled">Ядро не налаштоване</string>
|
||||
<string name="custom_settings">Власні налаштування</string>
|
||||
<string name="kpm_install_mode">Встановлення KPM</string>
|
||||
<string name="kpm_install_mode_load">Завантажити</string>
|
||||
<string name="kpm_install_mode_embed">Вбудувати</string>
|
||||
<string name="kpm_install_mode_description">Будь ласка, оберіть: %1$s режим встановлення модуля \n\nЗавантажити: Тимчасово завантажити модуль \nВбудувати: Постійно встановити в систему</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Не вдалося перевірити існування файлу модуля</string>
|
||||
<string name="theme_color">Колір теми</string>
|
||||
<string name="invalid_file_type">Неправильний тип файлу! Будь ласка, виберіть файл .kpm.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Видалити</string>
|
||||
<string name="confirm_uninstall_content">Буде видалено наступний KPM: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Вимкнути хуки kprobe, створені KernelSU, використовуючи натомість інлайн-хуки, що схоже на метод хуків для ядер без GKI.</string>
|
||||
<string name="image_editor_hint">Використовуйте два пальці для масштабування зображення та один палець для перетягування, щоб налаштувати положення</string>
|
||||
<string name="reprovision">Переналаштувати</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
<string name="horizon_logs_label">Logs:</string>
|
||||
<string name="horizon_flash_complete">Flash Complete</string>
|
||||
<string name="horizon_flash_title">Прошивка ядра</string>
|
||||
<string name="horizon_logs_label">Логи:</string>
|
||||
<string name="horizon_flash_complete">Прошивка завершена</string>
|
||||
<!-- Flash Status Related -->
|
||||
<string name="horizon_preparing">Preparing…</string>
|
||||
<string name="horizon_cleaning_files">Cleaning files…</string>
|
||||
<string name="horizon_copying_files">Copying files…</string>
|
||||
<string name="horizon_extracting_tool">Extracting flash tool…</string>
|
||||
<string name="horizon_patching_script">Patching flash script…</string>
|
||||
<string name="horizon_flashing">Flashing kernel…</string>
|
||||
<string name="horizon_flash_complete_status">Flash completed</string>
|
||||
<string name="horizon_preparing">Підготовка…</string>
|
||||
<string name="horizon_cleaning_files">Очищення файлів…</string>
|
||||
<string name="horizon_copying_files">Копіювання файлів…</string>
|
||||
<string name="horizon_extracting_tool">Розпакування інструменту прошивки…</string>
|
||||
<string name="horizon_patching_script">Патчинг скрипту прошивки…</string>
|
||||
<string name="horizon_flashing">Прошивка ядра…</string>
|
||||
<string name="horizon_flash_complete_status">Прошивка завершена</string>
|
||||
<!-- Slot selection related strings -->
|
||||
<string name="select_slot_title">Select Flash Slot</string>
|
||||
<string name="select_slot_description">Please select the target slot for flashing boot</string>
|
||||
<string name="slot_a">Slot A</string>
|
||||
<string name="slot_b">Slot B</string>
|
||||
<string name="selected_slot">Selected slot: %1$s</string>
|
||||
<string name="horizon_getting_original_slot">Getting the original slot</string>
|
||||
<string name="horizon_setting_target_slot">Setting the specified slot</string>
|
||||
<string name="horizon_restoring_original_slot">Restore Default Slot</string>
|
||||
<string name="current_slot">Current Slot:%1$s </string>
|
||||
<string name="select_slot_title">Вибрати слот для прошивки</string>
|
||||
<string name="select_slot_description">Будь ласка, виберіть цільовий слот для прошивки boot</string>
|
||||
<string name="slot_a">Слот A</string>
|
||||
<string name="slot_b">Слот B</string>
|
||||
<string name="selected_slot">Вибраний слот: %1$s</string>
|
||||
<string name="horizon_getting_original_slot">Отримання оригінального слоту</string>
|
||||
<string name="horizon_setting_target_slot">Встановлення вказаного слоту</string>
|
||||
<string name="horizon_restoring_original_slot">Відновити слот за замовчуванням</string>
|
||||
<string name="current_slot">Поточний системний слот за замовчуванням: %1$s</string>
|
||||
<!-- Error Messages -->
|
||||
<string name="horizon_copy_failed">Copy failed</string>
|
||||
<string name="horizon_unknown_error">Unknown error</string>
|
||||
<string name="flash_failed_message">Flash failed</string>
|
||||
<string name="horizon_copy_failed">Не вдалося скопіювати</string>
|
||||
<string name="horizon_unknown_error">Невідома помилка</string>
|
||||
<string name="flash_failed_message">Прошивка не вдалася</string>
|
||||
<!-- lkm/gki install -->
|
||||
<string name="Lkm_install_methods">LKM repair/installation</string>
|
||||
<string name="GKI_install_methods">Flashing AnyKernel3</string>
|
||||
<string name="kernel_version_log">Kernel version:%1$s</string>
|
||||
<string name="tool_version_log">Using the patching tool:%1$s</string>
|
||||
<string name="configuration">Configure</string>
|
||||
<string name="app_settings">Application Settings</string>
|
||||
<string name="tools">Tools</string>
|
||||
<string name="Lkm_install_methods">Відновлення/встановлення LKM</string>
|
||||
<string name="GKI_install_methods">Прошивка AnyKernel3</string>
|
||||
<string name="kernel_version_log">Версія ядра: %1$s</string>
|
||||
<string name="tool_version_log">Використовується інструмент для патчингу: %1$s</string>
|
||||
<string name="configuration">Налаштувати</string>
|
||||
<string name="app_settings">Налаштування додатку</string>
|
||||
<string name="tools">Інструменти</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Removals</string>
|
||||
<string name="apps_with_root">Applications with root privileges</string>
|
||||
<string name="apps_with_custom_profile">Applications with customized configurations</string>
|
||||
<string name="other_apps">Applications with unchanged defaults</string>
|
||||
<string name="no_apps_found">Application not found</string>
|
||||
<string name="selinux_enabled_toast">SELinux Enabled</string>
|
||||
<string name="selinux_disabled_toast">SELinux Disabled</string>
|
||||
<string name="selinux_change_failed">SELinux Status change failed</string>
|
||||
<string name="advanced_settings">Advanced Settings</string>
|
||||
<string name="appearance_settings">Customize the toolbar</string>
|
||||
<string name="back">Comeback</string>
|
||||
<string name="expand">Be in full swing</string>
|
||||
<string name="collapse">put away</string>
|
||||
<string name="susfs_enabled">SuSFS enabled</string>
|
||||
<string name="susfs_disabled">SuSFS disabled</string>
|
||||
<string name="background_set_success">Background set successfully</string>
|
||||
<string name="background_removed">Removed custom backgrounds</string>
|
||||
<string name="icon_switch_title">Alternate icon</string>
|
||||
<string name="icon_switch_summary">Change the launcher icon to KernelSU\'s icon.</string>
|
||||
<string name="icon_switched">Icon switched</string>
|
||||
<string name="root_require_for_install">Requires root privileges</string>
|
||||
<string name="no_apps_found">Додаток не знайдено</string>
|
||||
<string name="selinux_enabled_toast">SELinux увімкнено</string>
|
||||
<string name="selinux_disabled_toast">SELinux вимкнено</string>
|
||||
<string name="selinux_change_failed">Не вдалося змінити статус SELinux</string>
|
||||
<string name="advanced_settings">Розширені налаштування</string>
|
||||
<string name="appearance_settings">Налаштувати панель інструментів</string>
|
||||
<string name="back">Повернутися</string>
|
||||
<string name="susfs_enabled">SuSFS увімкнено</string>
|
||||
<string name="susfs_disabled">SuSFS вимкнено</string>
|
||||
<string name="background_set_success">Фон успішно встановлено</string>
|
||||
<string name="background_removed">Видалено власні фони</string>
|
||||
<string name="icon_switch_title">Альтернативна іконка</string>
|
||||
<string name="icon_switch_summary">Змінити іконку запуску на іконку KernelSU.</string>
|
||||
<string name="icon_switched">Іконку змінено</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Display KPM Function</string>
|
||||
<string name="show_kpm_info_summary">Display KPM information and Function in home and bottom bar (Need to reopen the app)</string>
|
||||
<string name="show_kpm_info">Приховати функцію KPM</string>
|
||||
<string name="show_kpm_info_summary">Приховує інформацію та функцію KPM на головному екрані та в нижній панелі</string>
|
||||
<!-- Webui X settings -->
|
||||
<string name="use_webuix">Select the WebUI engine to use</string>
|
||||
<string name="engine_auto_select">Automatic Selection</string>
|
||||
<string name="engine_force_webuix">Force the use of WebUI X</string>
|
||||
<string name="engine_force_ksu">Mandatory use of KSU WebUI</string>
|
||||
<string name="use_webuix_eruda">Inject Eruda into WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Inject a debug console into WebUI X to make debugging easier. Requires web debugging to be on.</string>
|
||||
<string name="use_webuix">Виберіть рушій WebUI для використання</string>
|
||||
<string name="engine_auto_select">Автоматичний вибір</string>
|
||||
<string name="engine_force_webuix">Примусово використовувати WebUI X</string>
|
||||
<string name="engine_force_ksu">Примусово використовувати KSU WebUI</string>
|
||||
<string name="use_webuix_eruda">Впровадити Eruda у WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Впровадити консоль налагодження у WebUI X для полегшення налагодження. Потребує увімкненого веб-налагодження.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI setting</string>
|
||||
<string name="app_dpi_title">Applied DPI</string>
|
||||
<string name="app_dpi_summary">Adjust the screen display density for the current application only</string>
|
||||
<string name="dpi_size_small">Small </string>
|
||||
<string name="dpi_size_medium">Medium </string>
|
||||
<string name="dpi_size_large">Big</string>
|
||||
<string name="dpi_size_extra_large">oversize</string>
|
||||
<string name="dpi_size_custom">customizable</string>
|
||||
<string name="dpi_apply_settings">Applying DPI settings</string>
|
||||
<string name="dpi_confirm_title">Confirm DPI change</string>
|
||||
<string name="dpi_confirm_message">Are you sure you want to change the application DPI from %1$d to %2$d?</string>
|
||||
<string name="dpi_confirm_summary">Application needs to be restarted to apply the new DPI settings, does not affect the system status bar or other applications</string>
|
||||
<string name="dpi_applied_success">DPI has been set to %1$d, effective after restarting the application</string>
|
||||
<string name="app_dpi_title">Застосований DPI</string>
|
||||
<string name="app_dpi_summary">Налаштувати щільність відображення екрана лише для поточного додатку</string>
|
||||
<string name="dpi_size_small">Маленький</string>
|
||||
<string name="dpi_size_medium">Середній</string>
|
||||
<string name="dpi_size_large">Великий</string>
|
||||
<string name="dpi_size_extra_large">Надвеликий</string>
|
||||
<string name="dpi_size_custom">Власний</string>
|
||||
<string name="dpi_apply_settings">Застосування налаштувань DPI</string>
|
||||
<string name="dpi_confirm_title">Підтвердити зміну DPI</string>
|
||||
<string name="dpi_confirm_message">Ви впевнені, що хочете змінити DPI додатку з %1$d на %2$d?</string>
|
||||
<string name="dpi_confirm_summary">Додаток потрібно перезапустити, щоб застосувати нові налаштування DPI; це не вплине на системний рядок стану або інші додатки</string>
|
||||
<string name="dpi_applied_success">DPI встановлено на %1$d, набуде чинності після перезапуску додатку</string>
|
||||
<!-- Language settings related strings -->
|
||||
<string name="language_setting">App Language</string>
|
||||
<string name="language_follow_system">Follow System</string>
|
||||
<string name="language_changed">Language changed, restarting to apply changes</string>
|
||||
<string name="settings_card_dim">Card Darkness Adjustment</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="scroll_to_top_description">Scroll to top</string>
|
||||
<string name="scroll_to_bottom_description">Scroll to the bottom</string>
|
||||
<string name="authorized">authorized</string>
|
||||
<string name="unauthorized">unauthorized</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<string name="profile_umount_modules_disable">Disable custom uninstallation module</string>
|
||||
<string name="language_setting">Мова додатку</string>
|
||||
<string name="language_follow_system">Як у системі</string>
|
||||
<string name="language_changed">Мову змінено, перезапуск для застосування змін</string>
|
||||
<string name="settings_card_dim">Налаштування затемнення карток</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">error code</string>
|
||||
<string name="check_log">Please check the log</string>
|
||||
<string name="installing_module">Module being installed %1$d/%2$d</string>
|
||||
<string name="module_failed_count">%d Failed to install a new module</string>
|
||||
<string name="module_download_error">Module download failed</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<string name="error_code">код помилки</string>
|
||||
<string name="check_log">Будь ласка, перевірте лог</string>
|
||||
<string name="installing_module">Встановлення модуля %1$d/%2$d</string>
|
||||
<string name="module_failed_count">Не вдалося встановити %d новий модуль</string>
|
||||
<string name="module_download_error">Не вдалося завантажити модуль</string>
|
||||
<string name="kernel_flashing">Прошивка ядра</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">Всі</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Власні</string>
|
||||
<string name="category_default_apps">За замовчуванням</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Назва за зростанням</string>
|
||||
<string name="sort_name_desc">Назва за спаданням</string>
|
||||
<string name="sort_install_time_new">Час встановлення (нові)</string>
|
||||
<string name="sort_install_time_old">Час встановлення (старі)</string>
|
||||
<string name="sort_size_desc">Розмір за спаданням</string>
|
||||
<string name="sort_size_asc">Розмір за зростанням</string>
|
||||
<string name="sort_usage_freq">Частота використання</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">Немає додатків у цій категорії</string>
|
||||
<!-- 标签相关 -->
|
||||
<string name="deny_authorization">Заборонити права</string>
|
||||
<string name="grant_authorization">Надати права</string>
|
||||
<string name="unmount_modules">Відмонтувати монтування модулів</string>
|
||||
<string name="disable_unmount">Вимкнути відмонтування модулів</string>
|
||||
<string name="expand_menu">Розгорнути меню</string>
|
||||
<string name="collapse_menu">Згорнути меню</string>
|
||||
<string name="scroll_to_top">Вгору</string>
|
||||
<string name="scroll_to_bottom">Вниз</string>
|
||||
<string name="selected">Вибрано</string>
|
||||
<string name="select">Вибрати</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Опції меню</string>
|
||||
<string name="sort_options">Сортувати за</string>
|
||||
<string name="app_categories">Вибір типу додатку</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<string name="susfs_config_title">Налаштування SuSFS</string>
|
||||
<string name="susfs_config_description">Опис налаштувань</string>
|
||||
<string name="susfs_config_description_text">Ця функція дозволяє налаштовувати підміну значення uname та часу збірки SuSFS. Введіть потрібні значення та натисніть "Застосувати", щоб вони набули чинності.</string>
|
||||
<string name="susfs_uname_label">Значення Uname</string>
|
||||
<string name="susfs_uname_placeholder">Будь ласка, введіть власне значення uname</string>
|
||||
<string name="susfs_build_time_label">Підміна часу збірки</string>
|
||||
<string name="susfs_build_time_placeholder">Будь ласка, введіть значення для підміни часу збірки</string>
|
||||
<string name="susfs_current_value">Поточне значення: %s</string>
|
||||
<string name="susfs_current_build_time">Поточний час збірки: %s</string>
|
||||
<string name="susfs_reset_to_default">Скинути до замовчування</string>
|
||||
<string name="susfs_apply">Застосувати</string>
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<string name="susfs_reset_confirm_title">Підтвердити скидання</string>
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<string name="susfs_binary_not_found">Не вдалося знайти файл ksu_susfs</string>
|
||||
<string name="susfs_command_failed">Не вдалося виконати команду SuSFS</string>
|
||||
<string name="susfs_command_error">Помилка виконання команди SuSFS: %s</string>
|
||||
<string name="susfs_uname_set_success" formatted="false">Значення uname та час збірки SuSFS успішно встановлено: %s, %s</string>
|
||||
<!-- SuSFS Settings Item -->
|
||||
<string name="susfs_config_setting_title">Налаштування SuSFS</string>
|
||||
<!-- 开机自启动相关 -->
|
||||
<string name="susfs_autostart_title">Автозапуск</string>
|
||||
<string name="susfs_autostart_description">Автоматично застосовувати всі нестандартні конфігурації при перезавантаженні</string>
|
||||
<string name="susfs_autostart_requirement">Для ввімкнення потрібно додати конфігурацію</string>
|
||||
<string name="susfs_autostart_enable_failed">Не вдалося ввімкнути автозапуск</string>
|
||||
<string name="susfs_autostart_disable_failed">Не вдалося вимкнути автозапуск</string>
|
||||
<string name="susfs_autostart_error">Помилка конфігурації автозапуску: %s</string>
|
||||
<string name="susfs_no_config_to_autostart">Немає доступної конфігурації для автозапуску</string>
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<string name="susfs_tab_basic_settings">Основні налаштування</string>
|
||||
<string name="susfs_tab_sus_paths">Шляхи SUS</string>
|
||||
<string name="susfs_tab_sus_mounts">Монтування SUS</string>
|
||||
<string name="susfs_tab_try_umount">Спроба відмонтування</string>
|
||||
<string name="susfs_tab_path_settings">Налаштування шляхів</string>
|
||||
<string name="susfs_tab_enabled_features">Статус увімкнених функцій</string>
|
||||
<!-- SuSFS Path Management -->
|
||||
<string name="susfs_add_sus_path">Додати шлях SUS</string>
|
||||
<string name="susfs_add_sus_mount">Додати монтування SUS</string>
|
||||
<string name="susfs_add_try_umount">Додати спробу відмонтування</string>
|
||||
<string name="susfs_sus_path_added_success">Шлях SUS успішно додано</string>
|
||||
<string name="susfs_path_not_found_error">Помилка: шлях не знайдено</string>
|
||||
<string name="susfs_path_label">Шлях</string>
|
||||
<string name="susfs_mount_path_label">Шлях монтування</string>
|
||||
<string name="susfs_path_placeholder">напр.: /system/addon.d</string>
|
||||
<string name="susfs_no_paths_configured">Немає налаштованих шляхів SUS</string>
|
||||
<string name="susfs_no_mounts_configured">Немає налаштованих монтувань SUS</string>
|
||||
<string name="susfs_no_umounts_configured">Немає налаштованих спроб відмонтування</string>
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<string name="susfs_umount_mode_label">Режим відмонтування</string>
|
||||
<string name="susfs_umount_mode_normal">Звичайне відмонтування (0)</string>
|
||||
<string name="susfs_umount_mode_detach">Від\'єднане відмонтування (1)</string>
|
||||
<string name="susfs_umount_mode_normal_short">Звичайний</string>
|
||||
<string name="susfs_umount_mode_detach_short">Від\'єднаний</string>
|
||||
<string name="susfs_umount_mode_display">Режим: %1$s (%2$s)</string>
|
||||
<string name="susfs_try_umount_added_success">Шлях для спроби відмонтування успішно додано: %s</string>
|
||||
<string name="susfs_try_umount_added_saved">Спроба збереження шляху відмонтування успішна: %s</string>
|
||||
<!-- SuSFS Run Umount -->
|
||||
<string name="susfs_run_umount_confirm_title">Підтвердити виконання спроби відмонтування</string>
|
||||
<string name="susfs_run_umount_confirm_message">Це негайно виконає всі налаштовані операції спроби відмонтування. Ви впевнені, що хочете продовжити?</string>
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<string name="susfs_reset_paths_title">Скинути шляхи SUS</string>
|
||||
<string name="susfs_reset_paths_message">Це видалить усі конфігурації шляхів SUS. Ви впевнені, що хочете продовжити?</string>
|
||||
<string name="susfs_reset_mounts_title">Скинути монтування SUS</string>
|
||||
<string name="susfs_reset_mounts_message">Це видалить усі конфігурації монтувань SUS. Ви впевнені, що хочете продовжити?</string>
|
||||
<string name="susfs_reset_umounts_title">Скинути спроби відмонтування</string>
|
||||
<string name="susfs_reset_umounts_message">Це видалить усі конфігурації спроб відмонтування. Ви впевнені, що хочете продовжити?</string>
|
||||
<string name="susfs_reset_path_title">Скинути налаштування шляхів</string>
|
||||
<!-- SuSFS Path Settings -->
|
||||
<string name="susfs_android_data_path_label">Шлях до Android Data</string>
|
||||
<string name="susfs_sdcard_path_label">Шлях до SD-карти</string>
|
||||
<string name="susfs_set_android_data_path">Встановити шлях до Android Data</string>
|
||||
<string name="susfs_set_sdcard_path">Встановити шлях до SD-карти</string>
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<string name="susfs_enabled_features_description">Відображення поточного статусу увімкнених функцій SuSFS</string>
|
||||
<string name="susfs_no_features_found">Інформацію про статус функцій не знайдено</string>
|
||||
<string name="susfs_feature_enabled">Увімкнено</string>
|
||||
<string name="susfs_feature_disabled">Вимкнено</string>
|
||||
<!-- Feature Labels -->
|
||||
<string name="sus_path_feature_label">Підтримка шляхів SUS</string>
|
||||
<string name="sus_mount_feature_label">Підтримка монтувань SUS</string>
|
||||
<string name="try_umount_feature_label">Підтримка спроб відмонтування</string>
|
||||
<string name="spoof_uname_feature_label">Підтримка підміни uname</string>
|
||||
<string name="spoof_cmdline_feature_label">Підміна Cmdline/Bootconfig</string>
|
||||
<string name="open_redirect_feature_label">Підтримка Open Redirect</string>
|
||||
<string name="enable_log_feature_label">Підтримка логування</string>
|
||||
<string name="auto_default_mount_feature_label">Автоматичне монтування за замовчуванням</string>
|
||||
<string name="auto_bind_mount_feature_label">Автоматичне прив\'язане монтування</string>
|
||||
<string name="auto_try_umount_bind_feature_label">Автоматична спроба відмонтування прив\'язаного монтування</string>
|
||||
<string name="hide_symbols_feature_label">Приховати символи KSU SUSFS</string>
|
||||
<string name="magic_mount_feature_label">Підтримка Magic Mount</string>
|
||||
<string name="sus_kstat_feature_label">Підтримка SUS Kstat</string>
|
||||
<string name="sus_su_feature_label">Функція перемикання режиму SUS SU</string>
|
||||
<!-- 可切换状态 -->
|
||||
<string name="susfs_feature_configurable">Настроювані функції SuSFS</string>
|
||||
<string name="susfs_enable_log_label">Увімкнути лог SuSFS</string>
|
||||
<string name="susfs_log_config_description">Увімкнути або вимкнути логування для SuSFS</string>
|
||||
<string name="susfs_log_config_title">Налаштування логування SuSFS</string>
|
||||
<string name="susfs_log_enabled">Увімкнення логування SuSFS</string>
|
||||
<string name="susfs_log_disabled">Вимкнення логування SuSFS</string>
|
||||
<string name="module_update_json">Оновити JSON</string>
|
||||
<string name="module_update_json_copied">URL для оновлення JSON скопійовано в буфер обміну</string>
|
||||
<!-- Settings related strings -->
|
||||
<string name="show_more_module_info">Показувати більше інформації про модуль</string>
|
||||
<string name="show_more_module_info_summary">Відображати додаткову інформацію про модуль, як-от URL-адреси для оновлення JSON</string>
|
||||
<string name="susfs_execution_location_label">Місце виконання</string>
|
||||
<string name="susfs_current_execution_location">Поточне місце виконання: %s</string>
|
||||
<string name="susfs_execution_location_service">Сервіс</string>
|
||||
<string name="susfs_execution_location_post_fs_data">Post-FS-Data</string>
|
||||
<string name="susfs_execution_location_service_description">Виконувати після запуску системних сервісів</string>
|
||||
<string name="susfs_execution_location_post_fs_data_description">Виконувати після монтування файлової системи, але до повного завантаження системи. Може спричинити бутлуп</string>
|
||||
<string name="susfs_slot_info_title">Інформація про слот</string>
|
||||
<string name="susfs_slot_info_description">Переглянути інформацію про поточний завантажувальний слот та скопіювати значення</string>
|
||||
<string name="susfs_current_active_slot">Поточний активний слот: %s</string>
|
||||
<string name="susfs_slot_uname">Uname: %s</string>
|
||||
<string name="susfs_slot_build_time">Час збірки: %s</string>
|
||||
<string name="susfs_slot_current_badge">Поточний</string>
|
||||
<string name="susfs_slot_use_uname">Використовувати Uname</string>
|
||||
<string name="susfs_slot_use_build_time">Використовувати час збірки</string>
|
||||
<string name="susfs_slot_info_unavailable">Не вдалося отримати інформацію про слот</string>
|
||||
<!-- SuSFS 自启动相关字符串 -->
|
||||
<string name="susfs_autostart_enabled_success">Модуль автозапуску SuSFS увімкнено, шлях до модуля: %s</string>
|
||||
<string name="susfs_autostart_disabled_success">Модуль автозапуску SuSFS вимкнено</string>
|
||||
<!-- SuSFS Kstat相关字符串 -->
|
||||
<string name="susfs_tab_kstat_config">Налаштування Kstat</string>
|
||||
<string name="kstat_static_config_added">Статичну конфігурацію Kstat додано: %1$s</string>
|
||||
<string name="kstat_config_removed">Конфігурацію Kstat видалено: %1$s</string>
|
||||
<string name="kstat_path_added">Шлях Kstat додано: %1$s</string>
|
||||
<string name="kstat_path_removed">Шлях Kstat видалено: %1$s</string>
|
||||
<string name="kstat_updated">Kstat оновлено: %1$s</string>
|
||||
<string name="kstat_full_clone_updated">Повне клонування Kstat оновлено: %1$s</string>
|
||||
<string name="add_kstat_statically_title">Додати статичну конфігурацію Kstat</string>
|
||||
<string name="file_or_directory_path_label">Шлях до файлу/каталогу</string>
|
||||
<string name="hint_use_default_value">Підказка: Ви можете використовувати "default" для використання оригінального значення</string>
|
||||
<string name="add_kstat_path_title">Додати шлях Kstat</string>
|
||||
<string name="add">Додати</string>
|
||||
<string name="reset_kstat_config_title">Скинути конфігурацію Kstat</string>
|
||||
<string name="reset_kstat_config_message">Ви впевнені, що хочете очистити всі конфігурації Kstat? Цю дію неможливо скасувати.</string>
|
||||
<string name="kstat_config_description_title">Опис конфігурації Kstat</string>
|
||||
<string name="kstat_config_description_add_statically">• add_sus_kstat_statically: Статична інформація про файли/каталоги</string>
|
||||
<string name="kstat_config_description_add">• add_sus_kstat: Додати шлях перед прив\'язаним монтуванням, зберігаючи оригінальну інформацію</string>
|
||||
<string name="kstat_config_description_update">• update_sus_kstat: Оновити цільовий ino, залишивши розмір та блоки без змін</string>
|
||||
<string name="kstat_config_description_update_full_clone">• update_sus_kstat_full_clone: Оновити лише ino, залишивши інші оригінальні значення</string>
|
||||
<string name="static_kstat_config">Статична конфігурація Kstat</string>
|
||||
<string name="kstat_path_management">Керування шляхами Kstat</string>
|
||||
<string name="no_kstat_config_message">Конфігурації Kstat ще немає, натисніть кнопку вище, щоб додати</string>
|
||||
<!-- SuSFS Mount Hiding Control Related Strings -->
|
||||
<string name="susfs_hide_mounts_control_title">Керування приховуванням монтувань SUS</string>
|
||||
<string name="susfs_hide_mounts_control_description">Керуйте поведінкою приховування монтувань SUS для процесів</string>
|
||||
<string name="susfs_hide_mounts_for_all_procs_label">Приховувати монтування SUS для всіх процесів</string>
|
||||
<string name="susfs_hide_mounts_for_all_procs_enabled_description">Якщо увімкнено, монтування SUS будуть приховані від усіх процесів, включно з процесами KSU</string>
|
||||
<string name="susfs_hide_mounts_for_all_procs_disabled_description">Якщо вимкнено, монтування SUS будуть приховані лише від процесів, що не належать KSU; процеси KSU зможуть бачити монтування</string>
|
||||
<string name="susfs_hide_mounts_all_enabled">Увімкнено приховування монтувань SUS для всіх процесів</string>
|
||||
<string name="susfs_hide_mounts_all_disabled">Вимкнено приховування монтувань SUS для всіх процесів</string>
|
||||
<string name="susfs_hide_mounts_recommendation">Рекомендується встановлювати у вимкнений стан після розблокування екрана, або на етапі service.sh чи boot-completed.sh, оскільки це повинно виправити проблему з деякими рутованими додатками, які залежать від монтувань, створених процесом KSU</string>
|
||||
<string name="susfs_hide_mounts_current_setting">Поточне налаштування: %s</string>
|
||||
<string name="susfs_hide_mounts_setting_all">Приховувати для всіх процесів</string>
|
||||
<string name="susfs_hide_mounts_setting_non_ksu">Приховувати лише для процесів, що не належать KSU</string>
|
||||
<string name="susfs_run">Запустити</string>
|
||||
<string name="kernel_simple_kernel">Спрощений режим версії ядра</string>
|
||||
<string name="kernel_simple_kernel_summary">Увімкнути або вимкнути спрощене відображення версії ядра SukiSU</string>
|
||||
<string name="susfs_android_data_path_set">Шлях до Android Data встановлено на: %s</string>
|
||||
<string name="susfs_sdcard_path_set">Шлях до SD-карти встановлено на: %s</string>
|
||||
<string name="susfs_path_setup_warning">Налаштування шляху може бути не повністю успішним, але шляхи SUS будуть додаватися</string>
|
||||
<!-- 备份和还原相关字符串 -->
|
||||
<string name="susfs_backup_title">Резервне копіювання</string>
|
||||
<string name="susfs_backup_description">Створити резервну копію всіх конфігурацій SuSFS. Файл резервної копії включатиме всі налаштування, шляхи та конфігурації.</string>
|
||||
<string name="susfs_backup_create">Створити резервну копію</string>
|
||||
<string name="susfs_backup_success">Резервну копію створено успішно: %s</string>
|
||||
<string name="susfs_backup_failed">Не вдалося створити резервну копію: %s</string>
|
||||
<string name="susfs_backup_file_not_found">Файл резервної копії не знайдено</string>
|
||||
<string name="susfs_backup_invalid_format">Недійсний формат файлу резервної копії</string>
|
||||
<string name="susfs_backup_version_mismatch">Невідповідність версії резервної копії, але буде зроблена спроба відновлення</string>
|
||||
<string name="susfs_restore_title">Відновлення</string>
|
||||
<string name="susfs_restore_description">Відновити конфігурації SuSFS з файлу резервної копії. Це перезапише всі поточні налаштування.</string>
|
||||
<string name="susfs_restore_select_file">Вибрати файл резервної копії</string>
|
||||
<string name="susfs_restore_success" formatted="false">Конфігурацію успішно відновлено з резервної копії, створеної %s на пристрої: %s</string>
|
||||
<string name="susfs_restore_failed">Не вдалося відновити: %s</string>
|
||||
<string name="susfs_restore_confirm_title">Підтвердити відновлення</string>
|
||||
<string name="susfs_restore_confirm_description">Це перезапише всі поточні конфігурації SuSFS. Ви впевнені, що хочете продовжити?</string>
|
||||
<string name="susfs_restore_confirm">Відновити</string>
|
||||
<string name="susfs_backup_info_date">Дата резервної копії: %s</string>
|
||||
<string name="susfs_backup_info_device">Пристрій: %s</string>
|
||||
<string name="susfs_backup_info_version">Версія: %s</string>
|
||||
<string name="hide_bl_script">Приховати скрипт BL</string>
|
||||
<string name="hide_bl_script_description">Увімкнути скрипти для приховування статусу розблокування завантажувача</string>
|
||||
<string name="cleanup_residue">Очистити залишки</string>
|
||||
<string name="cleanup_residue_description">Очищення залишкових файлів та каталогів різних модулів та інструментів (може призвести до випадкового видалення, втрати даних та неможливості завантаження, використовуйте з обережністю)</string>
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">Chưa cài đặt</string>
|
||||
<string name="home_click_to_install">Nhấn để cài đặt</string>
|
||||
<string name="home_working">Đang hoạt động</string>
|
||||
<string name="home_working_version">Phiên bản: %d</string>
|
||||
<string name="home_superuser_count">Superusers: %d</string>
|
||||
<string name="home_module_count">Modules: %d</string>
|
||||
<string name="home_working_version">Phiên bản: %s</string>
|
||||
<string name="home_unsupported">Không được hỗ trợ</string>
|
||||
<string name="home_unsupported_reason">Không phát hiện được trình điều khiển SukiSU Ultra trên Kernel của bạn, Kernel sai?</string>
|
||||
<string name="home_kernel">Phiên bản Kernel</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">Phiên bản SuSFS</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">Phiên bản trình quản lý</string>
|
||||
<string name="home_fingerprint">Dấu vân tay</string>
|
||||
<string name="home_selinux_status">Trạng thái SELinux</string>
|
||||
<string name="selinux_status_disabled">Vô hiệu hoá</string>
|
||||
<string name="selinux_status_enforcing">Enforcing</string>
|
||||
@@ -28,12 +23,11 @@
|
||||
<string name="module_sort_action_first">Sắp xếp (Theo hành động)</string>
|
||||
<string name="module_sort_enabled_first">Sắp xếp (Theo trạng thái)</string>
|
||||
<string name="uninstall">Gỡ cài đặt</string>
|
||||
<string name="restore">Khôi phục</string>
|
||||
<string name="module_install">Cài đặt</string>
|
||||
<string name="install">Cài đặt</string>
|
||||
<string name="reboot">Khởi động lại</string>
|
||||
<string name="settings">Cài đặt</string>
|
||||
<string name="reboot_userspace">Khởi động lại không gian người dùng</string>
|
||||
<string name="reboot_userspace">Khởi động lại mềm</string>
|
||||
<string name="reboot_recovery">Khởi động lại vào Recovery</string>
|
||||
<string name="reboot_bootloader">Khởi động lại vào Bootloader</string>
|
||||
<string name="reboot_download">Khởi động lại vào Download Mode</string>
|
||||
@@ -61,25 +55,21 @@
|
||||
<string name="profile_template">Bản mẫu</string>
|
||||
<string name="profile_custom">Tuỳ chỉnh</string>
|
||||
<string name="profile_name">Tên hồ sơ</string>
|
||||
<string name="profile_namespace">Tên không gian gắn kết</string>
|
||||
<string name="profile_namespace_inherited">Thừa hưởng</string>
|
||||
<string name="profile_namespace_global">Chung</string>
|
||||
<string name="profile_namespace_individual">Riêng biệt</string>
|
||||
<string name="profile_groups">Nhóm</string>
|
||||
<string name="profile_capabilities">Tính tương thích</string>
|
||||
<string name="profile_selinux_context">Bối cảnh SELinux</string>
|
||||
<string name="profile_umount_modules">Unmount modules</string>
|
||||
<string name="profile_umount_modules">Umount modules</string>
|
||||
<string name="failed_to_update_app_profile">Cập nhật Hồ sơ ứng dụng cho %s thất bại</string>
|
||||
<string name="require_kernel_version" formatted="false">Phiên bản SukiSU Ultra hiện tại %d quá thấp để trình quản lý hoạt động bình thường. Vui lòng cập nhật lên phiên bản %d hoặc cao hơn!</string>
|
||||
<string name="settings_umount_modules_default">Unmount modules</string>
|
||||
<string name="settings_umount_modules_default_summary">Giá trị mặc định chung cho \"Unmount modules\" trong Hồ sơ ứng dụng. Nếu được bật, mọi thay đổi hệ thống do các module gây ra sẽ bị gỡ bỏ khỏi hệ thống và các ứng dụng chưa thiết lập hồ sơ</string>
|
||||
<string name="settings_susfs_toggle">Ẩn hooks kprobe</string>
|
||||
<string name="require_kernel_version" formatted="false">Phiên bản SukiSU Ultra hiện tại %s quá thấp để trình quản lý hoạt động bình thường. Vui lòng cập nhật lên phiên bản %s hoặc cao hơn!</string>
|
||||
<string name="settings_umount_modules_default">Umount modules</string>
|
||||
<string name="settings_umount_modules_default_summary">Giá trị mặc định chung cho \"Umount modules\" trong Hồ sơ ứng dụng. Nếu được bật, mọi thay đổi hệ thống do các module gây ra sẽ bị gỡ bỏ khỏi hệ thống và các ứng dụng chưa thiết lập hồ sơ</string>
|
||||
<string name="settings_susfs_toggle">Vô hiệu hóa kprobes hook</string>
|
||||
<string name="profile_umount_modules_summary">Bật tùy chọn này sẽ cho phép SukiSU Ultra khôi phục mọi file đã được các module sửa đổi trong ứng dụng này</string>
|
||||
<string name="profile_selinux_domain">Tên miền</string>
|
||||
<string name="profile_selinux_rules">Quy tắc</string>
|
||||
<string name="module_update">Cập nhật</string>
|
||||
<string name="module_downloading">Tải xuống module: %s</string>
|
||||
<string name="module_start_downloading">Đang tải xuống module: %s</string>
|
||||
<string name="module_downloading">Đang tải xuống module: %s</string>
|
||||
<string name="module_start_downloading">Bắt đầu tải xuống: %s</string>
|
||||
<string name="new_version_available">Phiên bản mới %s đã có sẵn, nhấn để cập nhật</string>
|
||||
<string name="launch_app">Mở</string>
|
||||
<string name="force_stop_app" formatted="false">Buộc dừng</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">Tự động kiểm tra cập nhật khi mở ứng dụng</string>
|
||||
<string name="grant_root_failed">Cấp quyền root thất bại!</string>
|
||||
<string name="action">Khởi chạy</string>
|
||||
<string name="open">Mở</string>
|
||||
<string name="close">Đóng</string>
|
||||
<string name="enable_web_debugging">Gỡ lỗi WebView</string>
|
||||
<string name="enable_web_debugging_summary">Có thể sử dụng để gỡ lỗi WebUI. Vui lòng chỉ bật khi cần thiết</string>
|
||||
@@ -122,6 +111,7 @@
|
||||
<string name="install_inactive_slot_warning">Thiết bị của bạn sẽ **BUỘC** phải khởi động vào phân vùng chưa được sử dụng!\nChỉ sử dụng tùy chọn này sau khi OTA hoàn tất.\nTiếp tục?</string>
|
||||
<string name="install_next">Kế tiếp</string>
|
||||
<string name="select_file_tip">Phân vùng %1$s được khuyến nghị</string>
|
||||
<string name="select_file_tip_vendor">(Thử nghiệm)</string>
|
||||
<string name="select_kmi">Chọn KMI</string>
|
||||
<string name="settings_uninstall">Gỡ cài đặt</string>
|
||||
<string name="settings_uninstall_temporary">Gỡ cài đặt tạm thời</string>
|
||||
@@ -136,10 +126,7 @@
|
||||
<string name="selected_lkm">Đã chọn LKM: %s</string>
|
||||
<string name="save_log">Lưu logs</string>
|
||||
<string name="log_saved">Logs đã được lưu</string>
|
||||
<string name="status_supported">Được hỗ trợ</string>
|
||||
<string name="status_not_supported">Không được hỗ trợ</string>
|
||||
<string name="status_unknown">Không rõ</string>
|
||||
<string name="sus_su_mode">Chế độ SU của SuS:</string>
|
||||
<string name="sus_su_mode">Chế độ SuS SU:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">Xác nhận cài đặt module %1$s?</string>
|
||||
<string name="unknown_module">Module không xác định</string>
|
||||
@@ -147,7 +134,7 @@
|
||||
<string name="restore_confirm_title">Xác Nhận Khôi Phục Module</string>
|
||||
<string name="restore_confirm_message">Hành động này sẽ ghi đè lên tất cả các module hiện có. Tiếp tục?</string>
|
||||
<string name="confirm">Xác nhận</string>
|
||||
<string name="cancel">Huỷ bỏ</string>
|
||||
<string name="cancel">Thoát</string>
|
||||
<!-- Backup related -->
|
||||
<string name="backup_success">Sao lưu thành công (tar.gz)</string>
|
||||
<string name="backup_failed">Sao lưu thất bại: %1$s</string>
|
||||
@@ -172,15 +159,12 @@
|
||||
<string name="settings_custom_background">Tuỳ chỉnh nền ứng dụng</string>
|
||||
<string name="settings_custom_background_summary">Chọn một hình ảnh làm hình nền</string>
|
||||
<string name="settings_card_alpha">Độ trong suốt của thanh điều hướng</string>
|
||||
<string name="settings_restore_default">Khôi phục mặc định</string>
|
||||
<string name="home_android_version">Phiên bản Android</string>
|
||||
<string name="home_device_model">Model thiết bị</string>
|
||||
<string name="su_not_allowed">Quyền SU cho %s chưa được cấp</string>
|
||||
<string name="su_not_allowed">Không được phép cấp quyền SU cho %s</string>
|
||||
<string name="settings_disable_su">Vô hiệu hoá lệnh SU</string>
|
||||
<string name="settings_disable_su_summary">Vô hiệu hoá khả năng thực thi lệnh SU để lấy quyền root (Những app đã cấp trước đó không bị ảnh hưởng)</string>
|
||||
<string name="using_mksu_manager">Bạn đang sử dụng trình quản lý SukiSU Beta</string>
|
||||
<string name="module_install_multiple_confirm">Bạn có chắc muốn cài đặt các module %d đã chọn không?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Bạn có chắc muốn cài đặt các module %1$d sau không? \n\n%2$s</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Bạn có chắc muốn cài đặt các module %1$d không? \n\n%2$s</string>
|
||||
<string name="more_settings">Nhiều cài đặt hơn</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
<string name="selinux_enabled">Đang bật</string>
|
||||
@@ -195,6 +179,8 @@
|
||||
<string name="hide_susfs_status_summary">Ẩn thông tin trạng thái SuSFS ở trang chủ</string>
|
||||
<string name="hide_link_card">Ẩn trạng thái thẻ liên kết</string>
|
||||
<string name="hide_link_card_summary">Ẩn thông tin thẻ liên kết ở trang chủ</string>
|
||||
<string name="hide_tag_card">Ẩn các nhãn module</string>
|
||||
<string name="hide_tag_card_summary">Ẩn nhãn tên folder và kích thước trong thẻ module</string>
|
||||
<string name="theme_mode">Chủ đề</string>
|
||||
<string name="theme_follow_system">Theo hệ thống</string>
|
||||
<string name="theme_light">Sáng</string>
|
||||
@@ -210,20 +196,14 @@
|
||||
<string name="color_pink">Hồng</string>
|
||||
<string name="color_gray">Xám</string>
|
||||
<string name="color_yellow">Vàng</string>
|
||||
<string name="flash_option">Tuỳ chọn Flash</string>
|
||||
<string name="flash_option_tip">Chọn file cần Flash</string>
|
||||
<string name="horizon_kernel">Cài đặt AnyKernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash file AnyKernel3</string>
|
||||
<string name="root_required">Yêu cầu quyền root</string>
|
||||
<string name="copy_failed">Sao chép file thất bại</string>
|
||||
<string name="reboot_complete_title">Khởi động lại để hoàn tất</string>
|
||||
<string name="reboot_complete_msg">Khởi động lại ngay lập tức?</string>
|
||||
<string name="yes">Có</string>
|
||||
<string name="no">Không</string>
|
||||
<string name="failed_reboot">Khởi động lại thất bại</string>
|
||||
<string name="batch_authorization">Uỷ quyền</string>
|
||||
<string name="batch_cancel_authorization">Hủy ủy quyền hàng loạt</string>
|
||||
<string name="backup">Sao lưu</string>
|
||||
<string name="kpm_title">KPModule</string>
|
||||
<string name="kpm_empty">Không có Kernel Module nào được cài đặt tại thời điểm này</string>
|
||||
<string name="kpm_version">Phiên bản</string>
|
||||
@@ -231,7 +211,6 @@
|
||||
<string name="kpm_uninstall">Gỡ cài đặt</string>
|
||||
<string name="kpm_uninstall_success">Gỡ cài đặt thành công</string>
|
||||
<string name="kpm_uninstall_failed">Gỡ cài đặt thất bại</string>
|
||||
<string name="kpm_install">Cài đặt</string>
|
||||
<string name="kpm_install_success">Load KPModule thành công</string>
|
||||
<string name="kpm_install_failed">Load KPModule thất bại</string>
|
||||
<string name="kpm_args">Thông số</string>
|
||||
@@ -245,8 +224,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra sẽ là một nhánh tương đối độc lập của KSU trong tương lai, nhưng chúng tôi xin cảm ơn KernelSU và MKSU,... vì những đóng góp của họ!</string>
|
||||
<string name="not_supported">Không được hỗ trợ</string>
|
||||
<string name="supported">Được hỗ trợ</string>
|
||||
<string name="home_kpm_module">"KPModules: %d"</string>
|
||||
<string name="kpm_invalid_file">File KPM không hợp lệ</string>
|
||||
<string name="kernel_patched">Kernel chưa được vá</string>
|
||||
<string name="kernel_not_enabled">Kernel chưa được cấu hình</string>
|
||||
<string name="custom_settings">Cài đặt giản lược</string>
|
||||
@@ -254,19 +231,13 @@
|
||||
<string name="kpm_install_mode_load">Load</string>
|
||||
<string name="kpm_install_mode_embed">Nhúng</string>
|
||||
<string name="kpm_install_mode_description">Vui lòng chọn: %1\$s Chế Độ Cài Đặt Module \n\nTải: Tải tạm thời module \nNhúng: Cài đặt vĩnh viễn vào hệ thống</string>
|
||||
<string name="log_failed_to_check_module_file">Kiểm tra file module thất bại</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Không thể kiểm tra file module</string>
|
||||
<string name="confirm_uninstall_title">Xác nhận gỡ cài đặt</string>
|
||||
<string name="confirm_uninstall_confirm">Gỡ cài đặt</string>
|
||||
<string name="confirm_uninstall_dismiss">Hủy bỏ</string>
|
||||
<string name="theme_color">Màu chủ đề</string>
|
||||
<string name="invalid_file_type">Loại file không đúng! Vui lòng chọn file .kpm</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Gỡ cài đặt</string>
|
||||
<string name="confirm_uninstall_content">KPM sau đây sẽ được gỡ cài đặt: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Vô hiệu hóa các hook kprobe được tạo bởi SukiSU Ultra, thay vào đó sử dụng các hook nội tuyến, tương tự như phương pháp hook kernel không phải GKI</string>
|
||||
<string name="image_editor_title">Điều chỉnh hình nền</string>
|
||||
<string name="image_editor_hint">Sử dụng hai ngón tay để phóng to hình ảnh và một ngón tay để kéo nó để điều chỉnh vị trí</string>
|
||||
<string name="background_image_error">Không thể load hình ảnh</string>
|
||||
<string name="settings_susfs_toggle_summary">Vô hiệu hóa kprobes hook được tạo bởi SukiSU Ultra, thay vào đó sử dụng non-kprobes hook được nhúng, tương tự như phương pháp hook của Kernel non-GKI</string>
|
||||
<string name="image_editor_hint">Sử dụng hai ngón tay để phóng to hình ảnh và một ngón tay kéo nó để điều chỉnh vị trí</string>
|
||||
<string name="reprovision">Chọn lại</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
@@ -303,10 +274,6 @@
|
||||
<string name="app_settings">Cài đặt ứng dụng</string>
|
||||
<string name="tools">Công cụ</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Loại bỏ</string>
|
||||
<string name="apps_with_root">Các ứng dụng đã cấp quyền Root</string>
|
||||
<string name="apps_with_custom_profile">Các ứng dụng có cấu hình tùy chỉnh</string>
|
||||
<string name="other_apps">Các ứng dụng mặc định</string>
|
||||
<string name="no_apps_found">Không tìm thấy ứng dụng</string>
|
||||
<string name="selinux_enabled_toast">SELinux đã bật</string>
|
||||
<string name="selinux_disabled_toast">SELinux đã tắt</string>
|
||||
@@ -314,8 +281,6 @@
|
||||
<string name="advanced_settings">Cài đặt nâng cao</string>
|
||||
<string name="appearance_settings">Cài đặt giao diện</string>
|
||||
<string name="back">Trở lại</string>
|
||||
<string name="expand">Be in full swing</string>
|
||||
<string name="collapse">put away</string>
|
||||
<string name="susfs_enabled">SuSFS đã bật</string>
|
||||
<string name="susfs_disabled">SuSFS đã tắt</string>
|
||||
<string name="background_set_success">Đã cài đặt hình nền thành công</string>
|
||||
@@ -323,7 +288,6 @@
|
||||
<string name="icon_switch_title">Thay thế icon</string>
|
||||
<string name="icon_switch_summary">Thay đổi icon SukiSU thành icon của KernelSU</string>
|
||||
<string name="icon_switched">Đã thay đổi icon</string>
|
||||
<string name="root_require_for_install">Yêu cầu quyền root</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Ẩn chức năng KPM</string>
|
||||
<string name="show_kpm_info_summary">Ẩn thông tin và chức năng của KPM ở trang chủ và thanh điều hướng</string>
|
||||
@@ -335,7 +299,6 @@
|
||||
<string name="use_webuix_eruda">Tiêm Eruda vào WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Chèn bảng điều khiển gỡ lỗi vào WebUI X để gỡ lỗi dễ dàng hơn. Yêu cầu bật gỡ lỗi web</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">Cài đặt DPI</string>
|
||||
<string name="app_dpi_title">Tuỳ chỉnh DPI</string>
|
||||
<string name="app_dpi_summary">Điều chỉnh DPI hiển thị</string>
|
||||
<string name="dpi_size_small">Nhỏ</string>
|
||||
@@ -353,21 +316,241 @@
|
||||
<string name="language_follow_system">Mặc định theo hệ thống</string>
|
||||
<string name="language_changed">Ngôn ngữ đã thay đổi, khởi động lại để áp dụng thay đổi</string>
|
||||
<string name="settings_card_dim">Độ trong suốt của thẻ</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Lên trên</string>
|
||||
<string name="scroll_to_bottom">Xuống dưới</string>
|
||||
<string name="scroll_to_top_description">Cuộn lên trên</string>
|
||||
<string name="scroll_to_bottom_description">Cuộn xuống dưới</string>
|
||||
<string name="authorized">Uỷ quyền</string>
|
||||
<string name="unauthorized">Huỷ uỷ quyền</string>
|
||||
<string name="selected">Đã chọn</string>
|
||||
<string name="select">Chọn</string>
|
||||
<string name="profile_umount_modules_disable">Vô hiệu hóa unmount modules</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">Code lỗi</string>
|
||||
<string name="error_code">Error code</string>
|
||||
<string name="check_log">Vui lòng kiểm tra logs</string>
|
||||
<string name="installing_module">Đang cài đặt module %1$d/%2$d</string>
|
||||
<string name="module_failed_count">Cài đặt module %d thất bại</string>
|
||||
<string name="module_download_error">Tải xuống module thất bại</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">Tất cả</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Tuỳ chỉnh</string>
|
||||
<string name="category_default_apps">Mặc định</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Tên (Tăng dần)</string>
|
||||
<string name="sort_name_desc">Tên (Giảm dần)</string>
|
||||
<string name="sort_install_time_new">Thời gian cài đặt (Mới)</string>
|
||||
<string name="sort_install_time_old">Thời gian cài đặt (Cũ)</string>
|
||||
<string name="sort_size_desc">Kích thước (Giảm dần)</string>
|
||||
<string name="sort_size_asc">Kích thước (Tăng dần)</string>
|
||||
<string name="sort_usage_freq">Tần suất sử dụng</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">Không có ứng dụng nào trong danh mục này</string>
|
||||
<!-- 标签相关 -->
|
||||
<string name="deny_authorization">Huỷ bỏ uỷ quyền</string>
|
||||
<string name="grant_authorization">Uỷ quyền</string>
|
||||
<string name="unmount_modules">Umount modules</string>
|
||||
<string name="disable_unmount">Vô hiệu hoá umount modules</string>
|
||||
<string name="expand_menu">Mở rộng Menu</string>
|
||||
<string name="collapse_menu">Thu gọn Menu</string>
|
||||
<string name="scroll_to_top">Lên trên</string>
|
||||
<string name="scroll_to_bottom">Xuống dưới</string>
|
||||
<string name="selected">Đã chọn</string>
|
||||
<string name="select">Chọn</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Tuỳ chọn Menu</string>
|
||||
<string name="sort_options">Sắp xếp theo</string>
|
||||
<string name="app_categories">Lựa chọn loại ứng dụng</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<string name="susfs_config_title">Cấu hình SuSFS</string>
|
||||
<string name="susfs_config_description">Mô tả cấu hình</string>
|
||||
<string name="susfs_config_description_text">Tính năng này cho phép bạn tùy chỉnh giá trị SuSFS Uname và Giả mạo thời gian xây dựng. Nhập các giá trị bạn muốn đặt và nhấp vào \"Áp dụng\" để có hiệu lực</string>
|
||||
<string name="susfs_uname_label">Giá trị Uname</string>
|
||||
<string name="susfs_uname_placeholder">Vui lòng nhập giá trị Uname tùy chỉnh</string>
|
||||
<string name="susfs_build_time_label">Giả mạo thời gian xây dựng</string>
|
||||
<string name="susfs_build_time_placeholder">Vui lòng nhập giá trị giả mạo thời gian xây dựng</string>
|
||||
<string name="susfs_current_value">Giá trị hiện tại: %s</string>
|
||||
<string name="susfs_current_build_time">Thời gian xây dựng hiện tại: %s</string>
|
||||
<string name="susfs_reset_to_default">Reset về Default</string>
|
||||
<string name="susfs_apply">Áp dụng</string>
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<string name="susfs_reset_confirm_title">Xác nhận khôi phục</string>
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<string name="susfs_binary_not_found">Không tìm thấy file ksu_susfs</string>
|
||||
<string name="susfs_command_failed">Thực hiện lệnh SuSFS thất bại</string>
|
||||
<string name="susfs_command_error">Lỗi khi thực hiện lệnh SuSFS: %s</string>
|
||||
<string name="susfs_uname_set_success" formatted="false">SuSFS Uname và Thời gian xây dựng được thiết lập thành công: %s, %s</string>
|
||||
<!-- SuSFS Settings Item -->
|
||||
<string name="susfs_config_setting_title">Cấu hình SuSFS</string>
|
||||
<!-- 开机自启动相关 -->
|
||||
<string name="susfs_autostart_title">Tự động khởi động</string>
|
||||
<string name="susfs_autostart_description">Tự động áp dụng tất cả các cấu hình không phải mặc định khi khởi động lại</string>
|
||||
<string name="susfs_autostart_requirement">Cấu hình cần được thêm vào để kích hoạt</string>
|
||||
<string name="susfs_autostart_enable_failed">Kích hoạt tính năng tự động khởi động thất bại!</string>
|
||||
<string name="susfs_autostart_disable_failed">Vô hiệu hoá tính năng tự động khởi động thất bại!</string>
|
||||
<string name="susfs_autostart_error">Lỗi cấu hình tự động khởi động: %s</string>
|
||||
<string name="susfs_no_config_to_autostart">Không có cấu hình nào có sẵn để tự động khởi động</string>
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<string name="susfs_tab_basic_settings">Cài đặt cơ bản</string>
|
||||
<string name="susfs_tab_sus_paths">Đường dẫn SuS</string>
|
||||
<string name="susfs_tab_sus_mounts">SuS Mount</string>
|
||||
<string name="susfs_tab_try_umount">SuS Umount</string>
|
||||
<string name="susfs_tab_path_settings">Cài đặt Đường dẫn</string>
|
||||
<string name="susfs_tab_enabled_features">Trạng thái tính năng</string>
|
||||
<!-- SuSFS Path Management -->
|
||||
<string name="susfs_add_sus_path">Thêm Đường dẫn SuS</string>
|
||||
<string name="susfs_add_sus_mount">Thêm SuS Mount</string>
|
||||
<string name="susfs_add_try_umount">Thêm SuS Umount</string>
|
||||
<string name="susfs_sus_path_added_success">Đường dẫn SuS đã được thêm thành công</string>
|
||||
<string name="susfs_path_not_found_error">Lỗi không tìm thấy đường dẫn</string>
|
||||
<string name="susfs_path_label">Đường dẫn</string>
|
||||
<string name="susfs_mount_path_label">Đường dẫn Mount</string>
|
||||
<string name="susfs_path_placeholder">Ví dụ: /system/addon.d</string>
|
||||
<string name="susfs_no_paths_configured">Không có Đường dẫn SuS nào được cấu hình</string>
|
||||
<string name="susfs_no_mounts_configured">Không có SuS Mount nào được cấu hình</string>
|
||||
<string name="susfs_no_umounts_configured">Không có SuS Umount nào được cấu hình</string>
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<string name="susfs_umount_mode_label">Chế độ Umount</string>
|
||||
<string name="susfs_umount_mode_normal">Normal Umount (0)</string>
|
||||
<string name="susfs_umount_mode_detach">Detach Umount (1)</string>
|
||||
<string name="susfs_umount_mode_normal_short">Normal</string>
|
||||
<string name="susfs_umount_mode_detach_short">Detach</string>
|
||||
<string name="susfs_umount_mode_display">Chế độ: %1$s (%2$s)</string>
|
||||
<string name="susfs_try_umount_added_success">Đường dẫn SuS Umount đã thêm thành công: %s</string>
|
||||
<string name="susfs_try_umount_added_saved">Đường dẫn SuS Umount đã lưu thành công: %s</string>
|
||||
<!-- SuSFS Run Umount -->
|
||||
<string name="susfs_run_umount_confirm_title">Xác nhận chạy SuS Umount</string>
|
||||
<string name="susfs_run_umount_confirm_message">Thao tác này sẽ áp dụng ngay lập tức tất cả các thiết lập SuS Umount đã cấu hình. Bạn có chắc chắn muốn tiếp tục không?</string>
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<string name="susfs_reset_paths_title">Khôi phục Đường dẫn SuS</string>
|
||||
<string name="susfs_reset_paths_message">Thao tác này sẽ xóa tất cả các cấu hình Đường dẫn SuS. Bạn có chắc chắn muốn tiếp tục không?</string>
|
||||
<string name="susfs_reset_mounts_title">Khôi phục SuS Mount</string>
|
||||
<string name="susfs_reset_mounts_message">Thao tác này sẽ xóa tất cả các cấu hình SuS Mount. Bạn có chắc chắn muốn tiếp tục không?</string>
|
||||
<string name="susfs_reset_umounts_title">Khôi phục SuS Umount</string>
|
||||
<string name="susfs_reset_umounts_message">Thao tác này sẽ xóa tất cả các cấu hình SuS Umount. Bạn có chắc chắn muốn tiếp tục không?</string>
|
||||
<string name="susfs_reset_path_title">Reset Cài đặt Đường dẫn</string>
|
||||
<!-- SuSFS Path Settings -->
|
||||
<string name="susfs_android_data_path_label">Đường dẫn Android Data</string>
|
||||
<string name="susfs_sdcard_path_label">Đường dẫn SD Card</string>
|
||||
<string name="susfs_set_android_data_path">Đặt Đường dẫn Android Data</string>
|
||||
<string name="susfs_set_sdcard_path">Đặt Đường dẫn SD Card</string>
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<string name="susfs_enabled_features_description">Hiển thị trạng thái tính năng hiện tại của SuSFS</string>
|
||||
<string name="susfs_no_features_found">Không tìm thấy thông tin trạng thái tính năng</string>
|
||||
<string name="susfs_feature_enabled">Đã bật</string>
|
||||
<string name="susfs_feature_disabled">Đã tắt</string>
|
||||
<!-- Feature Labels -->
|
||||
<string name="sus_path_feature_label">Hỗ trợ Đường dẫn SuS</string>
|
||||
<string name="sus_mount_feature_label">Hỗ trợ SuS Mount</string>
|
||||
<string name="try_umount_feature_label">Hỗ trợ SuS Umount</string>
|
||||
<string name="spoof_uname_feature_label">Hỗ trợ giả mạo Uname</string>
|
||||
<string name="spoof_cmdline_feature_label">Giả mạo Cmdline/Bootconfig</string>
|
||||
<string name="open_redirect_feature_label">Mở hỗ trợ chuyển hướng</string>
|
||||
<string name="enable_log_feature_label">Hỗ trợ ghi logs</string>
|
||||
<string name="auto_default_mount_feature_label">Tự động Mount mặc định</string>
|
||||
<string name="auto_bind_mount_feature_label">Tự động Bind Mount</string>
|
||||
<string name="auto_try_umount_bind_feature_label">Tự động Umount Bind Mount</string>
|
||||
<string name="hide_symbols_feature_label">Ẩn biểu tượng KSU SuSFS</string>
|
||||
<string name="magic_mount_feature_label">Hỗ trợ Magic Mount</string>
|
||||
<string name="sus_kstat_feature_label">Hỗ trợ SuS Kstat</string>
|
||||
<string name="sus_su_feature_label">Chức năng chuyển đổi chế độ SuS SU</string>
|
||||
<!-- 可切换状态 -->
|
||||
<string name="susfs_feature_configurable">Nhấn để bật/tắt ghi logs</string>
|
||||
<string name="susfs_enable_log_label">Kích hoạt logs SuSFS</string>
|
||||
<string name="susfs_log_config_description">Bật hoặc tắt ghi logs cho SuSFS</string>
|
||||
<string name="susfs_log_config_title">Cấu hình ghi logs SuSFS</string>
|
||||
<string name="susfs_log_enabled">Bật ghi logs SuSFS</string>
|
||||
<string name="susfs_log_disabled">Tắt ghi logs SuSFS</string>
|
||||
<string name="module_update_json">JSON cập nhật</string>
|
||||
<string name="module_update_json_copied">JSON URL cập nhật đã được sao chép vào clipboard</string>
|
||||
<!-- Settings related strings -->
|
||||
<string name="show_more_module_info">Hiển thị \"JSON URLs\"</string>
|
||||
<string name="show_more_module_info_summary">Hiển thị thông tin đường dẫn cập nhật \"JSON URLs\" của module</string>
|
||||
<string name="susfs_execution_location_label">Địa điểm thực thi</string>
|
||||
<string name="susfs_current_execution_location">Vị trí thực thi hiện tại: %s</string>
|
||||
<string name="susfs_execution_location_service">Service</string>
|
||||
<string name="susfs_execution_location_post_fs_data">Post-FS-Data</string>
|
||||
<string name="susfs_execution_location_service_description">Thực hiện sau khi dịch vụ hệ thống bắt đầu</string>
|
||||
<string name="susfs_execution_location_post_fs_data_description">Thực hiện sau khi file hệ thống được mount nhưng trước khi hệ thống khởi động hoàn toàn, có thể gây ra boot loop</string>
|
||||
<string name="susfs_slot_info_title">Thông tin Slot</string>
|
||||
<string name="susfs_slot_info_description">Xem thông tin Slot khởi động hiện tại và sao chép giá trị</string>
|
||||
<string name="susfs_current_active_slot">Slot hiện tại: %s</string>
|
||||
<string name="susfs_slot_uname">Uname: %s</string>
|
||||
<string name="susfs_slot_build_time">Thời gian xây dựng: %s</string>
|
||||
<string name="susfs_slot_current_badge">Hiện tại</string>
|
||||
<string name="susfs_slot_use_uname">Sử dụng Uname</string>
|
||||
<string name="susfs_slot_use_build_time">Sử dụng Thời gian xây dựng</string>
|
||||
<string name="susfs_slot_info_unavailable">Không thể lấy thông tin Slot</string>
|
||||
<!-- SuSFS 自启动相关字符串 -->
|
||||
<string name="susfs_autostart_enabled_success">Module tự động khởi động SuSFS đã bật, đường dẫn module: %s</string>
|
||||
<string name="susfs_autostart_disabled_success">Module tự động khởi động SuSFS đã bị vô hiệu hóa</string>
|
||||
<!-- SuSFS Kstat相关字符串 -->
|
||||
<string name="susfs_tab_kstat_config">Cấu hình Kstat</string>
|
||||
<string name="kstat_static_config_added">Đã thêm cấu hình Kstat tĩnh: %1$s</string>
|
||||
<string name="kstat_config_removed">Đã xoá cấu hình Kstat: %1$s</string>
|
||||
<string name="kstat_path_added">Đã thêm Đường dẫn Kstat: %1$s</string>
|
||||
<string name="kstat_path_removed">Đã xoá Đường dẫn Kstat: %1$s</string>
|
||||
<string name="kstat_updated">Đã cập nhật Kstat: %1$s</string>
|
||||
<string name="kstat_full_clone_updated">Bản sao Kstat đầy đủ đã cập nhật: %1$s</string>
|
||||
<string name="add_kstat_statically_title">Thêm cấu hình Kstat tĩnh</string>
|
||||
<string name="file_or_directory_path_label">Đường dẫn File/Folder</string>
|
||||
<string name="hint_use_default_value">Gợi ý: Bạn có thể sử dụng \"default\" để thiết lập giá trị ban đầu</string>
|
||||
<string name="add_kstat_path_title">Thêm Đường dẫn Kstat</string>
|
||||
<string name="add">Thêm</string>
|
||||
<string name="reset_kstat_config_title">Khôi phục Cấu hình Kstat</string>
|
||||
<string name="reset_kstat_config_message">Bạn có chắc chắn muốn xóa tất cả cấu hình Kstat không? Không thể hoàn tác hành động này</string>
|
||||
<string name="kstat_config_description_title">Mô tả cấu hình Kstat</string>
|
||||
<string name="kstat_config_description_add_statically">• add_sus_kstat_statically: Thông tin thống kê cấu hình tĩnh của các File/Folder</string>
|
||||
<string name="kstat_config_description_add">• add_sus_kstat: Thêm đường dẫn trước khi mount để lưu trữ thông tin trạng thái ban đầu</string>
|
||||
<string name="kstat_config_description_update">• update_sus_kstat: Cập nhật ino mục tiêu, giữ nguyên kích thước và khối</string>
|
||||
<string name="kstat_config_description_update_full_clone">• update_sus_kstat_full_clone: Chỉ cập nhật ino, giữ nguyên các giá trị gốc khác</string>
|
||||
<string name="static_kstat_config">Cấu hình Kstat tĩnh</string>
|
||||
<string name="kstat_path_management">Quản lý Đường dẫn Kstat</string>
|
||||
<string name="no_kstat_config_message">Chưa có cấu hình Kstat, hãy nhấp vào nút bên dưới để thêm</string>
|
||||
<!-- SuSFS Mount Hiding Control Related Strings -->
|
||||
<string name="susfs_hide_mounts_control_title">Điều khiển ẩn SuS Mount</string>
|
||||
<string name="susfs_hide_mounts_control_description">Kiểm soát hành vi ẩn của SuS Mount với các tiến trình</string>
|
||||
<string name="susfs_hide_mounts_for_all_procs_label">Ẩn SuS Mount khỏi tất cả các tiến trình</string>
|
||||
<string name="susfs_hide_mounts_for_all_procs_enabled_description">Khi kích hoạt, SuS Mount sẽ bị ẩn khỏi tất cả các tiến trình, bao gồm cả các tiến trình KSU</string>
|
||||
<string name="susfs_hide_mounts_for_all_procs_disabled_description">Khi bị vô hiệu hóa, SuS Mount sẽ chỉ bị ẩn khỏi các tiến trình không phải KSU, không bị ẩn ở tiến trình KSU</string>
|
||||
<string name="susfs_hide_mounts_all_enabled">Đã kích hoạt ẩn SuS Mount khỏi tất cả các tiến trình</string>
|
||||
<string name="susfs_hide_mounts_all_disabled">Đã vô hiệu hóa việc ẩn SuS Mount cho tất cả các tiến trình</string>
|
||||
<string name="susfs_hide_mounts_recommendation">Nên vô hiệu hóa sau khi màn hình được mở khóa hoặc trong giai đoạn service.sh hoặc boot-completed.sh, vì điều này sẽ khắc phục sự cố trên một số ứng dụng đã root dựa vào mount bởi tiến trình KSU</string>
|
||||
<string name="susfs_hide_mounts_current_setting">Cài đặt hiện tại: %s</string>
|
||||
<string name="susfs_hide_mounts_setting_all">Ẩn khỏi tất cả các tiến trình</string>
|
||||
<string name="susfs_hide_mounts_setting_non_ksu">Chỉ ẩn đối với các tiến trình không phải KSU</string>
|
||||
<string name="susfs_run">Chạy</string>
|
||||
<string name="kernel_simple_kernel">Hiển thị tóm tắt \"Phiên bản Kernel\"</string>
|
||||
<string name="kernel_simple_kernel_summary">Tóm tắt hiển thị phiên bản Kernel cho ngắn gọn</string>
|
||||
<string name="susfs_android_data_path_set">Đường dẫn Android Data đã được đặt thành: %s</string>
|
||||
<string name="susfs_sdcard_path_set">Đường dẫn SD Card đã được đặt thành: %s</string>
|
||||
<string name="susfs_path_setup_warning">Thiết lập đường dẫn có thể không thành công hoàn toàn, nhưng đường dẫn SuS sẽ tiếp tục được thêm vào</string>
|
||||
<!-- 备份和还原相关字符串 -->
|
||||
<string name="susfs_backup_title">Sao lưu</string>
|
||||
<string name="susfs_backup_description">Tạo bản sao lưu cho tất cả các cấu hình SuSFS. File sao lưu sẽ bao gồm tất cả các thiết lập, đường dẫn và thông tin cấu hình</string>
|
||||
<string name="susfs_backup_create">Tạo bản sao lưu</string>
|
||||
<string name="susfs_backup_success">Đã tạo bản sao lưu thành công: %s</string>
|
||||
<string name="susfs_backup_failed">Tạo bản sao lưu thất bại: %s</string>
|
||||
<string name="susfs_backup_file_not_found">Không tìm thấy file sao lưu</string>
|
||||
<string name="susfs_backup_invalid_format">Định dạng file sao lưu không hợp lệ</string>
|
||||
<string name="susfs_backup_version_mismatch">Phiên bản sao lưu không khớp, nhưng sẽ cố gắng khôi phục</string>
|
||||
<string name="susfs_restore_title">Khôi phục</string>
|
||||
<string name="susfs_restore_description">Khôi phục cấu hình SuSFS từ file sao lưu. Thao tác này sẽ ghi đè lên tất cả các cài đặt hiện tại</string>
|
||||
<string name="susfs_restore_select_file">Chọn file sao lưu</string>
|
||||
<string name="susfs_restore_success" formatted="false">Cấu hình đã được khôi phục thành công từ bản sao lưu được tạo trên %s, từ thiết bị: %s</string>
|
||||
<string name="susfs_restore_failed">Khôi phục thất bại: %s</string>
|
||||
<string name="susfs_restore_confirm_title">Xác nhận khôi phục</string>
|
||||
<string name="susfs_restore_confirm_description">Thao tác này sẽ ghi đè lên tất cả các cấu hình SuSFS hiện tại. Bạn có chắc chắn muốn tiếp tục không?</string>
|
||||
<string name="susfs_restore_confirm">Khôi phục</string>
|
||||
<string name="susfs_backup_info_date">Ngày sao lưu: %s</string>
|
||||
<string name="susfs_backup_info_device">Thiết bị: %s</string>
|
||||
<string name="susfs_backup_info_version">Phiên bản: %s</string>
|
||||
<string name="hide_bl_script">Ẩn Script BL</string>
|
||||
<string name="hide_bl_script_description">Ẩn scripts trạng thái Unlock Bootloader</string>
|
||||
<string name="cleanup_residue">Dọn rác</string>
|
||||
<string name="cleanup_residue_description">Dọn dẹp các file và folder còn sót lại của các module và công cụ (Có thể bị xóa nhầm, dẫn đến mất dữ liệu và không khởi động được)</string>
|
||||
<string name="susfs_edit_sus_path">Chỉnh sửa Đường dẫn SuS</string>
|
||||
<string name="susfs_edit_sus_mount">Chỉnh sửa SuS Mount</string>
|
||||
<string name="susfs_edit_try_umount">Chỉnh sửa SuS Umount</string>
|
||||
<string name="edit_kstat_statically_title">Chỉnh sửa cấu hình Kstat tĩnh</string>
|
||||
<string name="edit_kstat_path_title">Chỉnh sửa Đường dẫn Kstat</string>
|
||||
<string name="susfs_save">Lưu</string>
|
||||
<string name="edit">Chỉnh sửa</string>
|
||||
<string name="delete">Xoá</string>
|
||||
<string name="update">Cập nhật</string>
|
||||
<string name="kstat_config_updated">Cập nhật cấu hình Kstat</string>
|
||||
<string name="kstat_path_updated">Cập nhật Đường dẫn Kstat</string>
|
||||
<string name="susfs_update_full_clone">Cập nhật bản sao SuSFS đầy đủ</string>
|
||||
</resources>
|
||||
|
||||
@@ -4,17 +4,12 @@
|
||||
<string name="home_not_installed">未安装</string>
|
||||
<string name="home_click_to_install">点击安装</string>
|
||||
<string name="home_working">工作中</string>
|
||||
<string name="home_working_version">版本:%d</string>
|
||||
<string name="home_superuser_count">超级用户数:%d</string>
|
||||
<string name="home_module_count">模块数:%d</string>
|
||||
<string name="home_working_version">版本:%s</string>
|
||||
<string name="home_unsupported">不支持</string>
|
||||
<string name="home_unsupported_reason">内核上未检测到 KernelSU 驱动程序,内核错误?</string>
|
||||
<string name="home_kernel">内核版本</string>
|
||||
<string name="home_susfs">SuSFS:%s</string>
|
||||
<string name="home_susfs_version">SuSFS 版本</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">管理器版本</string>
|
||||
<string name="home_fingerprint">系统指纹</string>
|
||||
<string name="home_selinux_status">SELinux 状态</string>
|
||||
<string name="selinux_status_disabled">被禁用</string>
|
||||
<string name="selinux_status_enforcing">强制执行</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">排序(可执行优先)</string>
|
||||
<string name="module_sort_enabled_first">排序(已启用优先)</string>
|
||||
<string name="uninstall">卸载</string>
|
||||
<string name="restore">还原</string>
|
||||
<string name="module_install">安装</string>
|
||||
<string name="install">安装</string>
|
||||
<string name="reboot">重启</string>
|
||||
@@ -56,23 +50,19 @@
|
||||
<string name="home_click_to_learn_kernelsu">了解如何安装 KernelSU 以及如何开发模块</string>
|
||||
<string name="home_support_title">支持开发</string>
|
||||
<string name="home_support_content">KernelSU 将保持免费开源,向开发者捐赠以表示支持。</string>
|
||||
<string name="about_source_code"><![CDATA[在 %1$s 查看源码<br/>加入我们的 %2$s 频道<br/>加入我们的 <b><a href="https://qm.qq.com/q/WbrOMxgLG8">QQ 群聊</a></b>]]></string>
|
||||
<string name="about_source_code"><![CDATA[在 %1$s 查看源码<br/>加入我们的 %2$s 频道]]></string>
|
||||
<string name="profile_default">默认</string>
|
||||
<string name="profile_template">模版</string>
|
||||
<string name="profile_custom">自定义</string>
|
||||
<string name="profile_name">名称</string>
|
||||
<string name="profile_namespace">命名空间</string>
|
||||
<string name="profile_namespace_inherited">继承</string>
|
||||
<string name="profile_namespace_global">全局</string>
|
||||
<string name="profile_namespace_individual">私有</string>
|
||||
<string name="profile_groups">组</string>
|
||||
<string name="profile_capabilities">权能</string>
|
||||
<string name="profile_selinux_context">SELinux</string>
|
||||
<string name="profile_umount_modules">卸载模块</string>
|
||||
<string name="failed_to_update_app_profile">为 %s 更新 App Profile 失败</string>
|
||||
<string name="require_kernel_version" formatted="false">当前 KernelSU 版本 %d 过低,管理器无法正常工作,请将内核 KernelSU 版本升级至 %d 或以上!</string>
|
||||
<string name="require_kernel_version" formatted="false">当前 KernelSU 版本 %s 过低,管理器无法正常工作,请将内核 KernelSU 版本升级至 %s 或以上!</string>
|
||||
<string name="settings_umount_modules_default">默认卸载模块</string>
|
||||
<string name="settings_umount_modules_default_summary">App Profile 中“卸载模块”的全局默认值,如果启用,将会为没有设置 Profile 的应用移除所有模块针对系统的修改。</string>
|
||||
<string name="settings_umount_modules_default_summary">App Profile 中\"卸载模块\"的全局默认值,如果启用,将会为没有设置 Profile 的应用移除所有模块针对系统的修改。</string>
|
||||
<string name="settings_susfs_toggle">禁用 kprobe 钩子</string>
|
||||
<string name="profile_umount_modules_summary">启用该选项后将允许 KernelSU 为本应用还原被模块修改过的文件。</string>
|
||||
<string name="profile_selinux_domain">域</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">在应用启动后自动检查是否有最新版</string>
|
||||
<string name="grant_root_failed">获取 root 失败!</string>
|
||||
<string name="action">执行</string>
|
||||
<string name="open">打开</string>
|
||||
<string name="close">关闭</string>
|
||||
<string name="enable_web_debugging">启用 WebView 调试</string>
|
||||
<string name="enable_web_debugging_summary">可用于调试 WebUI 。请仅在需要时启用。</string>
|
||||
@@ -122,6 +111,7 @@
|
||||
<string name="install_inactive_slot_warning">将在重启后强制切换到另一个槽位!\n注意只能在 OTA 更新完成后的重启之前使用。\n确认?</string>
|
||||
<string name="install_next">下一步</string>
|
||||
<string name="select_file_tip">建议选择 %1$s 分区镜像</string>
|
||||
<string name="select_file_tip_vendor">(实验性的)</string>
|
||||
<string name="select_kmi">选择 KMI</string>
|
||||
<string name="settings_uninstall">卸载</string>
|
||||
<string name="settings_uninstall_temporary">临时卸载</string>
|
||||
@@ -129,16 +119,13 @@
|
||||
<string name="settings_restore_stock_image">恢复原厂镜像</string>
|
||||
<string name="settings_uninstall_temporary_message">临时卸载 KernelSU,下次重启后恢复至原始状态。</string>
|
||||
<string name="settings_uninstall_permanent_message">完全并永久卸载 KernelSU(Root 权限和所有模块)。</string>
|
||||
<string name="settings_restore_stock_image_message">恢复原厂镜像(若存在备份),一般在 OTA 前使用;如果你需要卸载 KernelSU,请使用“永久卸载”。</string>
|
||||
<string name="settings_restore_stock_image_message">恢复原厂镜像(若存在备份),一般在 OTA 前使用;如果你需要卸载 KernelSU,请使用\"永久卸载\"。</string>
|
||||
<string name="flashing">刷写中</string>
|
||||
<string name="flash_success">刷写完成</string>
|
||||
<string name="flash_failed">刷写失败</string>
|
||||
<string name="selected_lkm">选择的 LKM:%s</string>
|
||||
<string name="save_log">保存日志</string>
|
||||
<string name="log_saved">日志已保存</string>
|
||||
<string name="status_supported">支持</string>
|
||||
<string name="status_not_supported">不支持</string>
|
||||
<string name="status_unknown">未知</string>
|
||||
<string name="sus_su_mode">SuS SU 模式:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">确认安装模块 %1$s?</string>
|
||||
@@ -172,14 +159,11 @@
|
||||
<string name="settings_custom_background">自定义背景</string>
|
||||
<string name="settings_custom_background_summary">选择一张图片作为应用背景</string>
|
||||
<string name="settings_card_alpha">卡片不透明度</string>
|
||||
<string name="settings_restore_default">恢复默认</string>
|
||||
<string name="home_android_version">Android 版本</string>
|
||||
<string name="home_device_model">设备</string>
|
||||
<string name="su_not_allowed">不允许授予 %s 超级用户权限</string>
|
||||
<string name="settings_disable_su">禁用 su 兼容性</string>
|
||||
<string name="settings_disable_su_summary">临时禁止任何应用程序通过 su 命令获取 Root 权限(现有的 Root 进程不受影响)</string>
|
||||
<string name="using_mksu_manager">你正在使用的是 SukiSU Beta 版管理器</string>
|
||||
<string name="module_install_multiple_confirm">确定要安装选择的 %d 个模块吗?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">确定要安装以下 %1$d 个模块吗?\n\n%2$s</string>
|
||||
<string name="more_settings">更多设置</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -195,6 +179,8 @@
|
||||
<string name="hide_susfs_status_summary">隐藏主页上的 SuSFS 状态信息</string>
|
||||
<string name="hide_link_card">隐藏链接卡片</string>
|
||||
<string name="hide_link_card_summary">隐藏主页上的链接卡片信息</string>
|
||||
<string name="hide_tag_card">隐藏模块标签行</string>
|
||||
<string name="hide_tag_card_summary">隐藏模块卡片中的文件夹名称和大小标签</string>
|
||||
<string name="theme_mode">主题模式</string>
|
||||
<string name="theme_follow_system">跟随系统</string>
|
||||
<string name="theme_light">浅色</string>
|
||||
@@ -210,20 +196,14 @@
|
||||
<string name="color_pink">粉色</string>
|
||||
<string name="color_gray">高级灰</string>
|
||||
<string name="color_yellow">黄色</string>
|
||||
<string name="flash_option">刷入选项</string>
|
||||
<string name="flash_option_tip">选择要刷入的文件</string>
|
||||
<string name="horizon_kernel">刷写 AnyKernel3 压缩包</string>
|
||||
<string name="horizon_kernel_summary">刷入 Anykernel3 内核</string>
|
||||
<string name="root_required">需要 root 权限</string>
|
||||
<string name="copy_failed">文件复制失败</string>
|
||||
<string name="reboot_complete_title">刷写完成</string>
|
||||
<string name="reboot_complete_msg">是否立即重启?</string>
|
||||
<string name="yes">是</string>
|
||||
<string name="no">否</string>
|
||||
<string name="failed_reboot">重启失败</string>
|
||||
<string name="batch_authorization">授权</string>
|
||||
<string name="batch_cancel_authorization">撤销</string>
|
||||
<string name="backup">备份</string>
|
||||
<string name="kpm_title">内核模块</string>
|
||||
<string name="kpm_empty">暂无已安装的内核模块</string>
|
||||
<string name="kpm_version">版本</string>
|
||||
@@ -231,7 +211,6 @@
|
||||
<string name="kpm_uninstall">卸载</string>
|
||||
<string name="kpm_uninstall_success">卸载成功</string>
|
||||
<string name="kpm_uninstall_failed">卸载失败</string>
|
||||
<string name="kpm_install">选择安装</string>
|
||||
<string name="kpm_install_success">加载 KPM 模块成功</string>
|
||||
<string name="kpm_install_failed">加载 KPM 模块失败</string>
|
||||
<string name="kpm_args">参数</string>
|
||||
@@ -245,8 +224,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra 未来将会成为一个相对独立的 KSU 分支,但是依然感谢官方 KernelSU 和 MKSU 等做出的贡献</string>
|
||||
<string name="not_supported">不支持</string>
|
||||
<string name="supported">支持</string>
|
||||
<string name="home_kpm_module">"内核模块数:%d "</string>
|
||||
<string name="kpm_invalid_file">KPM 文件无效</string>
|
||||
<string name="kernel_patched">内核未进行补丁</string>
|
||||
<string name="kernel_not_enabled">内核未配置</string>
|
||||
<string name="custom_settings">个性化设置</string>
|
||||
@@ -254,19 +231,13 @@
|
||||
<string name="kpm_install_mode_load">加载</string>
|
||||
<string name="kpm_install_mode_embed">嵌入</string>
|
||||
<string name="kpm_install_mode_description">请选择: %1\$s 模块的安装模式 \n\n加载:临时加载模块\n嵌入:永久安装到系统</string>
|
||||
<string name="log_failed_to_check_module_file">无法检查模块文件是否存在</string>
|
||||
<string name="snackbar_failed_to_check_module_file">无法检查模块文件是否存在</string>
|
||||
<string name="confirm_uninstall_title">确认卸载</string>
|
||||
<string name="confirm_uninstall_confirm">删除</string>
|
||||
<string name="confirm_uninstall_dismiss">取消</string>
|
||||
<string name="theme_color">主题颜色</string>
|
||||
<string name="invalid_file_type">文件类型不正确,请选择 .kpm 文件</string>
|
||||
<string name="confirm_uninstall_title_with_filename">卸载</string>
|
||||
<string name="confirm_uninstall_content">将卸载以下 KPM 模块:\n%s</string>
|
||||
<string name="settings_susfs_toggle_summary">禁用由 KernelSU 创建的 kprobe 钩子,并使用非 kprobe 内联钩子代替,实现方式类似于不支持 kprobe 的非 GKI 内核。</string>
|
||||
<string name="image_editor_title">调整背景图片</string>
|
||||
<string name="image_editor_hint">使用双指缩放图片,单指拖动调整位置</string>
|
||||
<string name="background_image_error">无法加载图片</string>
|
||||
<string name="reprovision">重置</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">刷写Kernel</string>
|
||||
@@ -303,10 +274,6 @@
|
||||
<string name="app_settings">应用设置</string>
|
||||
<string name="tools">工具</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">清除</string>
|
||||
<string name="apps_with_root">Root 权限应用</string>
|
||||
<string name="apps_with_custom_profile">自定义配置应用</string>
|
||||
<string name="other_apps">默认配置应用</string>
|
||||
<string name="no_apps_found">未找到应用</string>
|
||||
<string name="selinux_enabled_toast">SELinux 已设置为启用状态</string>
|
||||
<string name="selinux_disabled_toast">SELinux 已设置为禁用状态</string>
|
||||
@@ -314,8 +281,6 @@
|
||||
<string name="advanced_settings">高级设置</string>
|
||||
<string name="appearance_settings">外观设置</string>
|
||||
<string name="back">返回</string>
|
||||
<string name="expand">展开</string>
|
||||
<string name="collapse">收起</string>
|
||||
<string name="susfs_enabled">SuSFS 已启用</string>
|
||||
<string name="susfs_disabled">SuSFS 已禁用</string>
|
||||
<string name="background_set_success">背景设置成功</string>
|
||||
@@ -323,7 +288,6 @@
|
||||
<string name="icon_switch_title">备选图标</string>
|
||||
<string name="icon_switch_summary">更换为 KernelSU 图标</string>
|
||||
<string name="icon_switched">已切换图标</string>
|
||||
<string name="root_require_for_install">需要 root 权限</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">隐藏 KPM 功能</string>
|
||||
<string name="show_kpm_info_summary">在主页和底栏隐藏 KPM 相关功能和信息</string>
|
||||
@@ -335,7 +299,6 @@
|
||||
<string name="use_webuix_eruda">将 Eruda 注入 WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">在 WebUI X 中注入调试控制台,使调试更容易,需要启用 WebView 调试</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI 设置</string>
|
||||
<string name="app_dpi_title">应用DPI</string>
|
||||
<string name="app_dpi_summary">仅调整当前应用的屏幕显示密度</string>
|
||||
<string name="dpi_size_small">小</string>
|
||||
@@ -353,16 +316,6 @@
|
||||
<string name="language_follow_system">跟随系统</string>
|
||||
<string name="language_changed">语言已更改,重启应用以应用更改</string>
|
||||
<string name="settings_card_dim">卡片暗度调节</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">顶部</string>
|
||||
<string name="scroll_to_bottom">底部</string>
|
||||
<string name="scroll_to_top_description">滚动到顶部</string>
|
||||
<string name="scroll_to_bottom_description">滚动到底部</string>
|
||||
<string name="authorized">已授权</string>
|
||||
<string name="unauthorized">未授权</string>
|
||||
<string name="selected">已选择</string>
|
||||
<string name="select">选择</string>
|
||||
<string name="profile_umount_modules_disable">禁用自定义卸载模块</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">错误代码</string>
|
||||
<string name="check_log">请查看日志</string>
|
||||
@@ -370,4 +323,238 @@
|
||||
<string name="module_failed_count">%d 个模块安装失败</string>
|
||||
<string name="module_download_error">模块下载失败</string>
|
||||
<string name="kernel_flashing">内核刷写</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">全部</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">自定义</string>
|
||||
<string name="category_default_apps">默认</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">名称升序</string>
|
||||
<string name="sort_name_desc">名称降序</string>
|
||||
<string name="sort_install_time_new">安装时间(新)</string>
|
||||
<string name="sort_install_time_old">安装时间(旧)</string>
|
||||
<string name="sort_size_desc">大小降序</string>
|
||||
<string name="sort_size_asc">大小升序</string>
|
||||
<string name="sort_usage_freq">使用频率</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">此分类中没有应用</string>
|
||||
<!-- 标签相关 -->
|
||||
<string name="deny_authorization">取消授权</string>
|
||||
<string name="grant_authorization">授权</string>
|
||||
<string name="unmount_modules">卸载模块挂载</string>
|
||||
<string name="disable_unmount">禁用卸载模块挂载</string>
|
||||
<string name="expand_menu">展开菜单</string>
|
||||
<string name="collapse_menu">收起菜单</string>
|
||||
<string name="scroll_to_top">顶部</string>
|
||||
<string name="scroll_to_bottom">底部</string>
|
||||
<string name="selected">已选择</string>
|
||||
<string name="select">选择</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">菜单选项</string>
|
||||
<string name="sort_options">排序方式</string>
|
||||
<string name="app_categories">应用类型选择</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<string name="susfs_config_title">SuSFS 配置</string>
|
||||
<string name="susfs_config_description">配置说明</string>
|
||||
<string name="susfs_config_description_text">此功能允许您自定义 SuSFS 的 uname 值和构建时间伪装。输入您想要设置的值,点击应用即可生效</string>
|
||||
<string name="susfs_uname_label">Uname 值</string>
|
||||
<string name="susfs_uname_placeholder">请输入自定义 uname 值</string>
|
||||
<string name="susfs_build_time_label">构建时间伪装</string>
|
||||
<string name="susfs_build_time_placeholder">请输入构建时间伪装值</string>
|
||||
<string name="susfs_current_value">当前值: %s</string>
|
||||
<string name="susfs_current_build_time">当前构建时间: %s</string>
|
||||
<string name="susfs_reset_to_default">重置为默认值</string>
|
||||
<string name="susfs_apply">应用</string>
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<string name="susfs_reset_confirm_title">确认重置</string>
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<string name="susfs_binary_not_found">无法找到 ksu_susfs 文件</string>
|
||||
<string name="susfs_command_failed">SuSFS 命令执行失败</string>
|
||||
<string name="susfs_command_error">执行 SuSFS 命令时出错: %s</string>
|
||||
<string name="susfs_uname_set_success" formatted="false">SuSFS 内核名称和构建时间设置成功: %s, %s</string>
|
||||
<!-- SuSFS Settings Item -->
|
||||
<string name="susfs_config_setting_title">SuSFS 配置</string>
|
||||
<!-- 开机自启动相关 -->
|
||||
<string name="susfs_autostart_title">开机自启动</string>
|
||||
<string name="susfs_autostart_description">重启时自动应用所有非默认配置</string>
|
||||
<string name="susfs_autostart_requirement">需要添加配置后才能启用</string>
|
||||
<string name="susfs_autostart_enable_failed">启用开机自启动失败</string>
|
||||
<string name="susfs_autostart_disable_failed">禁用开机自启动失败</string>
|
||||
<string name="susfs_autostart_error">开机自启动配置错误: %s</string>
|
||||
<string name="susfs_no_config_to_autostart">没有可用的配置进行开机自启动</string>
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<string name="susfs_tab_basic_settings">基本设置</string>
|
||||
<string name="susfs_tab_sus_paths">SUS路径</string>
|
||||
<string name="susfs_tab_sus_mounts">SUS挂载</string>
|
||||
<string name="susfs_tab_try_umount">尝试卸载</string>
|
||||
<string name="susfs_tab_path_settings">路径设置</string>
|
||||
<string name="susfs_tab_enabled_features">启用功能状态</string>
|
||||
<!-- SuSFS Path Management -->
|
||||
<string name="susfs_add_sus_path">添加SUS路径</string>
|
||||
<string name="susfs_add_sus_mount">添加SUS挂载</string>
|
||||
<string name="susfs_add_try_umount">添加尝试卸载</string>
|
||||
<string name="susfs_sus_path_added_success">SUS 路径添加成功</string>
|
||||
<string name="susfs_path_not_found_error">路径未找到错误</string>
|
||||
<string name="susfs_path_label">路径</string>
|
||||
<string name="susfs_mount_path_label">挂载路径</string>
|
||||
<string name="susfs_path_placeholder">例如: /system/addon.d</string>
|
||||
<string name="susfs_no_paths_configured">暂无 SUS 路径配置</string>
|
||||
<string name="susfs_no_mounts_configured">暂无 SUS 挂载配置</string>
|
||||
<string name="susfs_no_umounts_configured">暂无尝试卸载配置</string>
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<string name="susfs_umount_mode_label">卸载模式</string>
|
||||
<string name="susfs_umount_mode_normal">普通卸载 (0)</string>
|
||||
<string name="susfs_umount_mode_detach">分离卸载 (1)</string>
|
||||
<string name="susfs_umount_mode_normal_short">普通</string>
|
||||
<string name="susfs_umount_mode_detach_short">分离</string>
|
||||
<string name="susfs_umount_mode_display">模式: %1$s (%2$s)</string>
|
||||
<string name="susfs_try_umount_added_success">尝试 umount 路径添加成功: %s</string>
|
||||
<string name="susfs_try_umount_added_saved">尝试 umount 路径保存成功: %s</string>
|
||||
<!-- SuSFS Run Umount -->
|
||||
<string name="susfs_run_umount_confirm_title">确认运行尝试卸载</string>
|
||||
<string name="susfs_run_umount_confirm_message">这将立即执行所有已配置的尝试卸载操作,确定要继续吗?</string>
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<string name="susfs_reset_paths_title">重置 SUS 路径</string>
|
||||
<string name="susfs_reset_paths_message">这将清除所有 SUS 路径配置,确定要继续吗?</string>
|
||||
<string name="susfs_reset_mounts_title">重置 SUS 挂载</string>
|
||||
<string name="susfs_reset_mounts_message">这将清除所有 SUS 挂载配置,确定要继续吗?</string>
|
||||
<string name="susfs_reset_umounts_title">重置尝试卸载</string>
|
||||
<string name="susfs_reset_umounts_message">这将清除所有尝试卸载配置,确定要继续吗?</string>
|
||||
<string name="susfs_reset_path_title">重置路径设置</string>
|
||||
<!-- SuSFS Path Settings -->
|
||||
<string name="susfs_android_data_path_label">Android Data 路径</string>
|
||||
<string name="susfs_sdcard_path_label">SD 卡路径</string>
|
||||
<string name="susfs_set_android_data_path">设置 Android Data 路径</string>
|
||||
<string name="susfs_set_sdcard_path">设置 SD 卡路径</string>
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<string name="susfs_enabled_features_description">显示当前 SuSFS 启用的功能状态</string>
|
||||
<string name="susfs_no_features_found">未找到功能状态信息</string>
|
||||
<string name="susfs_feature_enabled">已启用</string>
|
||||
<string name="susfs_feature_disabled">已禁用</string>
|
||||
<!-- Feature Labels -->
|
||||
<string name="sus_path_feature_label">SUS 路径支持</string>
|
||||
<string name="sus_mount_feature_label">SUS 挂载支持</string>
|
||||
<string name="try_umount_feature_label">尝试卸载支持</string>
|
||||
<string name="spoof_uname_feature_label">欺骗 uname 支持</string>
|
||||
<string name="spoof_cmdline_feature_label">欺骗 Cmdline/Bootconfig</string>
|
||||
<string name="open_redirect_feature_label">开放重定向支持</string>
|
||||
<string name="enable_log_feature_label">日志记录支持</string>
|
||||
<string name="auto_default_mount_feature_label">自动默认挂载</string>
|
||||
<string name="auto_bind_mount_feature_label">自动绑定挂载</string>
|
||||
<string name="auto_try_umount_bind_feature_label">自动尝试卸载绑定挂载</string>
|
||||
<string name="hide_symbols_feature_label">隐藏 KSU SUSFS 符号</string>
|
||||
<string name="magic_mount_feature_label">魔法坐骑支持</string>
|
||||
<string name="sus_kstat_feature_label">SUS Kstat 支持</string>
|
||||
<string name="sus_su_feature_label">SUS SU 模式切换功能</string>
|
||||
<!-- 可切换状态 -->
|
||||
<string name="susfs_feature_configurable">可配置的 SuSFS 功能</string>
|
||||
<string name="susfs_enable_log_label">SuSFS 启用日志</string>
|
||||
<string name="susfs_log_config_description">启用或者关闭 SuSFS 的日志</string>
|
||||
<string name="susfs_log_config_title">SuSFS 日志配置</string>
|
||||
<string name="susfs_log_enabled">启用 SuSFS 日志</string>
|
||||
<string name="susfs_log_disabled">关闭 SuSFS 日志</string>
|
||||
<string name="module_update_json">更新配置</string>
|
||||
<string name="module_update_json_copied">更新配置地址已复制到剪贴板</string>
|
||||
<!-- Settings related strings -->
|
||||
<string name="show_more_module_info">显示更多模块信息</string>
|
||||
<string name="show_more_module_info_summary">显示额外的模块信息,如更新配置 URL 等</string>
|
||||
<string name="susfs_execution_location_label">执行位置</string>
|
||||
<string name="susfs_current_execution_location">当前执行位置:%s</string>
|
||||
<string name="susfs_execution_location_service">Service</string>
|
||||
<string name="susfs_execution_location_post_fs_data">Post-FS-Data</string>
|
||||
<string name="susfs_execution_location_service_description">在系统服务启动后执行</string>
|
||||
<string name="susfs_execution_location_post_fs_data_description">在文件系统挂载后但系统完全启动前执行,可能会导致循环重启</string>
|
||||
<string name="susfs_slot_info_title">槽位信息</string>
|
||||
<string name="susfs_slot_info_description">查看当前启动槽位信息并复制数值</string>
|
||||
<string name="susfs_current_active_slot">当前活动槽位:%s</string>
|
||||
<string name="susfs_slot_uname">Uname:%s</string>
|
||||
<string name="susfs_slot_build_time">构建时间:%s</string>
|
||||
<string name="susfs_slot_current_badge">当前</string>
|
||||
<string name="susfs_slot_use_uname">使用 Uname</string>
|
||||
<string name="susfs_slot_use_build_time">使用构建时间</string>
|
||||
<string name="susfs_slot_info_unavailable">无法获取槽位信息</string>
|
||||
<!-- SuSFS 自启动相关字符串 -->
|
||||
<string name="susfs_autostart_enabled_success">SuSFS 自启动模块已启用,模块路径:%s</string>
|
||||
<string name="susfs_autostart_disabled_success">SuSFS 自启动模块已禁用</string>
|
||||
<!-- SuSFS Kstat相关字符串 -->
|
||||
<string name="susfs_tab_kstat_config">Kstat 配置</string>
|
||||
<string name="kstat_static_config_added">Kstat 静态配置已添加:%1$s</string>
|
||||
<string name="kstat_config_removed">已移除 Kstat 配置:%1$s</string>
|
||||
<string name="kstat_path_added">Kstat 路径已添加:%1$s</string>
|
||||
<string name="kstat_path_removed">已移除 Kstat 路径:%1$s</string>
|
||||
<string name="kstat_updated">Kstat 已更新:%1$s</string>
|
||||
<string name="kstat_full_clone_updated">Kstat 完整克隆已更新:%1$s</string>
|
||||
<string name="add_kstat_statically_title">添加 Kstat 静态配置</string>
|
||||
<string name="file_or_directory_path_label">文件/目录路径</string>
|
||||
<string name="hint_use_default_value">提示:可以使用 “default” 来使用原始值</string>
|
||||
<string name="add_kstat_path_title">添加 Kstat 路径</string>
|
||||
<string name="add">添加</string>
|
||||
<string name="reset_kstat_config_title">重置 Kstat 配置</string>
|
||||
<string name="reset_kstat_config_message">确定要清除所有 Kstat 配置吗?此操作不可撤销</string>
|
||||
<string name="kstat_config_description_title">Kstat 配置说明</string>
|
||||
<string name="kstat_config_description_add_statically">• add_sus_kstat_statically: 静态配置文件/目录的 stat 信息</string>
|
||||
<string name="kstat_config_description_add">• add_sus_kstat: 在绑定挂载前添加路径,存储原始 stat 信息</string>
|
||||
<string name="kstat_config_description_update">• update_sus_kstat: 更新目标 ino,保持 size 和 blocks 不变</string>
|
||||
<string name="kstat_config_description_update_full_clone">• update_sus_kstat_full_clone: 仅更新 ino,其他保持原始值</string>
|
||||
<string name="static_kstat_config">静态 Kstat 配置</string>
|
||||
<string name="kstat_path_management">Kstat 路径管理</string>
|
||||
<string name="no_kstat_config_message">暂无 Kstat 配置,点击下方按钮添加配置</string>
|
||||
<!-- SuSFS Mount Hiding Control Related Strings -->
|
||||
<string name="susfs_hide_mounts_control_title">SUS挂载隐藏控制</string>
|
||||
<string name="susfs_hide_mounts_control_description">控制SUS挂载对进程的隐藏行为</string>
|
||||
<string name="susfs_hide_mounts_for_all_procs_label">对所有进程隐藏SUS挂载</string>
|
||||
<string name="susfs_hide_mounts_for_all_procs_enabled_description">启用后,SUS挂载将对所有进程隐藏,包括KSU进程</string>
|
||||
<string name="susfs_hide_mounts_for_all_procs_disabled_description">禁用后,SUS挂载仅对非KSU进程隐藏,KSU进程可以看到挂载</string>
|
||||
<string name="susfs_hide_mounts_all_enabled">已启用对所有进程隐藏SUS挂载</string>
|
||||
<string name="susfs_hide_mounts_all_disabled">已禁用对所有进程隐藏SUS挂载</string>
|
||||
<string name="susfs_hide_mounts_recommendation">建议在屏幕解锁后或在service.sh或boot-completed.sh阶段设置为禁用,这可以修复一些依赖KSU进程挂载的root应用的问题</string>
|
||||
<string name="susfs_hide_mounts_current_setting">当前设置: %s</string>
|
||||
<string name="susfs_hide_mounts_setting_all">对所有进程隐藏</string>
|
||||
<string name="susfs_hide_mounts_setting_non_ksu">仅对非KSU进程隐藏</string>
|
||||
<string name="susfs_run">运行</string>
|
||||
<string name="kernel_simple_kernel">内核版本简洁模式</string>
|
||||
<string name="kernel_simple_kernel_summary">启用或禁用SukiSU内核版本显示的简洁模式</string>
|
||||
<string name="susfs_android_data_path_set">Android Data路径已设置为: %s</string>
|
||||
<string name="susfs_sdcard_path_set">SD卡路径已设置为: %s</string>
|
||||
<string name="susfs_path_setup_warning">路径设置可能未完全成功,但将继续添加SUS路径</string>
|
||||
<!-- 备份和还原相关字符串 -->
|
||||
<string name="susfs_backup_title">备份</string>
|
||||
<string name="susfs_backup_description">创建所有SuSFS配置的备份。备份文件将包含所有设置、路径和配置信息。</string>
|
||||
<string name="susfs_backup_create">创建备份</string>
|
||||
<string name="susfs_backup_success">备份创建成功:%s</string>
|
||||
<string name="susfs_backup_failed">备份创建失败:%s</string>
|
||||
<string name="susfs_backup_file_not_found">备份文件未找到</string>
|
||||
<string name="susfs_backup_invalid_format">无效的备份文件格式</string>
|
||||
<string name="susfs_backup_version_mismatch">备份版本不匹配,但将尝试还原</string>
|
||||
<string name="susfs_restore_title">还原</string>
|
||||
<string name="susfs_restore_description">从备份文件还原SuSFS配置。这将覆盖所有当前设置。</string>
|
||||
<string name="susfs_restore_select_file">选择备份文件</string>
|
||||
<string name="susfs_restore_success" formatted="false">配置还原成功,备份创建于 %s,来自设备:%s</string>
|
||||
<string name="susfs_restore_failed">还原失败:%s</string>
|
||||
<string name="susfs_restore_confirm_title">确认还原</string>
|
||||
<string name="susfs_restore_confirm_description">这将覆盖所有当前的SuSFS配置。您确定要继续吗?</string>
|
||||
<string name="susfs_restore_confirm">还原</string>
|
||||
<string name="susfs_backup_info_date">备份日期:%s</string>
|
||||
<string name="susfs_backup_info_device">设备:%s</string>
|
||||
<string name="susfs_backup_info_version">版本:%s</string>
|
||||
<string name="hide_bl_script">隐藏BL脚本</string>
|
||||
<string name="hide_bl_script_description">启用隐藏Bootloader解锁状态脚本</string>
|
||||
<string name="cleanup_residue">清理工具残留</string>
|
||||
<string name="cleanup_residue_description">清理各种模块以及工具的残留文件和目录(可能会误删导致丢失以及无法启动,谨慎使用)</string>
|
||||
<string name="susfs_edit_sus_path">编辑 SUS 路径</string>
|
||||
<string name="susfs_edit_sus_mount">编辑 SUS 挂载</string>
|
||||
<string name="susfs_edit_try_umount">编辑尝试卸载</string>
|
||||
<string name="edit_kstat_statically_title">编辑 Kstat 静态配置</string>
|
||||
<string name="edit_kstat_path_title">编辑 Kstat 路径</string>
|
||||
<string name="susfs_save">保存</string>
|
||||
<string name="edit">编辑</string>
|
||||
<string name="delete">删除</string>
|
||||
<string name="update">更新</string>
|
||||
<string name="kstat_config_updated">Kstat 配置更新</string>
|
||||
<string name="kstat_path_updated">Kstat 路径更新</string>
|
||||
<string name="susfs_update_full_clone">Susfs 完整克隆更新</string>
|
||||
<string name="umount_zygote_iso_service">卸载Zygote隔离服务</string>
|
||||
<string name="umount_zygote_iso_service_description">启用此选项将在系统启动时卸载Zygote隔离服务挂载点</string>
|
||||
<string name="umount_zygote_iso_service_enabled">Zygote隔离服务卸载已启用</string>
|
||||
<string name="umount_zygote_iso_service_disabled">Zygote隔离服务卸载已禁用</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,375 +1,503 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="home">首頁</string>
|
||||
<string name="home">主頁</string>
|
||||
<string name="home_not_installed">未安裝</string>
|
||||
<string name="home_click_to_install">按一下以安裝</string>
|
||||
<string name="home_working">運作中</string>
|
||||
<string name="home_working_version">KernelSU 版本:%d</string>
|
||||
<string name="home_superuser_count">超級使用者:%d 個</string>
|
||||
<string name="home_module_count">已安裝模組:%d 個</string>
|
||||
<string name="home_unsupported">不支援</string>
|
||||
<string name="home_unsupported_reason">KernelSU 現在僅支援 GKI 核心</string>
|
||||
<string name="home_kernel">核心</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_click_to_install">點擊安裝</string>
|
||||
<string name="home_working">工作中</string>
|
||||
<string name="home_working_version">版本:%s</string>
|
||||
<string name="home_unsupported">唔支援</string>
|
||||
<string name="home_unsupported_reason">核心上未檢測到 KernelSU 驅動程式,核心錯誤?</string>
|
||||
<string name="home_kernel">核心版本</string>
|
||||
<string name="home_susfs_version">SuSFS 版本</string>
|
||||
<string name="home_susfs_sus_su">SuSFS: %s</string>
|
||||
<string name="home_manager_version">管理器版本</string>
|
||||
<string name="home_fingerprint">指紋</string>
|
||||
<string name="home_selinux_status">SELinux 狀態</string>
|
||||
<string name="selinux_status_disabled">已停用</string>
|
||||
<string name="selinux_status_enforcing">強制</string>
|
||||
<string name="selinux_status_permissive">寬鬆</string>
|
||||
<string name="selinux_status_disabled">被禁用</string>
|
||||
<string name="selinux_status_enforcing">強制執行</string>
|
||||
<string name="selinux_status_permissive">寬容模式</string>
|
||||
<string name="selinux_status_unknown">未知</string>
|
||||
<string name="superuser">超級使用者</string>
|
||||
<string name="superuser">超級用戶</string>
|
||||
<string name="module_failed_to_enable">無法啟用模組:%s</string>
|
||||
<string name="module_failed_to_disable">無法停用模組:%s</string>
|
||||
<string name="module_empty">尚未安裝模組</string>
|
||||
<string name="module_failed_to_disable">無法禁用模組:%s</string>
|
||||
<string name="module_empty">冇安裝模組</string>
|
||||
<string name="module">模組</string>
|
||||
<string name="module_sort_action_first">排序(活躍優先)</string>
|
||||
<string name="module_sort_enabled_first">排序(已啟用優先)</string>
|
||||
<string name="uninstall">解除安裝</string>
|
||||
<string name="restore">恢復</string>
|
||||
<string name="module_sort_action_first">排序(可執行優先)</string>
|
||||
<string name="module_sort_enabled_first">排序(已啟用優先)</string>
|
||||
<string name="uninstall">卸載</string>
|
||||
<string name="module_install">安裝</string>
|
||||
<string name="install">安裝</string>
|
||||
<string name="reboot">重新啟動</string>
|
||||
<string name="reboot">重啟</string>
|
||||
<string name="settings">設定</string>
|
||||
<string name="reboot_userspace">軟啟動</string>
|
||||
<string name="reboot_recovery">重新啟動至 Recovery</string>
|
||||
<string name="reboot_bootloader">重新啟動至 Bootloader</string>
|
||||
<string name="reboot_download">重新啟動至 Download</string>
|
||||
<string name="reboot_edl">重新啟動至 EDL</string>
|
||||
<string name="reboot_userspace">軟重啟</string>
|
||||
<string name="reboot_recovery">重啟到 Recovery</string>
|
||||
<string name="reboot_bootloader">重啟到 Bootloader</string>
|
||||
<string name="reboot_download">重啟到 Download</string>
|
||||
<string name="reboot_edl">重啟到 EDL</string>
|
||||
<string name="about">關於</string>
|
||||
<string name="module_uninstall_confirm">您確定要解除安裝模組「%s」嗎?</string>
|
||||
<string name="module_uninstall_success">「%s」已解除安裝</string>
|
||||
<string name="module_uninstall_failed">無法解除安裝:%s</string>
|
||||
<string name="module_uninstall_confirm">確定要卸載模組 %s 嗎?</string>
|
||||
<string name="module_uninstall_success">%s 已卸載</string>
|
||||
<string name="module_uninstall_failed">卸載失敗:%s</string>
|
||||
<string name="module_version">版本</string>
|
||||
<string name="module_author">作者</string>
|
||||
<string name="refresh">重新整理</string>
|
||||
<string name="show_system_apps">顯示系統應用程式</string>
|
||||
<string name="hide_system_apps">隱藏系統應用程式</string>
|
||||
<string name="send_log">傳送記錄</string>
|
||||
<string name="refresh">刷新</string>
|
||||
<string name="show_system_apps">顯示系統應用</string>
|
||||
<string name="hide_system_apps">隱藏系統應用</string>
|
||||
<string name="send_log">發送日誌</string>
|
||||
<string name="safe_mode">安全模式</string>
|
||||
<string name="reboot_to_apply">重新啟動以生效</string>
|
||||
<string name="module_magisk_conflict">模組已停用,因其與 Magisk 的模組存在衝突!</string>
|
||||
<string name="home_learn_kernelsu">深入瞭解 KernelSU</string>
|
||||
<string name="home_learn_kernelsu_url">https://kernelsu.org/zh_TW/guide/what-is-kernelsu.html</string>
|
||||
<string name="home_click_to_learn_kernelsu">瞭解如何安裝 KernelSU 以及如何開發模組</string>
|
||||
<string name="home_support_title">支援開發</string>
|
||||
<string name="home_support_content">KernelSU 將保持免費和開源,您可以考慮向開發人員贊助以表示支持。</string>
|
||||
<string name="about_source_code"><![CDATA[在 %1$s 查看源代碼<br/>加入我們的 %2$s 頻道]]></string>
|
||||
<string name="profile_default">預設</string>
|
||||
<string name="profile_template">範本</string>
|
||||
<string name="profile_custom">自訂</string>
|
||||
<string name="profile_name">設定檔名稱</string>
|
||||
<string name="profile_namespace">掛載命名空間</string>
|
||||
<string name="profile_namespace_inherited">繼承</string>
|
||||
<string name="profile_namespace_global">全域</string>
|
||||
<string name="profile_namespace_individual">個人</string>
|
||||
<string name="profile_groups">群組</string>
|
||||
<string name="profile_capabilities">功能</string>
|
||||
<string name="profile_selinux_context">SELinux 環境</string>
|
||||
<string name="reboot_to_apply">重啟生效</string>
|
||||
<string name="module_magisk_conflict">因同 Magisk 有衝突,所有模組不可用!</string>
|
||||
<string name="home_learn_kernelsu">了解 KernelSU</string>
|
||||
<string name="home_learn_kernelsu_url">https://kernelsu.org/zh_CN/guide/what-is-kernelsu.html</string>
|
||||
<string name="home_click_to_learn_kernelsu">了解如何安裝 KernelSU 以及如何開發模組</string>
|
||||
<string name="home_support_title">支持開發</string>
|
||||
<string name="home_support_content">KernelSU 將保持免費開源,向開發者捐贈以表示支持。</string>
|
||||
<string name="about_source_code"><![CDATA[在 %1$s 查看源碼<br/>加入我哋嘅 %2$s 頻道]]></string>
|
||||
<string name="profile_default">默認</string>
|
||||
<string name="profile_template">模版</string>
|
||||
<string name="profile_custom">自定義</string>
|
||||
<string name="profile_name">名稱</string>
|
||||
<string name="profile_groups">組</string>
|
||||
<string name="profile_capabilities">權能</string>
|
||||
<string name="profile_selinux_context">SELinux</string>
|
||||
<string name="profile_umount_modules">卸載模組</string>
|
||||
<string name="failed_to_update_app_profile">無法更新 %s 應用程式設定檔</string>
|
||||
<string name="require_kernel_version" formatted="false">目前 KernelSU 版本 %d 過低,管理器無法正常運作。請升級至 %d 或更高版本!</string>
|
||||
<string name="settings_umount_modules_default">預設解除安裝模組</string>
|
||||
<string name="settings_umount_modules_default_summary">應用程式設定檔中「解除安裝模組」的全域預設值,如果啟用,將會為沒有設定檔的應用程式移除所有模組針對系統的修改。</string>
|
||||
<string name="settings_susfs_toggle">關閉kprobe鉤子</string>
|
||||
<string name="profile_umount_modules_summary">啟用此選項將允許 KernelSU 為這個應用程式還原任何被模組修改過的檔案。</string>
|
||||
<string name="profile_selinux_domain">網域</string>
|
||||
<string name="failed_to_update_app_profile">為 %s 更新 App Profile 失敗</string>
|
||||
<string name="require_kernel_version" formatted="false">當前 KernelSU 版本 %s 過低,管理器無法正常工作,請將核心 KernelSU 版本升級至 %s 或以上!</string>
|
||||
<string name="settings_umount_modules_default">默認卸載模組</string>
|
||||
<string name="settings_umount_modules_default_summary">App Profile 中\"卸載模組\"嘅全局默認值,如果啟用,將會為冇設置 Profile 嘅應用移除所有模組針對系統嘅修改。</string>
|
||||
<string name="settings_susfs_toggle">禁用 Kprobe Hook</string>
|
||||
<string name="profile_umount_modules_summary">啟用該選項後將允許 KernelSU 為本應用還原被模組修改過嘅文件。</string>
|
||||
<string name="profile_selinux_domain">域</string>
|
||||
<string name="profile_selinux_rules">規則</string>
|
||||
<string name="module_update">更新</string>
|
||||
<string name="module_downloading">正在下載模組:%s</string>
|
||||
<string name="module_start_downloading">開始下載:%s</string>
|
||||
<string name="new_version_available">新版本:%s 已可供使用,按一下以升級</string>
|
||||
<string name="new_version_available">發現新版本:%s,點擊升級。</string>
|
||||
<string name="launch_app">啟動</string>
|
||||
<string name="force_stop_app" formatted="false">強制停止</string>
|
||||
<string name="restart_app">重新啟動</string>
|
||||
<string name="failed_to_update_sepolicy">無法為 %s 更新 SELinux 規則</string>
|
||||
<string name="module_changelog">變更記錄</string>
|
||||
<string name="settings_profile_template">App Profile 模板</string>
|
||||
<string name="settings_profile_template_summary">管理本地和線上的 App Profile 模板</string>
|
||||
<string name="app_profile_template_create">創建模板</string>
|
||||
<string name="app_profile_template_edit">編輯模板</string>
|
||||
<string name="app_profile_template_id">模板 ID</string>
|
||||
<string name="app_profile_template_id_invalid">模板 ID 無效</string>
|
||||
<string name="failed_to_update_sepolicy">為:%s 更新 SELinux 規則失敗</string>
|
||||
<string name="module_changelog">更新日誌</string>
|
||||
<string name="settings_profile_template">App Profile 模版</string>
|
||||
<string name="settings_profile_template_summary">管理本地同在線嘅 App Profile 模版</string>
|
||||
<string name="app_profile_template_create">創建模版</string>
|
||||
<string name="app_profile_template_edit">編輯模版</string>
|
||||
<string name="app_profile_template_id">模版 ID</string>
|
||||
<string name="app_profile_template_id_invalid">模版 ID 不合法</string>
|
||||
<string name="app_profile_template_name">名字</string>
|
||||
<string name="app_profile_template_description">描述</string>
|
||||
<string name="app_profile_template_save">儲存</string>
|
||||
<string name="app_profile_template_save">保存</string>
|
||||
<string name="app_profile_template_delete">刪除</string>
|
||||
<string name="app_profile_template_view">查看模板</string>
|
||||
<string name="app_profile_template_view">查看模版</string>
|
||||
<string name="app_profile_template_readonly">只讀</string>
|
||||
<string name="app_profile_template_id_exist">模板 ID 已存在!</string>
|
||||
<string name="app_profile_import_export">匯出 / 匯入</string>
|
||||
<string name="app_profile_import_from_clipboard">從剪貼簿匯入</string>
|
||||
<string name="app_profile_template_id_exist">模版 ID 已存在!</string>
|
||||
<string name="app_profile_import_export">導入/導出</string>
|
||||
<string name="app_profile_import_from_clipboard">從剪貼板導入</string>
|
||||
<string name="app_profile_export_to_clipboard">導出到剪貼板</string>
|
||||
<string name="app_profile_template_export_empty">本地沒有模板可匯出!</string>
|
||||
<string name="app_profile_template_import_success">成功匯出</string>
|
||||
<string name="app_profile_template_export_empty">冇可以導出嘅本地模板!</string>
|
||||
<string name="app_profile_template_import_success">導入成功</string>
|
||||
<string name="app_profile_template_sync">同步在線規則</string>
|
||||
<string name="app_profile_template_save_failed">模板儲存失敗</string>
|
||||
<string name="app_profile_template_import_empty">剪貼簿沒有內容!</string>
|
||||
<string name="app_profile_template_save_failed">模版保存失敗</string>
|
||||
<string name="app_profile_template_import_empty">剪貼板為空!</string>
|
||||
<string name="module_changelog_failed">獲取更新日誌失敗:%s</string>
|
||||
<string name="settings_check_update">檢查更新</string>
|
||||
<string name="settings_check_update_summary">開啟應用程式時自動檢查更新</string>
|
||||
<string name="grant_root_failed">授予root權限失敗!</string>
|
||||
<string name="action">行動</string>
|
||||
<string name="open">打開</string>
|
||||
<string name="settings_check_update_summary">在應用啟動後自動檢查是否有最新版</string>
|
||||
<string name="grant_root_failed">獲取 root 失敗!</string>
|
||||
<string name="action">執行</string>
|
||||
<string name="close">關閉</string>
|
||||
<string name="enable_web_debugging">啟用 WebView 偵錯</string>
|
||||
<string name="enable_web_debugging_summary">可用於偵錯WebUI,請僅在需要時啟用。</string>
|
||||
<string name="direct_install">直接安裝(建議)</string>
|
||||
<string name="select_file">選擇一個文件</string>
|
||||
<string name="install_inactive_slot">安裝到非活動插槽(OTA 後)</string>
|
||||
<string name="install_inactive_slot_warning">重新啟動後,您的裝置將強制啟動到目前非活動插槽!
|
||||
\n僅在 OTA 完成後使用此選項。
|
||||
\n繼續?</string>
|
||||
<string name="install_next">下一個</string>
|
||||
<string name="select_file_tip">建議使用 %1$s 分割區映像</string>
|
||||
<string name="select_kmi">選擇KMI</string>
|
||||
<string name="settings_uninstall">解除安裝</string>
|
||||
<string name="settings_uninstall_temporary">暫時卸載</string>
|
||||
<string name="enable_web_debugging">啟用 WebView 調試</string>
|
||||
<string name="enable_web_debugging_summary">可用於調試 WebUI 。請僅在需要時啟用。</string>
|
||||
<string name="direct_install">直接安裝(推薦)</string>
|
||||
<string name="select_file">選擇一個需要修補嘅鏡像</string>
|
||||
<string name="install_inactive_slot">安裝到未使用嘅槽位(OTA 後)</string>
|
||||
<string name="install_inactive_slot_warning">將在重啟後強制切換到另一個槽位!\n注意只能在 OTA 更新完成後嘅重啟之前使用。\n確認?</string>
|
||||
<string name="install_next">下一步</string>
|
||||
<string name="select_file_tip">建議選擇 %1$s 分區鏡像</string>
|
||||
<string name="select_kmi">選擇 KMI</string>
|
||||
<string name="settings_uninstall">卸載</string>
|
||||
<string name="settings_uninstall_temporary">臨時卸載</string>
|
||||
<string name="settings_uninstall_permanent">永久卸載</string>
|
||||
<string name="settings_restore_stock_image">恢復鏡像</string>
|
||||
<string name="settings_uninstall_temporary_message">永久卸載KernelSU, 重啟後將恢復到初始狀態.</string>
|
||||
<string name="settings_uninstall_permanent_message">徹底卸載KernelSU(Root和所有模組)。</string>
|
||||
<string name="settings_restore_stock_image_message">恢復原廠鏡像(如果有備份),通常在ota之前使用;如果你需要卸載KernelSU, 請使用徹底\"卸載\"。</string>
|
||||
<string name="flashing">刷入中</string>
|
||||
<string name="flash_success">刷入成功</string>
|
||||
<string name="flash_failed">刷入失敗</string>
|
||||
<string name="selected_lkm">選擇 LKM: %s</string>
|
||||
<string name="save_log">保存日志</string>
|
||||
<string name="log_saved">日志己存儲</string>
|
||||
<string name="status_supported">已支持</string>
|
||||
<string name="status_not_supported">未支持</string>
|
||||
<string name="status_unknown">未知</string>
|
||||
<string name="sus_su_mode">SuS SU 模組:</string>
|
||||
<string name="settings_restore_stock_image">恢復原廠鏡像</string>
|
||||
<string name="settings_uninstall_temporary_message">臨時卸載 KernelSU,下次重啟後恢復至原始狀態。</string>
|
||||
<string name="settings_uninstall_permanent_message">完全並永久卸載 KernelSU(Root 權限同所有模組)。</string>
|
||||
<string name="settings_restore_stock_image_message">恢復原廠鏡像(若存在備份),一般在 OTA 前使用;如果您需要卸載 KernelSU,請使用\"永久卸載\"。</string>
|
||||
<string name="flashing">刷寫中</string>
|
||||
<string name="flash_success">刷寫完成</string>
|
||||
<string name="flash_failed">刷寫失敗</string>
|
||||
<string name="selected_lkm">選擇嘅 LKM:%s</string>
|
||||
<string name="save_log">保存日誌</string>
|
||||
<string name="log_saved">日誌已保存</string>
|
||||
<string name="sus_su_mode">SuS SU 模式:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">確定安裝模組 %1$s?</string>
|
||||
<string name="module_install_confirm">確認安裝模組 %1$s?</string>
|
||||
<string name="unknown_module">未知模組</string>
|
||||
<!-- Restore related -->
|
||||
<string name="restore_confirm_title">確認恢復模塊</string>
|
||||
<string name="restore_confirm_message">此操作將覆蓋所有模塊,確定繼續嗎?</string>
|
||||
<string name="restore_confirm_title">確認還原模組</string>
|
||||
<string name="restore_confirm_message">此操作將覆蓋所有現有模組,是否繼續?</string>
|
||||
<string name="confirm">確定</string>
|
||||
<string name="cancel">取消</string>
|
||||
<!-- Backup related -->
|
||||
<string name="backup_success">備份成功(tar.gz)</string>
|
||||
<string name="backup_failed">備份失敗: %1$s</string>
|
||||
<string name="backup_modules">備份模塊</string>
|
||||
<string name="restore_modules">恢復模塊</string>
|
||||
<string name="backup_success">備份成功 (tar.gz)</string>
|
||||
<string name="backup_failed">備份失敗:%1$s</string>
|
||||
<string name="backup_modules">備份模組</string>
|
||||
<string name="restore_modules">恢復模組</string>
|
||||
<!-- Restore related messages -->
|
||||
<string name="restore_success">模塊恢復成功,請重新恢復設備</string>
|
||||
<string name="restore_failed">恢復失敗: %1$s</string>
|
||||
<string name="restart_now">立即恢復</string>
|
||||
<string name="restore_success">模組已成功還原,需重啟生效</string>
|
||||
<string name="restore_failed">還原失敗:%1$s</string>
|
||||
<string name="restart_now">立即重啟</string>
|
||||
<string name="unknown_error">未知錯誤</string>
|
||||
<!-- Command related -->
|
||||
<string name="command_execution_failed">命令執行失敗: %1$s</string>
|
||||
<string name="command_execution_failed">命令執行失敗:%1$s</string>
|
||||
<!-- Allowlist related -->
|
||||
<string name="allowlist_backup_success">授權列表備份成功</string>
|
||||
<string name="allowlist_backup_failed">授權列表備份失敗: %1$s</string>
|
||||
<string name="allowlist_restore_confirm_title">確定恢復授權列表</string>
|
||||
<string name="allowlist_restore_confirm_message">此操作會覆蓋授權列表是否繼續?</string>
|
||||
<string name="allowlist_restore_success">授權列表恢復成功</string>
|
||||
<string name="allowlist_restore_failed">授權列表備份失敗: %1$s</string>
|
||||
<string name="backup_allowlist">備份授權列表</string>
|
||||
<string name="restore_allowlist">恢復授權列表</string>
|
||||
<string name="settings_custom_background">設定應用背景</string>
|
||||
<string name="settings_custom_background_summary">選擇一張圖片作為背景</string>
|
||||
<string name="settings_card_alpha">導航欄透明度</string>
|
||||
<string name="settings_restore_default">重置到默認</string>
|
||||
<string name="home_android_version">安卓版本</string>
|
||||
<string name="allowlist_backup_success">應用列表備份成功</string>
|
||||
<string name="allowlist_backup_failed">應用列表備份失敗:%1$s</string>
|
||||
<string name="allowlist_restore_confirm_title">確認還原應用列表</string>
|
||||
<string name="allowlist_restore_confirm_message">此操作將覆蓋當前嘅應用列表,是否繼續?</string>
|
||||
<string name="allowlist_restore_success">應用列表還原成功</string>
|
||||
<string name="allowlist_restore_failed">應用列表還原失敗:%1$s</string>
|
||||
<string name="backup_allowlist">備份應用列表</string>
|
||||
<string name="restore_allowlist">還原應用列表</string>
|
||||
<string name="settings_custom_background">自定義背景</string>
|
||||
<string name="settings_custom_background_summary">選擇一張圖片作為應用背景</string>
|
||||
<string name="settings_card_alpha">卡片不透明度</string>
|
||||
<string name="home_android_version">Android 版本</string>
|
||||
<string name="home_device_model">設備</string>
|
||||
<string name="su_not_allowed">不允許授予 %s 超級用戶權限</string>
|
||||
<string name="settings_disable_su">禁用su兼容性</string>
|
||||
<string name="settings_disable_su_summary">禁止任何應用通過su獲取root權限(現在正在使用root的應用進程不受影響)。</string>
|
||||
<string name="using_mksu_manager">你正在使用Sukisu測試版管理器</string>
|
||||
<string name="module_install_multiple_confirm">你確定你想要選擇安裝 %d 模塊嗎?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">確定要安裝以下 %1$d 個模塊嗎?\n\n%2$s</string>
|
||||
<string name="more_settings">更多設置</string>
|
||||
<string name="su_not_allowed">唔允許授予 %s 超級用戶權限</string>
|
||||
<string name="settings_disable_su">禁用 su 兼容性</string>
|
||||
<string name="settings_disable_su_summary">臨時禁止任何應用程式通過 su 命令獲取 Root 權限(現有嘅 Root 進程不受影響)</string>
|
||||
<string name="module_install_multiple_confirm_with_names">確定要安裝以下 %1$d 個模組嗎?\n\n%2$s</string>
|
||||
<string name="more_settings">更多設定</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
<string name="selinux_enabled">嚴格模式</string>
|
||||
<string name="selinux_enabled">強制執行</string>
|
||||
<string name="selinux_disabled">寬容模式</string>
|
||||
<string name="simple_mode">簡單模式</string>
|
||||
<string name="simple_mode_summary">開啟隱藏不必要卡片</string>
|
||||
<string name="hide_kernel_kernelsu_version">隱藏內核版本</string>
|
||||
<string name="hide_kernel_kernelsu_version_summary">隱藏內核版本</string>
|
||||
<string name="hide_other_info">隱藏其他信息</string>
|
||||
<string name="hide_other_info_summary">隱藏首頁上有關超級用戶、模組和KPM模組的數量資訊</string>
|
||||
<string name="hide_susfs_status">隱藏 SuSFS 相關</string>
|
||||
<string name="hide_susfs_status_summary">隱藏SuSFS 主頁的相關信息</string>
|
||||
<string name="simple_mode">簡潔模式</string>
|
||||
<string name="simple_mode_summary">開啟後將隱藏不必要嘅卡片</string>
|
||||
<string name="hide_kernel_kernelsu_version">隱藏核心版本號</string>
|
||||
<string name="hide_kernel_kernelsu_version_summary">隱藏核心部分嘅 KernelSU 版本號</string>
|
||||
<string name="hide_other_info">強迫症開關</string>
|
||||
<string name="hide_other_info_summary">隱藏導航欄上嘅超級用戶數、模組數同 KPM 模組數紅點</string>
|
||||
<string name="hide_susfs_status">隱藏 SuSFS 狀態信息</string>
|
||||
<string name="hide_susfs_status_summary">隱藏主頁上嘅 SuSFS 狀態信息</string>
|
||||
<string name="hide_link_card">隱藏鏈接卡片</string>
|
||||
<string name="hide_link_card_summary">隱藏鏈接卡片信息</string>
|
||||
<string name="theme_mode">主題</string>
|
||||
<string name="theme_follow_system">跟隨繫統</string>
|
||||
<string name="theme_light">明亮</string>
|
||||
<string name="hide_link_card_summary">隱藏主頁上嘅鏈接卡片信息</string>
|
||||
<string name="hide_tag_card">隱藏模組標籤行</string>
|
||||
<string name="hide_tag_card_summary">隱藏模組卡片中嘅文件夾名稱同大小標籤</string>
|
||||
<string name="theme_mode">主題模式</string>
|
||||
<string name="theme_follow_system">跟隨系統</string>
|
||||
<string name="theme_light">淺色</string>
|
||||
<string name="theme_dark">深色</string>
|
||||
<string name="manual_hook">手動鉤子</string>
|
||||
<string name="manual_hook">Manual Hook</string>
|
||||
<string name="dynamic_color_title">動態顏色</string>
|
||||
<string name="dynamic_color_summary">動態顏色跟隨繫統</string>
|
||||
<string name="choose_theme_color">選擇主題顏色</string>
|
||||
<string name="dynamic_color_summary">使用系統主題嘅動態顏色</string>
|
||||
<string name="choose_theme_color">選擇主題色</string>
|
||||
<string name="color_default">藍色</string>
|
||||
<string name="color_green">綠色</string>
|
||||
<string name="color_purple">紫色</string>
|
||||
<string name="color_orange">橙色</string>
|
||||
<string name="color_pink">粉色</string>
|
||||
<string name="color_gray">棕色</string>
|
||||
<string name="color_gray">高級灰</string>
|
||||
<string name="color_yellow">黃色</string>
|
||||
<string name="flash_option">刷寫選項</string>
|
||||
<string name="flash_option_tip">選擇刷寫文件</string>
|
||||
<string name="horizon_kernel">安裝 Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">刷寫 Anykernel3 內核文件</string>
|
||||
<string name="root_required">需要root權限</string>
|
||||
<string name="copy_failed">文件復制失敗</string>
|
||||
<string name="reboot_complete_title">清理完成</string>
|
||||
<string name="horizon_kernel">刷寫 AnyKernel3 刷寫包</string>
|
||||
<string name="horizon_kernel_summary">刷入 Anykernel3 核心</string>
|
||||
<string name="root_required">需要 root 權限</string>
|
||||
<string name="reboot_complete_title">刷寫完成</string>
|
||||
<string name="reboot_complete_msg">是否立即重啟?</string>
|
||||
<string name="yes">是</string>
|
||||
<string name="yes">系</string>
|
||||
<string name="no">否</string>
|
||||
<string name="failed_reboot">重啟失敗</string>
|
||||
<string name="batch_authorization">授權</string>
|
||||
<string name="batch_cancel_authorization">撤銷</string>
|
||||
<string name="backup">備份</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">暫無已安裝的內核模塊</string>
|
||||
<string name="kpm_title">核心模組</string>
|
||||
<string name="kpm_empty">暫冇已安裝嘅核心模組</string>
|
||||
<string name="kpm_version">版本</string>
|
||||
<string name="kpm_author">作者</string>
|
||||
<string name="kpm_uninstall">卸載</string>
|
||||
<string name="kpm_uninstall_success">卸載成功</string>
|
||||
<string name="kpm_uninstall_failed">卸載失敗</string>
|
||||
<string name="kpm_install">安裝</string>
|
||||
<string name="kpm_install_success">加載KPM模塊成功</string>
|
||||
<string name="kpm_install_failed">加載KPM模塊失敗</string>
|
||||
<string name="kpm_install_success">加載 KPM 模組成功</string>
|
||||
<string name="kpm_install_failed">加載 KPM 模組失敗</string>
|
||||
<string name="kpm_args">參數</string>
|
||||
<string name="kpm_control">執行</string>
|
||||
<string name="home_kpm_version">KPM版本</string>
|
||||
<string name="kpm_control">調參</string>
|
||||
<string name="home_kpm_version">KPM 版本</string>
|
||||
<string name="close_notice">關閉</string>
|
||||
<string name="kernel_module_notice">以下內核模組函數由 KernelPatch 開發並修改為包含 SukiSU Ultra 的內核模組函數</string>
|
||||
<string name="home_ContributionCard_kernelsu">SukiSU Ultra未來展望</string>
|
||||
<string name="kernel_module_notice">以下核心模組功能由 KernelPatch 開發,經過修改後加入 SukiSU Ultra 嘅核心模組功能</string>
|
||||
<string name="home_ContributionCard_kernelsu">SukiSU Ultra 展望</string>
|
||||
<string name="kpm_control_success">成功</string>
|
||||
<string name="kpm_control_failed">失败</string>
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra将来将成为一个相对独立嘅KSU分支, 但我們就会继续感谢KernelSU同MKSU等做出嘅贡献!</string>
|
||||
<string name="not_supported">未支持</string>
|
||||
<string name="supported">己支持</string>
|
||||
<string name="home_kpm_module">"KPM模块数量: %d "</string>
|
||||
<string name="kpm_invalid_file">无效嘅kpm文件</string>
|
||||
<string name="kernel_patched">內核仲未打布丁</string>
|
||||
<string name="kernel_not_enabled">內核仲未选项</string>
|
||||
<string name="custom_settings">更多设置</string>
|
||||
<string name="kpm_install_mode">KPM 安装</string>
|
||||
<string name="kpm_install_mode_load">加载</string>
|
||||
<string name="kpm_control_failed">錯誤</string>
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra 未來將會成為一個相對獨立嘅 KSU 分支,但仲系會感謝官方 KernelSU 同 MKSU 等做出嘅貢獻</string>
|
||||
<string name="not_supported">唔支援</string>
|
||||
<string name="supported">支持</string>
|
||||
<string name="kernel_patched">核心未進行補丁</string>
|
||||
<string name="kernel_not_enabled">核心未配置</string>
|
||||
<string name="custom_settings">個性化設定</string>
|
||||
<string name="kpm_install_mode">安裝</string>
|
||||
<string name="kpm_install_mode_load">加載</string>
|
||||
<string name="kpm_install_mode_embed">嵌入</string>
|
||||
<string name="kpm_install_mode_description">請选择: %1\$s 模組安装方式 \n\n加载: 臨時載入模組 \n己嵌入: 永久安装都系統</string>
|
||||
<string name="log_failed_to_check_module_file">无法检查模組是否存在</string>
|
||||
<string name="snackbar_failed_to_check_module_file">無法檢查模組檔是否存在</string>
|
||||
<string name="confirm_uninstall_title">安装配置失败</string>
|
||||
<string name="confirm_uninstall_confirm">卸载</string>
|
||||
<string name="confirm_uninstall_dismiss">取消</string>
|
||||
<string name="theme_color">主题颜色</string>
|
||||
<string name="invalid_file_type">檔類型不正確!請選擇 .kpm 檔.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">卸载</string>
|
||||
<string name="confirm_uninstall_content">將卸載以下 KPM: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">關閉KernelSU的kprobe鉤子,改用inline鉤子,這類似於非 GKI 內核鉤子方法.</string>
|
||||
<string name="image_editor_title">調整背景图片</string>
|
||||
<string name="image_editor_hint">使用兩只手指縮放圖像,用一只手指拖動圖像以調整位置</string>
|
||||
<string name="background_image_error">加载图片失败</string>
|
||||
<string name="reprovision">重新配置</string>
|
||||
<string name="kpm_install_mode_description">請選擇: %1\$s 模組嘅安裝模式 \n\n加載:臨時加載模組\n嵌入:永久安裝到系統</string>
|
||||
<string name="snackbar_failed_to_check_module_file">無法檢查模組文件是否存在</string>
|
||||
<string name="theme_color">主題顏色</string>
|
||||
<string name="invalid_file_type">文件類型不正確,請選擇 .kpm 文件</string>
|
||||
<string name="confirm_uninstall_title_with_filename">卸載</string>
|
||||
<string name="confirm_uninstall_content">將卸載以下 KPM 模組:\n%s</string>
|
||||
<string name="settings_susfs_toggle_summary">禁用由 KernelSU 創建嘅 Kprobe Hook,並使用非 Kprobe 內嘅聯鈎子代替,實現方式類似於不支持 Kprobe 嘅非 GKI 核心。</string>
|
||||
<string name="image_editor_hint">使用雙指縮放圖片,單指拖動調整位置</string>
|
||||
<string name="reprovision">重置</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">內核刷寫</string>
|
||||
<string name="horizon_logs_label">日志:</string>
|
||||
<string name="horizon_flash_title">刷寫Kernel</string>
|
||||
<string name="horizon_logs_label">日誌:</string>
|
||||
<string name="horizon_flash_complete">刷寫完成</string>
|
||||
<!-- Flash Status Related -->
|
||||
<string name="horizon_preparing">準備中…</string>
|
||||
<string name="horizon_cleaning_files">正在清理文件…</string>
|
||||
<string name="horizon_copying_files">復制文件中…</string>
|
||||
<string name="horizon_extracting_tool">提取刷寫工具中…</string>
|
||||
<string name="horizon_patching_script">修補刷寫腳本中…</string>
|
||||
<string name="horizon_flashing">刷入內核…</string>
|
||||
<string name="horizon_cleaning_files">清理文件中…</string>
|
||||
<string name="horizon_copying_files">複製文件中…</string>
|
||||
<string name="horizon_extracting_tool">提取刷寫工具…</string>
|
||||
<string name="horizon_patching_script">修補刷寫腳本…</string>
|
||||
<string name="horizon_flashing">刷寫核心中…</string>
|
||||
<string name="horizon_flash_complete_status">刷寫完成</string>
|
||||
<!-- Slot selection related strings -->
|
||||
<string name="select_slot_title">選擇刷寫槽</string>
|
||||
<string name="select_slot_description">選擇目標槽位以刷寫內核</string>
|
||||
<string name="slot_a">槽位 A</string>
|
||||
<string name="slot_b">槽位 B</string>
|
||||
<string name="selected_slot">選擇槽位: %1$s</string>
|
||||
<string name="horizon_getting_original_slot">獲取原始槽位</string>
|
||||
<string name="horizon_setting_target_slot">設定指定槽位</string>
|
||||
<string name="horizon_restoring_original_slot">恢復原始槽位</string>
|
||||
<string name="current_slot">當前系统槽位:%1$s </string>
|
||||
<string name="select_slot_title">選擇刷寫槽位</string>
|
||||
<string name="select_slot_description">請選擇要刷寫boot嘅目標槽位</string>
|
||||
<string name="slot_a">A槽位</string>
|
||||
<string name="slot_b">B槽位</string>
|
||||
<string name="selected_slot">已選擇槽位: %1$s</string>
|
||||
<string name="horizon_getting_original_slot">獲取原有槽位</string>
|
||||
<string name="horizon_setting_target_slot">設置指定槽位</string>
|
||||
<string name="horizon_restoring_original_slot">恢復默認槽位</string>
|
||||
<string name="current_slot">當前系統默認槽位:%1$s </string>
|
||||
<!-- Error Messages -->
|
||||
<string name="horizon_copy_failed">複製失敗</string>
|
||||
<string name="horizon_unknown_error">未知錯誤</string>
|
||||
<string name="flash_failed_message">刷寫失敗</string>
|
||||
<!-- lkm/gki install -->
|
||||
<string name="Lkm_install_methods">LKM 修補/安裝</string>
|
||||
<string name="GKI_install_methods">正在刷寫AnyKernel3包</string>
|
||||
<string name="kernel_version_log">內核版本:%1$s</string>
|
||||
<string name="tool_version_log">使用補丁工具:%1$s</string>
|
||||
<string name="Lkm_install_methods">LKM修補/安裝</string>
|
||||
<string name="GKI_install_methods">刷寫 AnyKernel3</string>
|
||||
<string name="kernel_version_log">核心版本:%1$s</string>
|
||||
<string name="tool_version_log">使用修補工具:%1$s</string>
|
||||
<string name="configuration">配置</string>
|
||||
<string name="app_settings">應用設置</string>
|
||||
<string name="app_settings">應用設定</string>
|
||||
<string name="tools">工具</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">清除</string>
|
||||
<string name="apps_with_root">應用已擁有root權限</string>
|
||||
<string name="apps_with_custom_profile">應用已有特定配置</string>
|
||||
<string name="other_apps">應用未修改</string>
|
||||
<string name="no_apps_found">未找到應用</string>
|
||||
<string name="selinux_enabled_toast">嚴格模式</string>
|
||||
<string name="selinux_disabled_toast">寬容模式</string>
|
||||
<string name="selinux_change_failed">SELinux模式改變失敗</string>
|
||||
<string name="advanced_settings">高級設置</string>
|
||||
<string name="appearance_settings">自定義工具欄</string>
|
||||
<string name="selinux_enabled_toast">SELinux 已設置為啟用狀態</string>
|
||||
<string name="selinux_disabled_toast">SELinux 已設置為禁用狀態</string>
|
||||
<string name="selinux_change_failed">SELinux 狀態更改失敗</string>
|
||||
<string name="advanced_settings">高級設定</string>
|
||||
<string name="appearance_settings">外觀設定</string>
|
||||
<string name="back">返回</string>
|
||||
<string name="expand">處於活躍狀態</string>
|
||||
<string name="collapse">拉開</string>
|
||||
<string name="susfs_enabled">SuSFS 已啟用</string>
|
||||
<string name="susfs_disabled">SuSFS 未啟用</string>
|
||||
<string name="susfs_disabled">SuSFS 已禁用</string>
|
||||
<string name="background_set_success">背景設置成功</string>
|
||||
<string name="background_removed">刪除背景</string>
|
||||
<string name="icon_switch_title">備選圖示</string>
|
||||
<string name="icon_switch_summary">將啟動器圖示變更為 KernelSU 圖示</string>
|
||||
<string name="icon_switched">圖示已切換</string>
|
||||
<string name="root_require_for_install">需要root權限</string>
|
||||
<string name="background_removed">已移除自定義背景</string>
|
||||
<string name="icon_switch_title">備選圖標</string>
|
||||
<string name="icon_switch_summary">更換為 KernelSU 圖標</string>
|
||||
<string name="icon_switched">已切換圖標</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">隐藏KPM功能</string>
|
||||
<string name="show_kpm_info_summary">隐藏KPM功能和信息在主頁和工具欄</string>
|
||||
<string name="show_kpm_info">隱藏 KPM 功能</string>
|
||||
<string name="show_kpm_info_summary">在主頁同底欄隱藏 KPM 相關功能同信息</string>
|
||||
<!-- Webui X settings -->
|
||||
<string name="use_webuix">選擇使用的 WebUI 引擎</string>
|
||||
<string name="use_webuix">選擇使用嘅 WebUI 引擎</string>
|
||||
<string name="engine_auto_select">自動選擇</string>
|
||||
<string name="engine_force_webuix">強制使用 WebUI X</string>
|
||||
<string name="engine_force_ksu">強制使用 KSU 的 WebUI</string>
|
||||
<string name="engine_force_ksu">強制使用 KSU 嘅 WebUI</string>
|
||||
<string name="use_webuix_eruda">將 Eruda 注入 WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">在 WebUI X 中注入調試控制臺,使調用更容易,需要啟用 WebView 調試</string>
|
||||
<string name="use_webuix_eruda_summary">在 WebUI X 中注入調試控制台,使調試更容易,需要啟用 WebView 調試</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI設置</string>
|
||||
<string name="app_dpi_title">應用DPI</string>
|
||||
<string name="app_dpi_summary">請調整當前應用的屏幕顯示密度</string>
|
||||
<string name="dpi_size_small">小 </string>
|
||||
<string name="dpi_size_medium">中 </string>
|
||||
<string name="app_dpi_summary">僅調整當前應用嘅屏幕顯示密度</string>
|
||||
<string name="dpi_size_small">小</string>
|
||||
<string name="dpi_size_medium">中</string>
|
||||
<string name="dpi_size_large">大</string>
|
||||
<string name="dpi_size_extra_large">超大</string>
|
||||
<string name="dpi_size_custom">自定義</string>
|
||||
<string name="dpi_apply_settings">應用DPI設置</string>
|
||||
<string name="dpi_confirm_title">確定修改DPI</string>
|
||||
<string name="dpi_confirm_message">你是想把應用的DPI從 %1$d 改到 %2$d 嗎?</string>
|
||||
<string name="dpi_confirm_summary">應用需要重新啟動,以應用新的DPI設置, 不影響繫統狀態或其他應用程序</string>
|
||||
<string name="dpi_applied_success">DPI 已設定為 %1$d,在重新啟動應用程式後生效</string>
|
||||
<string name="dpi_apply_settings">應用DPI設定</string>
|
||||
<string name="dpi_confirm_title">確認更改DPI</string>
|
||||
<string name="dpi_confirm_message">您確定要將應用DPI從 %1$d 更改為 %2$d 嗎?</string>
|
||||
<string name="dpi_confirm_summary">應用需要重啟以應用新嘅DPI設定,不會影響系統狀態欄或其他應用</string>
|
||||
<string name="dpi_applied_success">DPI 已設置為 %1$d,重啟應用後生效</string>
|
||||
<!-- Language settings related strings -->
|
||||
<string name="language_setting">應用語言</string>
|
||||
<string name="language_follow_system">遵循繫統</string>
|
||||
<string name="language_changed">應用的語言改變,正在重啟應用</string>
|
||||
<string name="settings_card_dim">卡片明暗度調整</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="language_follow_system">跟隨系統</string>
|
||||
<string name="language_changed">語言已更改,重啟應用以應用更改</string>
|
||||
<string name="settings_card_dim">卡片暗度調節</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">錯誤代碼</string>
|
||||
<string name="check_log">請查看日誌</string>
|
||||
<string name="installing_module">正在安裝模組 %1$d/%2$d</string>
|
||||
<string name="module_failed_count">%d 個模組安裝失敗</string>
|
||||
<string name="module_download_error">模組下載失敗</string>
|
||||
<string name="kernel_flashing">核心刷寫</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">全部</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">自定義</string>
|
||||
<string name="category_default_apps">默認</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">名稱升序</string>
|
||||
<string name="sort_name_desc">名稱降序</string>
|
||||
<string name="sort_install_time_new">安裝時間(新)</string>
|
||||
<string name="sort_install_time_old">安裝時間(舊)</string>
|
||||
<string name="sort_size_desc">大小降序</string>
|
||||
<string name="sort_size_asc">大小升序</string>
|
||||
<string name="sort_usage_freq">使用頻率</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">此分類中冇應用</string>
|
||||
<!-- 标签相关 -->
|
||||
<string name="deny_authorization">取消授權</string>
|
||||
<string name="grant_authorization">授權</string>
|
||||
<string name="unmount_modules">卸載模組掛載</string>
|
||||
<string name="disable_unmount">禁用卸載模組掛載</string>
|
||||
<string name="expand_menu">展開菜單</string>
|
||||
<string name="collapse_menu">收起菜單</string>
|
||||
<string name="scroll_to_top">頂部</string>
|
||||
<string name="scroll_to_bottom">底部</string>
|
||||
<string name="scroll_to_top_description">回到置頂</string>
|
||||
<string name="scroll_to_bottom_description">返回底部</string>
|
||||
<string name="authorized">已授權</string>
|
||||
<string name="unauthorized">未授權</string>
|
||||
<string name="selected">已選擇</string>
|
||||
<string name="select">選項</string>
|
||||
<string name="profile_umount_modules_disable">禁用自定義卸載模組</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">代碼錯誤</string>
|
||||
<string name="check_log">請檢查日志</string>
|
||||
<string name="installing_module">正在安裝的模塊 %1$d/%2$d</string>
|
||||
<string name="module_failed_count">%d 安裝新模塊失敗</string>
|
||||
<string name="module_download_error">模塊下載失敗</string>
|
||||
<string name="kernel_flashing">內核刷寫中</string>
|
||||
<string name="select">選擇</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">選項菜單</string>
|
||||
<string name="sort_options">排序方式</string>
|
||||
<string name="app_categories">應用類型選擇</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<string name="susfs_config_title">SuSFS 配置</string>
|
||||
<string name="susfs_config_description">配置說明</string>
|
||||
<string name="susfs_config_description_text">此功能允許您自定義 SuSFS 嘅 uname 值同構建時間偽裝。輸入您想要設置嘅值,點擊應用即可生效</string>
|
||||
<string name="susfs_uname_label">Uname 值</string>
|
||||
<string name="susfs_uname_placeholder">請輸入自定義 uname 值</string>
|
||||
<string name="susfs_build_time_label">構建時間偽裝</string>
|
||||
<string name="susfs_build_time_placeholder">請輸入構建時間偽裝值</string>
|
||||
<string name="susfs_current_value">當前值: %s</string>
|
||||
<string name="susfs_current_build_time">當前構建時間: %s</string>
|
||||
<string name="susfs_reset_to_default">重置為默認值</string>
|
||||
<string name="susfs_apply">應用</string>
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<string name="susfs_reset_confirm_title">確認重置</string>
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<string name="susfs_binary_not_found">無法找到 ksu_susfs 文件</string>
|
||||
<string name="susfs_command_failed">SuSFS 命令執行失敗</string>
|
||||
<string name="susfs_command_error">執行 SuSFS 命令時出錯: %s</string>
|
||||
<string name="susfs_uname_set_success" formatted="false">SuSFS 核心名稱同構建時間設置成功: %s, %s</string>
|
||||
<!-- SuSFS Settings Item -->
|
||||
<string name="susfs_config_setting_title">SuSFS 配置</string>
|
||||
<!-- 开机自启动相关 -->
|
||||
<string name="susfs_autostart_title">開機自啟動</string>
|
||||
<string name="susfs_autostart_description">重啟時自動應用所有非默認配置</string>
|
||||
<string name="susfs_autostart_requirement">需要添加配置後才能啟用</string>
|
||||
<string name="susfs_autostart_enable_failed">啟用開機自啟動失敗</string>
|
||||
<string name="susfs_autostart_disable_failed">禁用開機自啟動失敗</string>
|
||||
<string name="susfs_autostart_error">開機自啟動配置錯誤: %s</string>
|
||||
<string name="susfs_no_config_to_autostart">冇可用嘅配置進行開機自啟動</string>
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<string name="susfs_tab_basic_settings">基本設定</string>
|
||||
<string name="susfs_tab_sus_paths">SUS路徑</string>
|
||||
<string name="susfs_tab_sus_mounts">SUS掛載</string>
|
||||
<string name="susfs_tab_try_umount">嘗試卸載</string>
|
||||
<string name="susfs_tab_path_settings">路徑設定</string>
|
||||
<string name="susfs_tab_enabled_features">啟用功能狀態</string>
|
||||
<!-- SuSFS Path Management -->
|
||||
<string name="susfs_add_sus_path">添加SUS路徑</string>
|
||||
<string name="susfs_add_sus_mount">添加SUS掛載</string>
|
||||
<string name="susfs_add_try_umount">嘗試添加卸載</string>
|
||||
<string name="susfs_sus_path_added_success">SUS 路徑添加成功</string>
|
||||
<string name="susfs_path_not_found_error">錯誤沒有此找到路徑</string>
|
||||
<string name="susfs_path_label">路徑</string>
|
||||
<string name="susfs_mount_path_label">掛載路徑</string>
|
||||
<string name="susfs_path_placeholder">例如: /system/addon.d</string>
|
||||
<string name="susfs_no_paths_configured">暫冇 SUS 路徑配置</string>
|
||||
<string name="susfs_no_mounts_configured">暫冇 SUS 掛載配置</string>
|
||||
<string name="susfs_no_umounts_configured">暫冇嘗試卸載配置</string>
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<string name="susfs_umount_mode_label">卸載模式</string>
|
||||
<string name="susfs_umount_mode_normal">普通卸載 (0)</string>
|
||||
<string name="susfs_umount_mode_detach">分離卸載 (1)</string>
|
||||
<string name="susfs_umount_mode_normal_short">普通</string>
|
||||
<string name="susfs_umount_mode_detach_short">分離</string>
|
||||
<string name="susfs_umount_mode_display">模式: %1$s (%2$s)</string>
|
||||
<string name="susfs_try_umount_added_success">嘗試 umount 路徑添加成功: %s</string>
|
||||
<string name="susfs_try_umount_added_saved">嘗試 umount 路徑保存成功: %s</string>
|
||||
<!-- SuSFS Run Umount -->
|
||||
<string name="susfs_run_umount_confirm_title">確認運行嘗試卸載</string>
|
||||
<string name="susfs_run_umount_confirm_message">這將立即執行所有已配置嘅嘗試卸載操作,確定要繼續嗎?</string>
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<string name="susfs_reset_paths_title">重置 SUS 路徑</string>
|
||||
<string name="susfs_reset_paths_message">這將清除所有 SUS 路徑配置,確定要繼續嗎?</string>
|
||||
<string name="susfs_reset_mounts_title">重置 SUS 掛載</string>
|
||||
<string name="susfs_reset_mounts_message">這將清除所有 SUS 掛載配置,確定要繼續嗎?</string>
|
||||
<string name="susfs_reset_umounts_title">重置嘗試卸載</string>
|
||||
<string name="susfs_reset_umounts_message">這將清除所有嘗試卸載配置,確定要繼續嗎?</string>
|
||||
<string name="susfs_reset_path_title">重置路徑設定</string>
|
||||
<!-- SuSFS Path Settings -->
|
||||
<string name="susfs_android_data_path_label">Android Data 路徑</string>
|
||||
<string name="susfs_sdcard_path_label">SD 卡路徑</string>
|
||||
<string name="susfs_set_android_data_path">設置 Android Data 路徑</string>
|
||||
<string name="susfs_set_sdcard_path">設置 SD 卡路徑</string>
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<string name="susfs_enabled_features_description">顯示當前 SuSFS 啟用嘅功能狀態</string>
|
||||
<string name="susfs_no_features_found">未找到功能狀態信息</string>
|
||||
<string name="susfs_feature_enabled">已啟用</string>
|
||||
<string name="susfs_feature_disabled">已禁用</string>
|
||||
<!-- Feature Labels -->
|
||||
<string name="sus_path_feature_label">SUS 路徑支持</string>
|
||||
<string name="sus_mount_feature_label">SUS 掛載支持</string>
|
||||
<string name="try_umount_feature_label">嘗試卸載支持</string>
|
||||
<string name="spoof_uname_feature_label">欺騙 uname 支持</string>
|
||||
<string name="spoof_cmdline_feature_label">欺騙 Cmdline/Bootconfig</string>
|
||||
<string name="open_redirect_feature_label">開放重定向支持</string>
|
||||
<string name="enable_log_feature_label">日誌記錄支持</string>
|
||||
<string name="auto_default_mount_feature_label">自動默認掛載</string>
|
||||
<string name="auto_bind_mount_feature_label">自動綁定掛載</string>
|
||||
<string name="auto_try_umount_bind_feature_label">自動嘗試卸載綁定掛載</string>
|
||||
<string name="hide_symbols_feature_label">隱藏 KSU SUSFS 符號</string>
|
||||
<string name="magic_mount_feature_label">魔法坐騎支持</string>
|
||||
<string name="sus_kstat_feature_label">SUS Kstat 支持</string>
|
||||
<string name="sus_su_feature_label">SUS SU 模式切換功能</string>
|
||||
<!-- 可切换状态 -->
|
||||
<string name="susfs_feature_configurable">可配置嘅 SuSFS 功能</string>
|
||||
<string name="susfs_enable_log_label">SuSFS 啟用日誌</string>
|
||||
<string name="susfs_log_config_description">啟用或者關閉 SuSFS 嘅日誌</string>
|
||||
<string name="susfs_log_config_title">SuSFS 日誌配置</string>
|
||||
<string name="susfs_log_enabled">啟用 SuSFS 日誌</string>
|
||||
<string name="susfs_log_disabled">關閉 SuSFS 日誌</string>
|
||||
<string name="module_update_json">更新配置</string>
|
||||
<string name="module_update_json_copied">更新配置地址已複製到剪貼板</string>
|
||||
<!-- Settings related strings -->
|
||||
<string name="show_more_module_info">顯示更多模組信息</string>
|
||||
<string name="show_more_module_info_summary">顯示額外嘅模組信息,如更新配置 URL 等</string>
|
||||
<string name="susfs_execution_location_label">執行位置</string>
|
||||
<string name="susfs_current_execution_location">當前執行位置:%s</string>
|
||||
<string name="susfs_execution_location_service">Service</string>
|
||||
<string name="susfs_execution_location_post_fs_data">Post-FS-Data</string>
|
||||
<string name="susfs_execution_location_service_description">在系統服務啟動後執行</string>
|
||||
<string name="susfs_execution_location_post_fs_data_description">在文件系統掛載後但系統完全啟動前執行,可能會導致循環重啟</string>
|
||||
<string name="susfs_slot_info_title">槽位信息</string>
|
||||
<string name="susfs_slot_info_description">查看當前啟動槽位信息並複製數值</string>
|
||||
<string name="susfs_current_active_slot">當前活動槽位:%s</string>
|
||||
<string name="susfs_slot_uname">Uname:%s</string>
|
||||
<string name="susfs_slot_build_time">構建時間:%s</string>
|
||||
<string name="susfs_slot_current_badge">當前</string>
|
||||
<string name="susfs_slot_use_uname">使用 Uname</string>
|
||||
<string name="susfs_slot_use_build_time">使用構建時間</string>
|
||||
<string name="susfs_slot_info_unavailable">無法獲取槽位信息</string>
|
||||
<!-- SuSFS 自启动相关字符串 -->
|
||||
<string name="susfs_autostart_enabled_success">SuSFS 自啟動模組已啟用,模組路徑:%s</string>
|
||||
<string name="susfs_autostart_disabled_success">SuSFS 自啟動模組已禁用</string>
|
||||
<!-- SuSFS Kstat相关字符串 -->
|
||||
<string name="susfs_tab_kstat_config">Kstat 配置</string>
|
||||
<string name="kstat_static_config_added">Kstat 靜態配置已添加:%1$s</string>
|
||||
<string name="kstat_config_removed">已移除 Kstat 配置:%1$s</string>
|
||||
<string name="kstat_path_added">Kstat 路徑已添加:%1$s</string>
|
||||
<string name="kstat_path_removed">已移除 Kstat 路徑:%1$s</string>
|
||||
<string name="kstat_updated">Kstat 已更新:%1$s</string>
|
||||
<string name="kstat_full_clone_updated">Kstat 完整克隆已更新:%1$s</string>
|
||||
<string name="add_kstat_statically_title">添加 Kstat 靜態配置</string>
|
||||
<string name="file_or_directory_path_label">文件/目錄路徑</string>
|
||||
<string name="hint_use_default_value">提示:可以使用 “default” 來使用原始值</string>
|
||||
<string name="add_kstat_path_title">添加 Kstat 路徑</string>
|
||||
<string name="add">添加</string>
|
||||
<string name="reset_kstat_config_title">重置 Kstat 配置</string>
|
||||
<string name="reset_kstat_config_message">確定要清除所有 Kstat 配置嗎?此操作不可撤銷</string>
|
||||
<string name="kstat_config_description_title">Kstat 配置說明</string>
|
||||
<string name="kstat_config_description_add_statically">• add_sus_kstat_statically: 靜態配置文件/目錄嘅 stat 信息</string>
|
||||
<string name="kstat_config_description_add">• add_sus_kstat: 在綁定掛載前添加路徑,存儲原始 stat 信息</string>
|
||||
<string name="kstat_config_description_update">• update_sus_kstat: 更新目標 ino,保持 size 同 blocks 不變</string>
|
||||
<string name="kstat_config_description_update_full_clone">• update_sus_kstat_full_clone: 僅更新 ino,其他保持原始值</string>
|
||||
<string name="static_kstat_config">靜態 Kstat 配置</string>
|
||||
<string name="kstat_path_management">Kstat 路徑管理</string>
|
||||
<string name="no_kstat_config_message">暫冇 Kstat 配置,點擊上方按鈕添加配置</string>
|
||||
<!-- SuSFS Mount Hiding Control Related Strings -->
|
||||
<!-- 备份和还原相关字符串 -->
|
||||
</resources>
|
||||
|
||||
@@ -1,23 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="home">首頁</string>
|
||||
<string name="home_not_installed">尚未安裝</string>
|
||||
<string name="home_not_installed">未安裝</string>
|
||||
<string name="home_click_to_install">點擊開始安裝</string>
|
||||
<string name="home_working">運作中</string>
|
||||
<string name="home_working_version">版本:%d</string>
|
||||
<string name="home_superuser_count">超級使用者數量:%d</string>
|
||||
<string name="home_module_count">模組數量:%d</string>
|
||||
<string name="home_working_version">版本:%s</string>
|
||||
<string name="home_unsupported">不支援</string>
|
||||
<string name="home_unsupported_reason">未在内核上偵測到 KernelSU 驅動程式,内核錯誤?</string>
|
||||
<string name="home_kernel">内核版本</string>
|
||||
<string name="home_susfs">SuSFS:%s</string>
|
||||
<string name="home_unsupported_reason">未在內核上偵測到 KernelSU 驅動程式,內核錯誤?</string>
|
||||
<string name="home_kernel">內核版本</string>
|
||||
<string name="home_susfs_version">SuSFS 版本</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">管理器版本</string>
|
||||
<string name="home_fingerprint">系統指紋</string>
|
||||
<string name="home_selinux_status">SELinux 狀態</string>
|
||||
<string name="selinux_status_disabled">已禁用</string>
|
||||
<string name="selinux_status_enforcing">強制執行</string>
|
||||
<string name="selinux_status_enforcing">嚴格模式</string>
|
||||
<string name="selinux_status_permissive">寬鬆模式</string>
|
||||
<string name="selinux_status_unknown">未知</string>
|
||||
<string name="superuser">超級使用者</string>
|
||||
@@ -28,7 +23,6 @@
|
||||
<string name="module_sort_action_first">排序(可執行優先)</string>
|
||||
<string name="module_sort_enabled_first">排序(已啟用優先)</string>
|
||||
<string name="uninstall">解除安裝</string>
|
||||
<string name="restore">還原</string>
|
||||
<string name="module_install">安裝模組</string>
|
||||
<string name="install">安裝</string>
|
||||
<string name="reboot">重新啟動</string>
|
||||
@@ -56,23 +50,19 @@
|
||||
<string name="home_click_to_learn_kernelsu">了解如何安裝 KernelSU 以及如何開發模組</string>
|
||||
<string name="home_support_title">支持開發</string>
|
||||
<string name="home_support_content">KernelSU 將保持免費開源,向開發者捐款以表支持。</string>
|
||||
<string name="about_source_code"><![CDATA[在 %1$s 查看原始碼<br/>加入我們的 %2$s 頻道<br/>加入我們的 <b><a href="https://qm.qq.com/q/WbrOMxgLG8">QQ 群聊</a></b>]]></string>
|
||||
<string name="about_source_code"><![CDATA[在 %1$s 查看原始碼<br/>加入我們的 %2$s 頻道]]></string>
|
||||
<string name="profile_default">預設</string>
|
||||
<string name="profile_template">模板</string>
|
||||
<string name="profile_custom">自訂</string>
|
||||
<string name="profile_name">名稱</string>
|
||||
<string name="profile_namespace">命名空間</string>
|
||||
<string name="profile_namespace_inherited">繼承</string>
|
||||
<string name="profile_namespace_global">全域</string>
|
||||
<string name="profile_namespace_individual">私有</string>
|
||||
<string name="profile_groups">群組</string>
|
||||
<string name="profile_capabilities">權限</string>
|
||||
<string name="profile_selinux_context">SELinux 上下文</string>
|
||||
<string name="profile_selinux_context">SELinux</string>
|
||||
<string name="profile_umount_modules">卸載模組</string>
|
||||
<string name="failed_to_update_app_profile">為 %s 更新應用程式設定檔失敗</string>
|
||||
<string name="require_kernel_version" formatted="false">目前 KernelSU 版本 %d 過低,管理器無法正常運作,請將内核 KernelSU 版本升級至 %d 或以上!</string>
|
||||
<string name="require_kernel_version" formatted="false">目前 KernelSU 版本 %s 過低,管理器無法正常運作,請將內核 KernelSU 版本升級至 %s 或以上!</string>
|
||||
<string name="settings_umount_modules_default">預設卸載模組</string>
|
||||
<string name="settings_umount_modules_default_summary">應用程式設定檔中「卸載模組」的全域預設值,若啟用,將為未設定設定檔的應用程式移除所有模組對系統的修改。</string>
|
||||
<string name="settings_umount_modules_default_summary">應用程式設定檔中\"卸載模組\"\的全域預設值,若啟用,將為未設定設定檔的應用程式移除所有模組對系統的修改。</string>
|
||||
<string name="settings_susfs_toggle">禁用 kprobe 切換</string>
|
||||
<string name="profile_umount_modules_summary">啟用此選項後,將允許 KernelSU 為此應用程式還原被模組修改的檔案。</string>
|
||||
<string name="profile_selinux_domain">域</string>
|
||||
@@ -112,7 +102,6 @@
|
||||
<string name="settings_check_update_summary">在應用程式啟動後自動檢查是否有最新版本</string>
|
||||
<string name="grant_root_failed">獲取 root 權限失敗!</string>
|
||||
<string name="action">執行</string>
|
||||
<string name="open">開啟</string>
|
||||
<string name="close">關閉</string>
|
||||
<string name="enable_web_debugging">啟用 WebView 除錯</string>
|
||||
<string name="enable_web_debugging_summary">可用於除錯 WebUI,請僅在需要時啟用。</string>
|
||||
@@ -122,26 +111,24 @@
|
||||
<string name="install_inactive_slot_warning">將在重新啟動後強制切換至另一槽位!\n注意:僅能在 OTA 更新完成後重新啟動前使用。\n確定繼續?</string>
|
||||
<string name="install_next">下一步</string>
|
||||
<string name="select_file_tip">建議選擇 %1$s 分區映像檔</string>
|
||||
<string name="select_file_tip_vendor">(實驗性的)</string>
|
||||
<string name="select_kmi">選擇 KMI</string>
|
||||
<string name="settings_uninstall">解除安裝</string>
|
||||
<string name="settings_uninstall_temporary">臨時解除安裝</string>
|
||||
<string name="settings_uninstall_permanent">永久解除安裝</string>
|
||||
<string name="settings_restore_stock_image">還原原廠映像檔</string>
|
||||
<string name="settings_uninstall_temporary_message">臨時解除安裝 KernelSU,下次重新啟動後恢復至原始狀態。</string>
|
||||
<string name="settings_uninstall_permanent_message">完全且永久解除安裝 KernelSU(包括 Root 權限和所有模組)。</string>
|
||||
<string name="settings_restore_stock_image_message">還原原廠映像檔(若存在備份),通常在 OTA 前使用;若需解除安裝 KernelSU,請使用「永久解除安裝」。</string>
|
||||
<string name="settings_uninstall_permanent_message">完全且永久解除安裝 KernelSU(含 Root 權限和所有模組)。</string>
|
||||
<string name="settings_restore_stock_image_message">還原原廠映像檔(若存在備份),通常在 OTA 前使用;若需解除安裝 KernelSU,請使用\"永久解除安裝\"。</string>
|
||||
<string name="flashing">正在刷寫</string>
|
||||
<string name="flash_success">刷寫完成</string>
|
||||
<string name="flash_failed">刷寫失敗</string>
|
||||
<string name="selected_lkm">已選擇的 LKM:%s</string>
|
||||
<string name="save_log">儲存日誌</string>
|
||||
<string name="log_saved">日誌已儲存</string>
|
||||
<string name="status_supported">支援</string>
|
||||
<string name="status_not_supported">不支援</string>
|
||||
<string name="status_unknown">未知</string>
|
||||
<string name="sus_su_mode">SuS SU 模式:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">確定要安裝模組 %1$s 嗎?</string>
|
||||
<string name="module_install_confirm">確定安裝模組 %1$s?</string>
|
||||
<string name="unknown_module">未知模組</string>
|
||||
<!-- Restore related -->
|
||||
<string name="restore_confirm_title">確定還原模組</string>
|
||||
@@ -172,34 +159,33 @@
|
||||
<string name="settings_custom_background">自訂背景</string>
|
||||
<string name="settings_custom_background_summary">選擇一張圖片作為應用程式背景</string>
|
||||
<string name="settings_card_alpha">卡片不透明度</string>
|
||||
<string name="settings_restore_default">恢復預設</string>
|
||||
<string name="home_android_version">Android 版本</string>
|
||||
<string name="home_device_model">設備型號</string>
|
||||
<string name="su_not_allowed">不允許授予 %s 超級使用者權限</string>
|
||||
<string name="settings_disable_su">禁用 su 相容性</string>
|
||||
<string name="settings_disable_su_summary">暫時禁止任何應用程式透過 su 命令取得 Root 權限(現有的 Root 程序不受影響)</string>
|
||||
<string name="using_mksu_manager">您正在使用 SukiSU Beta 版管理器</string>
|
||||
<string name="module_install_multiple_confirm">確定要安裝選擇的 %d 個模組嗎?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">確定要安裝以下 %1$d 個模組嗎?\n\n%2$s</string>
|
||||
<string name="more_settings">更多設定</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
<string name="selinux_enabled">強制執行</string>
|
||||
<string name="selinux_enabled">嚴格模式</string>
|
||||
<string name="selinux_disabled">寬鬆模式</string>
|
||||
<string name="simple_mode">簡潔模式</string>
|
||||
<string name="simple_mode_summary">啟用後將隱藏不必要的卡片</string>
|
||||
<string name="hide_kernel_kernelsu_version">隱藏内核版本號</string>
|
||||
<string name="hide_kernel_kernelsu_version_summary">隱藏内核部分的 KernelSU 版本號</string>
|
||||
<string name="hide_kernel_kernelsu_version">隱藏內核版本號</string>
|
||||
<string name="hide_kernel_kernelsu_version_summary">隱藏內核部分的 KernelSU 版本號</string>
|
||||
<string name="hide_other_info">強迫症開關</string>
|
||||
<string name="hide_other_info_summary">隱藏首頁上的超級使用者數量、模組數量及 KPM 模組數量資訊</string>
|
||||
<string name="hide_susfs_status">隱藏 SuSFS 狀態資訊</string>
|
||||
<string name="hide_susfs_status_summary">隱藏首頁上的 SuSFS 狀態資訊</string>
|
||||
<string name="hide_link_card">隱藏連結卡片</string>
|
||||
<string name="hide_link_card_summary">隱藏首頁上的連結卡片資訊</string>
|
||||
<string name="hide_tag_card">隱藏模組標籤行</string>
|
||||
<string name="hide_tag_card_summary">隱藏模組卡片中的資料夾名稱和大小標籤</string>
|
||||
<string name="theme_mode">主題模式</string>
|
||||
<string name="theme_follow_system">跟隨系統</string>
|
||||
<string name="theme_light">淺色</string>
|
||||
<string name="theme_dark">深色</string>
|
||||
<string name="manual_hook">手動鉤子</string>
|
||||
<string name="manual_hook">手動掛載</string>
|
||||
<string name="dynamic_color_title">動態顏色</string>
|
||||
<string name="dynamic_color_summary">使用系統主題的動態顏色</string>
|
||||
<string name="choose_theme_color">選擇主題顏色</string>
|
||||
@@ -210,66 +196,51 @@
|
||||
<string name="color_pink">粉色</string>
|
||||
<string name="color_gray">高級灰</string>
|
||||
<string name="color_yellow">黃色</string>
|
||||
<string name="flash_option">刷寫選項</string>
|
||||
<string name="flash_option_tip">選擇要刷寫的檔案</string>
|
||||
<string name="horizon_kernel">刷寫 AnyKernel3 壓縮包</string>
|
||||
<string name="horizon_kernel_summary">刷寫 AnyKernel3 内核</string>
|
||||
<string name="horizon_kernel_summary">刷寫 AnyKernel3 內核</string>
|
||||
<string name="root_required">需要 Root 權限</string>
|
||||
<string name="copy_failed">檔案複製失敗</string>
|
||||
<string name="reboot_complete_title">刷寫完成</string>
|
||||
<string name="reboot_complete_msg">是否立即重新啟動?</string>
|
||||
<string name="yes">是</string>
|
||||
<string name="no">否</string>
|
||||
<string name="failed_reboot">重新啟動失敗</string>
|
||||
<string name="batch_authorization">批次授權</string>
|
||||
<string name="batch_cancel_authorization">批次取消授權</string>
|
||||
<string name="backup">備份</string>
|
||||
<string name="kpm_title">内核模組</string>
|
||||
<string name="kpm_empty">暫無已安裝的内核模組</string>
|
||||
<string name="kpm_title">內核模組</string>
|
||||
<string name="kpm_empty">暫無已安裝的內核模組</string>
|
||||
<string name="kpm_version">版本</string>
|
||||
<string name="kpm_author">作者</string>
|
||||
<string name="kpm_uninstall">解除安裝</string>
|
||||
<string name="kpm_uninstall_success">解除安裝成功</string>
|
||||
<string name="kpm_uninstall_failed">解除安裝失敗</string>
|
||||
<string name="kpm_install">選擇安裝</string>
|
||||
<string name="kpm_install_success">載入 KPM 模組成功</string>
|
||||
<string name="kpm_install_failed">載入 KPM 模組失敗</string>
|
||||
<string name="kpm_args">參數</string>
|
||||
<string name="kpm_control">調參</string>
|
||||
<string name="home_kpm_version">KPM 版本</string>
|
||||
<string name="close_notice">關閉</string>
|
||||
<string name="kernel_module_notice">以下内核模組功能由 KernelPatch 開發,經修改後加入 SukiSU Ultra 的内核模組功能</string>
|
||||
<string name="kernel_module_notice">以下內核模組功能由 KernelPatch 開發,經修改後加入 SukiSU Ultra 的內核模組功能</string>
|
||||
<string name="home_ContributionCard_kernelsu">SukiSU Ultra 展望</string>
|
||||
<string name="kpm_control_success">成功</string>
|
||||
<string name="kpm_control_failed">錯誤</string>
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra 未來將成為一個相對獨立的 KSU 分支,但仍感謝官方 KernelSU 及 MKSU 等做出的貢獻</string>
|
||||
<string name="not_supported">不支援</string>
|
||||
<string name="supported">支援</string>
|
||||
<string name="home_kpm_module">"KPM 模組數量:%d"</string>
|
||||
<string name="kpm_invalid_file">KPM 檔案無效</string>
|
||||
<string name="kernel_patched">内核未進行修補</string>
|
||||
<string name="kernel_not_enabled">内核未配置</string>
|
||||
<string name="kernel_patched">內核未進行修補</string>
|
||||
<string name="kernel_not_enabled">內核未配置</string>
|
||||
<string name="custom_settings">個人化設定</string>
|
||||
<string name="kpm_install_mode">安裝模式</string>
|
||||
<string name="kpm_install_mode_load">載入</string>
|
||||
<string name="kpm_install_mode_embed">嵌入</string>
|
||||
<string name="kpm_install_mode_description">請選擇 %1$s 模組的安裝模式\n\n載入:臨時載入模組\n嵌入:永久安裝至系統</string>
|
||||
<string name="log_failed_to_check_module_file">無法檢查模組檔案是否存在</string>
|
||||
<string name="snackbar_failed_to_check_module_file">無法檢查模組檔案是否存在</string>
|
||||
<string name="confirm_uninstall_title">確定解除安裝</string>
|
||||
<string name="confirm_uninstall_confirm">刪除</string>
|
||||
<string name="confirm_uninstall_dismiss">取消</string>
|
||||
<string name="theme_color">主題顏色</string>
|
||||
<string name="invalid_file_type">檔案類型不正確,請選擇 .kpm 檔案</string>
|
||||
<string name="confirm_uninstall_title_with_filename">解除安裝</string>
|
||||
<string name="confirm_uninstall_content">將解除安裝以下 KPM 模組:\n%s</string>
|
||||
<string name="settings_susfs_toggle_summary">禁用由 KernelSU 建立的 kprobe 鉤子,並使用非 kprobe 內聯鉤子代替,實現方式類似於不支援 kprobe 的非 GKI 内核。</string>
|
||||
<string name="image_editor_title">調整背景圖片</string>
|
||||
<string name="settings_susfs_toggle_summary">禁用由 KernelSU 建立的 kprobe 掛鉤,並使用非 kprobe 內聯掛鉤代替,實現方式類似於不支援 kprobe 的非 GKI 內核。</string>
|
||||
<string name="image_editor_hint">使用雙指縮放圖片,單指拖曳調整位置</string>
|
||||
<string name="background_image_error">無法載入圖片</string>
|
||||
<string name="reprovision">重置</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">刷寫内核</string>
|
||||
<string name="horizon_flash_title">刷寫內核</string>
|
||||
<string name="horizon_logs_label">日誌:</string>
|
||||
<string name="horizon_flash_complete">刷寫完成</string>
|
||||
<!-- Flash Status Related -->
|
||||
@@ -278,7 +249,7 @@
|
||||
<string name="horizon_copying_files">複製檔案…</string>
|
||||
<string name="horizon_extracting_tool">提取刷寫工具…</string>
|
||||
<string name="horizon_patching_script">修補刷寫腳本…</string>
|
||||
<string name="horizon_flashing">正在刷寫内核…</string>
|
||||
<string name="horizon_flashing">正在刷寫內核…</string>
|
||||
<string name="horizon_flash_complete_status">刷寫完成</string>
|
||||
<!-- Slot selection related strings -->
|
||||
<string name="select_slot_title">選擇刷寫槽位</string>
|
||||
@@ -297,16 +268,12 @@
|
||||
<!-- lkm/gki install -->
|
||||
<string name="Lkm_install_methods">LKM 修補/安裝</string>
|
||||
<string name="GKI_install_methods">刷寫 AnyKernel3</string>
|
||||
<string name="kernel_version_log">内核版本:%1$s</string>
|
||||
<string name="kernel_version_log">內核版本:%1$s</string>
|
||||
<string name="tool_version_log">使用修補工具:%1$s</string>
|
||||
<string name="configuration">配置</string>
|
||||
<string name="app_settings">應用程式設定</string>
|
||||
<string name="tools">工具</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">清除</string>
|
||||
<string name="apps_with_root">擁有 Root 權限的應用程式</string>
|
||||
<string name="apps_with_custom_profile">自訂設定檔的應用程式</string>
|
||||
<string name="other_apps">預設設定檔的應用程式</string>
|
||||
<string name="no_apps_found">未找到應用程式</string>
|
||||
<string name="selinux_enabled_toast">SELinux 已設為啟用狀態</string>
|
||||
<string name="selinux_disabled_toast">SELinux 已設為禁用狀態</string>
|
||||
@@ -314,8 +281,6 @@
|
||||
<string name="advanced_settings">進階設定</string>
|
||||
<string name="appearance_settings">外觀設定</string>
|
||||
<string name="back">返回</string>
|
||||
<string name="expand">展開</string>
|
||||
<string name="collapse">收合</string>
|
||||
<string name="susfs_enabled">SuSFS 已啟用</string>
|
||||
<string name="susfs_disabled">SuSFS 已禁用</string>
|
||||
<string name="background_set_success">背景設定成功</string>
|
||||
@@ -323,7 +288,6 @@
|
||||
<string name="icon_switch_title">備用圖示</string>
|
||||
<string name="icon_switch_summary">更換為 KernelSU 圖示</string>
|
||||
<string name="icon_switched">已切換圖示</string>
|
||||
<string name="root_require_for_install">需要 Root 權限</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">顯示 KPM 功能</string>
|
||||
<string name="show_kpm_info_summary">在首頁和底欄顯示 KPM 相關功能與資訊(需重新開啟應用程式)</string>
|
||||
@@ -335,7 +299,6 @@
|
||||
<string name="use_webuix_eruda">將 Eruda 注入 WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">在 WebUI X 中注入除錯控制台,方便除錯,需啟用 WebView 除錯</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI 設定</string>
|
||||
<string name="app_dpi_title">應用程式 DPI</string>
|
||||
<string name="app_dpi_summary">僅調整目前應用程式的螢幕顯示密度</string>
|
||||
<string name="dpi_size_small">小</string>
|
||||
@@ -353,21 +316,245 @@
|
||||
<string name="language_follow_system">跟隨系統</string>
|
||||
<string name="language_changed">語言已更改,重新啟動應用程式以套用變更</string>
|
||||
<string name="settings_card_dim">卡片暗度調整</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">頂部</string>
|
||||
<string name="scroll_to_bottom">底部</string>
|
||||
<string name="scroll_to_top_description">捲動至頂部</string>
|
||||
<string name="scroll_to_bottom_description">捲動至底部</string>
|
||||
<string name="authorized">已授權</string>
|
||||
<string name="unauthorized">未授權</string>
|
||||
<string name="selected">已選擇</string>
|
||||
<string name="select">選擇</string>
|
||||
<string name="profile_umount_modules_disable">禁用自訂卸載模組</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">錯誤代碼</string>
|
||||
<string name="check_log">請檢查日誌</string>
|
||||
<string name="installing_module">正在安裝模組 %1$d/%2$d</string>
|
||||
<string name="module_failed_count">%d 個模組安裝失敗</string>
|
||||
<string name="module_download_error">模組下載失敗</string>
|
||||
<string name="kernel_flashing">内核刷寫</string>
|
||||
<string name="kernel_flashing">內核刷寫</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">全部</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">自訂</string>
|
||||
<string name="category_default_apps">預設</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">名稱升序</string>
|
||||
<string name="sort_name_desc">名稱降序</string>
|
||||
<string name="sort_install_time_new">安裝時間(新)</string>
|
||||
<string name="sort_install_time_old">安裝時間(舊)</string>
|
||||
<string name="sort_size_desc">大小降序</string>
|
||||
<string name="sort_size_asc">大小升序</string>
|
||||
<string name="sort_usage_freq">使用頻率</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">此分類中無應用</string>
|
||||
<!-- 标签相关 -->
|
||||
<string name="deny_authorization">取消授權</string>
|
||||
<string name="grant_authorization">授權</string>
|
||||
<string name="unmount_modules">卸載模組掛載</string>
|
||||
<string name="disable_unmount">停用卸載模組掛載</string>
|
||||
<string name="expand_menu">展開選單</string>
|
||||
<string name="collapse_menu">收合選單</string>
|
||||
<string name="scroll_to_top">頂部</string>
|
||||
<string name="scroll_to_bottom">底部</string>
|
||||
<string name="selected">已選取</string>
|
||||
<string name="select">選取</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">選單選項</string>
|
||||
<string name="sort_options">排序方式</string>
|
||||
<string name="app_categories">應用程式類型選擇</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<string name="susfs_config_title">SuSFS 配置</string>
|
||||
<string name="susfs_config_description">配置說明</string>
|
||||
<string name="susfs_config_description_text">此功能允許您自訂 SuSFS 的 uname 值和構建時間偽裝。輸入您想要設定的值,點選應用即可生效</string>
|
||||
<string name="susfs_uname_label">Uname 值</string>
|
||||
<string name="susfs_uname_placeholder">請輸入自訂 uname 值</string>
|
||||
<string name="susfs_build_time_label">構建時間偽裝</string>
|
||||
<string name="susfs_build_time_placeholder">請輸入構建時間偽裝值</string>
|
||||
<string name="susfs_current_value">目前值: %s</string>
|
||||
<string name="susfs_current_build_time">目前構建時間: %s</string>
|
||||
<string name="susfs_reset_to_default">重設為預設值</string>
|
||||
<string name="susfs_apply">應用</string>
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<string name="susfs_reset_confirm_title">確認重設</string>
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<string name="susfs_binary_not_found">無法找到 ksu_susfs 檔案</string>
|
||||
<string name="susfs_command_failed">SuSFS 指令執行失敗</string>
|
||||
<string name="susfs_command_error">執行 SuSFS 指令時出錯: %s</string>
|
||||
<string name="susfs_uname_set_success" formatted="false">SuSFS 内核名称和构建时间设置成功: %s, %s</string>
|
||||
<!-- SuSFS Settings Item -->
|
||||
<string name="susfs_config_setting_title">SuSFS 配置</string>
|
||||
<!-- 开机自启动相关 -->
|
||||
<string name="susfs_autostart_title">開機自啟動</string>
|
||||
<string name="susfs_autostart_description">系統啟動時自動應用所有非預設配置</string>
|
||||
<string name="susfs_autostart_requirement">需要添加配置後才能啟用</string>
|
||||
<string name="susfs_autostart_enable_failed">開啟開機自動啟動失敗</string>
|
||||
<string name="susfs_autostart_disable_failed">禁用開機自動啟動失敗</string>
|
||||
<string name="susfs_autostart_error">開機自動啟動設定錯誤:%s</string>
|
||||
<string name="susfs_no_config_to_autostart">無可用設定進行開機自動啟動</string>
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<string name="susfs_tab_basic_settings">基本設定</string>
|
||||
<string name="susfs_tab_sus_paths">SUS 路徑</string>
|
||||
<string name="susfs_tab_sus_mounts">SUS 掛載</string>
|
||||
<string name="susfs_tab_try_umount">嘗試卸載</string>
|
||||
<string name="susfs_tab_path_settings">路徑設定</string>
|
||||
<string name="susfs_tab_enabled_features">啟用功能狀態</string>
|
||||
<!-- SuSFS Path Management -->
|
||||
<string name="susfs_add_sus_path">新增 SUS 路徑</string>
|
||||
<string name="susfs_add_sus_mount">新增 SUS 掛載</string>
|
||||
<string name="susfs_add_try_umount">新增嘗試卸載</string>
|
||||
<string name="susfs_sus_path_added_success">成功添加 SUS 路径</string>
|
||||
<string name="susfs_path_not_found_error">未找到路径</string>
|
||||
<string name="susfs_path_label">路徑</string>
|
||||
<string name="susfs_mount_path_label">掛載路徑</string>
|
||||
<string name="susfs_path_placeholder">例如:/system/addon.d</string>
|
||||
<string name="susfs_no_paths_configured">暫無 SUS 路徑設定</string>
|
||||
<string name="susfs_no_mounts_configured">暫無 SUS 掛載設定</string>
|
||||
<string name="susfs_no_umounts_configured">暫無嘗試卸載設定</string>
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<string name="susfs_umount_mode_label">卸載模式</string>
|
||||
<string name="susfs_umount_mode_normal">一般卸載 (0)</string>
|
||||
<string name="susfs_umount_mode_detach">分離卸載 (1)</string>
|
||||
<string name="susfs_umount_mode_normal_short">一般</string>
|
||||
<string name="susfs_umount_mode_detach_short">分離</string>
|
||||
<string name="susfs_umount_mode_display">模式:%1$s (%2$s)</string>
|
||||
<string name="susfs_try_umount_added_success">嘗試 umount 路徑新增成功: %s</string>
|
||||
<string name="susfs_try_umount_added_saved">嘗試 umount 路徑儲存成功: %s</string>
|
||||
<!-- SuSFS Run Umount -->
|
||||
<string name="susfs_run_umount_confirm_title">確認執行嘗試卸載</string>
|
||||
<string name="susfs_run_umount_confirm_message">這將立即執行所有已設定的嘗試卸載操作,確定要繼續嗎?</string>
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<string name="susfs_reset_paths_title">重設 SUS 路徑</string>
|
||||
<string name="susfs_reset_paths_message">這將清除所有 SUS 路徑設定,確定要繼續嗎?</string>
|
||||
<string name="susfs_reset_mounts_title">重設 SUS 掛載</string>
|
||||
<string name="susfs_reset_mounts_message">這將清除所有 SUS 掛載設定,確定要繼續嗎?</string>
|
||||
<string name="susfs_reset_umounts_title">重設嘗試卸載</string>
|
||||
<string name="susfs_reset_umounts_message">這將清除所有嘗試卸載設定,確定要繼續嗎?</string>
|
||||
<string name="susfs_reset_path_title">重置路徑設定</string>
|
||||
<!-- SuSFS Path Settings -->
|
||||
<string name="susfs_android_data_path_label">Android Data 路徑</string>
|
||||
<string name="susfs_sdcard_path_label">SD 卡路徑</string>
|
||||
<string name="susfs_set_android_data_path">設定 Android Data 路徑</string>
|
||||
<string name="susfs_set_sdcard_path">設定 SD 卡路徑</string>
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<string name="susfs_enabled_features_description">顯示目前 SuSFS 啟用的功能狀態</string>
|
||||
<string name="susfs_no_features_found">未找到功能狀態資訊</string>
|
||||
<string name="susfs_feature_enabled">已啟用</string>
|
||||
<string name="susfs_feature_disabled">已停用</string>
|
||||
<!-- Feature Labels -->
|
||||
<string name="sus_path_feature_label">SUS 路徑支援</string>
|
||||
<string name="sus_mount_feature_label">SUS 掛載支援</string>
|
||||
<string name="try_umount_feature_label">嘗試卸載支援</string>
|
||||
<string name="spoof_uname_feature_label">偽裝 uname 支援</string>
|
||||
<string name="spoof_cmdline_feature_label">偽裝 Cmdline/Bootconfig</string>
|
||||
<string name="open_redirect_feature_label">開放重定向支援</string>
|
||||
<string name="enable_log_feature_label">日誌記錄支援</string>
|
||||
<string name="auto_default_mount_feature_label">自動預設掛載</string>
|
||||
<string name="auto_bind_mount_feature_label">自動綁定掛載</string>
|
||||
<string name="auto_try_umount_bind_feature_label">自動嘗試卸載綁定掛載</string>
|
||||
<string name="hide_symbols_feature_label">隱藏 KSU SUSFS 符號</string>
|
||||
<string name="magic_mount_feature_label">魔法掛載支援</string>
|
||||
<string name="sus_kstat_feature_label">SUS 核心統計支援</string>
|
||||
<string name="sus_su_feature_label">SUS SU 模式切換功能</string>
|
||||
<!-- 可切换状态 -->
|
||||
<string name="susfs_feature_configurable">可設定的 SuSFS 功能</string>
|
||||
<string name="susfs_enable_log_label">SuSFS 啟用日誌</string>
|
||||
<string name="susfs_log_config_description">啟用或關閉 SuSFS 的日誌</string>
|
||||
<string name="susfs_log_config_title">SuSFS 日誌設定</string>
|
||||
<string name="susfs_log_enabled">啟用 SuSFS 日誌</string>
|
||||
<string name="susfs_log_disabled">關閉 SuSFS 日誌</string>
|
||||
<string name="module_update_json">更新設定</string>
|
||||
<string name="module_update_json_copied">更新設定位址已複製到剪貼簿</string>
|
||||
<!-- Settings related strings -->
|
||||
<string name="show_more_module_info">顯示更多模組資訊</string>
|
||||
<string name="show_more_module_info_summary">顯示額外的模組資訊,如更新設定 URL 等</string>
|
||||
<string name="susfs_execution_location_label">執行位置</string>
|
||||
<string name="susfs_current_execution_location">目前執行位置:%s</string>
|
||||
<string name="susfs_execution_location_service">服務</string>
|
||||
<string name="susfs_execution_location_post_fs_data">檔案系統掛載後</string>
|
||||
<string name="susfs_execution_location_service_description">在系統服務啟動後執行</string>
|
||||
<string name="susfs_execution_location_post_fs_data_description">在檔案系統掛載後但系統完全啟動前執行,可能導致循環重新啟動</string>
|
||||
<string name="susfs_slot_info_title">槽位資訊</string>
|
||||
<string name="susfs_slot_info_description">檢視目前啟動槽位資訊並複製數值</string>
|
||||
<string name="susfs_current_active_slot">目前活動槽位:%s</string>
|
||||
<string name="susfs_slot_uname">Uname:%s</string>
|
||||
<string name="susfs_slot_build_time">建置時間:%s</string>
|
||||
<string name="susfs_slot_current_badge">目前</string>
|
||||
<string name="susfs_slot_use_uname">使用 Uname</string>
|
||||
<string name="susfs_slot_use_build_time">使用建置時間</string>
|
||||
<string name="susfs_slot_info_unavailable">無法取得槽位資訊</string>
|
||||
<!-- SuSFS 自启动相关字符串 -->
|
||||
<string name="susfs_autostart_enabled_success">SuSFS 自啟動模組已啟用,模組路徑:%s</string>
|
||||
<string name="susfs_autostart_disabled_success">SuSFS 自啟動模組已停用</string>
|
||||
<!-- SuSFS Kstat相关字符串 -->
|
||||
<string name="susfs_tab_kstat_config">Kstat 設定</string>
|
||||
<string name="kstat_static_config_added">Kstat 靜態設定已新增:%1$s</string>
|
||||
<string name="kstat_config_removed">已移除 Kstat 設定:%1$s</string>
|
||||
<string name="kstat_path_added">Kstat 路徑已新增:%1$s</string>
|
||||
<string name="kstat_path_removed">已移除 Kstat 路徑:%1$s</string>
|
||||
<string name="kstat_updated">Kstat 已更新:%1$s</string>
|
||||
<string name="kstat_full_clone_updated">Kstat 完整複製已更新:%1$s</string>
|
||||
<string name="add_kstat_statically_title">新增 Kstat 靜態設定</string>
|
||||
<string name="file_or_directory_path_label">檔案/目錄路徑</string>
|
||||
<string name="hint_use_default_value">提示:可使用「default」來使用原始值</string>
|
||||
<string name="add_kstat_path_title">新增 Kstat 路徑</string>
|
||||
<string name="add">新增</string>
|
||||
<string name="reset_kstat_config_title">重置 Kstat 設定</string>
|
||||
<string name="reset_kstat_config_message">確定要清除所有 Kstat 設定嗎?此操作不可撤銷</string>
|
||||
<string name="kstat_config_description_title">Kstat 設定說明</string>
|
||||
<string name="kstat_config_description_add_statically">• add_sus_kstat_statically:靜態設定檔案/目錄的 stat 資訊</string>
|
||||
<string name="kstat_config_description_add">• add_sus_kstat:在綁定掛載前新增路徑,儲存原始 stat 資訊</string>
|
||||
<string name="kstat_config_description_update">• update_sus_kstat:更新目標 ino,保持 size 和 blocks 不變</string>
|
||||
<string name="kstat_config_description_update_full_clone">• update_sus_kstat_full_clone:僅更新 ino,其他保持原始值</string>
|
||||
<string name="static_kstat_config">靜態 Kstat 設定</string>
|
||||
<string name="kstat_path_management">Kstat 路徑管理</string>
|
||||
<string name="no_kstat_config_message">暫無 Kstat 設定,請點擊上方按鈕新增設定</string>
|
||||
<!-- SuSFS Mount Hiding Control Related Strings -->
|
||||
<string name="susfs_hide_mounts_control_title">SUS掛載隱藏控制</string>
|
||||
<string name="susfs_hide_mounts_control_description">控制SUS掛載對程序的隱藏行為</string>
|
||||
<string name="susfs_hide_mounts_for_all_procs_label">對所有程序隱藏SUS掛載</string>
|
||||
<string name="susfs_hide_mounts_for_all_procs_enabled_description">啟用後,SUS掛載將對所有程序隱藏,包括KSU程序</string>
|
||||
<string name="susfs_hide_mounts_for_all_procs_disabled_description">禁用後,SUS掛載僅對非KSU程序隱藏,KSU程序可以看到掛載</string>
|
||||
<string name="susfs_hide_mounts_all_enabled">已啟用對所有程序隱藏SUS掛載</string>
|
||||
<string name="susfs_hide_mounts_all_disabled">已禁用對所有程序隱藏SUS掛載</string>
|
||||
<string name="susfs_hide_mounts_recommendation">建議在螢幕解鎖後或在service.sh或boot-completed.sh階段設定為禁用,這可以修復一些依賴KSU程序掛載的root應用的問題</string>
|
||||
<string name="susfs_hide_mounts_current_setting">當前設定: %s</string>
|
||||
<string name="susfs_hide_mounts_setting_all">對所有程序隱藏</string>
|
||||
<string name="susfs_hide_mounts_setting_non_ksu">僅對非KSU程序隱藏</string>
|
||||
<string name="susfs_run">執行</string>
|
||||
<string name="kernel_simple_kernel">核心版本簡潔模式</string>
|
||||
<string name="kernel_simple_kernel_summary">啟用或禁用SukiSU核心版本顯示的簡潔模式</string>
|
||||
<string name="susfs_android_data_path_set">Android Data 路徑已設定為:%s</string>
|
||||
<string name="susfs_sdcard_path_set">SD 卡路徑已設定為:%s</string>
|
||||
<string name="susfs_path_setup_warning">路徑設定可能沒有完全成功,但仍會繼續新增 SUS 路徑</string>
|
||||
<!-- 備份和還原相關字串 -->
|
||||
<string name="susfs_backup_title">備份</string>
|
||||
<string name="susfs_backup_description">建立所有 SuSFS 設定的備份。備份檔案會包含所有設定、路徑與配置信息</string>
|
||||
<string name="susfs_backup_create">建立備份</string>
|
||||
<string name="susfs_backup_success">備份成功建立:%s</string>
|
||||
<string name="susfs_backup_failed">備份建立失敗:%s</string>
|
||||
<string name="susfs_backup_file_not_found">找不到備份檔案</string>
|
||||
<string name="susfs_backup_invalid_format">備份檔案格式無效</string>
|
||||
<string name="susfs_backup_version_mismatch">備份版本不相容,將嘗試進行還原</string>
|
||||
<string name="susfs_restore_title">還原</string>
|
||||
<string name="susfs_restore_description">從備份檔案還原 SuSFS 設定,這會覆蓋目前所有設定</string>
|
||||
<string name="susfs_restore_select_file">選取備份檔案</string>
|
||||
<string name="susfs_restore_success" formatted="false">設定還原成功,備份建立於 %s,來源裝置:%s</string>
|
||||
<string name="susfs_restore_failed">還原失敗:%s</string>
|
||||
<string name="susfs_restore_confirm_title">確認還原</string>
|
||||
<string name="susfs_restore_confirm_description">這將會覆蓋目前所有的 SuSFS 設定,確定要繼續嗎?</string>
|
||||
<string name="susfs_restore_confirm">還原</string>
|
||||
<string name="susfs_backup_info_date">備份日期:%s</string>
|
||||
<string name="susfs_backup_info_device">裝置:%s</string>
|
||||
<string name="susfs_backup_info_version">版本:%s</string>
|
||||
<string name="hide_bl_script">隱藏 BL 腳本</string>
|
||||
<string name="hide_bl_script_description">啟用此選項可隱藏 Bootloader 解鎖狀態的腳本</string>
|
||||
<string name="cleanup_residue">清除工具殘留</string>
|
||||
<string name="cleanup_residue_description">清除各種模組與工具殘留的檔案與資料夾(可能會誤刪導致資料遺失或無法開機,請小心使用)</string>
|
||||
<string name="susfs_edit_sus_path">編輯 SUS 路徑</string>
|
||||
<string name="susfs_edit_sus_mount">編輯 SUS 掛載</string>
|
||||
<string name="susfs_edit_try_umount">編輯嘗試卸載</string>
|
||||
<string name="edit_kstat_statically_title">編輯 Kstat 靜態設定</string>
|
||||
<string name="edit_kstat_path_title">編輯 Kstat 路徑</string>
|
||||
<string name="susfs_save">儲存</string>
|
||||
<string name="edit">編輯</string>
|
||||
<string name="delete">刪除</string>
|
||||
<string name="update">更新</string>
|
||||
<string name="kstat_config_updated">Kstat 設定已更新</string>
|
||||
<string name="kstat_path_updated">Kstat 路徑已更新</string>
|
||||
<string name="susfs_update_full_clone">SusFS 完整複製更新</string>
|
||||
<string name="umount_zygote_iso_service">卸載 Zygote 隔離服務</string>
|
||||
<string name="umount_zygote_iso_service_description">啟用此選項後,系統開機時會自動卸載 Zygote 隔離服務的掛載點</string>
|
||||
<string name="umount_zygote_iso_service_enabled">已啟用卸載 Zygote 隔離服務</string>
|
||||
<string name="umount_zygote_iso_service_disabled">已停用卸載 Zygote 隔離服務</string>
|
||||
</resources>
|
||||
|
||||
@@ -5,17 +5,12 @@
|
||||
<string name="home_not_installed">Not installed</string>
|
||||
<string name="home_click_to_install">Click to install</string>
|
||||
<string name="home_working">Working</string>
|
||||
<string name="home_working_version">Version: %d</string>
|
||||
<string name="home_superuser_count">Superusers: %d</string>
|
||||
<string name="home_module_count">Modules: %d</string>
|
||||
<string name="home_working_version">Version: %s</string>
|
||||
<string name="home_unsupported">Unsupported</string>
|
||||
<string name="home_unsupported_reason">No KernelSU driver detected on your kernel, wrong kernel?.</string>
|
||||
<string name="home_kernel">Kernel version</string>
|
||||
<string name="home_susfs">SuSFS: %s</string>
|
||||
<string name="home_susfs_version">SuSFS Version</string>
|
||||
<string name="home_susfs_sus_su">SuS SU</string>
|
||||
<string name="home_manager_version">Manager version</string>
|
||||
<string name="home_fingerprint">Fingerprint</string>
|
||||
<string name="home_selinux_status">SELinux status</string>
|
||||
<string name="selinux_status_disabled">Disabled</string>
|
||||
<string name="selinux_status_enforcing">Enforcing</string>
|
||||
@@ -29,7 +24,6 @@
|
||||
<string name="module_sort_action_first">Sort (Action first)</string>
|
||||
<string name="module_sort_enabled_first">Sort (Enabled first)</string>
|
||||
<string name="uninstall">Uninstall</string>
|
||||
<string name="restore">Restore</string>
|
||||
<string name="module_install">Install</string>
|
||||
<string name="install">Install</string>
|
||||
<string name="reboot">Reboot</string>
|
||||
@@ -63,16 +57,12 @@
|
||||
<string name="profile_template">Template</string>
|
||||
<string name="profile_custom">Custom</string>
|
||||
<string name="profile_name">Profile name</string>
|
||||
<string name="profile_namespace">Mount namespace</string>
|
||||
<string name="profile_namespace_inherited">Inherited</string>
|
||||
<string name="profile_namespace_global">Global</string>
|
||||
<string name="profile_namespace_individual">Individual</string>
|
||||
<string name="profile_groups">Groups</string>
|
||||
<string name="profile_capabilities">Capabilities</string>
|
||||
<string name="profile_selinux_context">SELinux context</string>
|
||||
<string name="profile_umount_modules">Umount modules</string>
|
||||
<string name="failed_to_update_app_profile">Failed to update App Profile for %s</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %d is too low for the manager to work properly. Please upgrade to version %d or higher!</string>
|
||||
<string name="require_kernel_version" formatted="false">The current KernelSU version %s is too low for the manager to work properly. Please upgrade to version %s or higher!</string>
|
||||
<string name="settings_umount_modules_default">Umount modules by default</string>
|
||||
<string name="settings_umount_modules_default_summary">The global default value for \"Umount modules\" in App Profile. If enabled, it will remove all module modifications to the system for apps that don\'t have a profile set.</string>
|
||||
<string name="settings_susfs_toggle">Disable kprobe hooks</string>
|
||||
@@ -114,7 +104,6 @@
|
||||
<string name="settings_check_update_summary">Automatically check for updates when opening the app</string>
|
||||
<string name="grant_root_failed">Failed to grant root!</string>
|
||||
<string name="action">Action</string>
|
||||
<string name="open">Open</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="enable_web_debugging">Enable WebView debugging</string>
|
||||
<string name="enable_web_debugging_summary">Can be used to debug WebUI. Please enable only when needed.</string>
|
||||
@@ -124,6 +113,7 @@
|
||||
<string name="install_inactive_slot_warning">Your device will be **FORCED** to boot to the current inactive slot after a reboot!\nOnly use this option after OTA is done.\nContinue?</string>
|
||||
<string name="install_next">Next</string>
|
||||
<string name="select_file_tip">%1$s partition image is recommended</string>
|
||||
<string name="select_file_tip_vendor">(unstable)</string>
|
||||
<string name="select_kmi">Select KMI</string>
|
||||
<string name="settings_uninstall">Uninstall</string>
|
||||
<string name="settings_uninstall_temporary">Uninstall temporarily</string>
|
||||
@@ -138,9 +128,6 @@
|
||||
<string name="selected_lkm">Selected LKM: %s</string>
|
||||
<string name="save_log">Save logs</string>
|
||||
<string name="log_saved">Logs saved</string>
|
||||
<string name="status_supported">Supported</string>
|
||||
<string name="status_not_supported">Not Supported</string>
|
||||
<string name="status_unknown">Unknown</string>
|
||||
<string name="sus_su_mode">SuS SU mode:</string>
|
||||
<!-- Module related -->
|
||||
<string name="module_install_confirm">confirm install module %1$s?</string>
|
||||
@@ -174,14 +161,11 @@
|
||||
<string name="settings_custom_background">Custom App Background</string>
|
||||
<string name="settings_custom_background_summary">Select an image as background</string>
|
||||
<string name="settings_card_alpha">Navigation bar transparency</string>
|
||||
<string name="settings_restore_default">Restore default</string>
|
||||
<string name="home_android_version">Android version</string>
|
||||
<string name="home_device_model">Device model</string>
|
||||
<string name="su_not_allowed">Granting superuser to %s is not allowed</string>
|
||||
<string name="settings_disable_su">Disable su compatibility</string>
|
||||
<string name="settings_disable_su_summary">Temporarily disable any applications from obtaining root privileges via the su command (existing root processes will not be affected).</string>
|
||||
<string name="using_mksu_manager">You are using the SukiSU Beta manager</string>
|
||||
<string name="module_install_multiple_confirm">Are you sure you want to install the selected %d modules?</string>
|
||||
<string name="module_install_multiple_confirm_with_names">Sure you want to install the following %1$d modules? \n\n%2$s</string>
|
||||
<string name="more_settings">More settings</string>
|
||||
<string name="selinux">SELinux</string>
|
||||
@@ -197,6 +181,8 @@
|
||||
<string name="hide_susfs_status_summary">Hide SuSFS status information on the home page</string>
|
||||
<string name="hide_link_card">Hide Link Card Status</string>
|
||||
<string name="hide_link_card_summary">Hide link card information on the home page</string>
|
||||
<string name="hide_tag_card">Hide module label rows</string>
|
||||
<string name="hide_tag_card_summary">Hide folder name and size labels in module cards</string>
|
||||
<string name="theme_mode">Theme</string>
|
||||
<string name="theme_follow_system">Follow system</string>
|
||||
<string name="theme_light">Light</string>
|
||||
@@ -212,20 +198,14 @@
|
||||
<string name="color_pink">Pink</string>
|
||||
<string name="color_gray">Gray</string>
|
||||
<string name="color_yellow">Yellow</string>
|
||||
<string name="flash_option">Flash Options</string>
|
||||
<string name="flash_option_tip">Select the file to be flashed</string>
|
||||
<string name="horizon_kernel">Install Anykernel3</string>
|
||||
<string name="horizon_kernel_summary">Flash AnyKernel3 kernel file</string>
|
||||
<string name="root_required">Requires root privileges</string>
|
||||
<string name="copy_failed">File Copy Failure</string>
|
||||
<string name="reboot_complete_title">Scrubbing complete</string>
|
||||
<string name="reboot_complete_msg">Whether to reboot immediately?</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="failed_reboot">Reboot Failed</string>
|
||||
<string name="batch_authorization">empower</string>
|
||||
<string name="batch_cancel_authorization">withdraw</string>
|
||||
<string name="backup">Backup</string>
|
||||
<string name="kpm_title">KPM</string>
|
||||
<string name="kpm_empty">No installed kernel modules at this time</string>
|
||||
<string name="kpm_version">Version</string>
|
||||
@@ -233,7 +213,6 @@
|
||||
<string name="kpm_uninstall">Uninstall</string>
|
||||
<string name="kpm_uninstall_success">Uninstalled successfully</string>
|
||||
<string name="kpm_uninstall_failed">Failed to uninstall</string>
|
||||
<string name="kpm_install">Install</string>
|
||||
<string name="kpm_install_success">Load of kpm module successful</string>
|
||||
<string name="kpm_install_failed">Load of kpm module failed</string>
|
||||
<string name="kpm_args">Parameters</string>
|
||||
@@ -247,8 +226,6 @@
|
||||
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra will be a relatively independent branch of KSU in the future, but we still appreciate the official KernelSU and MKSU etc. for their contributions!</string>
|
||||
<string name="not_supported">Unsupported</string>
|
||||
<string name="supported">Supported</string>
|
||||
<string name="home_kpm_module">"Number of KPMs: %d "</string>
|
||||
<string name="kpm_invalid_file">Invalid KPM file</string>
|
||||
<string name="kernel_patched">Kernel not patched</string>
|
||||
<string name="kernel_not_enabled">Kernel not configured</string>
|
||||
<string name="custom_settings">Custom settings</string>
|
||||
@@ -256,19 +233,13 @@
|
||||
<string name="kpm_install_mode_load">Load</string>
|
||||
<string name="kpm_install_mode_embed">Embed</string>
|
||||
<string name="kpm_install_mode_description">Please select: %1\$s Module Installation Mode \n\nLoad: Temporarily load the module \nEmbedded: Permanently install into the system</string>
|
||||
<string name="log_failed_to_check_module_file">Failed to check module file existence</string>
|
||||
<string name="snackbar_failed_to_check_module_file">Unable to check if module file exists</string>
|
||||
<string name="confirm_uninstall_title">Confirm uninstallation</string>
|
||||
<string name="confirm_uninstall_confirm">Uninstall</string>
|
||||
<string name="confirm_uninstall_dismiss">Cancel</string>
|
||||
<string name="theme_color">Theme Color</string>
|
||||
<string name="invalid_file_type">Incorrect file type! Please select .kpm file.</string>
|
||||
<string name="confirm_uninstall_title_with_filename">Uninstall</string>
|
||||
<string name="confirm_uninstall_content">The following KPM will be uninstalled: %s</string>
|
||||
<string name="settings_susfs_toggle_summary">Disable kprobe hooks created by KernelSU, using inline hooks instead, which is similar to non-GKI kernel hooking method.</string>
|
||||
<string name="image_editor_title">Adjust background image</string>
|
||||
<string name="image_editor_hint">Use two fingers to zoom the image, and one finger to drag it to adjust the position</string>
|
||||
<string name="background_image_error">Could not load image</string>
|
||||
<string name="reprovision">Reprovision</string>
|
||||
<!-- Kernel Flash Progress Related -->
|
||||
<string name="horizon_flash_title">Kernel Flashing</string>
|
||||
@@ -305,10 +276,6 @@
|
||||
<string name="app_settings">Application Settings</string>
|
||||
<string name="tools">Tools</string>
|
||||
<!-- String resources used in SuperUser -->
|
||||
<string name="clear">Removals</string>
|
||||
<string name="apps_with_root">Applications with root privileges</string>
|
||||
<string name="apps_with_custom_profile">Applications with customized configurations</string>
|
||||
<string name="other_apps">Applications with unchanged defaults</string>
|
||||
<string name="no_apps_found">Application not found</string>
|
||||
<string name="selinux_enabled_toast">SELinux Enabled</string>
|
||||
<string name="selinux_disabled_toast">SELinux Disabled</string>
|
||||
@@ -316,8 +283,6 @@
|
||||
<string name="advanced_settings">Advanced Settings</string>
|
||||
<string name="appearance_settings">Customize the toolbar</string>
|
||||
<string name="back">Comeback</string>
|
||||
<string name="expand">Be in full swing</string>
|
||||
<string name="collapse">put away</string>
|
||||
<string name="susfs_enabled">SuSFS enabled</string>
|
||||
<string name="susfs_disabled">SuSFS disabled</string>
|
||||
<string name="background_set_success">Background set successfully</string>
|
||||
@@ -325,7 +290,6 @@
|
||||
<string name="icon_switch_title">Alternate icon</string>
|
||||
<string name="icon_switch_summary">Change the launcher icon to KernelSU\'s icon.</string>
|
||||
<string name="icon_switched">Icon switched</string>
|
||||
<string name="root_require_for_install">Requires root privileges</string>
|
||||
<!-- KPM display settings -->
|
||||
<string name="show_kpm_info">Hides KPM Function</string>
|
||||
<string name="show_kpm_info_summary">Hides KPM information and Function in home and bottom bar</string>
|
||||
@@ -337,7 +301,6 @@
|
||||
<string name="use_webuix_eruda">Inject Eruda into WebUI X</string>
|
||||
<string name="use_webuix_eruda_summary">Inject a debug console into WebUI X to make debugging easier. Requires web debugging to be on.</string>
|
||||
<!-- DPI setting related strings -->
|
||||
<string name="dpi_settings">DPI setting</string>
|
||||
<string name="app_dpi_title">Applied DPI</string>
|
||||
<string name="app_dpi_summary">Adjust the screen display density for the current application only</string>
|
||||
<string name="dpi_size_small">Small </string>
|
||||
@@ -355,16 +318,6 @@
|
||||
<string name="language_follow_system">Follow System</string>
|
||||
<string name="language_changed">Language changed, restarting to apply changes</string>
|
||||
<string name="settings_card_dim">Card Darkness Adjustment</string>
|
||||
<!-- Super User Related -->
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="scroll_to_top_description">Scroll to top</string>
|
||||
<string name="scroll_to_bottom_description">Scroll to the bottom</string>
|
||||
<string name="authorized">authorized</string>
|
||||
<string name="unauthorized">unauthorized</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<string name="profile_umount_modules_disable">Disable custom uninstallation module</string>
|
||||
<!-- Flash related -->
|
||||
<string name="error_code">error code</string>
|
||||
<string name="check_log">Please check the log</string>
|
||||
@@ -372,4 +325,238 @@
|
||||
<string name="module_failed_count">%d Failed to install a new module</string>
|
||||
<string name="module_download_error">Module download failed</string>
|
||||
<string name="kernel_flashing">Kernel Flashing</string>
|
||||
<!-- 分类相关 -->
|
||||
<string name="category_all_apps">All</string>
|
||||
<string name="category_root_apps">Root</string>
|
||||
<string name="category_custom_apps">Custom</string>
|
||||
<string name="category_default_apps">Default</string>
|
||||
<!-- 排序相关 -->
|
||||
<string name="sort_name_asc">Ascending order of name</string>
|
||||
<string name="sort_name_desc">Name descending</string>
|
||||
<string name="sort_install_time_new">Installation time (new)</string>
|
||||
<string name="sort_install_time_old">Installation time (old)</string>
|
||||
<string name="sort_size_desc">descending order of size</string>
|
||||
<string name="sort_size_asc">ascending order of size</string>
|
||||
<string name="sort_usage_freq">frequency of use</string>
|
||||
<!-- 状态相关 -->
|
||||
<string name="no_apps_in_category">No application in this category</string>
|
||||
<!-- 标签相关 -->
|
||||
<string name="deny_authorization">Delegation of authority</string>
|
||||
<string name="grant_authorization">Authorizations</string>
|
||||
<string name="unmount_modules">Unmounting Module Mounts</string>
|
||||
<string name="disable_unmount">Disable uninstall module mounting</string>
|
||||
<string name="expand_menu">Expand menu</string>
|
||||
<string name="collapse_menu">Put away the menu</string>
|
||||
<string name="scroll_to_top">Top</string>
|
||||
<string name="scroll_to_bottom">Bottom</string>
|
||||
<string name="selected">Selected</string>
|
||||
<string name="select">option</string>
|
||||
<!-- BottomSheet相关 -->
|
||||
<string name="menu_options">Menu Options</string>
|
||||
<string name="sort_options">Sort by</string>
|
||||
<string name="app_categories">Application Type Selection</string>
|
||||
<!-- SuSFS Configuration -->
|
||||
<string name="susfs_config_title">SuSFS Configuration</string>
|
||||
<string name="susfs_config_description">Configuration Description</string>
|
||||
<string name="susfs_config_description_text">This feature allows you to customize the SuSFS uname value and build time spoofing. Enter the values you want to set and click Apply to take effect.</string>
|
||||
<string name="susfs_uname_label">Uname Value</string>
|
||||
<string name="susfs_uname_placeholder">Please enter custom uname value</string>
|
||||
<string name="susfs_build_time_label">Build Time Spoofing</string>
|
||||
<string name="susfs_build_time_placeholder">Please enter build time spoofing value</string>
|
||||
<string name="susfs_current_value">Current value: %s</string>
|
||||
<string name="susfs_current_build_time">Current build time: %s</string>
|
||||
<string name="susfs_reset_to_default">Reset to Default</string>
|
||||
<string name="susfs_apply">Apply</string>
|
||||
<!-- SuSFS Reset Confirmation -->
|
||||
<string name="susfs_reset_confirm_title">Confirm Reset</string>
|
||||
<!-- SuSFS Toast Messages -->
|
||||
<string name="susfs_binary_not_found">Cannot find ksu_susfs file</string>
|
||||
<string name="susfs_command_failed">SuSFS command execution failed</string>
|
||||
<string name="susfs_command_error">Error executing SuSFS command: %s</string>
|
||||
<string name="susfs_uname_set_success" formatted="false">SuSFS uname and build time set successfully: %s, %s</string>
|
||||
<!-- SuSFS Settings Item -->
|
||||
<string name="susfs_config_setting_title">SuSFS Configuration</string>
|
||||
<!-- 开机自启动相关 -->
|
||||
<string name="susfs_autostart_title">Auto Start</string>
|
||||
<string name="susfs_autostart_description">Automatically apply all non-default configurations on reboot</string>
|
||||
<string name="susfs_autostart_requirement">Configuration needs to be added to enable</string>
|
||||
<string name="susfs_autostart_enable_failed">Failed to enable auto start</string>
|
||||
<string name="susfs_autostart_disable_failed">Failed to disable auto start</string>
|
||||
<string name="susfs_autostart_error">Auto start configuration error: %s</string>
|
||||
<string name="susfs_no_config_to_autostart">No available configuration for auto start</string>
|
||||
<!-- SuSFS Tab Titles -->
|
||||
<string name="susfs_tab_basic_settings">Basic Settings</string>
|
||||
<string name="susfs_tab_sus_paths">SUS Paths</string>
|
||||
<string name="susfs_tab_sus_mounts">SUS Mounts</string>
|
||||
<string name="susfs_tab_try_umount">Try Umount</string>
|
||||
<string name="susfs_tab_path_settings">Path Settings</string>
|
||||
<string name="susfs_tab_enabled_features">Enabled Features Status</string>
|
||||
<!-- SuSFS Path Management -->
|
||||
<string name="susfs_add_sus_path">Add SUS Path</string>
|
||||
<string name="susfs_add_sus_mount">Add SUS Mount</string>
|
||||
<string name="susfs_add_try_umount">Add Try Umount</string>
|
||||
<string name="susfs_sus_path_added_success">SUS path added successfully</string>
|
||||
<string name="susfs_path_not_found_error">Path not found error</string>
|
||||
<string name="susfs_path_label">Path</string>
|
||||
<string name="susfs_mount_path_label">Mount Path</string>
|
||||
<string name="susfs_path_placeholder">e.g.: /system/addon.d</string>
|
||||
<string name="susfs_no_paths_configured">No SUS paths configured</string>
|
||||
<string name="susfs_no_mounts_configured">No SUS mounts configured</string>
|
||||
<string name="susfs_no_umounts_configured">No try umount configured</string>
|
||||
<!-- SuSFS Umount Mode -->
|
||||
<string name="susfs_umount_mode_label">Umount Mode</string>
|
||||
<string name="susfs_umount_mode_normal">Normal Umount (0)</string>
|
||||
<string name="susfs_umount_mode_detach">Detach Umount (1)</string>
|
||||
<string name="susfs_umount_mode_normal_short">Normal</string>
|
||||
<string name="susfs_umount_mode_detach_short">Detach</string>
|
||||
<string name="susfs_umount_mode_display">Mode: %1$s (%2$s)</string>
|
||||
<string name="susfs_try_umount_added_success">Try to umount path added successfully: %s</string>
|
||||
<string name="susfs_try_umount_added_saved">Attempted umount path save succeeded: %s</string>
|
||||
<!-- SuSFS Run Umount -->
|
||||
<string name="susfs_run_umount_confirm_title">Confirm Run Try Umount</string>
|
||||
<string name="susfs_run_umount_confirm_message">This will immediately execute all configured try umount operations. Are you sure you want to continue?</string>
|
||||
<!-- SuSFS Reset Categories -->
|
||||
<string name="susfs_reset_paths_title">Reset SUS Paths</string>
|
||||
<string name="susfs_reset_paths_message">This will clear all SUS path configurations. Are you sure you want to continue?</string>
|
||||
<string name="susfs_reset_mounts_title">Reset SUS Mounts</string>
|
||||
<string name="susfs_reset_mounts_message">This will clear all SUS mount configurations. Are you sure you want to continue?</string>
|
||||
<string name="susfs_reset_umounts_title">Reset Try Umount</string>
|
||||
<string name="susfs_reset_umounts_message">This will clear all try umount configurations. Are you sure you want to continue?</string>
|
||||
<string name="susfs_reset_path_title">Reset Path Settings</string>
|
||||
<!-- SuSFS Path Settings -->
|
||||
<string name="susfs_android_data_path_label">Android Data Path</string>
|
||||
<string name="susfs_sdcard_path_label">SD Card Path</string>
|
||||
<string name="susfs_set_android_data_path">Set Android Data Path</string>
|
||||
<string name="susfs_set_sdcard_path">Set SD Card Path</string>
|
||||
<!-- SuSFS Enabled Features -->
|
||||
<string name="susfs_enabled_features_description">Display current SuSFS enabled features status</string>
|
||||
<string name="susfs_no_features_found">No feature status information found</string>
|
||||
<string name="susfs_feature_enabled">Enabled</string>
|
||||
<string name="susfs_feature_disabled">Disabled</string>
|
||||
<!-- Feature Labels -->
|
||||
<string name="sus_path_feature_label">SUS Path Support</string>
|
||||
<string name="sus_mount_feature_label">SUS Mount Support</string>
|
||||
<string name="try_umount_feature_label">Try Umount Support</string>
|
||||
<string name="spoof_uname_feature_label">Spoof uname Support</string>
|
||||
<string name="spoof_cmdline_feature_label">Spoof Cmdline/Bootconfig</string>
|
||||
<string name="open_redirect_feature_label">Open Redirect Support</string>
|
||||
<string name="enable_log_feature_label">Logging Support</string>
|
||||
<string name="auto_default_mount_feature_label">Auto Default Mount</string>
|
||||
<string name="auto_bind_mount_feature_label">Auto Bind Mount</string>
|
||||
<string name="auto_try_umount_bind_feature_label">Auto Try Umount Bind Mount</string>
|
||||
<string name="hide_symbols_feature_label">Hide KSU SUSFS Symbols</string>
|
||||
<string name="magic_mount_feature_label">Magic Mount Support</string>
|
||||
<string name="sus_kstat_feature_label">SUS Kstat Support</string>
|
||||
<string name="sus_su_feature_label">SUS SU mode switching function</string>
|
||||
<!-- 可切换状态 -->
|
||||
<string name="susfs_feature_configurable">Configurable SuSFS Features</string>
|
||||
<string name="susfs_enable_log_label">SuSFS Enable Log</string>
|
||||
<string name="susfs_log_config_description">Enable or disable logging for SuSFS</string>
|
||||
<string name="susfs_log_config_title">SuSFS Logging Configuration</string>
|
||||
<string name="susfs_log_enabled">Enabling SuSFS Logging</string>
|
||||
<string name="susfs_log_disabled">Turn off SuSFS logging</string>
|
||||
<string name="module_update_json">Update JSON</string>
|
||||
<string name="module_update_json_copied">Update JSON URL copied to clipboard</string>
|
||||
<!-- Settings related strings -->
|
||||
<string name="show_more_module_info">Show More Module Info</string>
|
||||
<string name="show_more_module_info_summary">Display additional module information like update JSON URLs</string>
|
||||
<string name="susfs_execution_location_label">Execution Location</string>
|
||||
<string name="susfs_current_execution_location">Current execution location: %s</string>
|
||||
<string name="susfs_execution_location_service">Service</string>
|
||||
<string name="susfs_execution_location_post_fs_data">Post-FS-Data</string>
|
||||
<string name="susfs_execution_location_service_description">Execute after system services start</string>
|
||||
<string name="susfs_execution_location_post_fs_data_description">Execute after file system is mounted but before system is fully booted,May cause a boot loop</string>
|
||||
<string name="susfs_slot_info_title">Slot Information</string>
|
||||
<string name="susfs_slot_info_description">View current boot slot information and copy values</string>
|
||||
<string name="susfs_current_active_slot">Current Active Slot: %s</string>
|
||||
<string name="susfs_slot_uname">Uname: %s</string>
|
||||
<string name="susfs_slot_build_time">Build Time: %s</string>
|
||||
<string name="susfs_slot_current_badge">Current</string>
|
||||
<string name="susfs_slot_use_uname">Use Uname</string>
|
||||
<string name="susfs_slot_use_build_time">Use Build Time</string>
|
||||
<string name="susfs_slot_info_unavailable">Unable to retrieve slot information</string>
|
||||
<!-- SuSFS 自启动相关字符串 -->
|
||||
<string name="susfs_autostart_enabled_success">SuSFS auto-start module enabled, module path: %s</string>
|
||||
<string name="susfs_autostart_disabled_success">SuSFS auto-start module disabled</string>
|
||||
<!-- SuSFS Kstat相关字符串 -->
|
||||
<string name="susfs_tab_kstat_config">Kstat Configuration</string>
|
||||
<string name="kstat_static_config_added">Kstat static configuration added: %1$s</string>
|
||||
<string name="kstat_config_removed">Kstat configuration removed: %1$s</string>
|
||||
<string name="kstat_path_added">Kstat path added: %1$s</string>
|
||||
<string name="kstat_path_removed">Kstat path removed: %1$s</string>
|
||||
<string name="kstat_updated">Kstat updated: %1$s</string>
|
||||
<string name="kstat_full_clone_updated">Kstat full clone updated: %1$s</string>
|
||||
<string name="add_kstat_statically_title">Add Kstat Static Configuration</string>
|
||||
<string name="file_or_directory_path_label">File/Directory Path</string>
|
||||
<string name="hint_use_default_value">Hint: You can use ”default“ to use the original value</string>
|
||||
<string name="add_kstat_path_title">Add Kstat Path</string>
|
||||
<string name="add">Add</string>
|
||||
<string name="reset_kstat_config_title">Reset Kstat Configuration</string>
|
||||
<string name="reset_kstat_config_message">Are you sure you want to clear all Kstat configurations? This action cannot be undone.</string>
|
||||
<string name="kstat_config_description_title">Kstat Configuration Description</string>
|
||||
<string name="kstat_config_description_add_statically">• add_sus_kstat_statically: Static stat info of files/directories</string>
|
||||
<string name="kstat_config_description_add">• add_sus_kstat: Add path before bind mount, storing original stat info</string>
|
||||
<string name="kstat_config_description_update">• update_sus_kstat: Update target ino, keep size and blocks unchanged</string>
|
||||
<string name="kstat_config_description_update_full_clone">• update_sus_kstat_full_clone: Update ino only, keep other original values</string>
|
||||
<string name="static_kstat_config">Static Kstat Configuration</string>
|
||||
<string name="kstat_path_management">Kstat Path Management</string>
|
||||
<string name="no_kstat_config_message">No Kstat configuration yet, click the button above to add</string>
|
||||
<!-- SuSFS Mount Hiding Control Related Strings -->
|
||||
<string name="susfs_hide_mounts_control_title">SUS Mount Hiding Control</string>
|
||||
<string name="susfs_hide_mounts_control_description">Control the hiding behavior of SUS mounts for processes</string>
|
||||
<string name="susfs_hide_mounts_for_all_procs_label">Hide SUS mounts for all processes</string>
|
||||
<string name="susfs_hide_mounts_for_all_procs_enabled_description">When enabled, SUS mounts will be hidden from all processes, including KSU processes</string>
|
||||
<string name="susfs_hide_mounts_for_all_procs_disabled_description">When disabled, SUS mounts will only be hidden from non-KSU processes, KSU processes can see the mounts</string>
|
||||
<string name="susfs_hide_mounts_all_enabled">Enabled hiding SUS mounts for all processes</string>
|
||||
<string name="susfs_hide_mounts_all_disabled">Disabled hiding SUS mounts for all processes</string>
|
||||
<string name="susfs_hide_mounts_recommendation">It is recommended to set to disabled after screen is unlocked, or during service.sh or boot-completed.sh stage, as this should fix the issue on some rooted apps that rely on mounts mounted by KSU process</string>
|
||||
<string name="susfs_hide_mounts_current_setting">Current setting: %s</string>
|
||||
<string name="susfs_hide_mounts_setting_all">Hide for all processes</string>
|
||||
<string name="susfs_hide_mounts_setting_non_ksu">Hide only for non-KSU processes</string>
|
||||
<string name="susfs_run">Run</string>
|
||||
<string name="kernel_simple_kernel">Kernel Version Concise Mode</string>
|
||||
<string name="kernel_simple_kernel_summary">Enable or disable the clean mode displayed by the SukiSU kernel version</string>
|
||||
<string name="susfs_android_data_path_set">Android Data path has been set to: %s</string>
|
||||
<string name="susfs_sdcard_path_set">SD card path has been set to: %s</string>
|
||||
<string name="susfs_path_setup_warning">Path setup may not be fully successful, but SUS paths will continue to be added</string>
|
||||
<!-- 备份和还原相关字符串 -->
|
||||
<string name="susfs_backup_title">Backup</string>
|
||||
<string name="susfs_backup_description">Create a backup of all SuSFS configurations. The backup file will include all settings, paths, and configurations.</string>
|
||||
<string name="susfs_backup_create">Create Backup</string>
|
||||
<string name="susfs_backup_success">Backup created successfully: %s</string>
|
||||
<string name="susfs_backup_failed">Backup creation failed: %s</string>
|
||||
<string name="susfs_backup_file_not_found">Backup file not found</string>
|
||||
<string name="susfs_backup_invalid_format">Invalid backup file format</string>
|
||||
<string name="susfs_backup_version_mismatch">Backup version mismatch, but will attempt to restore</string>
|
||||
<string name="susfs_restore_title">Restore</string>
|
||||
<string name="susfs_restore_description">Restore SuSFS configurations from a backup file. This will overwrite all current settings.</string>
|
||||
<string name="susfs_restore_select_file">Select Backup File</string>
|
||||
<string name="susfs_restore_success" formatted="false">Configuration restored successfully from backup created on %s from device: %s</string>
|
||||
<string name="susfs_restore_failed">Restore failed: %s</string>
|
||||
<string name="susfs_restore_confirm_title">Confirm Restore</string>
|
||||
<string name="susfs_restore_confirm_description">This will overwrite all current SuSFS configurations. Are you sure you want to continue?</string>
|
||||
<string name="susfs_restore_confirm">Restore</string>
|
||||
<string name="susfs_backup_info_date">Backup Date: %s</string>
|
||||
<string name="susfs_backup_info_device">Device: %s</string>
|
||||
<string name="susfs_backup_info_version">Version: %s</string>
|
||||
<string name="hide_bl_script">Hide BL Script</string>
|
||||
<string name="hide_bl_script_description">Enable Hide Bootloader Unlock Status Scripts</string>
|
||||
<string name="cleanup_residue">Cleanup Residue</string>
|
||||
<string name="cleanup_residue_description">Clean up the residual files and directories of various modules and tools (may be deleted by mistake, resulting in loss and failure to start, use with caution)</string>
|
||||
<string name="susfs_edit_sus_path">Edit SUS Path</string>
|
||||
<string name="susfs_edit_sus_mount">Edit SUS Mount</string>
|
||||
<string name="susfs_edit_try_umount">Edit Try Umount</string>
|
||||
<string name="edit_kstat_statically_title">Edit Kstat Static Configuration</string>
|
||||
<string name="edit_kstat_path_title">Edit Kstat Path</string>
|
||||
<string name="susfs_save">Save</string>
|
||||
<string name="edit">Edit</string>
|
||||
<string name="delete">Delete</string>
|
||||
<string name="update">Update</string>
|
||||
<string name="kstat_config_updated">Kstat config update</string>
|
||||
<string name="kstat_path_updated">Kstat path update</string>
|
||||
<string name="susfs_update_full_clone">Susfs update full clone</string>
|
||||
<string name="umount_zygote_iso_service">Unmount Zygote Isolation Service</string>
|
||||
<string name="umount_zygote_iso_service_description">Enable this option to unmount Zygote isolation service mount points at system startup</string>
|
||||
<string name="umount_zygote_iso_service_enabled">Zygote isolation service unmount enabled</string>
|
||||
<string name="umount_zygote_iso_service_disabled">Zygote isolation service unmount disabled</string>
|
||||
</resources>
|
||||
|
||||
@@ -32,7 +32,7 @@ val androidCompileSdkVersion = 36
|
||||
val androidCompileNdkVersion = "28.0.13004108"
|
||||
val androidSourceCompatibility = JavaVersion.VERSION_21
|
||||
val androidTargetCompatibility = JavaVersion.VERSION_21
|
||||
val managerVersionCode by extra(1 * 10000 + getGitCommitCount() + 606)
|
||||
val managerVersionCode by extra(1 * 10000 + getGitCommitCount() + 700)
|
||||
val managerVersionName by extra(getGitDescribe())
|
||||
|
||||
fun getGitCommitCount(): Int {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[versions]
|
||||
agp = "8.10.1"
|
||||
agp = "8.11.0"
|
||||
gson = "2.11.0"
|
||||
kotlin = "2.1.20"
|
||||
ksp = "2.1.20-2.0.0"
|
||||
|
||||
BIN
manager/gradle/wrapper/gradle-wrapper.jar
vendored
BIN
manager/gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
@@ -1,6 +1,6 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
|
||||
6
manager/gradlew
vendored
6
manager/gradlew
vendored
@@ -114,7 +114,7 @@ case "$( uname )" in #(
|
||||
NONSTOP* ) nonstop=true ;;
|
||||
esac
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
CLASSPATH="\\\"\\\""
|
||||
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
@@ -205,7 +205,7 @@ fi
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
|
||||
# Collect all arguments for the java command:
|
||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
|
||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
|
||||
# and any embedded shellness will be escaped.
|
||||
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
|
||||
# treated as '${Hostname}' itself on the command line.
|
||||
@@ -213,7 +213,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
set -- \
|
||||
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||
-classpath "$CLASSPATH" \
|
||||
org.gradle.wrapper.GradleWrapperMain \
|
||||
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
|
||||
"$@"
|
||||
|
||||
# Stop when "xargs" is not available.
|
||||
|
||||
4
manager/gradlew.bat
vendored
4
manager/gradlew.bat
vendored
@@ -70,11 +70,11 @@ goto fail
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
set CLASSPATH=
|
||||
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
|
||||
@@ -15,7 +15,7 @@ fn get_git_version() -> Result<(u32, String), std::io::Error> {
|
||||
.trim()
|
||||
.parse()
|
||||
.map_err(|_| std::io::Error::new(std::io::ErrorKind::Other, "Failed to parse git count"))?;
|
||||
let version_code = 10000 + 606 + version_code; // For historical reasons
|
||||
let version_code = 10000 + 700 + version_code; // For historical reasons
|
||||
|
||||
let version_name = String::from_utf8(
|
||||
Command::new("git")
|
||||
|
||||
@@ -167,6 +167,21 @@ fn do_cpio_cmd(magiskboot: &Path, workdir: &Path, cmd: &str) -> Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn do_vendor_init_boot_cpio_cmd(magiskboot: &Path, workdir: &Path, cmd: &str) -> Result<()> {
|
||||
let vendor_init_boot_cpio = workdir.join("vendor_ramdisk").join("init_boot.cpio");
|
||||
let status = Command::new(magiskboot)
|
||||
.current_dir(workdir)
|
||||
.stdout(Stdio::null())
|
||||
.stderr(Stdio::null())
|
||||
.arg("cpio")
|
||||
.arg(vendor_init_boot_cpio)
|
||||
.arg(cmd)
|
||||
.status()?;
|
||||
|
||||
ensure!(status.success(), "magiskboot cpio {} failed", cmd);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn is_magisk_patched(magiskboot: &Path, workdir: &Path) -> Result<bool> {
|
||||
let status = Command::new(magiskboot)
|
||||
.current_dir(workdir)
|
||||
@@ -179,6 +194,19 @@ fn is_magisk_patched(magiskboot: &Path, workdir: &Path) -> Result<bool> {
|
||||
Ok(status.code() == Some(1))
|
||||
}
|
||||
|
||||
fn is_magisk_patched_vendor_init_boot(magiskboot: &Path, workdir: &Path) -> Result<bool> {
|
||||
let vendor_init_boot_cpio = workdir.join("vendor_ramdisk").join("init_boot.cpio");
|
||||
let status = Command::new(magiskboot)
|
||||
.current_dir(workdir)
|
||||
.stdout(Stdio::null())
|
||||
.stderr(Stdio::null())
|
||||
.args(["cpio", vendor_init_boot_cpio.to_str().unwrap(), "test"])
|
||||
.status()?;
|
||||
|
||||
// 0: stock, 1: magisk
|
||||
Ok(status.code() == Some(1))
|
||||
}
|
||||
|
||||
fn is_kernelsu_patched(magiskboot: &Path, workdir: &Path) -> Result<bool> {
|
||||
let status = Command::new(magiskboot)
|
||||
.current_dir(workdir)
|
||||
@@ -190,6 +218,22 @@ fn is_kernelsu_patched(magiskboot: &Path, workdir: &Path) -> Result<bool> {
|
||||
Ok(status.success())
|
||||
}
|
||||
|
||||
fn is_kernelsu_patched_vendor_init_boot(magiskboot: &Path, workdir: &Path) -> Result<bool> {
|
||||
let vendor_ramdisk_cpio = workdir.join("vendor_ramdisk").join("init_boot.cpio");
|
||||
let status = Command::new(magiskboot)
|
||||
.current_dir(workdir)
|
||||
.stdout(Stdio::null())
|
||||
.stderr(Stdio::null())
|
||||
.args([
|
||||
"cpio",
|
||||
vendor_ramdisk_cpio.to_str().unwrap(),
|
||||
"exists kernelsu.ko",
|
||||
])
|
||||
.status()?;
|
||||
|
||||
Ok(status.success())
|
||||
}
|
||||
|
||||
fn dd<P: AsRef<Path>, Q: AsRef<Path>>(ifile: P, ofile: Q) -> Result<()> {
|
||||
let status = Command::new("dd")
|
||||
.stdout(Stdio::null())
|
||||
@@ -234,8 +278,14 @@ pub fn restore(
|
||||
.status()?;
|
||||
ensure!(status.success(), "magiskboot unpack failed");
|
||||
|
||||
let no_ramdisk = !workdir.join("ramdisk.cpio").exists();
|
||||
let is_kernelsu_patched = is_kernelsu_patched(&magiskboot, workdir)?;
|
||||
ensure!(is_kernelsu_patched, "boot image is not patched by KernelSU");
|
||||
let is_kernelsu_patched_vendor_init_boot =
|
||||
is_kernelsu_patched_vendor_init_boot(&magiskboot, workdir)?;
|
||||
ensure!(
|
||||
is_kernelsu_patched || is_kernelsu_patched_vendor_init_boot,
|
||||
"boot image is not patched by KernelSU"
|
||||
);
|
||||
|
||||
let mut new_boot = None;
|
||||
let mut from_backup = false;
|
||||
@@ -267,16 +317,29 @@ pub fn restore(
|
||||
}
|
||||
|
||||
if new_boot.is_none() {
|
||||
// remove kernelsu.ko
|
||||
do_cpio_cmd(&magiskboot, workdir, "rm kernelsu.ko")?;
|
||||
|
||||
// if init.real exists, restore it
|
||||
let status = do_cpio_cmd(&magiskboot, workdir, "exists init.real").is_ok();
|
||||
if status {
|
||||
do_cpio_cmd(&magiskboot, workdir, "mv init.real init")?;
|
||||
if no_ramdisk {
|
||||
// vendor init_boot restore
|
||||
do_vendor_init_boot_cpio_cmd(&magiskboot, workdir, "rm kernelsu.ko")?;
|
||||
// if init.real exists, restore it
|
||||
let status =
|
||||
do_vendor_init_boot_cpio_cmd(&magiskboot, workdir, "exists init.real").is_ok();
|
||||
if status {
|
||||
do_vendor_init_boot_cpio_cmd(&magiskboot, workdir, "mv init.real init")?;
|
||||
} else {
|
||||
let vendor_init_boot = workdir.join("vendor_ramdisk").join("init_boot.cpio");
|
||||
std::fs::remove_file(vendor_init_boot)?;
|
||||
}
|
||||
} else {
|
||||
let ramdisk = workdir.join("ramdisk.cpio");
|
||||
std::fs::remove_file(ramdisk)?;
|
||||
// remove kernelsu.ko
|
||||
do_cpio_cmd(&magiskboot, workdir, "rm kernelsu.ko")?;
|
||||
// if init.real exists, restore it
|
||||
let status = do_cpio_cmd(&magiskboot, workdir, "exists init.real").is_ok();
|
||||
if status {
|
||||
do_cpio_cmd(&magiskboot, workdir, "mv init.real init")?;
|
||||
} else {
|
||||
let ramdisk = workdir.join("ramdisk.cpio");
|
||||
std::fs::remove_file(ramdisk)?;
|
||||
}
|
||||
}
|
||||
|
||||
println!("- Repacking boot image");
|
||||
@@ -454,28 +517,51 @@ fn do_patch(
|
||||
ensure!(status.success(), "magiskboot unpack failed");
|
||||
|
||||
let no_ramdisk = !workdir.join("ramdisk.cpio").exists();
|
||||
let no_vendor_init_boot = !workdir
|
||||
.join("vendor_ramdisk")
|
||||
.join("init_boot.cpio")
|
||||
.exists();
|
||||
if no_ramdisk && no_vendor_init_boot {
|
||||
bail!("No compatible ramdisk found.");
|
||||
}
|
||||
let is_magisk_patched = is_magisk_patched(&magiskboot, workdir)?;
|
||||
let is_magisk_patched_vendor_init_boot =
|
||||
is_magisk_patched_vendor_init_boot(&magiskboot, workdir)?;
|
||||
ensure!(
|
||||
no_ramdisk || !is_magisk_patched,
|
||||
!is_magisk_patched || !is_magisk_patched_vendor_init_boot,
|
||||
"Cannot work with Magisk patched image"
|
||||
);
|
||||
|
||||
println!("- Adding KernelSU LKM");
|
||||
let is_kernelsu_patched = is_kernelsu_patched(&magiskboot, workdir)?;
|
||||
let is_kernelsu_patched_vendor_init_boot =
|
||||
is_kernelsu_patched_vendor_init_boot(&magiskboot, workdir)?;
|
||||
|
||||
let mut need_backup = false;
|
||||
if !is_kernelsu_patched {
|
||||
// kernelsu.ko is not exist, backup init if necessary
|
||||
let status = do_cpio_cmd(&magiskboot, workdir, "exists init");
|
||||
if status.is_ok() {
|
||||
do_cpio_cmd(&magiskboot, workdir, "mv init init.real")?;
|
||||
if !is_kernelsu_patched || (no_ramdisk && !is_kernelsu_patched_vendor_init_boot) {
|
||||
if no_ramdisk {
|
||||
// vendor init_boot patching
|
||||
let status = do_vendor_init_boot_cpio_cmd(&magiskboot, workdir, "exists init");
|
||||
if status.is_ok() {
|
||||
do_vendor_init_boot_cpio_cmd(&magiskboot, workdir, "mv init init.real")?;
|
||||
}
|
||||
} else {
|
||||
// kernelsu.ko is not exist, backup init if necessary
|
||||
let status = do_cpio_cmd(&magiskboot, workdir, "exists init");
|
||||
if status.is_ok() {
|
||||
do_cpio_cmd(&magiskboot, workdir, "mv init init.real")?;
|
||||
}
|
||||
need_backup = flash;
|
||||
}
|
||||
|
||||
need_backup = flash;
|
||||
}
|
||||
|
||||
do_cpio_cmd(&magiskboot, workdir, "add 0755 init init")?;
|
||||
do_cpio_cmd(&magiskboot, workdir, "add 0755 kernelsu.ko kernelsu.ko")?;
|
||||
if no_ramdisk {
|
||||
do_vendor_init_boot_cpio_cmd(&magiskboot, workdir, "add 0755 init init")?;
|
||||
do_vendor_init_boot_cpio_cmd(&magiskboot, workdir, "add 0755 kernelsu.ko kernelsu.ko")?;
|
||||
} else {
|
||||
do_cpio_cmd(&magiskboot, workdir, "add 0755 init init")?;
|
||||
do_cpio_cmd(&magiskboot, workdir, "add 0755 kernelsu.ko kernelsu.ko")?;
|
||||
}
|
||||
|
||||
#[cfg(target_os = "android")]
|
||||
if need_backup {
|
||||
@@ -501,7 +587,7 @@ fn do_patch(
|
||||
let output_dir = out.unwrap_or(std::env::current_dir()?);
|
||||
let now = chrono::Utc::now();
|
||||
let output_image = output_dir.join(format!(
|
||||
"kernelsu_patched_{}.img",
|
||||
"SukiSU_patched_{}.img",
|
||||
now.format("%Y%m%d_%H%M%S")
|
||||
));
|
||||
|
||||
@@ -655,8 +741,12 @@ fn find_boot_image(
|
||||
|
||||
let init_boot_exist =
|
||||
Path::new(&format!("/dev/block/by-name/init_boot{slot_suffix}")).exists();
|
||||
let vendor_boot_exist =
|
||||
Path::new(&format!("/dev/block/by-name/vendor_boot{slot_suffix}")).exists();
|
||||
let boot_partition = if !is_replace_kernel && init_boot_exist && !skip_init {
|
||||
format!("/dev/block/by-name/init_boot{slot_suffix}")
|
||||
} else if !is_replace_kernel && vendor_boot_exist && !skip_init {
|
||||
format!("/dev/block/by-name/vendor_boot{slot_suffix}")
|
||||
} else {
|
||||
format!("/dev/block/by-name/boot{slot_suffix}")
|
||||
};
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user