Localized mac app

This commit is contained in:
Stuart Breckenridge
2023-01-04 12:33:38 +08:00
parent 2bca08195e
commit e670d610e3
61 changed files with 1051 additions and 300 deletions

View File

@@ -124,7 +124,7 @@ struct AccountInspectorView: View {
}
} message: {
Text("alert.message.cannot-undo-action", comment: "This action cannot be undone.")
Text("alert.message.cannot-undo-action", comment: "You can't undo this action.")
}
}
}

View File

@@ -43,7 +43,7 @@ struct ExtensionInspectorView: View {
Text("button.title.cancel", comment: "Cancel")
}
} message: {
Text("alert.message.cannot-undo-action", comment: "This action cannot be undone.")
Text("alert.message.cannot-undo-action", comment: "You can't undo this action.")
}
Spacer()
}

View File

@@ -0,0 +1,3 @@
/* Unable to communicate with NetNewsWire. */
"errordescription.localized.communication-failure" = "Unable to communicate with NetNewsWire.";

View File

@@ -22,12 +22,45 @@
/* Open in Browser */
"activity.title.open-in-browser" = "Open in Browser";
/* Unable to add iCloud Account. Please make sure you have iCloud and iCloud Drive enabled in System Settings. */
"alert.error.cloudkit-missing" = "Unable to add iCloud Account. Please make sure you have iCloud and iCloud Drive enabled in System Settings.";
/* There is already an account of that type with that username created. */
"alert.error.duplicate-account-username" = "There is already an account of that type with that username created.";
/* Invalid API URL. */
"alert.error.invalid-api-url" = "Invalid API URL.";
/* Error message: The user provided an invalid username or password. */
"alert.error.invalid-username-or-password" = "A username or password is required.";
/* Error message: Unable to save due a Keychain error. */
"alert.error.keychain-error" = "Unable to save account credentials due to a Keychain error.";
/* Network error. Please try later. */
"alert.error.network-error" = "A network error has occurred. Please try later.";
/* Error message: This theme shares the same name as a provided theme and cannot be imported. */
"alert.error.theme-duplicate-of-provided" = "This theme shares the same name as a provided theme and cannot be imported.";
/* The account type in invalid. */
"alert.error.unrecognized-account" = "The account type is not recognized.";
/* Error message: The user must provide a username and password. */
"alert.error.username-and-password-required" = "A username and password are required.";
/* The user must provide a username, password, and URL. */
"alert.error.username-password-url-required" = "A username, password, and API URL are required.";
/* Username required. */
"alert.error.username-required" = "A username is required.";
/* The variable is the author's home page. In English, the alert message is: Authors website:\n%@ */
"alert.message.author-website.%@" = "Author's website:\n%@";
/* The action cannot be undone.
This action cannot be undone. */
"alert.message.cannot-undo-action" = "This action cannot be undone.";
You can't undo this action. */
"alert.message.cannot-undo-action" = "You can't undo this action.";
/* Asks the user for confirmation that they wish to delete a folder. The variable provided is the folder name. In English, the message is: Are you sure you want to delete the “%@” feed? */
"alert.message.delete-feed.%@" = "Are you sure you want to delete the “%@” feed?";
@@ -78,6 +111,9 @@
/* Are you sure you want to deactivate “%@“? */
"alert.title.deactivate-extension.%@" = "Are you sure you want to deactivate “%@“?";
/* Are you sure you want to deactivate the %@ extension “%@“? Note: the ordering of the variables is extension type, extension name. */
"alert.title.deactive-extension.%@.%@" = "Are you sure you want to deactivate the %@ extension “%@“? ";
/* Delete folder */
"alert.title.delete-folder" = "Delete Folder";
@@ -200,12 +236,12 @@
/* Deactivate */
"button.title.deactivate" = "Deactivate";
/* Deactivate Extension */
"button.title.deactivate-extension" = "Deactivate Extension";
/* Deactivate Account */
"button.title.deactivate-account" = "Deactivate Account";
/* Deactivate Extension */
"button.title.deactivate-extension" = "Deactivate Extension";
/* Button title: Default */
"button.title.default" = "Default";
@@ -451,15 +487,15 @@
/* Toggle Read Articles Filter */
"keyboard.command.toggle-read-articles-filter" = "Toggle Read Articles Filter";
/* Toggle Reader View */
"keyboard.command.toggle-reader-view" = "Toggle Reader View";
/* Toggle Read Feeds Filter */
"keyboard.command.toggle-read-feeds-filter" = "Toggle Read Feeds Filter";
/* Toggle Read Status */
"keyboard.command.toggle-read-status" = "Toggle Read Status";
/* Toggle Reader View */
"keyboard.command.toggle-reader-view" = "Toggle Reader View";
/* Toggle Sidebar */
"keyboard.command.toggle-sidebar" = "Toggle Sidebar";
@@ -671,6 +707,9 @@
/* Enter Name */
"navigation.title.enter-name" = "Enter Name";
/* Enter Search */
"navigation.title.enter-search" = "Enter Search";
/* Manage Accounts */
"navigation.title.manage-accounts" = "Manage Accounts";

View File

@@ -33,7 +33,7 @@ struct ExtensionsManagementView: View {
.sheet(isPresented: $showAddExtensionView) {
AddExtensionListView()
}
.alert(Text("alert.title.deactive-extension.\(extensionToDeactivate?.value.extensionPointID.extensionPointType.title ?? "").\(extensionToDeactivate?.value.title ?? "")", comment: "Are you sure you want to deactivate the %@ extension “%@“? Note: the ordering of the variables is "),
.alert(Text("alert.title.deactive-extension.\(extensionToDeactivate?.value.extensionPointID.extensionPointType.title ?? "").\(extensionToDeactivate?.value.title ?? "")", comment: "Are you sure you want to deactivate the %@ extension “%@“? Note: the ordering of the variables is extension type, extension name."),
isPresented: $showDeactivateAlert) {
Button(role: .destructive) {
@@ -49,7 +49,7 @@ struct ExtensionsManagementView: View {
}
} message: {
Text("alert.message.cannot-undo-action", comment: "This action cannot be undone.")
Text("alert.message.cannot-undo-action", comment: "You can't undo this action.")
}
.onReceive(NotificationCenter.default.publisher(for: .ActiveExtensionPointsDidChange)) { _ in
availableExtensionPointTypes = ExtensionPointManager.shared.availableExtensionPointTypes.sorted(by: { $0.title < $1.title })

View File

@@ -83,7 +83,7 @@ struct ArticleThemeManagerView: View {
Text("button.title.cancel", comment: "Cancel")
}
}, message: {
Text("alert.message.cannot-undo-action", comment: "This action cannot be undone.")
Text("alert.message.cannot-undo-action", comment: "You can't undo this action.")
})
.alert(Text("alert.title.import-theme", comment: "Import Theme"),
isPresented: $showImportConfirmationAlert.1,

View File

@@ -31,9 +31,9 @@ class ShareViewController: SLComposeServiceViewController, ShareFolderPickerCont
}
title = "NetNewsWire"
placeholder = "Feed Name (Optional)"
placeholder = NSLocalizedString("textfield.placeholder.feed-name", comment: "Feed Name (Optional)")
if let button = navigationController?.navigationBar.topItem?.rightBarButtonItem {
button.title = "Add Feed"
button.title = NSLocalizedString("button.title.add-feed", comment: "Add Feed")
button.isEnabled = true
}