Add comments to translatable strings in Settings

I.e. use i18nc instead of i18n.
This commit is contained in:
Bart De Vries 2024-04-04 15:30:37 +02:00
parent fd8b224a35
commit d09974755d
8 changed files with 100 additions and 101 deletions

View File

@ -15,6 +15,6 @@ import org.kde.kirigamiaddons.formcard as FormCard
import org.kde.kasts
FormCard.AboutPage {
title: i18n("About")
title: i18nc("@title:menu Category in settings", "About")
aboutData: AboutData
}

View File

@ -20,7 +20,7 @@ FormCard.FormCardPage {
id: root
FormCard.FormHeader {
title: i18n("Appearance")
title: i18nc("@title Form header for settings related to app appearance", "Appearance")
Layout.fillWidth: true
}
@ -30,7 +30,7 @@ FormCard.FormCardPage {
FormCard.FormComboBoxDelegate {
Layout.fillWidth: true
id: colorTheme
text: i18n("Color theme")
text: i18nc("@label:listbox", "Color theme")
textRole: "display"
valueRole: "display"
model: ColorSchemer.model
@ -46,7 +46,7 @@ FormCard.FormCardPage {
FormCard.FormCheckDelegate {
id: alwaysShowFeedTitles
text: i18n("Always show podcast titles in subscription view")
text: i18nc("@option:check", "Always show podcast titles in subscription view")
checked: SettingsManager.alwaysShowFeedTitles
onToggled: {
SettingsManager.alwaysShowFeedTitles = checked;
@ -67,7 +67,7 @@ FormCard.FormCardPage {
id: showTrayIcon
visible: SystrayIcon.available
enabled: SystrayIcon.available
text: i18n("Show icon in system tray")
text: i18nc("@option:check", "Show icon in system tray")
checked: SettingsManager.showTrayIcon
onToggled: {
SettingsManager.showTrayIcon = checked;
@ -79,7 +79,7 @@ FormCard.FormCardPage {
id: minimizeToTray
visible: SystrayIcon.available
enabled: SettingsManager.showTrayIcon && SystrayIcon.available
text: i18n("Minimize to tray instead of closing")
text: i18nc("@option:check", "Minimize to tray instead of closing")
checked: SettingsManager.minimizeToTray
onToggled: {
SettingsManager.minimizeToTray = checked;
@ -91,7 +91,7 @@ FormCard.FormCardPage {
id: trayIconType
visible: SystrayIcon.available
enabled: SettingsManager.showTrayIcon && SystrayIcon.available
text: i18nc("Label for selecting the color of the tray icon", "Tray icon type")
text: i18nc("@label:listbox Label for selecting the color of the tray icon", "Tray icon type")
textRole: "text"
valueRole: "value"
@ -108,7 +108,7 @@ FormCard.FormCardPage {
}
FormCard.FormHeader {
title: i18n("Text")
title: i18nc("@title Form header for settings related to text/fonts", "Text")
Layout.fillWidth: true
}
@ -118,7 +118,7 @@ FormCard.FormCardPage {
FormCard.FormCheckDelegate {
id: useSystemFontCheckBox
checked: SettingsManager.articleFontUseSystem
text: i18n("Use system default")
text: i18nc("@option:check", "Use system default")
onToggled: {
SettingsManager.articleFontUseSystem = checked;
@ -130,14 +130,13 @@ FormCard.FormCardPage {
FormCard.FormTextDelegate {
id: fontSize
text: i18n("Font size")
text: i18nc("@label:spinbox", "Font size")
trailing: Controls.SpinBox {
id: articleFontSizeSpinBox
enabled: !useSystemFontCheckBox.checked
value: SettingsManager.articleFontSize
Kirigami.FormData.label: i18n("Font size:")
from: 6
to: 20

View File

@ -16,7 +16,7 @@ import org.kde.kasts
import ".."
FormCard.FormCardPage {
title: i18nc("@title", "Error Log")
title: i18nc("@title:menu Category in settings", "Error Log")
FormCard.FormHeader {
title: i18nc("@title", "Error Log")

View File

@ -20,7 +20,7 @@ FormCard.FormCardPage {
id: root
FormCard.FormHeader {
title: i18n("Playback settings")
title: i18nc("@title Form header for settings related to playback", "Playback settings")
Layout.fillWidth: true
}
@ -29,7 +29,7 @@ FormCard.FormCardPage {
FormCard.FormComboBoxDelegate {
id: selectAudioBackend
text: i18nc("Label for setting to select audio playback backend", "Select audio backend")
text: i18nc("@label:listbox Label for setting to select audio playback backend", "Select audio backend")
textRole: "text"
valueRole: "value"
@ -59,7 +59,7 @@ FormCard.FormCardPage {
FormCard.FormCheckDelegate {
id: showTimeLeft
Kirigami.FormData.label: i18nc("Label for settings related to the play time, e.g. whether the total track time is shown or a countdown of the remaining play time", "Play time:")
Kirigami.FormData.label: i18nc("@option:check Label for settings related to the play time, e.g. whether the total track time is shown or a countdown of the remaining play time", "Play time:")
checked: SettingsManager.toggleRemainingTime
text: i18n("Show time left instead of total track time")
onToggled: {
@ -71,7 +71,7 @@ FormCard.FormCardPage {
id: adjustTimeLeft
checked: SettingsManager.adjustTimeLeft
enabled: SettingsManager.toggleRemainingTime
text: i18n("Adjust time left based on current playback speed")
text: i18nc("@option:check", "Adjust time left based on current playback speed")
onToggled: {
SettingsManager.adjustTimeLeft = checked;
SettingsManager.save();
@ -80,7 +80,7 @@ FormCard.FormCardPage {
FormCard.FormCheckDelegate {
id: prioritizeStreaming
checked: SettingsManager.prioritizeStreaming
text: i18n("Prioritize streaming over downloading")
text: i18nc("@option:check", "Prioritize streaming over downloading")
onToggled: {
SettingsManager.prioritizeStreaming = checked;
SettingsManager.save();
@ -121,7 +121,7 @@ FormCard.FormCardPage {
}
FormCard.FormHeader {
title: i18n("Queue settings")
title: i18nc("@title Form header for settings related to the queue", "Queue settings")
Layout.fillWidth: true
}
@ -131,7 +131,7 @@ FormCard.FormCardPage {
FormCard.FormCheckDelegate {
id: continuePlayingNextEntry
checked: SettingsManager.continuePlayingNextEntry
text: i18n("Continue playing next episode after current one finishes")
text: i18nc("@option:check", "Continue playing next episode after current one finishes")
onToggled: {
SettingsManager.continuePlayingNextEntry = checked;
SettingsManager.save();
@ -139,7 +139,7 @@ FormCard.FormCardPage {
}
FormCard.FormCheckDelegate {
id: refreshOnStartup
Kirigami.FormData.label: i18nc("Label for settings related to podcast updates", "Update Settings:")
Kirigami.FormData.label: i18nc("@option:check Label for settings related to podcast updates", "Update Settings:")
checked: SettingsManager.refreshOnStartup
text: i18n("Automatically fetch podcast updates on startup")
onToggled: {
@ -150,7 +150,7 @@ FormCard.FormCardPage {
FormCard.FormCheckDelegate {
id: doFullUpdate
checked: SettingsManager.doFullUpdate
text: i18n("Update existing episode data on refresh (slower)")
text: i18nc("@option:check", "Update existing episode data on refresh (slower)")
onToggled: {
SettingsManager.doFullUpdate = checked;
SettingsManager.save();
@ -160,7 +160,7 @@ FormCard.FormCardPage {
FormCard.FormCheckDelegate {
id: autoQueue
checked: SettingsManager.autoQueue
text: i18n("Automatically queue new episodes")
text: i18nc("@option:check", "Automatically queue new episodes")
onToggled: {
SettingsManager.autoQueue = checked;
@ -175,7 +175,7 @@ FormCard.FormCardPage {
FormCard.FormCheckDelegate {
id: autoDownload
checked: SettingsManager.autoDownload
text: i18n("Automatically download new episodes")
text: i18nc("@option:check", "Automatically download new episodes")
enabled: autoQueue.checked
onToggled: {
@ -188,7 +188,7 @@ FormCard.FormCardPage {
FormCard.FormComboBoxDelegate {
id: episodeBehavior
text: i18n("Played episode behavior")
text: i18nc("@label:listbox", "Played episode behavior")
textRole: "text"
valueRole: "value"
model: [{"text": i18n("Do not delete"), "value": 0},
@ -224,7 +224,7 @@ FormCard.FormCardPage {
FormCard.FormCheckDelegate {
id: resetPositionOnPlayed
checked: SettingsManager.resetPositionOnPlayed
text: i18n("Reset play position after an episode is played")
text: i18nc("@option:check", "Reset play position after an episode is played")
onToggled: {
SettingsManager.resetPositionOnPlayed = checked;
SettingsManager.save();
@ -233,7 +233,7 @@ FormCard.FormCardPage {
}
FormCard.FormHeader {
title: i18n("When adding new podcasts")
title: i18nc("@title Form header for settings triggered by adding new podcasts", "When adding new podcasts")
Layout.fillWidth: true
}
@ -242,7 +242,7 @@ FormCard.FormCardPage {
FormCard.FormRadioDelegate {
checked: SettingsManager.markUnreadOnNewFeed === 0
text: i18n("Mark all episodes as played")
text: i18nc("@option:radio", "Mark all episodes as played")
onToggled: {
SettingsManager.markUnreadOnNewFeed = 0;
SettingsManager.save();
@ -253,7 +253,7 @@ FormCard.FormCardPage {
FormCard.FormRadioDelegate {
id: markCustomUnreadNumberButton
checked: SettingsManager.markUnreadOnNewFeed === 1
text: i18n("Mark most recent episodes as unplayed")
text: i18nc("@option:radio", "Mark most recent episodes as unplayed")
onToggled: {
SettingsManager.markUnreadOnNewFeed = 1;
SettingsManager.save();
@ -276,7 +276,7 @@ FormCard.FormCardPage {
FormCard.FormRadioDelegate {
checked: SettingsManager.markUnreadOnNewFeed === 2
text: i18n("Mark all episodes as unplayed")
text: i18nc("@option:radio", "Mark all episodes as unplayed")
onToggled: {
SettingsManager.markUnreadOnNewFeed = 2;
SettingsManager.save();

View File

@ -20,7 +20,7 @@ FormCard.FormCardPage {
FormCard.FormHeader {
Layout.fillWidth: true
title: i18n("Network")
title: i18nc("@title Form header for settings related to network connections", "Network")
}
FormCard.FormCard {
@ -29,7 +29,7 @@ FormCard.FormCardPage {
FormCard.FormCheckDelegate {
id: doNetworkChecks
checked: SettingsManager.checkNetworkStatus
text: i18n("Enable network connection checks")
text: i18nc("@option:check", "Enable network connection checks")
onToggled: {
SettingsManager.checkNetworkStatus = checked;
SettingsManager.save();
@ -39,7 +39,7 @@ FormCard.FormCardPage {
FormCard.FormHeader {
Layout.fillWidth: true
title: i18n("On metered connections")
title: i18nc("@title Form header for settings related to metered connections", "On metered connections")
}
FormCard.FormCard {
@ -49,7 +49,7 @@ FormCard.FormCardPage {
id: allowMeteredFeedUpdates
enabled: SettingsManager.checkNetworkStatus
checked: SettingsManager.allowMeteredFeedUpdates
text: i18n("Allow podcast updates")
text: i18nc("@option:check", "Allow podcast updates")
onToggled: {
SettingsManager.allowMeteredFeedUpdates = checked;
SettingsManager.save();
@ -60,7 +60,7 @@ FormCard.FormCardPage {
id: allowMeteredEpisodeDownloads
enabled: SettingsManager.checkNetworkStatus
checked: SettingsManager.allowMeteredEpisodeDownloads
text: i18n("Allow episode downloads")
text: i18nc("@option:check", "Allow episode downloads")
onToggled: {
SettingsManager.allowMeteredEpisodeDownloads = checked;
SettingsManager.save();
@ -71,7 +71,7 @@ FormCard.FormCardPage {
id: allowMeteredImageDownloads
enabled: SettingsManager.checkNetworkStatus
checked: SettingsManager.allowMeteredImageDownloads
text: i18n("Allow image downloads")
text: i18nc("@option:check", "Allow image downloads")
onToggled: {
SettingsManager.allowMeteredImageDownloads = checked;
SettingsManager.save();
@ -82,7 +82,7 @@ FormCard.FormCardPage {
id: allowMeteredStreaming
enabled: SettingsManager.checkNetworkStatus
checked: SettingsManager.allowMeteredStreaming
text: i18n("Allow streaming")
text: i18nc("@option:check", "Allow streaming")
onToggled: {
SettingsManager.allowMeteredStreaming = checked;
SettingsManager.save();

View File

@ -14,43 +14,43 @@ import org.kde.kirigamiaddons.settings as KirigamiSettings
KirigamiSettings.CategorizedSettings {
actions: [
KirigamiSettings.SettingAction {
text: i18n("General")
text: i18nc("@title:menu Category in settings", "General")
actionName: "General"
icon.name: "kasts"
page: "qrc:/qt/qml/org/kde/kasts/qml/Settings/GeneralSettingsPage.qml"
},
KirigamiSettings.SettingAction {
text: i18n("Appearance")
text: i18nc("@title:menu Category in settings", "Appearance")
actionName: "Appearance"
icon.name: "preferences-desktop-theme-global"
page: "qrc:/qt/qml/org/kde/kasts/qml/Settings/AppearanceSettingsPage.qml"
},
KirigamiSettings.SettingAction {
text: i18n("Storage")
text: i18nc("@title:menu Category in settings", "Storage")
actionName: "Storage"
icon.name: "drive-harddisk"
page: "qrc:/qt/qml/org/kde/kasts/qml/Settings/StorageSettingsPage.qml"
},
KirigamiSettings.SettingAction {
text: i18n("Network")
text: i18nc("@title:menu Category in settings", "Network")
actionName: "Network"
icon.name: "network-connect"
page: "qrc:/qt/qml/org/kde/kasts/qml/Settings/NetworkSettingsPage.qml"
},
KirigamiSettings.SettingAction {
text: i18n("Synchronization")
text: i18nc("@title:menu Category in settings", "Synchronization")
actionName: "Synchronization"
icon.name: "state-sync"
page: "qrc:/qt/qml/org/kde/kasts/qml/Settings/SynchronizationSettingsPage.qml"
},
KirigamiSettings.SettingAction {
text: i18n("Error Log")
text: i18nc("@title:menu Category in settings", "Error Log")
actionName: "Error Log"
icon.name: "error"
page: "qrc:/qt/qml/org/kde/kasts/qml/Settings/ErrorListPage.qml"
},
KirigamiSettings.SettingAction {
text: i18n("About")
text: i18nc("@title:menu Category in settings", "About")
actionName: "About"
icon.name: "documentinfo"
page: "qrc:/qt/qml/org/kde/kasts/qml/Settings/AboutPage.qml"

View File

@ -19,7 +19,7 @@ FormCard.FormCardPage {
id: root
FormCard.FormHeader {
title: i18n("Storage path")
title: i18nc("@title Form header for settings related to storage paths", "Storage path")
Layout.fillWidth: true
}
@ -29,13 +29,13 @@ FormCard.FormCardPage {
FormCard.FormTextDelegate {
id: storagePath
visible: Qt.platform.os !== "android" // not functional on android
text: i18n("Storage path")
text: i18nc("@label showing path used for local storage", "Storage path")
description: StorageManager.storagePath
trailing: Controls.Button {
Layout.leftMargin: Kirigami.Units.largeSpacing
icon.name: "document-open-folder"
text: i18n("Select folder…")
text: i18nc("@action:button", "Select folder…")
enabled: !defaultStoragePath.checked
onClicked: storagePathDialog.open()
}
@ -43,7 +43,7 @@ FormCard.FormCardPage {
StorageDirDialog {
id: storagePathDialog
title: i18n("Select Storage Path")
title: i18nc("@title of dialog box", "Select Storage Path")
}
}
@ -53,7 +53,7 @@ FormCard.FormCardPage {
id: defaultStoragePath
visible: Qt.platform.os !== "android" // not functional on android
checked: SettingsManager.storagePath == ""
text: i18n("Use default path")
text: i18nc("@option:check", "Use default path")
onToggled: {
if (checked) {
StorageManager.setStoragePath("");
@ -64,26 +64,26 @@ FormCard.FormCardPage {
FormCard.FormHeader {
Layout.fillWidth: true
title: i18n("Information")
title: i18nc("@title Form header for section showing information about local storage", "Information")
}
FormCard.FormCard {
Layout.fillWidth: true
FormCard.FormTextDelegate {
text: i18n("Podcast downloads")
description: i18nc("Using <amount of bytes> of disk space", "Using %1 of disk space", StorageManager.formattedEnclosureDirSize)
text: i18nc("@label showing the storage space used by local podcast downloads", "Podcast downloads")
description: i18nc("@label Using <amount of bytes> of disk space", "Using %1 of disk space", StorageManager.formattedEnclosureDirSize)
}
FormCard.FormDelegateSeparator {}
FormCard.FormTextDelegate {
text: i18n("Image cache")
description: i18nc("Using <amount of bytes> of disk space", "Using %1 of disk space", StorageManager.formattedImageDirSize)
text: i18nc("@label showing the storage space used by the image cache", "Image cache")
description: i18nc("@label Using <amount of bytes> of disk space", "Using %1 of disk space", StorageManager.formattedImageDirSize)
trailing: Controls.Button {
icon.name: "edit-clear-all"
text: i18n("Clear Cache")
text: i18nc("@action:button", "Clear Cache")
onClicked: StorageManager.clearImageCache();
}
}

View File

@ -32,11 +32,11 @@ Kirigami.ScrollablePage {
FormCard.FormTextDelegate {
id: accountStatus
text: i18n("Account")
description: Sync.syncEnabled ? i18n("Logged into account \"%1\" on server \"%2\"", Sync.username, (Sync.provider == SyncUtils.GPodderNet && Sync.hostname == "") ? "gpodder.net" : Sync.hostname) : i18n("Syncing disabled")
text: i18nc("@label", "Account")
description: Sync.syncEnabled ? i18nc("@info:status Shows which sync account and sync server the user is logged into", "Logged into account \"%1\" on server \"%2\"", Sync.username, (Sync.provider == SyncUtils.GPodderNet && Sync.hostname == "") ? "gpodder.net" : Sync.hostname) : i18nc("@info:status", "Syncing disabled")
trailing: Controls.Button {
text: Sync.syncEnabled ? i18n("Logout") : i18n("Login")
text: Sync.syncEnabled ? i18nc("@action:button", "Logout") : i18nc("@action:button", "Login")
onClicked: {
Sync.syncEnabled ? Sync.logout() : syncProviderOverlay.open();
}
@ -47,10 +47,10 @@ Kirigami.ScrollablePage {
FormCard.FormTextDelegate {
id: manualSync
text: i18n("Manually sync")
text: i18nc("@label", "Manually sync")
trailing: Controls.Button {
text: i18n("Sync Now")
text: i18nc("@action:button", "Sync Now")
enabled: Sync.syncEnabled
onClicked: {
syncFeedsAndEpisodes.run();
@ -62,7 +62,7 @@ Kirigami.ScrollablePage {
FormCard.FormTextDelegate {
id: lastFullSync
text: i18n("Last full sync with server")
text: i18nc("@info:status", "Last full sync with server")
description: Sync.lastSuccessfulDownloadSync
}
@ -70,13 +70,13 @@ Kirigami.ScrollablePage {
FormCard.FormTextDelegate {
id: lastQuickUpload
text: i18n("Last quick upload to sync server")
text: i18nc("@info:status", "Last quick upload to sync server")
description: Sync.lastSuccessfulUploadSync
}
}
FormCard.FormHeader {
title: i18n("Automatic syncing")
title: i18nc("@title Form header for settings related to automatic syncing", "Automatic syncing")
Layout.fillWidth: true
}
@ -86,7 +86,7 @@ Kirigami.ScrollablePage {
FormCard.FormCheckDelegate {
enabled: Sync.syncEnabled
checked: SettingsManager.refreshOnStartup
text: i18n("Do full sync on startup")
text: i18nc("@option:check", "Do full sync on startup")
onToggled: {
SettingsManager.refreshOnStartup = checked;
SettingsManager.save();
@ -96,7 +96,7 @@ Kirigami.ScrollablePage {
FormCard.FormCheckDelegate {
enabled: Sync.syncEnabled
checked: SettingsManager.syncWhenUpdatingFeeds
text: i18n("Do full sync when fetching podcasts")
text: i18nc("@option:check", "Do full sync when fetching podcasts")
onToggled: {
SettingsManager.syncWhenUpdatingFeeds = checked;
SettingsManager.save();
@ -106,7 +106,7 @@ Kirigami.ScrollablePage {
FormCard.FormCheckDelegate {
enabled: Sync.syncEnabled
checked: SettingsManager.syncWhenPlayerstateChanges
text: i18n("Upload episode play positions on play/pause toggle")
text: i18nc("@option:check", "Upload episode play positions on play/pause toggle")
onToggled: {
SettingsManager.syncWhenPlayerstateChanges = checked;
SettingsManager.save();
@ -115,7 +115,7 @@ Kirigami.ScrollablePage {
}
FormCard.FormHeader {
title: i18n("Advanced options")
title: i18nc("@title Form header for advanced settings related to syncing", "Advanced options")
Layout.fillWidth: true
}
@ -124,10 +124,10 @@ Kirigami.ScrollablePage {
FormCard.FormTextDelegate {
id: fetchAllEpisodeStates
text: i18n("Fetch all episode states from server")
text: i18nc("@label", "Fetch all episode states from server")
trailing: Controls.Button {
text: i18n("Fetch")
text: i18nc("@action:button", "Fetch")
enabled: Sync.syncEnabled
onClicked: {
forceSyncFeedsAndEpisodes.run();
@ -139,11 +139,11 @@ Kirigami.ScrollablePage {
FormCard.FormTextDelegate {
id: fetchLocalEpisodeStates
text: i18n("Push all local episode states to server")
text: i18nc("@label", "Push all local episode states to server")
trailing: Controls.Button {
enabled: Sync.syncEnabled
text: i18n("Push")
text: i18nc("@action:button", "Push")
onClicked: {
syncPushAllStatesDialog.open();
}
@ -181,7 +181,7 @@ Kirigami.ScrollablePage {
standardButtons: Controls.DialogButtonBox.Ok | Controls.DialogButtonBox.Cancel
closePolicy: Kirigami.Dialog.CloseOnEscape | Kirigami.Dialog.CloseOnPressOutside
title: i18n("Push all local episode states to server?")
title: i18nc("@label", "Push all local episode states to server?")
onAccepted: {
syncPushAllStatesDialog.close();
@ -201,7 +201,7 @@ Kirigami.ScrollablePage {
Layout.fillHeight: true
readOnly: true
wrapMode: Text.WordWrap
text: i18n("Please note that pushing the playback state of all local episodes to the server might take a very long time and/or might overload the server. Also note that this action will overwrite all existing episode states on the server.\n\nContinue?")
text: i18nc("@label", "Please note that pushing the playback state of all local episodes to the server might take a very long time and/or might overload the server. Also note that this action will overwrite all existing episode states on the server.\n\nContinue?")
color: Kirigami.Theme.textColor
Keys.onReturnPressed: accepted();
}
@ -225,7 +225,7 @@ Kirigami.ScrollablePage {
showCloseButton: true
title: i18n("Select Sync Provider")
title: i18nc("@label", "Select Sync Provider")
ColumnLayout {
spacing: 0
@ -237,12 +237,12 @@ Kirigami.ScrollablePage {
id: providerModel
}
Component.onCompleted: {
providerModel.append({"name": i18n("gpodder.net"),
"subtitle": i18n("Synchronize with official gpodder.net server"),
providerModel.append({"name": i18nc("@label", "gpodder.net"),
"subtitle": i18nc("@label", "Synchronize with official gpodder.net server"),
"icon": "gpodder",
"provider": Sync.GPodderNet});
providerModel.append({"name": i18n("GPodder Nextcloud"),
"subtitle": i18n("Synchronize with GPodder Nextcloud app"),
providerModel.append({"name": i18nc("@label", "GPodder Nextcloud"),
"subtitle": i18nc("@label", "Synchronize with GPodder Nextcloud app"),
"icon": "kaccounts-nextcloud",
"provider": Sync.GPodderNextcloud});
}
@ -275,7 +275,7 @@ Kirigami.ScrollablePage {
standardButtons: Controls.DialogButtonBox.Ok | Controls.DialogButtonBox.Cancel
closePolicy: Kirigami.Dialog.CloseOnEscape | Kirigami.Dialog.CloseOnPressOutside
title: i18n("Sync Login Credentials")
title: i18n("@title of dialog box", "Sync Login Credentials")
onAccepted: {
if (Sync.provider === Sync.GPodderNextcloud || customServerCheckBox.checked) {
@ -304,7 +304,7 @@ Kirigami.ScrollablePage {
Kirigami.Heading {
clip: true
level: 2
text: Sync.provider === Sync.GPodderNextcloud ? i18n("Sync with GPodder Nextcloud app") : i18n("Sync with gpodder.net service")
text: Sync.provider === Sync.GPodderNextcloud ? i18nc("@label", "Sync with GPodder Nextcloud app") : i18nc("@label", "Sync with gpodder.net service")
}
TextEdit {
Layout.fillWidth: true
@ -315,8 +315,8 @@ Kirigami.ScrollablePage {
Qt.openUrlExternally(link);
}
text: Sync.provider === Sync.GPodderNextcloud ?
i18nc("argument is a weblink", "Sync with a Nextcloud server that has the GPodder Sync app installed: %1.<br/>It is advised to manually create an app password for Kasts through the web interface and use those credentials." , "<a href=\"https://apps.nextcloud.com/apps/gpoddersync\">https://apps.nextcloud.com/apps/gpoddersync</a>") :
i18nc("argument is a weblink", "If you don't already have an account, you should first create one at %1", "<a href=\"https://gpodder.net\">https://gpodder.net</a>")
i18nc("@label argument is a weblink", "Sync with a Nextcloud server that has the GPodder Sync app installed: %1.<br/>It is advised to manually create an app password for Kasts through the web interface and use those credentials." , "<a href=\"https://apps.nextcloud.com/apps/gpoddersync\">https://apps.nextcloud.com/apps/gpoddersync</a>") :
i18nc("@label argument is a weblink", "If you don't already have an account, you should first create one at %1", "<a href=\"https://gpodder.net\">https://gpodder.net</a>")
color: Kirigami.Theme.textColor
}
}
@ -328,7 +328,7 @@ Kirigami.ScrollablePage {
columnSpacing: Kirigami.Units.smallSpacing
Controls.Label {
Layout.alignment: Qt.AlignRight
text: i18n("Username:")
text: i18nc("@label:textbox", "Username:")
}
Controls.TextField {
id: usernameField
@ -339,7 +339,7 @@ Kirigami.ScrollablePage {
}
Controls.Label {
Layout.alignment: Qt.AlignRight
text: i18n("Password:")
text: i18nc("@label:textbox", "Password:")
}
Controls.TextField {
id: passwordField
@ -354,12 +354,12 @@ Kirigami.ScrollablePage {
Layout.column: 1
visible: Sync.provider === Sync.GPodderNet
checked: false
text: i18n("Use custom server")
text: i18nc("@option:check", "Use custom server")
}
Controls.Label {
visible: Sync.provider === Sync.GPodderNextcloud || customServerCheckBox.checked
Layout.alignment: Qt.AlignRight
text: i18n("Hostname:")
text: i18nc("@label:textbox", "Hostname:")
}
Controls.TextField {
visible: Sync.provider === Sync.GPodderNextcloud || customServerCheckBox.checked
@ -393,19 +393,19 @@ Kirigami.ScrollablePage {
showCloseButton: true
title: i18n("Sync Device Settings")
title: i18nc("@title", "Sync Device Settings")
Column {
spacing: Kirigami.Units.largeSpacing * 2
Kirigami.Heading {
level: 2
text: i18n("Create a new device")
text: i18nc("@action:button", "Create a new device")
}
GridLayout {
columns: 2
width: parent.width
Controls.Label {
text: i18n("Device Name:")
text: i18nc("@label:textbox", "Device Name:")
}
Controls.TextField {
id: deviceField
@ -415,7 +415,7 @@ Kirigami.ScrollablePage {
// focus: syncDeviceOverlay.visible // disabled for now since it causes problem with virtual keyboard appearing at the same time as the overlay
}
Controls.Label {
text: i18n("Device Description:")
text: i18nc("@label:textbox", "Device Description:")
}
Controls.TextField {
id: deviceNameField
@ -424,23 +424,23 @@ Kirigami.ScrollablePage {
Keys.onReturnPressed: createDeviceButton.clicked();
}
Controls.Label {
text: i18n("Device Type:")
text: i18nc("@label:listbox", "Device Type:")
}
Controls.ComboBox {
id: deviceTypeField
textRole: "text"
valueRole: "value"
popup.z: 102 // popup has to go in front of OverlaySheet
model: [{"text": i18n("other"), "value": "other"},
{"text": i18n("desktop"), "value": "desktop"},
{"text": i18n("laptop"), "value": "laptop"},
{"text": i18n("server"), "value": "server"},
{"text": i18n("mobile"), "value": "mobile"}]
model: [{"text": i18nc("@item:inlistbox type of device", "other"), "value": "other"},
{"text": i18nc("@item:inlistbox type of device", "desktop"), "value": "desktop"},
{"text": i18nc("@item:inlistbox type of device", "laptop"), "value": "laptop"},
{"text": i18nc("@item:inlistbox type of device", "server"), "value": "server"},
{"text": i18nc("@item:inlistbox type of device", "mobile"), "value": "mobile"}]
}
}
Controls.Button {
id: createDeviceButton
text: i18n("Create Device")
text: i18nc("@action:button", "Create Device")
icon.name: "list-add"
onClicked: {
Sync.registerNewDevice(deviceField.text, deviceNameField.text, deviceTypeField.currentValue);
@ -457,7 +457,7 @@ Kirigami.ScrollablePage {
topPadding: Kirigami.Units.gridUnit
bottomPadding: Kirigami.Units.largeSpacing
level: 2
text: i18n("or select an existing device")
text: i18nc("@label", "or select an existing device")
}
model: ListModel {
id: deviceListModel
@ -505,7 +505,7 @@ Kirigami.ScrollablePage {
standardButtons: Controls.DialogButtonBox.Ok | Controls.DialogButtonBox.Cancel
closePolicy: Kirigami.Dialog.CloseOnEscape | Kirigami.Dialog.CloseOnPressOutside
title: i18n("Device Sync Settings")
title: i18nc("@title of dialog box", "Device Sync Settings")
onAccepted: {
Sync.linkUpAllDevices();
@ -527,7 +527,7 @@ Kirigami.ScrollablePage {
Layout.fillHeight: true
readOnly: true
wrapMode: Text.WordWrap
text: i18n("Should all podcast subscriptions on this gpodder.net account be synced across all devices?\nIf you don't know what this means, you should probably select \"Ok\".")
text: i18nc("@label", "Should all podcast subscriptions on this gpodder.net account be synced across all devices?\nIf you don't know what this means, you should probably select \"Ok\".")
color: Kirigami.Theme.textColor
Keys.onReturnPressed: accepted();
}
@ -549,7 +549,7 @@ Kirigami.ScrollablePage {
standardButtons: Controls.DialogButtonBox.Ok | Controls.DialogButtonBox.Cancel
closePolicy: Kirigami.Dialog.CloseOnEscape | Kirigami.Dialog.CloseOnPressOutside
title: i18n("Sync Now?")
title: i18nc("@title of dialog box", "Sync Now?")
onAccepted: {
firstSyncOverlay.close();
@ -569,7 +569,7 @@ Kirigami.ScrollablePage {
Layout.fillHeight: true
readOnly: true
wrapMode: Text.WordWrap
text: i18n("Perform a first sync now?")
text: i18nc("@label", "Perform a first sync now?")
color: Kirigami.Theme.textColor
Keys.onReturnPressed: accepted();
}