mirror of https://github.com/KDE/kasts.git
Add comments to translatable strings in Settings
I.e. use i18nc instead of i18n.
This commit is contained in:
parent
fd8b224a35
commit
d09974755d
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue