diff --git a/README.md b/README.md
index 7f7d79e..3a2b996 100644
--- a/README.md
+++ b/README.md
@@ -52,5 +52,6 @@
- [forcequit](https://github.com/forcequitOS) for his work on bad_query
- [johnny](https://github.com/0xjohnnydev) for his work on the MCM bug class
- [jailbreak.party](https://github.com/jailbreakdotparty) for PartyUI, GestaltView and the implementation of [neon](https://github.com/neonmodder123)'s respring method
+- [EricoEC](https://github.com/EricoEC) for Simplified Chinese Translation
btw, you should like totally star this repo and stuff
diff --git a/mond.xcodeproj/project.pbxproj b/mond.xcodeproj/project.pbxproj
index f69515d..31a7705 100644
--- a/mond.xcodeproj/project.pbxproj
+++ b/mond.xcodeproj/project.pbxproj
@@ -101,6 +101,7 @@
knownRegions = (
en,
Base,
+ "zh-Hans",
);
mainGroup = CCF44B36300858B300739BFC;
minimizedProjectReferenceProxies = 1;
@@ -268,7 +269,7 @@
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
- DEVELOPMENT_TEAM = DN4S6CXFWY;
+ DEVELOPMENT_TEAM = "";
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_CFBundleDisplayName = mond;
@@ -306,7 +307,7 @@
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
- DEVELOPMENT_TEAM = DN4S6CXFWY;
+ DEVELOPMENT_TEAM = "";
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_CFBundleDisplayName = mond;
diff --git a/mond/mond.swift b/mond/mond.swift
index 8842ae1..9d1618c 100644
--- a/mond/mond.swift
+++ b/mond/mond.swift
@@ -28,26 +28,26 @@ var path: String {
@main
struct mond: App {
@StateObject private var state = AppState()
-
+
@AppStorage("ka_on") private var ka_on = true
-
+
init() {
if !is_debugged() {
setvbuf(stdout, nil, _IONBF, 0)
dup2(pipe.fileHandleForWriting.fileDescriptor, STDOUT_FILENO)
}
-
+
UserDefaults.standard.register(defaults: ["exploit_method": "bad_query"])
if UserDefaults.standard.bool(forKey: "ka_on") {
keep_alive()
}
-
+
// thanks lunginspector
let fix = class_getInstanceMethod(UIDocumentPickerViewController.self, #selector(UIDocumentPickerViewController.fix_init(forOpeningContentTypes:asCopy:)))!
let og = class_getInstanceMethod(UIDocumentPickerViewController.self, #selector(UIDocumentPickerViewController.init(forOpeningContentTypes:asCopy:)))!
method_exchangeImplementations(og, fix)
}
-
+
var body: some Scene {
WindowGroup {
ContentView()
@@ -62,9 +62,9 @@ struct mond: App {
}
.onAppear() {
if !is_supported() {
- Alertinator.shared.alert(title: "Not supported!", body: "Your iOS version may not be supported by mond.\nMond only supports iOS 27.0 developer beta 1 - 4.")
+ Alertinator.shared.alert(title: String(localized: "Not supported!"), body: String(localized: "Your iOS version may not be supported by mond.\nMond only supports iOS 27.0 developer beta 1 - 4."))
}
-
+
grant_all(state: state)
}
.overlay {
@@ -85,4 +85,4 @@ extension UIDocumentPickerViewController {
@objc func fix_init(forOpeningContentTypes contentTypes: [UTType], asCopy: Bool) -> UIDocumentPickerViewController {
return fix_init(forOpeningContentTypes: contentTypes, asCopy: true)
}
-}
+}
\ No newline at end of file
diff --git a/mond/views/app/ContentView.swift b/mond/views/app/ContentView.swift
index 5f9b120..28467f1 100644
--- a/mond/views/app/ContentView.swift
+++ b/mond/views/app/ContentView.swift
@@ -11,10 +11,10 @@ import PartyUI
struct ContentView: View {
@EnvironmentObject var state: AppState
@AppStorage("method") private var method: String = "bad_query"
-
+
@State private var is_valid: Bool = false
@State private var show_settings: Bool = false
-
+
var body: some View {
NavigationStack {
List {
@@ -22,15 +22,15 @@ struct ContentView: View {
LogView()
.modifier(TerminalPlatter())
} header: {
- Label("Logs", systemImage: "apple.terminal")
+ Label(String(localized: "Logs"), systemImage: "apple.terminal")
}
-
+
Section {
NavigationLink {
GestaltView()
} label: {
HStack {
- Text("MobileGestalt")
+ Text(String(localized: "MobileGestalt"))
if state.granting_mg {
Spacer()
ProgressView()
@@ -39,12 +39,12 @@ struct ContentView: View {
}
}
.disabled(state.mg_granted != true)
-
+
NavigationLink {
PosterView()
} label: {
HStack {
- Text("PosterBoard")
+ Text(String(localized: "PosterBoard"))
if state.granting_pb {
Spacer()
ProgressView()
@@ -53,12 +53,12 @@ struct ContentView: View {
}
}
.disabled(method == "cmg" || state.pb_granted != true)
-
+
NavigationLink {
SantanderView()
} label: {
HStack {
- Text("HouseArrest")
+ Text(String(localized: "HouseArrest"))
if state.granting_apps {
Spacer()
ProgressView()
@@ -68,14 +68,14 @@ struct ContentView: View {
}
.disabled(method == "cmg" || state.apps_granted != true)
} header: {
- Label("Tweaks", systemImage: "paintbrush")
+ Label(String(localized: "Tweaks"), systemImage: "paintbrush")
} footer: {
if method == "cmg" {
- Text("Only MobileGestalt is available when method is set to cmg.")
+ Text(String(localized: "Only MobileGestalt is available when method is set to cmg."))
}
}
}
- .navigationTitle("mond")
+ .navigationTitle(String(localized: "mond"))
.tint(Color("AccentColor"))
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
@@ -93,4 +93,4 @@ struct ContentView: View {
}
}
}
-}
+}
\ No newline at end of file
diff --git a/mond/views/app/LogView.swift b/mond/views/app/LogView.swift
index 3deaada..daeedf6 100644
--- a/mond/views/app/LogView.swift
+++ b/mond/views/app/LogView.swift
@@ -47,11 +47,10 @@ struct LogView: View {
Button {
UIPasteboard.general.string = log
} label: {
- Label("Copy Output", systemImage: "doc.on.doc")
+ Label(String(localized: "Copy Output"), systemImage: "doc.on.doc")
}
}
}
}
}
-}
-
+}
\ No newline at end of file
diff --git a/mond/views/app/SettingsView.swift b/mond/views/app/SettingsView.swift
index b0e1779..2def051 100644
--- a/mond/views/app/SettingsView.swift
+++ b/mond/views/app/SettingsView.swift
@@ -11,18 +11,18 @@ import PartyUI
struct SettingsView: View {
@Environment(\.dismiss) private var dismiss
@EnvironmentObject var state: AppState
-
+
@AppStorage("method") private var method: String = "bad_query"
@AppStorage("ka_on") private var ka_on = true
@AppStorage("token") private var token: String = ""
@AppStorage("dismiss_after_import") private var dismiss_after_import = false
-
+
@State private var show_confirm: Bool = false
-
+
var valid: Bool {
(sandbox_extension_consume(token) ?? -1) >= 0
}
-
+
var body: some View {
NavigationStack {
List {
@@ -44,20 +44,20 @@ struct SettingsView: View {
.frame(width: 45, height: 45)
.cornerRadius(12)
}
-
+
VStack(alignment: .leading) {
Text(Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String
?? Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String
- ?? "Unknown App")
+ ?? String(localized: "Unknown App"))
.font(.headline)
-
+
Text("\(Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String ?? "1.0")")
.font(.subheadline)
.foregroundStyle(.secondary)
}
-
+
Spacer()
-
+
Image(systemName: "chevron.right")
.fontWeight(.semibold)
.foregroundStyle(.tertiary)
@@ -66,31 +66,31 @@ struct SettingsView: View {
}
.foregroundColor(.primary)
}
-
+
Section {
- Picker("Method", selection: $method) {
+ Picker(String(localized: "Method"), selection: $method) {
Text("bad_query").tag("bad_query")
Text("cmg").tag("cmg")
}
.pickerStyle(.segmented)
-
+
Button {
grant_all(state: state)
} label: {
- Text("Run Exploit")
+ Text(String(localized: "Run Exploit"))
}
} header: {
- Label("Exploit", systemImage: "wrench.and.screwdriver")
+ Label(String(localized: "Exploit"), systemImage: "wrench.and.screwdriver")
} footer: {
- Text(method == "cmg" ? "**CMG:** Supports iOS 27.0 b1 - b4. Only MobileGestalt will work with this method. Only use this when bad_query isnt working for you." : "**bad_query:** Supports iOS 27.0 b1 - b4. By [forcequit](https://github.com/forcequitOS).")
+ Text(method == "cmg" ? String(localized: "Supports iOS 27.0 b1 - b4. Only MobileGestalt will work with this method. Only use this when bad_query isnt working for you.") : String(localized: "Supports iOS 27.0 b1 - b4. By forcequit."))
}
-
+
Section {
HStack {
- TextField("Sandbox Extension Token.", text: $token)
-
+ TextField(String(localized: "Sandbox Extension Token."), text: $token)
+
Spacer()
-
+
Button {
UIPasteboard.general.string = token
} label: {
@@ -98,41 +98,43 @@ struct SettingsView: View {
}
}
.contextMenu {
- Text("Class: \(token.split(separator: ";").first { $0.contains("com.apple") }.map(String.init) ?? "N/A")")
- Text("Path: \(token.split(separator: ";").last.map(String.init) ?? "N/A")")
-
+ let tokenClass = token.split(separator: ";").first { $0.contains("com.apple") }.map(String.init) ?? "N/A"
+ let tokenPath = token.split(separator: ";").last.map(String.init) ?? "N/A"
+ Text("Class: \(tokenClass)")
+ Text("Path: \(tokenPath)")
+
Button {
UIPasteboard.general.string = token
} label: {
- Label("Copy token", systemImage: "doc.on.doc")
+ Label(String(localized: "Copy token"), systemImage: "doc.on.doc")
}
}
.lineLimit(1)
-
+
Button {
- token = sandbox_extension_issue_file(path: TweakPaths.gestalt_dir) ?? "Failed to get token."
+ token = sandbox_extension_issue_file(path: TweakPaths.gestalt_dir) ?? String(localized: "Failed to get token.")
} label: {
- Text("Generate Token")
+ Text(String(localized: "Generate Token"))
}
.disabled(!state.exploit_succeeded)
} header: {
- Label("Token", systemImage: "key")
+ Label(String(localized: "Token"), systemImage: "key")
} footer: {
- if !token.isEmpty && token != "Failed to get token." {
+ if !token.isEmpty && token != String(localized: "Failed to get token.") {
if valid {
- Text("Your sandbox token is valid.")
+ Text(String(localized: "Your sandbox token is valid."))
} else {
- Text("Your sandbox token is invalid.")
+ Text(String(localized: "Your sandbox token is invalid."))
}
}
-
+
if !state.exploit_succeeded {
- Text("Disabled because the exploit failed. Is your iOS version supported?")
+ Text(String(localized: "Disabled because the exploit failed. Is your iOS version supported?"))
}
}
-
+
Section {
- PlainToggle(text: "Keep Alive", infoType: .info, infoMessage: "Keeps the app running in the background after you close it, allowing it to remain active.", isOn: $ka_on)
+ PlainToggle(text: String(localized: "Keep Alive"), infoType: .info, infoMessage: String(localized: "Keep Alive allows the app to keep running in the background."), isOn: $ka_on)
.onChange(of: ka_on) { _, enabled in
if enabled {
keep_alive()
@@ -141,55 +143,56 @@ struct SettingsView: View {
}
}
- PlainToggle(text: "Dismiss after importing", infoType: .info, infoMessage: "When enabled, the Tendies explorer will close automatically after importing a .tendies file into PosterBoard.", isOn: $dismiss_after_import)
+ PlainToggle(text: String(localized: "Dismiss after importing"), infoType: .info, infoMessage: String(localized: "When enabled, the Tendies explorer will close automatically after importing a .tendies file into PosterBoard."), isOn: $dismiss_after_import)
} header: {
- Label("Settings", systemImage: "gear")
+ Label(String(localized: "Settings"), systemImage: "gear")
}
-
+
Section {
Button {
show_confirm = true
} label: {
- Text("Respring")
+ Text(String(localized: "Respring"))
}
} header: {
- Label("Tools", systemImage: "wrench.and.screwdriver")
+ Label(String(localized: "Tools"), systemImage: "wrench.and.screwdriver")
} footer: {
- Text("Respring method by [neon](https://github.com/neonmodder123), swift implementation by [skadz](https://github.com/skadz108).")
+ Text(String(localized: "Respring method by neon, swift implementation by skadz."))
}
-
+
Section {
- CreditsRow(name: "roooot", role: "Main developer", profile: URL(string: "https://github.com/rooootdev")!)
- CreditsRow(name: "forcequit", role: "The bad_query exploit", profile: URL(string: "https://github.com/forcequitOS")!)
- CreditsRow(name: "johnny", role: "His work on the MCM bug class", profile: URL(string: "https://github.com/0xjohnnydev")!)
- CreditsRow(name: "jailbreak.party", role: "PartyUI, GestaltView", profile: URL(string: "https://github.com/jailbreakdotparty")!)
- CreditsRow(name: "SerStars", role: "Tendies repository", profile: URL(string: "https://github.com/SerStars")!)
+ CreditsRow(name: "roooot", role: String(localized: "Main developer"), profile: URL(string: "https://github.com/rooootdev")!)
+ CreditsRow(name: "forcequit", role: String(localized: "The bad_query exploit"), profile: URL(string: "https://github.com/forcequitOS")!)
+ CreditsRow(name: "johnny", role: String(localized: "His work on the MCM bug class"), profile: URL(string: "https://github.com/0xjohnnydev")!)
+ CreditsRow(name: "jailbreak.party", role: String(localized: "PartyUI, GestaltView"), profile: URL(string: "https://github.com/jailbreakdotparty")!)
+ CreditsRow(name: "SerStars", role: String(localized: "Tendies repository"), profile: URL(string: "https://github.com/SerStars")!)
+ CreditsRow(name: "Erico", role: String(localized: "Simplified Chinese Translation"), profile: URL(string: "https://github.com/EricoEC")!)
} header: {
- Label("Credits", systemImage: "person.3.fill")
+ Label(String(localized: "Credits"), systemImage: "person.3.fill")
}
}
- .navigationTitle("Settings")
+ .navigationTitle(String(localized: "Settings"))
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
HStack {
Button {
dismiss()
} label: {
- Text("Done")
+ Text(String(localized: "Done"))
}
}
}
}
- .alert("Are you sure?", isPresented: $show_confirm) {
- Button("Cancel") {
+ .alert(String(localized: "Are you sure?"), isPresented: $show_confirm) {
+ Button(String(localized: "Cancel")) {
show_confirm = false
}
-
- Button("Confirm") {
+
+ Button(String(localized: "Confirm")) {
state.respring()
}
} message: {
- Text("Confirm that you want to respring.")
+ Text(String(localized: "Confirm that you want to respring."))
}
}
}
diff --git a/mond/views/tweaks/GestaltView.swift b/mond/views/tweaks/GestaltView.swift
index d92904c..929329b 100644
--- a/mond/views/tweaks/GestaltView.swift
+++ b/mond/views/tweaks/GestaltView.swift
@@ -23,9 +23,11 @@ struct TweakToggle: View {
var body: some View {
if let tweak = tweak(title) {
PlainToggle(
- text: tweak.title,
+ text: String(localized: String.LocalizationValue(tweak.title)),
infoType: tweak.info_t?.party_info_type ?? .none,
- infoMessage: tweak.info_msg ?? "",
+ infoMessage: tweak.info_msg.map {
+ String(localized: String.LocalizationValue($0))
+ } ?? "",
minSupportedVersion: tweak.minv ?? 0.0,
isOn: mg_tweak_binding(tweak)
)
@@ -60,16 +62,16 @@ struct GestaltView: View {
if !is_valid || is_empty {
Section {
if is_empty {
- PlainAlert(title: "Do not reboot!", icon: "exclamationmark.triangle.fill", text: "Your MobileGestalt.plist seems to be empty.", color: Color.yellow)
+ PlainAlert(title: String(localized: "Do not reboot!"), icon: "exclamationmark.triangle.fill", text: String(localized: "Your MobileGestalt.plist seems to be empty."), color: Color.yellow)
}
if !is_valid {
- PlainAlert(title: "Do not reboot!", icon: "exclamationmark.triangle.fill", text: "Your MobileGestalt.plist seems to be invalid.", color: Color.yellow)
+ PlainAlert(title: String(localized: "Do not reboot!"), icon: "exclamationmark.triangle.fill", text: String(localized: "Your MobileGestalt.plist seems to be invalid."), color: Color.yellow)
}
} header: {
- Label("Warning", systemImage: "exclamationmark.triangle")
+ Label(String(localized: "Warning"), systemImage: "exclamationmark.triangle")
} footer: {
- Text("Rebooting now might cause a bootloop. Try pressing 'Revert Tweaks'. If the warnings dont go away after that, you're fucked.")
+ Text(String(localized: "Rebooting now might cause a bootloop. Try pressing 'Revert Tweaks'. If the warnings dont go away after that, you're fucked."))
}
}
@@ -78,22 +80,22 @@ struct GestaltView: View {
mg_apply_ui_state(selected_st, enable_device_name, mg_device_name, product_type)
mg_apply()
} label: {
- Text("Apply Tweaks")
+ Text(String(localized: "Apply Tweaks"))
}
Button {
mg_revert()
} label: {
- Text("Revert Tweaks")
+ Text(String(localized: "Revert Tweaks"))
}
-
+
Button {
state.respring()
} label: {
- Text("Respring")
+ Text(String(localized: "Respring"))
}
} footer: {
- Text("**WARNING:** These tweaks have the capability to break features on your device or softbrick it if misused!")
+ Text(String(localized: "These tweaks have the capability to break features on your device or softbrick it if misused."))
}
Section {
@@ -101,7 +103,7 @@ struct GestaltView: View {
Text("Original (\(og_st))").tag("og")
if is_device_good() {
- Text("Disable Dynamic Island").tag("no_dynamic_island")
+ Text(String(localized: "Disable Dynamic Island")).tag("no_dynamic_island")
}
Text("iPhone 14 Pro").tag("14p")
@@ -118,22 +120,22 @@ struct GestaltView: View {
}
if has_home_button() {
- Text("iPhone X Gestures").tag("x")
+ Text(String(localized: "iPhone X Gestures")).tag("x")
}
} label: {
HStack {
- Text("Subtype")
+ Text(String(localized: "Subtype"))
Spacer()
}
}
- Toggle("Custom Device Name", isOn: $enable_device_name)
+ Toggle(String(localized: "Custom Device Name"), isOn: $enable_device_name)
if enable_device_name {
- TextField("Device Name", text: $mg_device_name)
+ TextField(String(localized: "Device Name"), text: $mg_device_name)
}
} header: {
- Label("Device Artwork", systemImage: "paintbrush.pointed")
+ Label(String(localized: "Device Artwork"), systemImage: "paintbrush.pointed")
}
Section {
@@ -146,7 +148,7 @@ struct GestaltView: View {
TweakToggle(title: "Enable Liquid Glass Low-Performance Mode")
TweakToggle(title: "Disable Liquid Glass Low-Performance Mode")
} header: {
- Label("Software-Oriented Features", systemImage: "gearshape")
+ Label(String(localized: "Software-Oriented Features"), systemImage: "gearshape")
}
Section {
@@ -158,7 +160,7 @@ struct GestaltView: View {
}
TweakToggle(title: "Pulse Width Modulation")
} header: {
- Label("Hardware-Oriented Features", systemImage: "iphone")
+ Label(String(localized: "Hardware-Oriented Features"), systemImage: "iphone")
}
Section {
@@ -167,8 +169,8 @@ struct GestaltView: View {
TweakToggle(title: "Apple Intelligence")
HStack(spacing: 10) {
- Picker("Spoofing", selection: $product_type) {
- Text("Default").tag(machine_name())
+ Picker(String(localized: "Spoofing"), selection: $product_type) {
+ Text(String(localized: "Default")).tag(machine_name())
if UIDevice.current.userInterfaceIdiom == .pad {
if doubleSystemVersion() >= 17.4 {
Text("iPad Pro 11-inch (M4)").tag("iPad16,3")
@@ -189,15 +191,15 @@ struct GestaltView: View {
Text("iPhone 17").tag("iPhone18,3")
Text("iPhone 17 Pro").tag("iPhone18,1")
Text("iPhone 17 Pro Max").tag("iPhone18,2")
- Text("iPhone Air").tag("iPhone18,4")
+ Text("iPhone 17 Air").tag("iPhone18,4")
}
}
}
Button {
Alertinator.shared.alert(
- title: "Device Spoofing Info",
- body: "Only spoof your device model if you want to download Apple Intelligence. This may break Face ID. If you decide to unspoof and want to keep Apple Intelligence, do NOT re-enter the Apple Intelligence & Siri menu in Settings."
+ title: String(localized: "Device Spoofing Info"),
+ body: String(localized: "Only spoof your device model if you want to download Apple Intelligence. This may break Face ID. If you decide to unspoof and want to keep Apple Intelligence, do NOT re-enter the Apple Intelligence & Siri menu in Settings.")
)
} label: {
Image(systemName: "info.circle")
@@ -206,7 +208,7 @@ struct GestaltView: View {
.buttonStyle(.plain)
}
} header: {
- Label("Eligibility", systemImage: "checklist")
+ Label(String(localized: "Eligibility"), systemImage: "checklist")
}
Section {
@@ -222,7 +224,7 @@ struct GestaltView: View {
TweakToggle(title: "Enable iPadOS Mode")
.disabled(cache_extra?["+3Uf0Pm5F8Xy7Onyvko0vA"] as? String != "iPhone")
} header: {
- Label("iPadOS Features", systemImage: "ipad")
+ Label(String(localized: "iPadOS Features"), systemImage: "ipad")
}
Section {
@@ -230,10 +232,10 @@ struct GestaltView: View {
TweakToggle(title: "Internal Features")
TweakToggle(title: "Apple Internal Install")
} header: {
- Label("Internal", systemImage: "ant")
+ Label(String(localized: "Internal"), systemImage: "ant")
}
}
- .navigationTitle("mond")
+ .navigationTitle(String(localized: "mond"))
.tint(Color("AccentColor"))
.task {
mg_load()
diff --git a/mond/views/tweaks/SantanderView.swift b/mond/views/tweaks/SantanderView.swift
index 6070335..0d6e396 100644
--- a/mond/views/tweaks/SantanderView.swift
+++ b/mond/views/tweaks/SantanderView.swift
@@ -140,25 +140,25 @@ struct SantanderDirectoryView: View {
NavigationLink {
SantanderDirectoryView(path: root_path)
} label: {
- Label("Go to Root", systemImage: "externaldrive")
+ Label(String(localized: "Go to Root"), systemImage: "externaldrive")
}
NavigationLink {
SantanderDirectoryView(path: home_path)
} label: {
- Label("Go to Home", systemImage: "house")
+ Label(String(localized: "Go to Home"), systemImage: "house")
}
Divider()
- Toggle("Display hidden files", isOn: $display_hidden_files)
+ Toggle(String(localized: "Display hidden files"), isOn: $display_hidden_files)
Divider()
Button {
sort_ascending = true
} label: {
- Label("Sort A-Z", systemImage: "textformat")
+ Label(String(localized: "Sort A-Z"), systemImage: "textformat")
}
Button {
sort_ascending = false
} label: {
- Label("Sort Z-A", systemImage: "textformat")
+ Label(String(localized: "Sort Z-A"), systemImage: "textformat")
}
} label: {
Image(systemName: "ellipsis.circle")
@@ -194,11 +194,11 @@ struct SantanderDirectoryView: View {
}
private var empty_state_message: String {
- if !search_text.isEmpty { return "No matching items." }
+ if !search_text.isEmpty { return String(localized: "No matching items.") }
if !display_hidden_files && !items.isEmpty {
- return "No visible items. Enable \"Display hidden files\" to show dotfiles."
+ return String(localized: "No visible items. Enable \"Display hidden files\" to show dotfiles.")
}
- return empty_message ?? "Directory is empty."
+ return empty_message ?? String(localized: "Directory is empty.")
}
private func load() {
@@ -227,7 +227,7 @@ struct SantanderDirectoryView: View {
return SantanderPath(url: url, display_name: bundle_id(for: url), is_directory: true)
}
if items.isEmpty {
- return SantanderDirectoryListing(items: [], empty_state_message: "No app containers found.")
+ return SantanderDirectoryListing(items: [], empty_state_message: String(localized: "No app containers found."))
}
return SantanderDirectoryListing(items: items, empty_state_message: nil)
}
@@ -242,12 +242,12 @@ struct SantanderDirectoryView: View {
return listing
}
- return SantanderDirectoryListing(items: [], empty_state_message: "Cannot list directory (missing permissions).")
+ return SantanderDirectoryListing(items: [], empty_state_message: String(localized: "Cannot list directory (missing permissions)."))
}
private static func try_direct_listing(for path: SantanderPath) -> SantanderDirectoryListing? {
guard path.is_directory else {
- return SantanderDirectoryListing(items: [], empty_state_message: "Not a directory.")
+ return SantanderDirectoryListing(items: [], empty_state_message: String(localized: "Not a directory."))
}
let fm = FileManager.default
@@ -263,7 +263,7 @@ struct SantanderDirectoryView: View {
do {
let urls = try fm.contentsOfDirectory(at: path.url, includingPropertiesForKeys: nil)
let items = urls.map(SantanderPath.init(url:))
- return SantanderDirectoryListing(items: items, empty_state_message: items.isEmpty ? "Directory is empty." : nil)
+ return SantanderDirectoryListing(items: items, empty_state_message: items.isEmpty ? String(localized: "Directory is empty.") : nil)
} catch {
return nil
}
@@ -319,10 +319,10 @@ struct SantanderFileView: View {
.toolbar {
ToolbarItemGroup(placement: .topBarTrailing) {
if is_editing {
- Button("Cancel") {
+ Button(String(localized: "Cancel")) {
is_editing = false
}
- Button("Save") {
+ Button(String(localized: "Save")) {
save()
}
} else {
@@ -347,7 +347,7 @@ struct SantanderFileView: View {
|| Self.plist_editor_content(from: data) != nil
}
}
- .alert("Save Failed", isPresented: Binding(
+ .alert(String(localized: "Save Failed"), isPresented: Binding(
get: { save_error != nil },
set: { if !$0 { save_error = nil } }
)) {
@@ -386,7 +386,7 @@ struct SantanderFileView: View {
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(Color.black)
} else {
- ContentUnavailableView(failure_text("Failed to render image"), systemImage: "photo")
+ ContentUnavailableView(failure_text(String(localized: "Failed to render image")), systemImage: "photo")
}
}
}
@@ -424,7 +424,7 @@ struct SantanderFileView: View {
private func save() {
guard Self.grant_file_write(path.path) else {
- save_error = "Missing write permission."
+ save_error = String(localized: "Missing write permission.")
return
}
if let format = original_plist_format {
@@ -432,7 +432,7 @@ struct SantanderFileView: View {
return
}
guard let data = edit_text.data(using: original_encoding) else {
- save_error = "Could not encode text."
+ save_error = String(localized: "Could not encode text.")
return
}
do {
@@ -445,7 +445,7 @@ struct SantanderFileView: View {
private func save_plist(format: PropertyListSerialization.PropertyListFormat) {
guard let edited_data = edit_text.data(using: .utf8) else {
- save_error = "Could not encode text."
+ save_error = String(localized: "Could not encode text.")
return
}
let object: Any
@@ -454,7 +454,7 @@ struct SantanderFileView: View {
} else if let plist = try? PropertyListSerialization.propertyList(from: edited_data, options: [], format: nil) {
object = plist
} else {
- save_error = "Edited text is not a valid plist/JSON document."
+ save_error = String(localized: "Edited text is not a valid plist/JSON document.")
return
}
do {
@@ -763,4 +763,4 @@ private struct MediaPlayerView: View {
player.pause()
}
}
-}
+}
\ No newline at end of file
diff --git a/mond/views/tweaks/posterboard/PosterView.swift b/mond/views/tweaks/posterboard/PosterView.swift
index 7a95401..9b6587b 100644
--- a/mond/views/tweaks/posterboard/PosterView.swift
+++ b/mond/views/tweaks/posterboard/PosterView.swift
@@ -13,7 +13,7 @@ import PartyUI
struct PosterView: View {
@Environment(\.dismiss) private var dismiss
@EnvironmentObject var state: AppState
-
+
@State private var show_settings: Bool = false
@State private var show_importer: Bool = false
@State private var show_explorer: Bool = false
@@ -30,8 +30,8 @@ struct PosterView: View {
if busy {
ProgressView()
}
-
- Text("Apply")
+
+ Text(String(localized: "Apply"))
}
}
.disabled(state.poster_files.isEmpty || busy)
@@ -40,28 +40,28 @@ struct PosterView: View {
Button {
reset()
} label: {
- Text("Reset")
+ Text(String(localized: "Reset"))
}
.disabled(busy)
}
}
-
+
Section {
Button {
show_importer = true
} label: {
- Text("Import Tendies")
+ Text(String(localized: "Import Tendies"))
}
.disabled(busy)
-
+
Button {
show_explorer = true
} label: {
- Text("Explore Tendies")
+ Text(String(localized: "Explore Tendies"))
}
.disabled(busy)
} footer: {
- Text("Import up to 5 wallpaper packs.\n**NOTE:** Importing more than 5 tendies at once is not a good idea and importing more than 15 is a TERRIBLE idea. Dont say I didnt warn you.")
+ Text(String(localized: "Import up to 5 wallpaper packs.\n**NOTE:** Importing more than 5 tendies at once is not a good idea and importing more than 15 is a TERRIBLE idea. Dont say I didnt warn you."))
}
if !state.poster_files.isEmpty {
@@ -73,11 +73,11 @@ struct PosterView: View {
state.remove_poster_files(at: offsets)
}
} header: {
- Label("Imported", systemImage: "document.on.document")
+ Label(String(localized: "Imported"), systemImage: "document.on.document")
}
}
}
- .navigationTitle("PosterBoard")
+ .navigationTitle(String(localized: "PosterBoard"))
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
HStack {
@@ -113,12 +113,12 @@ struct PosterView: View {
print("(pb) applied \(count) descriptor(s).")
busy = false
Alertinator.shared.alert(
- title: "Successfully applied PosterBoard!",
- body: "For changes to take effect:\n1. Click 'Open' to launch Posterboard\n2. Close it from the App Switcher",
- actionLabel: "Open",
+ title: String(localized: "Successfully applied PosterBoard!"),
+ body: String(localized: "For changes to take effect:\n1. Click 'Open' to launch Posterboard\n2. Close it from the App Switcher"),
+ actionLabel: String(localized: "Open"),
action: {
// state.respring()
-
+
let cls = objc_getClass("LSApplicationWorkspace") as? NSObject
let ws = cls?.perform(Selector(("defaultWorkspace"))).takeUnretainedValue()
_ = ws?.perform(Selector(("openApplicationWithBundleID:")), with: "com.apple.PosterBoard")
@@ -128,8 +128,8 @@ struct PosterView: View {
print("(pb) failed: \(error.localizedDescription)\n")
busy = false
Alertinator.shared.alert(
- title: "Failed to apply PosterBoard!",
- body: "Restart the app and try again. Check logs for more detailed information."
+ title: String(localized: "Failed to apply PosterBoard!"),
+ body: String(localized: "Restart the app and try again. Check logs for more detailed information.")
)
}
}
@@ -141,9 +141,9 @@ struct PosterView: View {
print("(pb) reset done.")
busy = false
Alertinator.shared.alert(
- title: "Successfully reverted PosterBoard!",
- body: "Respring your device for changes to take effect.",
- actionLabel: "Respring",
+ title: String(localized: "Successfully reverted PosterBoard!"),
+ body: String(localized: "Respring your device for changes to take effect."),
+ actionLabel: String(localized: "Respring"),
action: {
state.respring()
}
@@ -152,8 +152,8 @@ struct PosterView: View {
print("(pb) failed: \(error.localizedDescription)")
busy = false
Alertinator.shared.alert(
- title: "Failed to revert PosterBoard!",
- body: "Restart the app and try again. Check logs for more detailed information."
+ title: String(localized: "Failed to revert PosterBoard!"),
+ body: String(localized: "Restart the app and try again. Check logs for more detailed information.")
)
}
}
@@ -167,4 +167,4 @@ struct SafariView: UIViewControllerRepresentable {
}
func updateUIViewController(_ controller: SFSafariViewController, context: Context) {}
-}
+}
\ No newline at end of file
diff --git a/mond/views/tweaks/posterboard/TendiesView.swift b/mond/views/tweaks/posterboard/TendiesView.swift
index 0a6be6e..9540e8a 100644
--- a/mond/views/tweaks/posterboard/TendiesView.swift
+++ b/mond/views/tweaks/posterboard/TendiesView.swift
@@ -19,14 +19,14 @@ struct TendiesView: View {
NavigationStack {
Group {
if vm.loading && vm.wallpapers.isEmpty {
- ProgressView("Loading wallpapers…")
+ ProgressView(String(localized: "Loading wallpapers…"))
} else if let error = vm.error_msg, vm.wallpapers.isEmpty {
ContentUnavailableView {
- Label("Couldn't Load tendies", systemImage: "wifi.exclamationmark")
+ Label(String(localized: "Couldn't Load tendies"), systemImage: "wifi.exclamationmark")
} description: {
Text(error)
} actions: {
- Button("Try Again") {
+ Button(String(localized: "Try Again")) {
Task {
await vm.retry()
}
@@ -36,10 +36,10 @@ struct TendiesView: View {
tendies_list
}
}
- .navigationTitle("Tendies")
+ .navigationTitle(String(localized: "Tendies"))
.searchable(
text: $vm.query,
- prompt: "Search wallpapers"
+ prompt: String(localized: "Search wallpapers")
)
.toolbar {
ToolbarItem(placement: .topBarTrailing) {
@@ -57,7 +57,7 @@ struct TendiesView: View {
await vm.load()
}
}
- .alert("Import Failed", isPresented: Binding(
+ .alert(String(localized: "Import Failed"), isPresented: Binding(
get: { import_error != nil },
set: { if !$0 { import_error = nil } }
)) {
@@ -99,7 +99,7 @@ struct TendiesView: View {
.frame(height: 300)
.background(.quaternary)
.clipShape(RoundedRectangle(cornerRadius: 12))
-
+
case .success(let image):
image
.resizable()
@@ -107,7 +107,7 @@ struct TendiesView: View {
.frame(maxWidth: .infinity)
.background(.quaternary)
.clipShape(RoundedRectangle(cornerRadius: 12))
-
+
case .failure:
Image(systemName: "photo")
.font(.title2)
@@ -116,19 +116,19 @@ struct TendiesView: View {
.frame(height: 300)
.background(.quaternary)
.clipShape(RoundedRectangle(cornerRadius: 12))
-
+
@unknown default:
EmptyView()
}
}
-
+
HStack {
Text(wallpaper.name)
.lineLimit(1)
.multilineTextAlignment(.leading)
-
+
Spacer(minLength: 0)
-
+
Image(systemName: "chevron.right")
.font(.footnote)
.foregroundStyle(.secondary)
@@ -149,7 +149,7 @@ struct TendiesView: View {
await add_to_imported(wallpaper)
}
} label: {
- Label("Add to Imported", systemImage: "arrow.down.circle")
+ Label(String(localized: "Add to Imported"), systemImage: "arrow.down.circle")
}
}
}
@@ -241,7 +241,7 @@ struct TendiesDetail: View {
.clipShape(RoundedRectangle(cornerRadius: 20))
case .failure:
- ContentUnavailableView("Preview Unavailable", systemImage: "photo", description: Text("The wallpaper preview couldn't be loaded."))
+ ContentUnavailableView(String(localized: "Preview Unavailable"), systemImage: "photo", description: Text(String(localized: "The wallpaper preview couldn't be loaded.")))
@unknown default:
EmptyView()
@@ -291,10 +291,10 @@ struct TendiesDetail: View {
if importing {
HStack {
ProgressView()
- Text("Downloading...")
+ Text(String(localized: "Downloading..."))
}
} else {
- Text("Add to Imported")
+ Text(String(localized: "Add to Imported"))
}
}
.disabled(importing)
@@ -302,7 +302,7 @@ struct TendiesDetail: View {
}
}
.navigationTitle(wallpaper.name)
- .alert("Download Failed", isPresented: Binding(
+ .alert(String(localized: "Download Failed"), isPresented: Binding(
get: { import_error != nil },
set: { if !$0 { import_error = nil } }
)) {
@@ -329,4 +329,4 @@ struct TendiesDetail: View {
import_error = error.localizedDescription
}
}
-}
+}
\ No newline at end of file
diff --git a/mond/zh-Hans.xcstrings b/mond/zh-Hans.xcstrings
new file mode 100644
index 0000000..0fa0d72
--- /dev/null
+++ b/mond/zh-Hans.xcstrings
@@ -0,0 +1,2068 @@
+{
+ "sourceLanguage" : "en",
+ "strings" : {
+ "%@" : {
+
+ },
+ "Action Button Settings" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "操作按钮设置"
+ }
+ }
+ }
+ },
+ "Add to Imported" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "添加到已导入"
+ }
+ }
+ }
+ },
+ "Adds the chime sound when the device powers on or shuts down." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "设备开机或关机时播放提示音。"
+ }
+ }
+ }
+ },
+ "Allow iPad Apps" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "允许 iPad 应用"
+ }
+ }
+ }
+ },
+ "Allows iPad apps to be installed on iPhone." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "允许在 iPhone 上安装 iPad 应用。"
+ }
+ }
+ }
+ },
+ "Always-On Display" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "全天候显示屏"
+ }
+ }
+ }
+ },
+ "An alternate way to enable the Dynamic Island, as used by Nugget." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "这是启用灵动岛的另一种方式,Nugget 使用的就是此方式。"
+ }
+ }
+ }
+ },
+ "AOD Vibrancy" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "AOD 生动效果"
+ }
+ }
+ }
+ },
+ "Apple Intelligence" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Apple Intelligence"
+ }
+ }
+ }
+ },
+ "Apple Intelligence Spoof" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "伪装 Apple Intelligence"
+ }
+ }
+ }
+ },
+ "Apple Internal Install" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Apple 内部安装"
+ }
+ }
+ }
+ },
+ "Apple Pencil Settings" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Apple Pencil 设置"
+ }
+ }
+ }
+ },
+ "Apply" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "应用"
+ }
+ }
+ }
+ },
+ "Apply Tweaks" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "应用修改"
+ }
+ }
+ }
+ },
+ "Are you sure?" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "确定吗?"
+ }
+ }
+ }
+ },
+ "bad_query" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "bad_query"
+ }
+ }
+ }
+ },
+ "Boot & Shutdown Chime" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "启动和关机提示音"
+ }
+ }
+ }
+ },
+ "Can increase screen burn-in risk on devices that don't officially support it." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "在未获官方支持的设备上启用可能增加屏幕烧屏风险。"
+ }
+ }
+ }
+ },
+ "Cancel" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "取消"
+ }
+ }
+ }
+ },
+ "Cannot list directory (missing permissions)." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "无法列出目录(缺少权限)。"
+ }
+ }
+ }
+ },
+ "Charge Limit Menu" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "充电限制菜单"
+ }
+ }
+ }
+ },
+ "Check logs for error information." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "请查看日志中的错误信息。"
+ }
+ }
+ }
+ },
+ "Class: %@" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "类:%@"
+ }
+ }
+ }
+ },
+ "cmg" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "cmg"
+ }
+ }
+ }
+ },
+ "Collision SOS" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "碰撞 SOS"
+ }
+ }
+ }
+ },
+ "Confirm" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "确认"
+ }
+ }
+ }
+ },
+ "Confirm that you want to respring." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "确认注销设备。"
+ }
+ }
+ }
+ },
+ "Copy Output" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "复制输出"
+ }
+ }
+ }
+ },
+ "Copy token" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "复制令牌"
+ }
+ }
+ }
+ },
+ "Could not encode text." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "无法编码文本。"
+ }
+ }
+ }
+ },
+ "Couldn't Load tendies" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "无法加载 tendies"
+ }
+ }
+ }
+ },
+ "Credits" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "致谢"
+ }
+ }
+ }
+ },
+ "Custom Device Name" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "自定义设备名称"
+ }
+ }
+ }
+ },
+ "Default" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "默认"
+ }
+ }
+ }
+ },
+ "Device Artwork" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "设备伪装"
+ }
+ }
+ }
+ },
+ "Device Name" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "设备名称"
+ }
+ }
+ }
+ },
+ "Device Spoofing Info" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "设备伪装说明"
+ }
+ }
+ }
+ },
+ "Directory is empty." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "目录为空。"
+ }
+ }
+ }
+ },
+ "Disable Dynamic Island" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "禁用灵动岛"
+ }
+ }
+ }
+ },
+ "Disable Liquid Glass Low-Performance Mode" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "禁用 Liquid Glass 低性能模式"
+ }
+ }
+ }
+ },
+ "Disable Region Restrictions" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "禁用区域限制"
+ }
+ }
+ }
+ },
+ "Disable Wallpaper Parallax" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "禁用壁纸视差效果"
+ }
+ }
+ }
+ },
+ "Disabled because the exploit failed. Is your iOS version supported?" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "因漏洞利用失败而禁用。你的 iOS 版本是否受支持?"
+ }
+ }
+ }
+ },
+ "Dismiss after importing" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "导入后自动关闭"
+ }
+ }
+ }
+ },
+ "Display hidden files" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "显示隐藏文件"
+ }
+ }
+ }
+ },
+ "Displays internal files in the Storage settings; can be dangerous on some iPads." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "在存储设置中显示内部文件;在部分 iPad 上可能有风险。"
+ }
+ }
+ }
+ },
+ "Do not reboot!" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "请勿重启!"
+ }
+ }
+ }
+ },
+ "Don't use this at the same time as the option above." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "请勿与上方选项同时启用。"
+ }
+ }
+ }
+ },
+ "Done" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "完成"
+ }
+ }
+ }
+ },
+ "Download Failed" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "下载失败"
+ }
+ }
+ }
+ },
+ "Downloading..." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "下载中..."
+ }
+ }
+ }
+ },
+ "Edited text is not a valid plist/JSON document." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "编辑的文本不是有效的 plist/JSON 文档。"
+ }
+ }
+ }
+ },
+ "Eligibility" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "资格"
+ }
+ }
+ }
+ },
+ "Enable Dynamic Island Capability" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "启用灵动岛能力"
+ }
+ }
+ }
+ },
+ "Enable iPadOS Mode" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "启用 iPadOS 模式"
+ }
+ }
+ }
+ },
+ "Enable Liquid Glass Low-Performance Mode" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "启用 Liquid Glass 低性能模式"
+ }
+ }
+ }
+ },
+ "Experimental and high risk; This is a very dangerous tweak to use! If you use an alphanumeric passcode, DO NOT USE THIS TWEAK AT ALL! Please do not turn off \"Show Dock In Stage Manager\" or your device will BOOTLOOP when rotating to landscape! Some users have also reported that enabling the iPadOS UI and then tapping Stage Manager can cause the device to enter Recovery Mode, even when the UI itself appears unchanged. The Settings search bar may move to the top before this happens. With these three things in mind, you may experience general instability, or other major issues such as app data randomly disappearing. But I guess some funny multitasking features that still make the device relatively unusable are cool? Whatever dude, I'm not here to tell you how to use your own device." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "实验性高风险修改,使用时非常危险!如果你使用字母数字混合密码,请绝对不要启用此项!请勿关闭“在台前调度中显示程序坞”,否则设备横屏时会陷入开机循环。部分用户报告,启用 iPadOS 界面后再点按台前调度,即使界面看起来没有变化,设备也可能进入恢复模式;此前设置中的搜索栏可能会移到顶部。你可能遇到整体不稳定、应用数据随机消失等严重问题。请自行承担风险。"
+ }
+ }
+ }
+ },
+ "Exploit" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "漏洞利用"
+ }
+ }
+ }
+ },
+ "Explore Tendies" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "浏览 Tendies"
+ }
+ }
+ }
+ },
+ "Exposes the Camera Control settings and its related capabilities." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "显示相机控制设置及其相关功能。"
+ }
+ }
+ }
+ },
+ "Failed to apply MobileGestalt!" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "应用 MobileGestalt 失败!"
+ }
+ }
+ }
+ },
+ "Failed to apply PosterBoard!" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "应用 PosterBoard 失败!"
+ }
+ }
+ }
+ },
+ "Failed to get token." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "获取令牌失败。"
+ }
+ }
+ }
+ },
+ "Failed to load current MobileGestalt!" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "加载当前 MobileGestalt 失败!"
+ }
+ }
+ }
+ },
+ "Failed to render image" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "图片渲染失败"
+ }
+ }
+ }
+ },
+ "Failed to revert MobileGestalt!" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "还原 MobileGestalt 失败!"
+ }
+ }
+ }
+ },
+ "Failed to revert PosterBoard!" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "恢复 PosterBoard 失败!"
+ }
+ }
+ }
+ },
+ "Flags the device as an Apple Security Research Device." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "将设备标记为 Apple 安全研究设备。"
+ }
+ }
+ }
+ },
+ "Flags the device as capable of Stage Manager." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "将设备标记为支持台前调度。"
+ }
+ }
+ }
+ },
+ "For changes to take effect:\n1. Click 'Open' to launch Posterboard\n2. Close it from the App Switcher" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "要让更改生效:\n1. 点击\"打开\"启动 PosterBoard\n2. 从应用切换器中关闭它"
+ }
+ }
+ }
+ },
+ "Generate Token" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "生成令牌"
+ }
+ }
+ }
+ },
+ "Go to Home" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "前往主目录"
+ }
+ }
+ }
+ },
+ "Go to Root" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "前往根目录"
+ }
+ }
+ }
+ },
+ "Hardware-Oriented Features" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "硬件相关功能"
+ }
+ }
+ }
+ },
+ "His work on the MCM bug class" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "他在 MCM bug 类上的工作"
+ }
+ }
+ }
+ },
+ "HouseArrest" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "HouseArrest"
+ }
+ }
+ }
+ },
+ "How to use this tweak:\n1. Spoof to the model next to the first one supported by Apple Intelligence.\n2. Spoof back to your model.\n3. Spoof to your final model and you should see the Apple Intelligence icon in Settings.\n4. Connect iPhone to power and leave the Settings > Storage tab open for ~1 hour.\n\nNOTE: Do not spoof back." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "使用方法:\n1. 伪装为 Apple Intelligence 首个受支持机型相邻的型号。\n2. 再伪装回你的原始机型。\n3. 最后伪装为目标机型,此时应能在“设置”中看到 Apple Intelligence 图标。\n4. 将 iPhone 接通电源,并保持“设置 > 存储”页面打开约 1 小时。\n\n注意:完成后不要再伪装回原机型。"
+ }
+ }
+ }
+ },
+ "Import Failed" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "导入失败"
+ }
+ }
+ }
+ },
+ "Import Tendies" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "导入 Tendies"
+ }
+ }
+ }
+ },
+ "Import up to 5 wallpaper packs.\n**NOTE:** Importing more than 5 tendies at once is not a good idea and importing more than 15 is a TERRIBLE idea. Dont say I didnt warn you." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "最多导入 5 个壁纸包。\n**注意:** 一次导入超过 5 个 tendies 并不是个好主意,超过 15 个更是糟糕透顶。别说我没警告过你。"
+ }
+ }
+ }
+ },
+ "Imported" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "已导入"
+ }
+ }
+ }
+ },
+ "Intended for iOS 26 and newer." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "适用于 iOS 26 及更高版本。"
+ }
+ }
+ }
+ },
+ "Internal" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "内部功能"
+ }
+ }
+ }
+ },
+ "Internal Features" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "内部功能"
+ }
+ }
+ }
+ },
+ "Internal Storage View" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "内部存储查看"
+ }
+ }
+ }
+ },
+ "iPad Pro 11-inch (4th Gen, Cellular)" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "iPad Pro 11-inch (4th Gen, Cellular)"
+ }
+ }
+ }
+ },
+ "iPad Pro 11-inch (4th Gen)" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "iPad Pro 11-inch (4th Gen)"
+ }
+ }
+ }
+ },
+ "iPad Pro 11-inch (M4, Cellular)" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "iPad Pro 11-inch (M4, Cellular)"
+ }
+ }
+ }
+ },
+ "iPad Pro 11-inch (M4)" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "iPad Pro 11-inch (M4)"
+ }
+ }
+ }
+ },
+ "iPadOS Features" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "iPadOS 功能"
+ }
+ }
+ }
+ },
+ "iPhone 14 Pro" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "iPhone 14 Pro"
+ }
+ }
+ }
+ },
+ "iPhone 14 Pro Max" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "iPhone 14 Pro Max"
+ }
+ }
+ }
+ },
+ "iPhone 15 Pro" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "iPhone 15 Pro"
+ }
+ }
+ }
+ },
+ "iPhone 15 Pro Max" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "iPhone 15 Pro Max"
+ }
+ }
+ }
+ },
+ "iPhone 16" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "iPhone 16"
+ }
+ }
+ }
+ },
+ "iPhone 16 Camera Control Settings" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "iPhone 16 相机控制设置"
+ }
+ }
+ }
+ },
+ "iPhone 16 Plus" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "iPhone 16 Plus"
+ }
+ }
+ }
+ },
+ "iPhone 16 Pro" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "iPhone 16 Pro"
+ }
+ }
+ }
+ },
+ "iPhone 16 Pro Max" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "iPhone 16 Pro Max"
+ }
+ }
+ }
+ },
+ "iPhone 17" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "iPhone 17"
+ }
+ }
+ }
+ },
+ "iPhone 17 Air" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "iPhone 17 Air"
+ }
+ }
+ }
+ },
+ "iPhone 17 Pro" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "iPhone 17 Pro"
+ }
+ }
+ }
+ },
+ "iPhone 17 Pro Max" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "iPhone 17 Pro Max"
+ }
+ }
+ }
+ },
+ "iPhone Air" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "iPhone Air"
+ }
+ }
+ }
+ },
+ "iPhone X Gestures" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "iPhone X 手势"
+ }
+ }
+ }
+ },
+ "Keep Alive" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "保活"
+ }
+ }
+ }
+ },
+ "Keep Alive allows the app to keep running in the background." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "保活功能让应用在后台持续运行。"
+ }
+ }
+ }
+ },
+ "Loading wallpapers…" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "正在加载壁纸..."
+ }
+ }
+ }
+ },
+ "Logs" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "日志"
+ }
+ }
+ }
+ },
+ "Main developer" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "主要开发者"
+ }
+ }
+ }
+ },
+ "Meant for devices like the iPhone SE where tapping to wake isn't otherwise available." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "适用于 iPhone SE 等原本无法轻点唤醒的设备。"
+ }
+ }
+ }
+ },
+ "Method" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "方式"
+ }
+ }
+ }
+ },
+ "Missing write permission." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "缺少写入权限。"
+ }
+ }
+ }
+ },
+ "MobileGestalt" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "MobileGestalt"
+ }
+ }
+ }
+ },
+ "mond" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "mond"
+ }
+ }
+ }
+ },
+ "No app containers found." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "未找到任何应用容器。"
+ }
+ }
+ }
+ },
+ "No matching items." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "没有匹配的项目。"
+ }
+ }
+ }
+ },
+ "No visible items. Enable \"Display hidden files\" to show dotfiles." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "没有可见项目。启用\"显示隐藏文件\"以显示点文件。"
+ }
+ }
+ }
+ },
+ "Not a directory." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "不是目录。"
+ }
+ }
+ }
+ },
+ "Not supported!" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "不支持!"
+ }
+ }
+ }
+ },
+ "OK" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "好"
+ }
+ }
+ }
+ },
+ "Only MobileGestalt is available when method is set to cmg." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "当方式设置为 cmg 时,只有 MobileGestalt 可用。"
+ }
+ }
+ }
+ },
+ "Only spoof your device model if you want to download Apple Intelligence. This may break Face ID. If you decide to unspoof and want to keep Apple Intelligence, do NOT re-enter the Apple Intelligence & Siri menu in Settings." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "只有当你想要下载 Apple Intelligence 时才伪装设备型号。这可能会破坏 Face ID。如果你想取消伪装并保留 Apple Intelligence,请勿重新进入设置中的 Apple Intelligence & Siri 菜单。"
+ }
+ }
+ }
+ },
+ "Open" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "打开"
+ }
+ }
+ }
+ },
+ "Original (%lld)" : {
+
+ },
+ "PartyUI, GestaltView" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "PartyUI、GestaltView"
+ }
+ }
+ }
+ },
+ "Path: %@" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "路径:%@"
+ }
+ }
+ }
+ },
+ "Please do not use this feature to bypass region restrictions that would equate to breaking regional laws (e.g. disabling the camera shutter sound). We will NOT be held responsible for enabling any illegal activites!" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "请勿使用此功能绕过会违反当地法律的地区限制,例如关闭相机快门声。因启用此类功能造成的后果,我们概不负责!"
+ }
+ }
+ }
+ },
+ "PosterBoard" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "PosterBoard"
+ }
+ }
+ }
+ },
+ "Prevents the wallpaper from moving when you tilt or move the device." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "防止壁纸在倾斜或移动设备时发生位移。"
+ }
+ }
+ }
+ },
+ "Preview Unavailable" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "预览不可用"
+ }
+ }
+ }
+ },
+ "Pulse Width Modulation" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "脉冲宽度调制"
+ }
+ }
+ }
+ },
+ "Reboot your device for changes to take effect." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "请重启设备以使更改生效。"
+ }
+ }
+ }
+ },
+ "Rebooting now might cause a bootloop. Try pressing 'Revert Tweaks'. If the warnings dont go away after that, you're fucked." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "现在重启可能导致无限重启。请尝试点击\"恢复修改\"。如果警告在此之后仍未消失,那就麻烦了。"
+ }
+ }
+ }
+ },
+ "Reset" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "重置"
+ }
+ }
+ }
+ },
+ "Respring" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "注销刷新"
+ }
+ }
+ }
+ },
+ "Respring method by neon, swift implementation by skadz." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "注销刷新方式由 neon 开发,Swift 实现由 skadz 完成。"
+ }
+ }
+ }
+ },
+ "Respring your device for changes to take effect." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "注销刷新设备以使更改生效。"
+ }
+ }
+ }
+ },
+ "Respring your device for changes to take effect. Note that some tweaks may require a reboot for them to apply properly." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "请注销刷新设备以使更改生效。部分修改可能需要重启设备后才能正确应用。"
+ }
+ }
+ }
+ },
+ "Restart the app and try again. Check logs for more detailed information." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "请重启应用后再试。更多详细信息请查看日志。"
+ }
+ }
+ }
+ },
+ "Reveals the Action Button settings page." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "显示操作按钮设置页面。"
+ }
+ }
+ }
+ },
+ "Reveals the Apple Pencil settings page." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "显示 Apple Pencil 设置页面。"
+ }
+ }
+ }
+ },
+ "Reveals the collision detection options in the SOS settings." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "显示 SOS 设置中的碰撞检测选项。"
+ }
+ }
+ }
+ },
+ "Reveals the Settings menu; whether it actually limits charging depends on your hardware." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "显示充电限制设置菜单;是否能真正限制充电取决于你的硬件。"
+ }
+ }
+ }
+ },
+ "Revert Tweaks" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "恢复修改"
+ }
+ }
+ }
+ },
+ "Run Exploit" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "运行漏洞利用"
+ }
+ }
+ }
+ },
+ "Sandbox Extension Token." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "沙盒扩展令牌"
+ }
+ }
+ }
+ },
+ "Save" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "保存"
+ }
+ }
+ }
+ },
+ "Save Failed" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "保存失败"
+ }
+ }
+ }
+ },
+ "Search wallpapers" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "搜索壁纸"
+ }
+ }
+ }
+ },
+ "Security Research Device Mode" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "安全研究设备模式"
+ }
+ }
+ }
+ },
+ "Settings" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "设置"
+ }
+ }
+ }
+ },
+ "Simplified Chinese Translation" : {
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "简体中文翻译"
+ }
+ }
+ }
+ },
+ "Software-Oriented Features" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "软件相关功能"
+ }
+ }
+ }
+ },
+ "Sort A-Z" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "A-Z 排序"
+ }
+ }
+ }
+ },
+ "Sort Z-A" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Z-A 排序"
+ }
+ }
+ }
+ },
+ "Spoofing" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "伪装"
+ }
+ }
+ }
+ },
+ "Stage Manager Support" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "台前调度支持"
+ }
+ }
+ }
+ },
+ "Subtype" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "子类型"
+ }
+ }
+ }
+ },
+ "Successfully applied Gestalt tweaks!" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Gestalt 修改已成功应用!"
+ }
+ }
+ }
+ },
+ "Successfully applied PosterBoard!" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "PosterBoard 应用成功!"
+ }
+ }
+ }
+ },
+ "Successfully reverted Gestalt tweaks!" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Gestalt 修改已成功还原!"
+ }
+ }
+ }
+ },
+ "Successfully reverted PosterBoard!" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "PosterBoard 恢复成功!"
+ }
+ }
+ }
+ },
+ "Supports iOS 27.0 b1 - b4. By forcequit." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "支持 iOS 27.0 b1-b4。由 forcequit 开发。"
+ }
+ }
+ }
+ },
+ "Supports iOS 27.0 b1 - b4. Only MobileGestalt will work with this method. Only use this when bad_query isnt working for you." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "支持 iOS 27.0 b1-b4。此方式下只有 MobileGestalt 可用。仅在你的 bad_query 不起作用时使用此方式。"
+ }
+ }
+ }
+ },
+ "Tap to Wake" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "轻点唤醒"
+ }
+ }
+ }
+ },
+ "Tendies" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tendies"
+ }
+ }
+ }
+ },
+ "Tendies repository" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tendies 仓库"
+ }
+ }
+ }
+ },
+ "The bad_query exploit" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "bad_query 漏洞利用"
+ }
+ }
+ }
+ },
+ "The wallpaper preview couldn't be loaded." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "无法加载壁纸预览。"
+ }
+ }
+ }
+ },
+ "These tweaks have the capability to break features on your device or softbrick it if misused." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "这些修改有可能破坏设备功能或导致半砖(如果使用不当)!"
+ }
+ }
+ }
+ },
+ "This tweak may be broken or have no effect on some iOS versions or devices." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "该修改在部分 iOS 版本或设备上可能失效或没有效果。"
+ }
+ }
+ }
+ },
+ "Token" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "令牌"
+ }
+ }
+ }
+ },
+ "Tools" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "工具"
+ }
+ }
+ }
+ },
+ "Translate zh-CN" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "简体中文翻译"
+ }
+ }
+ }
+ },
+ "Try Again" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "重试"
+ }
+ }
+ }
+ },
+ "Turn this on if your Always-On Display renders incorrectly." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "如果全天候显示效果异常,请开启此项。"
+ }
+ }
+ }
+ },
+ "Turns on internal features like the Metal HUD; some services may act up." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "启用 Metal HUD 等内部功能;部分服务可能出现异常。"
+ }
+ }
+ }
+ },
+ "Tweaks" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "调整"
+ }
+ }
+ }
+ },
+ "Unknown App" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "未知应用"
+ }
+ }
+ }
+ },
+ "Warning" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "警告"
+ }
+ }
+ }
+ },
+ "Warning!" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "警告!"
+ }
+ }
+ }
+ },
+ "When enabled, the Tendies explorer will close automatically after importing a .tendies file into PosterBoard." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "启用后,在将 .tendies 文件导入 PosterBoard 后,浏览窗口将自动关闭。"
+ }
+ }
+ }
+ },
+ "Your iOS version may not be supported by mond.\nMond only supports iOS 27.0 developer beta 1 - 4." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "你的 iOS 版本可能不受 mond 支持。\nMond 仅支持 iOS 27.0 开发者测试版 1-4。"
+ }
+ }
+ }
+ },
+ "Your MobileGestalt.plist seems to be empty." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "你的 MobileGestalt.plist 似乎为空。"
+ }
+ }
+ }
+ },
+ "Your MobileGestalt.plist seems to be invalid." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "你的 MobileGestalt.plist 似乎无效。"
+ }
+ }
+ }
+ },
+ "Your sandbox token is invalid." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "你的沙盒令牌无效。"
+ }
+ }
+ }
+ },
+ "Your sandbox token is valid." : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "你的沙盒令牌有效。"
+ }
+ }
+ }
+ }
+ },
+ "version" : "1.0"
+}
\ No newline at end of file