feat: 🔍 add CTA rating to settings
All checks were successful
repod / xml (push) Successful in 12s
repod / php (push) Successful in 31s
repod / nodejs (push) Successful in 1m36s
repod / release (push) Has been skipped

This commit is contained in:
Michel Roux 2024-03-16 18:35:31 +01:00
parent bebd6bf5ed
commit 867afbe4df
16 changed files with 151 additions and 103 deletions

View File

@ -31,6 +31,7 @@ OC.L10N.register(
"Unlistened" : "Non lus", "Unlistened" : "Non lus",
"Import subscriptions" : "Importer les abonnements", "Import subscriptions" : "Importer les abonnements",
"Import OPML file" : "Importer un fichier OPML", "Import OPML file" : "Importer un fichier OPML",
"Rate RePod ❤️" : "Donnez votre avis ❤️",
"Playback speed" : "Vitesse de lecture", "Playback speed" : "Vitesse de lecture",
"Are you sure you want to delete this subscription?" : "Êtes-vous sûr de vouloir supprimer ce flux ?", "Are you sure you want to delete this subscription?" : "Êtes-vous sûr de vouloir supprimer ce flux ?",
"Error while removing the feed" : "Erreur lors de la suppression du flux", "Error while removing the feed" : "Erreur lors de la suppression du flux",

View File

@ -29,6 +29,7 @@
"Unlistened" : "Non lus", "Unlistened" : "Non lus",
"Import subscriptions" : "Importer les abonnements", "Import subscriptions" : "Importer les abonnements",
"Import OPML file" : "Importer un fichier OPML", "Import OPML file" : "Importer un fichier OPML",
"Rate RePod ❤️" : "Donnez votre avis ❤️",
"Playback speed" : "Vitesse de lecture", "Playback speed" : "Vitesse de lecture",
"Are you sure you want to delete this subscription?" : "Êtes-vous sûr de vouloir supprimer ce flux ?", "Are you sure you want to delete this subscription?" : "Êtes-vous sûr de vouloir supprimer ce flux ?",
"Error while removing the feed" : "Erreur lors de la suppression du flux", "Error while removing the feed" : "Erreur lors de la suppression du flux",

View File

@ -12,7 +12,7 @@
:href="link" :href="link"
target="_blank"> target="_blank">
<template #icon> <template #icon>
<OpenInNew :size="20" /> <OpenInNewIcon :size="20" />
</template> </template>
{{ title }} {{ title }}
</NcButton> </NcButton>
@ -20,7 +20,7 @@
:href="url" :href="url"
target="_blank"> target="_blank">
<template #icon> <template #icon>
<Download :size="20" /> <DownloadIcon :size="20" />
</template> </template>
{{ t('repod', 'Download') }} {{ size ? `(${episodeFileSize})` : '' }} {{ t('repod', 'Download') }} {{ size ? `(${episodeFileSize})` : '' }}
</NcButton> </NcButton>
@ -30,18 +30,18 @@
<script> <script>
import { NcAvatar, NcButton } from '@nextcloud/vue' import { NcAvatar, NcButton } from '@nextcloud/vue'
import Download from 'vue-material-design-icons/Download.vue' import DownloadIcon from 'vue-material-design-icons/Download.vue'
import OpenInNew from 'vue-material-design-icons/OpenInNew.vue' import OpenInNewIcon from 'vue-material-design-icons/OpenInNew.vue'
import { cleanHtml } from '../../utils/text.js' import { cleanHtml } from '../../utils/text.js'
import { humanFileSize } from '../../utils/size.js' import { humanFileSize } from '../../utils/size.js'
export default { export default {
name: 'Modal', name: 'Modal',
components: { components: {
Download, DownloadIcon,
NcAvatar, NcAvatar,
NcButton, NcButton,
OpenInNew, OpenInNewIcon,
}, },
props: { props: {
description: { description: {

View File

@ -2,7 +2,7 @@
<NcAppNavigationList> <NcAppNavigationList>
<NcAppNavigationNewItem :name="t('repod', 'Add a RSS link')" @new-item="addSubscription"> <NcAppNavigationNewItem :name="t('repod', 'Add a RSS link')" @new-item="addSubscription">
<template #icon> <template #icon>
<Plus :size="20" /> <PlusIcon :size="20" />
</template> </template>
</NcAppNavigationNewItem> </NcAppNavigationNewItem>
</NcAppNavigationList> </NcAppNavigationList>
@ -10,7 +10,7 @@
<script> <script>
import { NcAppNavigationList, NcAppNavigationNewItem } from '@nextcloud/vue' import { NcAppNavigationList, NcAppNavigationNewItem } from '@nextcloud/vue'
import Plus from 'vue-material-design-icons/Plus.vue' import PlusIcon from 'vue-material-design-icons/Plus.vue'
import { encodeUrl } from '../../utils/url.js' import { encodeUrl } from '../../utils/url.js'
export default { export default {
@ -18,7 +18,7 @@ export default {
components: { components: {
NcAppNavigationList, NcAppNavigationList,
NcAppNavigationNewItem, NcAppNavigationNewItem,
Plus, PlusIcon,
}, },
methods: { methods: {
addSubscription(feedUrl) { addSubscription(feedUrl) {

View File

@ -9,7 +9,7 @@
:size="128" :size="128"
:url="imageUrl" /> :url="imageUrl" />
<a class="feed" :href="url" @click.prevent="copyFeed"> <a class="feed" :href="url" @click.prevent="copyFeed">
<Rss :size="20" /> <RssIcon :size="20" />
<i>{{ t('repod', 'Copy feed') }}</i> <i>{{ t('repod', 'Copy feed') }}</i>
</a> </a>
</div> </div>
@ -28,7 +28,7 @@
:text="t('repod', 'Subscribe')" :text="t('repod', 'Subscribe')"
@click="addSubscription"> @click="addSubscription">
<template #icon> <template #icon>
<Plus :size="20" /> <PlusIcon :size="20" />
</template> </template>
</NcAppNavigationNew> </NcAppNavigationNew>
</div> </div>
@ -39,8 +39,8 @@
<script> <script>
import { NcAppNavigationNew, NcAvatar } from '@nextcloud/vue' import { NcAppNavigationNew, NcAvatar } from '@nextcloud/vue'
import { showError, showSuccess } from '@nextcloud/dialogs' import { showError, showSuccess } from '@nextcloud/dialogs'
import Plus from 'vue-material-design-icons/Plus.vue' import PlusIcon from 'vue-material-design-icons/Plus.vue'
import Rss from 'vue-material-design-icons/Rss.vue' import RssIcon from 'vue-material-design-icons/Rss.vue'
import axios from '@nextcloud/axios' import axios from '@nextcloud/axios'
import { cleanHtml } from '../../utils/text.js' import { cleanHtml } from '../../utils/text.js'
import { decodeUrl } from '../../utils/url.js' import { decodeUrl } from '../../utils/url.js'
@ -51,8 +51,8 @@ export default {
components: { components: {
NcAvatar, NcAvatar,
NcAppNavigationNew, NcAppNavigationNew,
Plus, PlusIcon,
Rss, RssIcon,
}, },
props: { props: {
author: { author: {

View File

@ -18,7 +18,7 @@
:title="t('repod', 'Play')" :title="t('repod', 'Play')"
@click="load(episode)"> @click="load(episode)">
<template #icon> <template #icon>
<PlayButton :size="20" /> <PlayIcon :size="20" />
</template> </template>
</NcActionButton> </NcActionButton>
<NcActionButton v-if="isCurrentEpisode(episode)" <NcActionButton v-if="isCurrentEpisode(episode)"
@ -27,7 +27,7 @@
:title="t('repod', 'Stop')" :title="t('repod', 'Stop')"
@click="load(null)"> @click="load(null)">
<template #icon> <template #icon>
<StopButton :size="20" /> <StopIcon :size="20" />
</template> </template>
</NcActionButton> </NcActionButton>
</template> </template>
@ -40,7 +40,7 @@
:title="t('repod', 'Mark as read')" :title="t('repod', 'Mark as read')"
@click="markAs(episode, true)"> @click="markAs(episode, true)">
<template #icon> <template #icon>
<PlaylistPlay :size="20" /> <PlaylistPlayIcon :size="20" />
</template> </template>
</NcActionButton> </NcActionButton>
<NcActionButton v-if="episode.duration && hasEnded(episode)" <NcActionButton v-if="episode.duration && hasEnded(episode)"
@ -50,7 +50,7 @@
:title="t('repod', 'Mark as unread')" :title="t('repod', 'Mark as unread')"
@click="markAs(episode, false)"> @click="markAs(episode, false)">
<template #icon> <template #icon>
<PlaylistRemove :size="20" /> <PlaylistRemoveIcon :size="20" />
</template> </template>
</NcActionButton> </NcActionButton>
<NcActionLink v-if="episode.link" <NcActionLink v-if="episode.link"
@ -59,7 +59,7 @@
target="_blank" target="_blank"
:title="t('repod', 'Open website')"> :title="t('repod', 'Open website')">
<template #icon> <template #icon>
<OpenInNew :size="20" /> <OpenInNewIcon :size="20" />
</template> </template>
</NcActionLink> </NcActionLink>
<NcActionLink v-if="episode.url" <NcActionLink v-if="episode.url"
@ -68,7 +68,7 @@
target="_blank" target="_blank"
:title="t('repod', 'Download')"> :title="t('repod', 'Download')">
<template #icon> <template #icon>
<Download :size="20" /> <DownloadIcon :size="20" />
</template> </template>
</NcActionLink> </NcActionLink>
</NcActions> </NcActions>
@ -103,15 +103,15 @@
<script> <script>
import { NcActionButton, NcActionLink, NcActions, NcAvatar, NcListItem, NcModal, NcProgressBar } from '@nextcloud/vue' import { NcActionButton, NcActionLink, NcActions, NcAvatar, NcListItem, NcModal, NcProgressBar } from '@nextcloud/vue'
import { durationToSeconds, formatEpisodeTimestamp, formatLocaleDate } from '../../utils/time.js' import { durationToSeconds, formatEpisodeTimestamp, formatLocaleDate } from '../../utils/time.js'
import Download from 'vue-material-design-icons/Download.vue' import DownloadIcon from 'vue-material-design-icons/Download.vue'
import { EventBus } from '../../store/bus.js' import { EventBus } from '../../store/bus.js'
import Loading from '../Atoms/Loading.vue' import Loading from '../Atoms/Loading.vue'
import Modal from '../Atoms/Modal.vue' import Modal from '../Atoms/Modal.vue'
import OpenInNew from 'vue-material-design-icons/OpenInNew.vue' import OpenInNewIcon from 'vue-material-design-icons/OpenInNew.vue'
import PlayButton from 'vue-material-design-icons/Play.vue' import PlayIcon from 'vue-material-design-icons/Play.vue'
import PlaylistPlay from 'vue-material-design-icons/PlaylistPlay.vue' import PlaylistPlayIcon from 'vue-material-design-icons/PlaylistPlay.vue'
import PlaylistRemove from 'vue-material-design-icons/PlaylistRemove.vue' import PlaylistRemoveIcon from 'vue-material-design-icons/PlaylistRemove.vue'
import StopButton from 'vue-material-design-icons/Stop.vue' import StopIcon from 'vue-material-design-icons/Stop.vue'
import axios from '@nextcloud/axios' import axios from '@nextcloud/axios'
import { decodeUrl } from '../../utils/url.js' import { decodeUrl } from '../../utils/url.js'
import { generateUrl } from '@nextcloud/router' import { generateUrl } from '@nextcloud/router'
@ -120,7 +120,7 @@ import { showError } from '@nextcloud/dialogs'
export default { export default {
name: 'Episodes', name: 'Episodes',
components: { components: {
Download, DownloadIcon,
Loading, Loading,
Modal, Modal,
NcActionButton, NcActionButton,
@ -130,11 +130,11 @@ export default {
NcListItem, NcListItem,
NcModal, NcModal,
NcProgressBar, NcProgressBar,
OpenInNew, OpenInNewIcon,
PlayButton, PlayIcon,
PlaylistPlay, PlaylistPlayIcon,
PlaylistRemove, PlaylistRemoveIcon,
StopButton, StopIcon,
}, },
data() { data() {
return { return {

View File

@ -1,10 +1,10 @@
<template> <template>
<div class="controls"> <div class="controls">
<PauseButton v-if="!player.paused" <PauseIcon v-if="!player.paused"
class="pointer" class="pointer"
:size="50" :size="50"
@click="$store.dispatch('player/pause')" /> @click="$store.dispatch('player/pause')" />
<PlayButton v-if="player.paused" <PlayIcon v-if="player.paused"
class="pointer" class="pointer"
:size="50" :size="50"
@click="$store.dispatch('player/play')" /> @click="$store.dispatch('player/play')" />
@ -12,14 +12,14 @@
</template> </template>
<script> <script>
import PauseButton from 'vue-material-design-icons/Pause.vue' import PauseIcon from 'vue-material-design-icons/Pause.vue'
import PlayButton from 'vue-material-design-icons/Play.vue' import PlayIcon from 'vue-material-design-icons/Play.vue'
export default { export default {
name: 'Controls', name: 'Controls',
components: { components: {
PauseButton, PauseIcon,
PlayButton, PlayIcon,
}, },
computed: { computed: {
player() { player() {

View File

@ -1,18 +1,18 @@
<template> <template>
<div> <div>
<VolumeHigh v-if="player.volume > 0.7" <VolumeHighIcon v-if="player.volume > 0.7"
class="pointer" class="pointer"
:size="30" :size="30"
@click="mute" /> @click="mute" />
<VolumeLow v-if="player.volume > 0 && player.volume <= 0.3" <VolumeLowIcon v-if="player.volume > 0 && player.volume <= 0.3"
class="pointer" class="pointer"
:size="30" :size="30"
@click="mute" /> @click="mute" />
<VolumeMedium v-if="player.volume > 0.3 && player.volume <= 0.7" <VolumeMediumIcon v-if="player.volume > 0.3 && player.volume <= 0.7"
class="pointer" class="pointer"
:size="30" :size="30"
@click="mute" /> @click="mute" />
<VolumeMute v-if="player.volume === 0" <VolumeMuteIcon v-if="player.volume === 0"
class="pointer" class="pointer"
:size="30" :size="30"
@click="$store.dispatch('player/volume', volumeMuted)" /> @click="$store.dispatch('player/volume', volumeMuted)" />
@ -26,18 +26,18 @@
</template> </template>
<script> <script>
import VolumeHigh from 'vue-material-design-icons/VolumeHigh.vue' import VolumeHighIcon from 'vue-material-design-icons/VolumeHigh.vue'
import VolumeLow from 'vue-material-design-icons/VolumeLow.vue' import VolumeLowIcon from 'vue-material-design-icons/VolumeLow.vue'
import VolumeMedium from 'vue-material-design-icons/VolumeMedium.vue' import VolumeMediumIcon from 'vue-material-design-icons/VolumeMedium.vue'
import VolumeMute from 'vue-material-design-icons/VolumeMute.vue' import VolumeMuteIcon from 'vue-material-design-icons/VolumeMute.vue'
export default { export default {
name: 'Volume', name: 'Volume',
components: { components: {
VolumeHigh, VolumeHighIcon,
VolumeLow, VolumeLowIcon,
VolumeMedium, VolumeMediumIcon,
VolumeMute, VolumeMuteIcon,
}, },
data() { data() {
return { return {

View File

@ -23,7 +23,7 @@
</template> </template>
<template #icon> <template #icon>
<FilterIcon v-if="all" :size="20" /> <FilterIcon v-if="all" :size="20" />
<FilterSettings v-if="!all" :size="20" /> <FilterSettingsIcon v-if="!all" :size="20" />
</template> </template>
</NcAppNavigationItem> </NcAppNavigationItem>
</template> </template>
@ -31,13 +31,13 @@
<script> <script>
import { NcActionCheckbox, NcAppNavigationItem } from '@nextcloud/vue' import { NcActionCheckbox, NcAppNavigationItem } from '@nextcloud/vue'
import FilterIcon from 'vue-material-design-icons/Filter.vue' import FilterIcon from 'vue-material-design-icons/Filter.vue'
import FilterSettings from 'vue-material-design-icons/FilterSettings.vue' import FilterSettingsIcon from 'vue-material-design-icons/FilterSettings.vue'
export default { export default {
name: 'Filters', name: 'Filters',
components: { components: {
FilterIcon, FilterIcon,
FilterSettings, FilterSettingsIcon,
NcAppNavigationItem, NcAppNavigationItem,
NcActionCheckbox, NcActionCheckbox,
}, },

View File

@ -0,0 +1,21 @@
<template>
<NcAppNavigationItem href="https://apps.nextcloud.com/apps/repod#comments"
:name="t('repod', 'Rate RePod ❤️')">
<template #icon>
<StarIcon :size="20" />
</template>
</NcAppNavigationItem>
</template>
<script>
import { NcAppNavigationItem } from '@nextcloud/vue'
import StarIcon from 'vue-material-design-icons/Star.vue'
export default {
name: 'Rate',
components: {
NcAppNavigationItem,
StarIcon,
},
}
</script>

View File

@ -0,0 +1,30 @@
<template>
<NcAppNavigationSettings>
<Filters />
<Speed />
<Import />
<Export />
<Rate />
</NcAppNavigationSettings>
</template>
<script>
import Export from './Export.vue'
import Filters from './Filters.vue'
import Import from './Import.vue'
import { NcAppNavigationSettings } from '@nextcloud/vue'
import Rate from './Rate.vue'
import Speed from './Speed.vue'
export default {
name: 'Settings',
components: {
Export,
Filters,
Import,
NcAppNavigationSettings,
Rate,
Speed,
},
}
</script>

View File

@ -2,43 +2,43 @@
<NcAppNavigationItem :name="t('repod', 'Playback speed')"> <NcAppNavigationItem :name="t('repod', 'Playback speed')">
<template #extra> <template #extra>
<div class="extra"> <div class="extra">
<Minus class="pointer" <MinusIcon class="pointer"
:size="20" :size="20"
@click="changeRate(-.1)" /> @click="changeRate(-.1)" />
<NcCounterBubble class="counter"> <NcCounterBubble class="counter">
x{{ player.rate }} x{{ player.rate }}
</NcCounterBubble> </NcCounterBubble>
<Plus class="pointer" <PlusIcon class="pointer"
:size="20" :size="20"
@click="changeRate(.1)" /> @click="changeRate(.1)" />
</div> </div>
</template> </template>
<template #icon> <template #icon>
<SpeedometerSlow v-if="player.rate < 1" :size="20" /> <SpeedometerSlowIcon v-if="player.rate < 1" :size="20" />
<SpeedometerMedium v-if="player.rate === 1" :size="20" /> <SpeedometerMediumIcon v-if="player.rate === 1" :size="20" />
<Speedometer v-if="player.rate > 1" :size="20" /> <SpeedometerIcon v-if="player.rate > 1" :size="20" />
</template> </template>
</NcAppNavigationItem> </NcAppNavigationItem>
</template> </template>
<script> <script>
import { NcAppNavigationItem, NcCounterBubble } from '@nextcloud/vue' import { NcAppNavigationItem, NcCounterBubble } from '@nextcloud/vue'
import Minus from 'vue-material-design-icons/Minus.vue' import MinusIcon from 'vue-material-design-icons/Minus.vue'
import Plus from 'vue-material-design-icons/Plus.vue' import PlusIcon from 'vue-material-design-icons/Plus.vue'
import Speedometer from 'vue-material-design-icons/Speedometer.vue' import SpeedometerIcon from 'vue-material-design-icons/Speedometer.vue'
import SpeedometerMedium from 'vue-material-design-icons/SpeedometerMedium.vue' import SpeedometerMediumIcon from 'vue-material-design-icons/SpeedometerMedium.vue'
import SpeedometerSlow from 'vue-material-design-icons/SpeedometerSlow.vue' import SpeedometerSlowIcon from 'vue-material-design-icons/SpeedometerSlow.vue'
export default { export default {
name: 'Speed', name: 'Speed',
components: { components: {
NcAppNavigationItem, NcAppNavigationItem,
NcCounterBubble, NcCounterBubble,
Minus, MinusIcon,
Plus, PlusIcon,
Speedometer, SpeedometerIcon,
SpeedometerMedium, SpeedometerMediumIcon,
SpeedometerSlow, SpeedometerSlowIcon,
}, },
computed: { computed: {
player() { player() {

View File

@ -8,7 +8,7 @@
:title="t(`core`, 'Delete')" :title="t(`core`, 'Delete')"
@click="deleteSubscription"> @click="deleteSubscription">
<template #icon> <template #icon>
<Delete :size="20" /> <DeleteIcon :size="20" />
</template> </template>
</NcActionButton> </NcActionButton>
</template> </template>
@ -17,15 +17,15 @@
:display-name="feed.author || feed.title" :display-name="feed.author || feed.title"
:is-no-user="true" :is-no-user="true"
:url="feed.imageUrl" /> :url="feed.imageUrl" />
<Alert v-if="failed" /> <AlertIcon v-if="failed" />
</template> </template>
</NcAppNavigationItem> </NcAppNavigationItem>
</template> </template>
<script> <script>
import { NcActionButton, NcAppNavigationItem, NcAvatar } from '@nextcloud/vue' import { NcActionButton, NcAppNavigationItem, NcAvatar } from '@nextcloud/vue'
import Alert from 'vue-material-design-icons/Alert.vue' import AlertIcon from 'vue-material-design-icons/Alert.vue'
import Delete from 'vue-material-design-icons/Delete.vue' import DeleteIcon from 'vue-material-design-icons/Delete.vue'
import axios from '@nextcloud/axios' import axios from '@nextcloud/axios'
import { generateUrl } from '@nextcloud/router' import { generateUrl } from '@nextcloud/router'
import { showError } from '@nextcloud/dialogs' import { showError } from '@nextcloud/dialogs'
@ -34,8 +34,8 @@ import { toUrl } from '../../utils/url.js'
export default { export default {
name: 'Item', name: 'Item',
components: { components: {
Alert, AlertIcon,
Delete, DeleteIcon,
NcActionButton, NcActionButton,
NcAppNavigationItem, NcAppNavigationItem,
NcAvatar, NcAvatar,

View File

@ -5,7 +5,7 @@
<router-link to="/"> <router-link to="/">
<NcAppNavigationNew :text="t('repod', 'Add a podcast')"> <NcAppNavigationNew :text="t('repod', 'Add a podcast')">
<template #icon> <template #icon>
<Plus :size="20" /> <PlusIcon :size="20" />
</template> </template>
</NcAppNavigationNew> </NcAppNavigationNew>
</router-link> </router-link>
@ -18,43 +18,31 @@
</NcAppContentList> </NcAppContentList>
</template> </template>
<template #footer> <template #footer>
<NcAppNavigationSettings> <Settings />
<Filters />
<Speed />
<Import />
<Export />
</NcAppNavigationSettings>
</template> </template>
</AppNavigation> </AppNavigation>
</template> </template>
<script> <script>
import { NcAppContentList, NcAppNavigationList, NcAppNavigationNew, NcAppNavigationSettings } from '@nextcloud/vue' import { NcAppContentList, NcAppNavigationList, NcAppNavigationNew } from '@nextcloud/vue'
import AppNavigation from '../Atoms/AppNavigation.vue' import AppNavigation from '../Atoms/AppNavigation.vue'
import Export from '../Settings/Export.vue'
import Filters from '../Settings/Filters.vue'
import Import from '../Settings/Import.vue'
import Item from './Item.vue' import Item from './Item.vue'
import Loading from '../Atoms/Loading.vue' import Loading from '../Atoms/Loading.vue'
import Plus from 'vue-material-design-icons/Plus.vue' import PlusIcon from 'vue-material-design-icons/Plus.vue'
import Speed from '../Settings/Speed.vue' import Settings from '../Settings/Settings.vue'
import { showError } from '@nextcloud/dialogs' import { showError } from '@nextcloud/dialogs'
export default { export default {
name: 'Subscriptions', name: 'Subscriptions',
components: { components: {
AppNavigation, AppNavigation,
Export,
Filters,
Import,
Item, Item,
Loading, Loading,
NcAppContentList, NcAppContentList,
NcAppNavigationList, NcAppNavigationList,
NcAppNavigationNew, NcAppNavigationNew,
NcAppNavigationSettings, PlusIcon,
Plus, Settings,
Speed,
}, },
data() { data() {
return { return {

View File

@ -122,6 +122,9 @@ msgstr "Importer les abonnements"
msgid "Import OPML file" msgid "Import OPML file"
msgstr "Importer un fichier OPML" msgstr "Importer un fichier OPML"
msgid "Rate RePod ❤️"
msgstr "Donnez votre avis ❤️"
msgid "Playback speed" msgid "Playback speed"
msgstr "Vitesse de lecture" msgstr "Vitesse de lecture"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Nextcloud 3.14159\n" "Project-Id-Version: Nextcloud 3.14159\n"
"Report-Msgid-Bugs-To: translations\\@example.com\n" "Report-Msgid-Bugs-To: translations\\@example.com\n"
"POT-Creation-Date: 2024-03-05 10:53+0000\n" "POT-Creation-Date: 2024-03-16 17:33+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -159,37 +159,41 @@ msgid "Import OPML file"
msgstr "" msgstr ""
#: /app/specialVueFakeDummyForL10nScript.js:37 #: /app/specialVueFakeDummyForL10nScript.js:37
msgid "Playback speed" msgid "Rate RePod ❤️"
msgstr "" msgstr ""
#: /app/specialVueFakeDummyForL10nScript.js:38 #: /app/specialVueFakeDummyForL10nScript.js:38
msgid "Are you sure you want to delete this subscription?" msgid "Playback speed"
msgstr "" msgstr ""
#: /app/specialVueFakeDummyForL10nScript.js:39 #: /app/specialVueFakeDummyForL10nScript.js:39
msgid "Error while removing the feed" msgid "Are you sure you want to delete this subscription?"
msgstr "" msgstr ""
#: /app/specialVueFakeDummyForL10nScript.js:40 #: /app/specialVueFakeDummyForL10nScript.js:40
msgid "Add a podcast" msgid "Error while removing the feed"
msgstr "" msgstr ""
#: /app/specialVueFakeDummyForL10nScript.js:41 #: /app/specialVueFakeDummyForL10nScript.js:41
msgid "Could not fetch subscriptions" msgid "Add a podcast"
msgstr "" msgstr ""
#: /app/specialVueFakeDummyForL10nScript.js:42 #: /app/specialVueFakeDummyForL10nScript.js:42
msgid "Find a podcast" msgid "Could not fetch subscriptions"
msgstr "" msgstr ""
#: /app/specialVueFakeDummyForL10nScript.js:43 #: /app/specialVueFakeDummyForL10nScript.js:43
msgid "Error loading feed" msgid "Find a podcast"
msgstr "" msgstr ""
#: /app/specialVueFakeDummyForL10nScript.js:44 #: /app/specialVueFakeDummyForL10nScript.js:44
msgid "Missing required app" msgid "Error loading feed"
msgstr "" msgstr ""
#: /app/specialVueFakeDummyForL10nScript.js:45 #: /app/specialVueFakeDummyForL10nScript.js:45
msgid "Missing required app"
msgstr ""
#: /app/specialVueFakeDummyForL10nScript.js:46
msgid "Install GPodder Sync" msgid "Install GPodder Sync"
msgstr "" msgstr ""