Compare commits
1 Commits
master
...
alatiera/n
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f50ea21499 |
@ -1,24 +1,89 @@
|
|||||||
include:
|
stages:
|
||||||
- project: 'gnome/citemplates'
|
- lint
|
||||||
file: 'flatpak/flatpak-ci-initiative-sdk-extensions.yml'
|
- test
|
||||||
# ref: ''
|
- review
|
||||||
|
|
||||||
|
variables:
|
||||||
|
BUNDLE: "org.gnome.Podcasts.Devel.flatpak"
|
||||||
|
|
||||||
flatpak:
|
flatpak:
|
||||||
image: 'registry.gitlab.gnome.org/gnome/gnome-runtime-images/rust_bundle:3.36'
|
image: "registry.gitlab.gnome.org/gnome/gnome-runtime-images/rust_bundle:master"
|
||||||
variables:
|
stage: "test"
|
||||||
MANIFEST_PATH: "org.gnome.Podcasts.Devel.json"
|
variables:
|
||||||
FLATPAK_MODULE: "gnome-podcasts"
|
MANIFEST_PATH: "org.gnome.Podcasts.Devel.json"
|
||||||
MESON_ARGS: "-Dprofile=development"
|
FLATPAK_MODULE: "gnome-podcasts"
|
||||||
APP_ID: "org.gnome.Podcasts.Devel"
|
CONFIGURE_ARGS: "-Dprofile=development"
|
||||||
RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo"
|
DBUS_ID: "org.gnome.Podcasts.Devel"
|
||||||
BUNDLE: "org.gnome.Podcasts.Devel.flatpak"
|
|
||||||
extends: '.flatpak'
|
script:
|
||||||
|
- flatpak-builder --stop-at=${FLATPAK_MODULE} app ${MANIFEST_PATH}
|
||||||
|
|
||||||
|
# Build the flatpak repo
|
||||||
|
- flatpak-builder --run app ${MANIFEST_PATH} meson --prefix=/app ${CONFIGURE_ARGS} _build
|
||||||
|
- flatpak-builder --run app ${MANIFEST_PATH} ninja -C _build install
|
||||||
|
|
||||||
|
# Run the tests
|
||||||
|
- |
|
||||||
|
xvfb-run -a -s "-screen 0 1024x768x24" \
|
||||||
|
flatpak-builder --run \
|
||||||
|
--env=CARGO_HOME="${CI_PROJECT_DIR}/target/cargo-home" \
|
||||||
|
--env=CARGO_TARGET_DIR="${CI_PROJECT_DIR}/target/" \
|
||||||
|
app ${MANIFEST_PATH} \
|
||||||
|
ninja -C _build test
|
||||||
|
|
||||||
|
# Create a flatpak bundle
|
||||||
|
- flatpak-builder --finish-only app ${MANIFEST_PATH}
|
||||||
|
- flatpak build-export repo app
|
||||||
|
- flatpak build-bundle repo ${BUNDLE} ${DBUS_ID}
|
||||||
|
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- $BUNDLE
|
||||||
|
expire_in: 2 days
|
||||||
|
|
||||||
|
cache:
|
||||||
|
key: "flatpak"
|
||||||
|
paths:
|
||||||
|
- .flatpak-builder/downloads/
|
||||||
|
- .flatpak-builder/git/
|
||||||
|
- target/
|
||||||
|
- target_test/
|
||||||
|
|
||||||
|
review:
|
||||||
|
stage: review
|
||||||
|
dependencies:
|
||||||
|
- flatpak
|
||||||
|
script:
|
||||||
|
- echo "Generating flatpak deployment"
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- $BUNDLE
|
||||||
|
expire_in: 30 days
|
||||||
|
environment:
|
||||||
|
name: review/$CI_COMMIT_REF_NAME
|
||||||
|
url: https://gitlab.gnome.org/$CI_PROJECT_PATH/-/jobs/$CI_JOB_ID/artifacts/raw/${BUNDLE}
|
||||||
|
on_stop: stop_review
|
||||||
|
except:
|
||||||
|
- master@World/podcasts
|
||||||
|
- tags
|
||||||
|
|
||||||
|
stop_review:
|
||||||
|
stage: review
|
||||||
|
script:
|
||||||
|
- echo "Stopping flatpak deployment"
|
||||||
|
when: manual
|
||||||
|
environment:
|
||||||
|
name: review/$CI_COMMIT_REF_NAME
|
||||||
|
action: stop
|
||||||
|
except:
|
||||||
|
- master@World/podcasts
|
||||||
|
- tags
|
||||||
|
|
||||||
# Configure and run rustfmt
|
# Configure and run rustfmt
|
||||||
# Exits and builds fails if on bad format
|
# Exits and builds fails if on bad format
|
||||||
rustfmt:
|
rustfmt:
|
||||||
image: "rust:slim"
|
image: "rust:slim"
|
||||||
stage: ".pre"
|
stage: "lint"
|
||||||
script:
|
script:
|
||||||
- rustup component add rustfmt
|
- rustup component add rustfmt
|
||||||
# Create blank versions of our configured files
|
# Create blank versions of our configured files
|
||||||
|
|||||||
32
CHANGELOG.md
32
CHANGELOG.md
@ -14,38 +14,6 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|||||||
|
|
||||||
### Removed:
|
### Removed:
|
||||||
|
|
||||||
## [0.4.7] - 2019-10-23
|
|
||||||
|
|
||||||
### Added:
|
|
||||||
- Improved appdata validation and meson tests World/podcasts!89
|
|
||||||
- The ability to export show subscriptions to opml files World/podcasts!77
|
|
||||||
- Support for feeds requiring authentication World/podcasts!120
|
|
||||||
|
|
||||||
### Changed:
|
|
||||||
|
|
||||||
- Episodes now have a checkmark to show whether or not they've been played World/podcasts!106
|
|
||||||
- Changed to how errors are shown when adding podcasts World/podcasts!108 World/podcasts!109 World/podcasts!110
|
|
||||||
- Improved integration of cargo and meson World/podcasts!94
|
|
||||||
- Refactored some macros for error handling World/podcasts!82
|
|
||||||
- Refactored the handling of styling changes World/podcasts!119
|
|
||||||
- Updated the icon to better match the HIG guidlines World/podcasts#102
|
|
||||||
- Made Podcasts use a GtkApplication subclass World/podcasts!113
|
|
||||||
- Updated the MPRIS permissions in order to remove a sandbox hole World/podcasts!124
|
|
||||||
- Bumped gtk and libhandy minimum versions
|
|
||||||
|
|
||||||
### Fixed:
|
|
||||||
|
|
||||||
- Rewind now works regardless if its the start or the end of the episode World/podcasts!83
|
|
||||||
- Typos in the README and CONTRIBUTING docs World/podcast!97 World/podcast!98 World/podcast!99 World/podcasts!121
|
|
||||||
- Show cover is reset properly now if there isn't an image World/podcasts#114
|
|
||||||
- Query pairs are no longer stripped from URLs World/podcasts!111
|
|
||||||
- Pause MPRIS button now works on KDE Plasma World/podcasts#115
|
|
||||||
- The playback widget now properly reflects the playback state on episode change World/podcasts!116
|
|
||||||
|
|
||||||
### Removed:
|
|
||||||
|
|
||||||
- All preferences World/podcast!104
|
|
||||||
|
|
||||||
## [0.4.6] - 2018-10-07
|
## [0.4.6] - 2018-10-07
|
||||||
|
|
||||||
### Added:
|
### Added:
|
||||||
|
|||||||
2898
Cargo.lock
generated
2898
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
12
meson.build
12
meson.build
@ -1,6 +1,6 @@
|
|||||||
project(
|
project(
|
||||||
'gnome-podcasts', 'rust',
|
'gnome-podcasts', 'rust',
|
||||||
version: '0.4.7',
|
version: '0.4.6',
|
||||||
license: 'GPLv3',
|
license: 'GPLv3',
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -12,7 +12,7 @@ dependency('glib-2.0', version: '>= 2.56')
|
|||||||
dependency('gio-2.0', version: '>= 2.56')
|
dependency('gio-2.0', version: '>= 2.56')
|
||||||
dependency('gdk-pixbuf-2.0')
|
dependency('gdk-pixbuf-2.0')
|
||||||
dependency('gtk+-3.0', version: '>= 3.24.11')
|
dependency('gtk+-3.0', version: '>= 3.24.11')
|
||||||
dependency('libhandy-0.0', version: '>= 0.0.13')
|
dependency('libhandy-0.0', version: '>= 0.0.11')
|
||||||
|
|
||||||
dependency('gstreamer-1.0', version: '>= 1.16')
|
dependency('gstreamer-1.0', version: '>= 1.16')
|
||||||
dependency('gstreamer-base-1.0', version: '>= 1.16')
|
dependency('gstreamer-base-1.0', version: '>= 1.16')
|
||||||
@ -40,14 +40,6 @@ else
|
|||||||
version_suffix = ''
|
version_suffix = ''
|
||||||
endif
|
endif
|
||||||
|
|
||||||
podcast_toml = files(
|
|
||||||
'Cargo.toml',
|
|
||||||
'Cargo.lock',
|
|
||||||
'podcasts-data/Cargo.toml',
|
|
||||||
'podcasts-downloader/Cargo.toml',
|
|
||||||
'podcasts-gtk/Cargo.toml',
|
|
||||||
)
|
|
||||||
|
|
||||||
application_id = 'org.gnome.Podcasts@0@'.format(profile)
|
application_id = 'org.gnome.Podcasts@0@'.format(profile)
|
||||||
i18n = import('i18n')
|
i18n = import('i18n')
|
||||||
gnome = import('gnome')
|
gnome = import('gnome')
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"app-id" : "org.gnome.Podcasts.Devel",
|
"app-id" : "org.gnome.Podcasts.Devel",
|
||||||
"runtime" : "org.gnome.Platform",
|
"runtime" : "org.gnome.Platform",
|
||||||
"runtime-version" : "3.36",
|
"runtime-version" : "master",
|
||||||
"sdk" : "org.gnome.Sdk",
|
"sdk" : "org.gnome.Sdk",
|
||||||
"sdk-extensions" : [
|
"sdk-extensions" : [
|
||||||
"org.freedesktop.Sdk.Extension.rust-stable"
|
"org.freedesktop.Sdk.Extension.rust-stable"
|
||||||
@ -25,8 +25,8 @@
|
|||||||
"--share=network"
|
"--share=network"
|
||||||
],
|
],
|
||||||
"env" : {
|
"env" : {
|
||||||
|
"RUSTFLAGS" : "--error-format=short --remap-path-prefix =../",
|
||||||
"CARGO_HOME" : "/run/build/Podcasts/cargo",
|
"CARGO_HOME" : "/run/build/Podcasts/cargo",
|
||||||
"RUSTFLAGS" : "",
|
|
||||||
"RUST_BACKTRACE" : "1"
|
"RUST_BACKTRACE" : "1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -50,7 +50,7 @@
|
|||||||
{
|
{
|
||||||
"type" : "git",
|
"type" : "git",
|
||||||
"url" : "https://source.puri.sm/Librem5/libhandy.git",
|
"url" : "https://source.puri.sm/Librem5/libhandy.git",
|
||||||
"tag" : "v0.0.13"
|
"commit" : "f5909a897f70143bdd2f89f47a63c1bf848330ce"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"app-id" : "org.gnome.Podcasts",
|
"app-id" : "org.gnome.Podcasts",
|
||||||
"runtime" : "org.gnome.Platform",
|
"runtime" : "org.gnome.Platform",
|
||||||
"runtime-version" : "3.36",
|
"runtime-version" : "master",
|
||||||
"sdk" : "org.gnome.Sdk",
|
"sdk" : "org.gnome.Sdk",
|
||||||
"sdk-extensions" : [
|
"sdk-extensions" : [
|
||||||
"org.freedesktop.Sdk.Extension.rust-stable"
|
"org.freedesktop.Sdk.Extension.rust-stable"
|
||||||
@ -27,6 +27,7 @@
|
|||||||
],
|
],
|
||||||
"env" : {
|
"env" : {
|
||||||
"CARGO_HOME" : "/run/build/Podcasts/cargo",
|
"CARGO_HOME" : "/run/build/Podcasts/cargo",
|
||||||
|
"RUSTFLAGS" : "--error-format=short --remap-path-prefix =../",
|
||||||
"RUST_BACKTRACE" : "1"
|
"RUST_BACKTRACE" : "1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -50,7 +51,7 @@
|
|||||||
{
|
{
|
||||||
"type" : "git",
|
"type" : "git",
|
||||||
"url" : "https://source.puri.sm/Librem5/libhandy.git",
|
"url" : "https://source.puri.sm/Librem5/libhandy.git",
|
||||||
"tag" : "v0.0.13"
|
"commit" : "f5909a897f70143bdd2f89f47a63c1bf848330ce"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@ -5,31 +5,31 @@ version = "0.1.0"
|
|||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
ammonia = "3.1.0"
|
ammonia = "3.0.0"
|
||||||
chrono = "0.4.11"
|
chrono = "0.4.9"
|
||||||
derive_builder = "0.9.0"
|
derive_builder = "0.8.0"
|
||||||
lazy_static = "1.4.0"
|
lazy_static = "1.4.0"
|
||||||
log = "0.4.8"
|
log = "0.4.8"
|
||||||
rayon = "1.3.1"
|
rayon = "1.2.0"
|
||||||
rfc822_sanitizer = "0.3.3"
|
rfc822_sanitizer = "0.3.3"
|
||||||
rss = "1.9.0"
|
rss = "1.8.0"
|
||||||
url = "2.1.1"
|
url = "2.1.0"
|
||||||
xdg = "2.2.0"
|
xdg = "2.2.0"
|
||||||
xml-rs = "0.8.3"
|
xml-rs = "0.8.0"
|
||||||
futures = "0.1.29"
|
futures = "0.1.29"
|
||||||
hyper = "0.12.35"
|
hyper = "0.12.35"
|
||||||
http = "0.1.19"
|
http = "0.1.19"
|
||||||
tokio = "0.1.22"
|
tokio = "0.1.22"
|
||||||
hyper-tls = "0.3.2"
|
hyper-tls = "0.3.2"
|
||||||
native-tls = "0.2.3"
|
native-tls = "0.2.3"
|
||||||
num_cpus = "1.13.0"
|
num_cpus = "1.10.1"
|
||||||
failure = "0.1.8"
|
failure = "0.1.6"
|
||||||
failure_derive = "0.1.8"
|
failure_derive = "0.1.6"
|
||||||
base64 = "0.12.2"
|
base64 = "0.10.1"
|
||||||
|
|
||||||
[dependencies.diesel]
|
[dependencies.diesel]
|
||||||
features = ["sqlite", "r2d2"]
|
features = ["sqlite", "r2d2"]
|
||||||
version = "1.4.5"
|
version = "1.4.3"
|
||||||
|
|
||||||
[dependencies.diesel_migrations]
|
[dependencies.diesel_migrations]
|
||||||
features = ["sqlite"]
|
features = ["sqlite"]
|
||||||
|
|||||||
@ -84,10 +84,7 @@ pub enum DataError {
|
|||||||
FeedRedirect(Source),
|
FeedRedirect(Source),
|
||||||
#[fail(display = "Feed is up to date")]
|
#[fail(display = "Feed is up to date")]
|
||||||
FeedNotModified(Source),
|
FeedNotModified(Source),
|
||||||
#[fail(
|
#[fail(display = "Error occured while Parsing an Episode. Reason: {}", reason)]
|
||||||
display = "Error occurred while Parsing an Episode. Reason: {}",
|
|
||||||
reason
|
|
||||||
)]
|
|
||||||
ParseEpisodeError { reason: String, parent_id: i32 },
|
ParseEpisodeError { reason: String, parent_id: i32 },
|
||||||
#[fail(display = "Episode was not changed and thus skipped.")]
|
#[fail(display = "Episode was not changed and thus skipped.")]
|
||||||
EpisodeNotChanged,
|
EpisodeNotChanged,
|
||||||
|
|||||||
@ -18,7 +18,7 @@
|
|||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
|
||||||
#![allow(clippy::unit_arg)]
|
#![cfg_attr(feature = "cargo-clippy", allow(unit_arg))]
|
||||||
//! Index Feeds.
|
//! Index Feeds.
|
||||||
|
|
||||||
use futures::future::*;
|
use futures::future::*;
|
||||||
@ -198,7 +198,7 @@ mod tests {
|
|||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
// Index the channels
|
// Index the channes
|
||||||
let stream_ = stream::iter_ok(feeds).for_each(|x| x.index());
|
let stream_ = stream::iter_ok(feeds).for_each(|x| x.index());
|
||||||
tokio::run(stream_.map_err(|_| ()));
|
tokio::run(stream_.map_err(|_| ()));
|
||||||
|
|
||||||
|
|||||||
@ -111,7 +111,7 @@ pub use crate::models::{Episode, EpisodeWidgetModel, Show, ShowCoverModel, Sourc
|
|||||||
/// It originates from the Tor-browser UA.
|
/// It originates from the Tor-browser UA.
|
||||||
pub const USER_AGENT: &str = "Mozilla/5.0 (Windows NT 6.1; rv:60.0) Gecko/20100101 Firefox/60.0";
|
pub const USER_AGENT: &str = "Mozilla/5.0 (Windows NT 6.1; rv:60.0) Gecko/20100101 Firefox/60.0";
|
||||||
|
|
||||||
/// [XDG Base Directory](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html) Paths.
|
/// [XDG Base Direcotory](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html) Paths.
|
||||||
#[allow(missing_debug_implementations)]
|
#[allow(missing_debug_implementations)]
|
||||||
pub mod xdg_dirs {
|
pub mod xdg_dirs {
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
@ -137,7 +137,7 @@ pub mod xdg_dirs {
|
|||||||
PODCASTS_XDG.create_cache_directory(PODCASTS_XDG.get_cache_home()).unwrap()
|
PODCASTS_XDG.create_cache_directory(PODCASTS_XDG.get_cache_home()).unwrap()
|
||||||
};
|
};
|
||||||
|
|
||||||
/// GNOME Podcasts Download Directory `PathBuf`.
|
/// GNOME Podcasts Download Direcotry `PathBuf`.
|
||||||
pub static ref DL_DIR: PathBuf = {
|
pub static ref DL_DIR: PathBuf = {
|
||||||
PODCASTS_XDG.create_data_directory("Downloads").unwrap()
|
PODCASTS_XDG.create_data_directory("Downloads").unwrap()
|
||||||
};
|
};
|
||||||
|
|||||||
@ -255,7 +255,7 @@ impl NewEpisodeMinimal {
|
|||||||
return Err(err);
|
return Err(err);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Default to rfc2822 representation of epoch 0.
|
// Default to rfc2822 represantation of epoch 0.
|
||||||
let date = parse_rfc822(item.pub_date().unwrap_or("Thu, 1 Jan 1970 00:00:00 +0000"));
|
let date = parse_rfc822(item.pub_date().unwrap_or("Thu, 1 Jan 1970 00:00:00 +0000"));
|
||||||
// Should treat information from the rss feeds as invalid by default.
|
// Should treat information from the rss feeds as invalid by default.
|
||||||
// Case: "Thu, 05 Aug 2016 06:00:00 -0400" <-- Actually that was friday.
|
// Case: "Thu, 05 Aug 2016 06:00:00 -0400" <-- Actually that was friday.
|
||||||
@ -342,7 +342,7 @@ mod tests {
|
|||||||
use std::io::BufReader;
|
use std::io::BufReader;
|
||||||
|
|
||||||
// TODO: Add tests for other feeds too.
|
// TODO: Add tests for other feeds too.
|
||||||
// Especially if you find an *interesting* generated feed.
|
// Especially if you find an *intresting* generated feed.
|
||||||
|
|
||||||
// Known prebuilt expected objects.
|
// Known prebuilt expected objects.
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
|
|||||||
@ -216,10 +216,7 @@ impl Source {
|
|||||||
self = self.save()?;
|
self = self.save()?;
|
||||||
|
|
||||||
debug!("Updated Source: {:#?}", &self);
|
debug!("Updated Source: {:#?}", &self);
|
||||||
info!(
|
info!("Feed url of Source {}, was updated succesfully.", self.id());
|
||||||
"Feed url of Source {}, was updated successfully.",
|
|
||||||
self.id()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(self)
|
Ok(self)
|
||||||
|
|||||||
@ -43,7 +43,7 @@ use failure::Error;
|
|||||||
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||||
// FIXME: Make it a Diesel model
|
// FIXME: Make it a Diesel model
|
||||||
/// Represents an `outline` xml element as per the `OPML` [specification][spec]
|
/// Represents an `outline` xml element as per the `OPML` [specification][spec]
|
||||||
/// not `RSS` related sub-elements are omitted.
|
/// not `RSS` related sub-elements are ommited.
|
||||||
///
|
///
|
||||||
/// [spec]: http://dev.opml.org/spec2.html
|
/// [spec]: http://dev.opml.org/spec2.html
|
||||||
pub struct Opml {
|
pub struct Opml {
|
||||||
@ -82,7 +82,7 @@ pub fn import_from_file<P: AsRef<Path>>(path: P) -> Result<Vec<Source>, DataErro
|
|||||||
import_to_db(content.as_slice()).map_err(From::from)
|
import_to_db(content.as_slice()).map_err(From::from)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Export a file to `P`, taking the feeds from the database and outputting
|
/// Export a file to `P`, taking the feeds from the database and outputing
|
||||||
/// them in opml format.
|
/// them in opml format.
|
||||||
pub fn export_from_db<P: AsRef<Path>>(path: P, export_title: &str) -> Result<(), Error> {
|
pub fn export_from_db<P: AsRef<Path>>(path: P, export_title: &str) -> Result<(), Error> {
|
||||||
let file = File::create(path)?;
|
let file = File::create(path)?;
|
||||||
@ -163,7 +163,7 @@ pub fn export_to_file<F: Write>(file: F, export_title: &str) -> Result<(), Error
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Extracts the `outline` elements from a reader `R` and returns a `HashSet` of `Opml` structs.
|
/// Extracts the `outline` elemnts from a reader `R` and returns a `HashSet` of `Opml` structs.
|
||||||
pub fn extract_sources<R: Read>(reader: R) -> Result<HashSet<Opml>, reader::Error> {
|
pub fn extract_sources<R: Read>(reader: R) -> Result<HashSet<Opml>, reader::Error> {
|
||||||
let mut list = HashSet::new();
|
let mut list = HashSet::new();
|
||||||
let parser = reader::EventReader::new(reader);
|
let parser = reader::EventReader::new(reader);
|
||||||
|
|||||||
@ -56,7 +56,7 @@ fn download_checker() -> Result<(), DataError> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Delete watched `episodes` that have exceeded their lifetime after played.
|
/// Delete watched `episodes` that have exceded their liftime after played.
|
||||||
fn played_cleaner(cleanup_date: DateTime<Utc>) -> Result<(), DataError> {
|
fn played_cleaner(cleanup_date: DateTime<Utc>) -> Result<(), DataError> {
|
||||||
let mut episodes = dbqueries::get_played_cleaner_episodes()?;
|
let mut episodes = dbqueries::get_played_cleaner_episodes()?;
|
||||||
let now_utc = cleanup_date.timestamp() as i32;
|
let now_utc = cleanup_date.timestamp() as i32;
|
||||||
@ -68,7 +68,7 @@ fn played_cleaner(cleanup_date: DateTime<Utc>) -> Result<(), DataError> {
|
|||||||
let limit = ep.played().unwrap();
|
let limit = ep.played().unwrap();
|
||||||
if now_utc > limit {
|
if now_utc > limit {
|
||||||
delete_local_content(ep)
|
delete_local_content(ep)
|
||||||
.map(|_| info!("Episode {:?} was deleted successfully.", ep.local_uri()))
|
.map(|_| info!("Episode {:?} was deleted succesfully.", ep.local_uri()))
|
||||||
.map_err(|err| error!("Error: {}", err))
|
.map_err(|err| error!("Error: {}", err))
|
||||||
.map_err(|_| error!("Failed to delete file: {:?}", ep.local_uri()))
|
.map_err(|_| error!("Failed to delete file: {:?}", ep.local_uri()))
|
||||||
.ok();
|
.ok();
|
||||||
@ -144,11 +144,11 @@ pub fn get_download_folder(pd_title: &str) -> Result<String, DataError> {
|
|||||||
// TODO: Write Tests
|
// TODO: Write Tests
|
||||||
pub fn delete_show(pd: &Show) -> Result<(), DataError> {
|
pub fn delete_show(pd: &Show) -> Result<(), DataError> {
|
||||||
dbqueries::remove_feed(pd)?;
|
dbqueries::remove_feed(pd)?;
|
||||||
info!("{} was removed successfully.", pd.title());
|
info!("{} was removed succesfully.", pd.title());
|
||||||
|
|
||||||
let fold = get_download_folder(pd.title())?;
|
let fold = get_download_folder(pd.title())?;
|
||||||
fs::remove_dir_all(&fold)?;
|
fs::remove_dir_all(&fold)?;
|
||||||
info!("All the content at, {} was removed successfully", &fold);
|
info!("All the content at, {} was removed succesfully", &fold);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -161,6 +161,7 @@ use crate::Feed;
|
|||||||
pub fn get_feed(file_path: &str, id: i32) -> Feed {
|
pub fn get_feed(file_path: &str, id: i32) -> Feed {
|
||||||
use crate::feed::FeedBuilder;
|
use crate::feed::FeedBuilder;
|
||||||
use rss::Channel;
|
use rss::Channel;
|
||||||
|
use std::fs;
|
||||||
use std::io::BufReader;
|
use std::io::BufReader;
|
||||||
|
|
||||||
// open the xml file
|
// open the xml file
|
||||||
|
|||||||
@ -5,13 +5,14 @@ version = "0.1.0"
|
|||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
error-chain = "0.12.1"
|
||||||
log = "0.4.8"
|
log = "0.4.8"
|
||||||
mime_guess = "2.0.3"
|
mime_guess = "2.0.1"
|
||||||
reqwest = "0.9.22"
|
reqwest = "0.9.22"
|
||||||
tempdir = "0.3.7"
|
tempdir = "0.3.7"
|
||||||
glob = "0.3.0"
|
glob = "0.3.0"
|
||||||
failure = "0.1.8"
|
failure = "0.1.6"
|
||||||
failure_derive = "0.1.8"
|
failure_derive = "0.1.6"
|
||||||
|
|
||||||
[dependencies.podcasts-data]
|
[dependencies.podcasts-data]
|
||||||
path = "../podcasts-data"
|
path = "../podcasts-data"
|
||||||
|
|||||||
@ -54,7 +54,7 @@ pub trait DownloadProgress {
|
|||||||
// Sorry to those who will have to work with that code.
|
// Sorry to those who will have to work with that code.
|
||||||
// Would much rather use a crate,
|
// Would much rather use a crate,
|
||||||
// or bindings for a lib like youtube-dl(python),
|
// or bindings for a lib like youtube-dl(python),
|
||||||
// But can't seem to find one.
|
// But cant seem to find one.
|
||||||
// TODO: Write unit-tests.
|
// TODO: Write unit-tests.
|
||||||
fn download_into(
|
fn download_into(
|
||||||
dir: &str,
|
dir: &str,
|
||||||
@ -64,7 +64,7 @@ fn download_into(
|
|||||||
) -> Result<String, DownloadError> {
|
) -> Result<String, DownloadError> {
|
||||||
info!("GET request to: {}", url);
|
info!("GET request to: {}", url);
|
||||||
// Haven't included the loop check as
|
// Haven't included the loop check as
|
||||||
// Steal the Stars would trigger it as
|
// Steal the Stars would tigger it as
|
||||||
// it has a loop back before giving correct url
|
// it has a loop back before giving correct url
|
||||||
let policy = RedirectPolicy::custom(|attempt| {
|
let policy = RedirectPolicy::custom(|attempt| {
|
||||||
info!("Redirect Attempt URL: {:?}", attempt.url());
|
info!("Redirect Attempt URL: {:?}", attempt.url());
|
||||||
@ -104,7 +104,7 @@ fn download_into(
|
|||||||
.and_then(|h| h.to_str().ok())
|
.and_then(|h| h.to_str().ok())
|
||||||
.map(From::from);
|
.map(From::from);
|
||||||
|
|
||||||
ct_len.map(|x| info!("File Length: {}", x));
|
ct_len.map(|x| info!("File Lenght: {}", x));
|
||||||
ct_type.map(|x| info!("Content Type: {}", x));
|
ct_type.map(|x| info!("Content Type: {}", x));
|
||||||
|
|
||||||
let ext = get_ext(ct_type).unwrap_or_else(|| String::from("unknown"));
|
let ext = get_ext(ct_type).unwrap_or_else(|| String::from("unknown"));
|
||||||
@ -131,7 +131,7 @@ fn download_into(
|
|||||||
let target = format!("{}/{}.{}", dir, file_title, ext);
|
let target = format!("{}/{}.{}", dir, file_title, ext);
|
||||||
// Rename/move the tempfile into a permanent place upon success.
|
// Rename/move the tempfile into a permanent place upon success.
|
||||||
rename(out_file, &target)?;
|
rename(out_file, &target)?;
|
||||||
info!("Downloading of {} completed successfully.", &target);
|
info!("Downloading of {} completed succesfully.", &target);
|
||||||
Ok(target)
|
Ok(target)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -153,7 +153,7 @@ fn get_ext(content: Option<&str>) -> Option<String> {
|
|||||||
// TODO: Refactor... Somehow.
|
// TODO: Refactor... Somehow.
|
||||||
/// Handles the I/O of fetching a remote file and saving into a Buffer and A
|
/// Handles the I/O of fetching a remote file and saving into a Buffer and A
|
||||||
/// File.
|
/// File.
|
||||||
#[allow(clippy::needless_pass_by_value)]
|
#[allow(needless_pass_by_value)]
|
||||||
fn save_io(
|
fn save_io(
|
||||||
file: &str,
|
file: &str,
|
||||||
resp: &mut reqwest::Response,
|
resp: &mut reqwest::Response,
|
||||||
@ -219,10 +219,10 @@ pub fn get_episode(
|
|||||||
progress,
|
progress,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
// If download succeeds set episode local_uri to dlpath.
|
// If download succedes set episode local_uri to dlpath.
|
||||||
ep.set_local_uri(Some(&path));
|
ep.set_local_uri(Some(&path));
|
||||||
|
|
||||||
// Over-write episode length
|
// Over-write episode lenght
|
||||||
let size = fs::metadata(path);
|
let size = fs::metadata(path);
|
||||||
if let Ok(s) = size {
|
if let Ok(s) = size {
|
||||||
ep.set_length(Some(s.len() as i32))
|
ep.set_length(Some(s.len() as i32))
|
||||||
|
|||||||
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
#![recursion_limit = "1024"]
|
#![recursion_limit = "1024"]
|
||||||
#![allow(unknown_lints)]
|
#![allow(unknown_lints)]
|
||||||
#![allow(clippy::blacklisted_name)]
|
#![cfg_attr(feature = "cargo-clippy", allow(blacklisted_name))]
|
||||||
// Enable lint group collections
|
// Enable lint group collections
|
||||||
#![warn(nonstandard_style, edition_2018, rust_2018_idioms, bad_style, unused)]
|
#![warn(nonstandard_style, edition_2018, rust_2018_idioms, bad_style, unused)]
|
||||||
// standalone lints
|
// standalone lints
|
||||||
|
|||||||
@ -5,47 +5,50 @@ version = "0.1.0"
|
|||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
chrono = "0.4.11"
|
chrono = "0.4.9"
|
||||||
crossbeam-channel = "0.3.9"
|
crossbeam-channel = "0.3.9"
|
||||||
gdk = "0.12.1"
|
gdk = "0.11.0"
|
||||||
gdk-pixbuf = "0.8.0"
|
gdk-pixbuf = "0.7.0"
|
||||||
gobject-sys = "0.9.1"
|
gobject-sys = "0.9.0"
|
||||||
glib-sys = "0.9.1"
|
glib-sys = "0.9.0"
|
||||||
gst = { version = "0.15.7", package = "gstreamer" }
|
gst = { version = "0.14.0", package = "gstreamer" }
|
||||||
gst-player = { version = "0.15.5", package = "gstreamer-player" }
|
gst-player = { version = "0.14.0", package = "gstreamer-player" }
|
||||||
humansize = "1.1.0"
|
humansize = "1.1.0"
|
||||||
lazy_static = "1.4.0"
|
lazy_static = "1.4.0"
|
||||||
log = "0.4.8"
|
log = "0.4.8"
|
||||||
loggerv = "0.7.2"
|
loggerv = "0.7.2"
|
||||||
open = "1.4.0"
|
open = "1.3.2"
|
||||||
rayon = "1.3.1"
|
rayon = "1.2.0"
|
||||||
url = "2.1.0"
|
url = "2.1.0"
|
||||||
failure = "0.1.8"
|
failure = "0.1.6"
|
||||||
failure_derive = "0.1.8"
|
failure_derive = "0.1.6"
|
||||||
fragile = "1.0.0"
|
fragile = "0.3.0"
|
||||||
regex = "1.3.9"
|
regex = "1.3.1"
|
||||||
reqwest = "0.9.22"
|
reqwest = "0.9.22"
|
||||||
serde_json = "1.0.55"
|
serde_json = "1.0.41"
|
||||||
html2text = "0.1.12"
|
# html2text = "0.1.8"
|
||||||
mpris-player = "0.5.0"
|
html2text = { git = "https://github.com/jugglerchris/rust-html2text" }
|
||||||
pango = "0.8.0"
|
mpris-player = "0.4.0"
|
||||||
glib = "0.9.3"
|
|
||||||
|
|
||||||
[dependencies.gettext-rs]
|
[dependencies.gettext-rs]
|
||||||
git = "https://github.com/danigm/gettext-rs"
|
git = "https://github.com/danigm/gettext-rs"
|
||||||
branch = "no-gettext"
|
branch = "no-gettext"
|
||||||
features = ["gettext-system"]
|
features = ["gettext-system"]
|
||||||
|
|
||||||
|
[dependencies.glib]
|
||||||
|
features = ["subclassing"]
|
||||||
|
version = "0.8.2"
|
||||||
|
|
||||||
[dependencies.gio]
|
[dependencies.gio]
|
||||||
features = ["v2_50"]
|
features = ["v2_50", "subclassing"]
|
||||||
version = "0.8.1"
|
version = "0.7.0"
|
||||||
|
|
||||||
[dependencies.gtk]
|
[dependencies.gtk]
|
||||||
features = ["v3_24"]
|
features = ["v3_24", "subclassing"]
|
||||||
version = "0.8.1"
|
version = "0.7.0"
|
||||||
|
|
||||||
[dependencies.libhandy]
|
[dependencies.libhandy]
|
||||||
version = "0.5.0"
|
version = "0.4.0"
|
||||||
features = [ "v0_0_10"]
|
features = [ "v0_0_10"]
|
||||||
|
|
||||||
# [dependencies.mpris-player]
|
# [dependencies.mpris-player]
|
||||||
|
|||||||
@ -23,5 +23,3 @@ pt_BR
|
|||||||
sk
|
sk
|
||||||
sv
|
sv
|
||||||
tr
|
tr
|
||||||
uk
|
|
||||||
zh_CN
|
|
||||||
|
|||||||
@ -13,8 +13,6 @@ podcasts-gtk/resources/gtk/help-overlay.ui
|
|||||||
podcasts-gtk/resources/gtk/home_episode.ui
|
podcasts-gtk/resources/gtk/home_episode.ui
|
||||||
podcasts-gtk/resources/gtk/home_view.ui
|
podcasts-gtk/resources/gtk/home_view.ui
|
||||||
podcasts-gtk/resources/gtk/inapp_notif.ui
|
podcasts-gtk/resources/gtk/inapp_notif.ui
|
||||||
podcasts-gtk/resources/gtk/player_dialog.ui
|
|
||||||
podcasts-gtk/resources/gtk/player_rate.ui
|
|
||||||
podcasts-gtk/resources/gtk/player_toolbar.ui
|
podcasts-gtk/resources/gtk/player_toolbar.ui
|
||||||
podcasts-gtk/resources/gtk/secondary_menu.ui
|
podcasts-gtk/resources/gtk/secondary_menu.ui
|
||||||
podcasts-gtk/resources/gtk/show_menu.ui
|
podcasts-gtk/resources/gtk/show_menu.ui
|
||||||
@ -44,4 +42,3 @@ podcasts-gtk/src/widgets/player.rs
|
|||||||
podcasts-gtk/src/widgets/show_menu.rs
|
podcasts-gtk/src/widgets/show_menu.rs
|
||||||
podcasts-gtk/src/widgets/show.rs
|
podcasts-gtk/src/widgets/show.rs
|
||||||
podcasts-gtk/src/widgets/shows_view.rs
|
podcasts-gtk/src/widgets/shows_view.rs
|
||||||
podcasts-gtk/src/window.rs
|
|
||||||
|
|||||||
@ -35,7 +35,7 @@ msgstr "Amplada de l'última finestra principal oberta"
|
|||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:31
|
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:31
|
||||||
msgid "Maximized state of the last open main window"
|
msgid "Maximized state of the last open main window"
|
||||||
msgstr "Estat de maximització de l'última finestra principal oberta"
|
msgstr "Estat de maximització de l'ultima finestra principal oberta"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:36
|
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:36
|
||||||
msgid "Enable or disable dark theme"
|
msgid "Enable or disable dark theme"
|
||||||
|
|||||||
@ -8,16 +8,16 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: podcasts master\n"
|
"Project-Id-Version: podcasts master\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
||||||
"POT-Creation-Date: 2020-04-06 16:50+0000\n"
|
"POT-Creation-Date: 2019-02-02 15:17+0000\n"
|
||||||
"PO-Revision-Date: 2020-05-09 16:54+0200\n"
|
"PO-Revision-Date: 2019-03-09 17:13+0100\n"
|
||||||
"Last-Translator: Onno Giesmann <nutzer3105@gmail.com>\n"
|
"Last-Translator: Tim Sabsch <tim@sabsch.com>\n"
|
||||||
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
|
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
|
||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Poedit 2.3\n"
|
"X-Generator: Poedit 2.2.1\n"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
||||||
msgid "Top position of the last open main window"
|
msgid "Top position of the last open main window"
|
||||||
@ -71,8 +71,8 @@ msgstr "Zeitintervall zwischen automatischen Löschvorgängen"
|
|||||||
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:158 podcasts-gtk/src/app.rs:353
|
#: podcasts-gtk/src/app.rs:124 podcasts-gtk/src/app.rs:455
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:56 podcasts-gtk/src/window.rs:82
|
#: podcasts-gtk/src/widgets/aboutdialog.rs:56
|
||||||
msgid "Podcasts"
|
msgid "Podcasts"
|
||||||
msgstr "Podcasts"
|
msgstr "Podcasts"
|
||||||
|
|
||||||
@ -81,6 +81,11 @@ msgstr "Podcasts"
|
|||||||
msgid "Listen to your favorite podcasts, right from your desktop."
|
msgid "Listen to your favorite podcasts, right from your desktop."
|
||||||
msgstr "Hören Sie Ihre Lieblings-Podcasts direkt in Ihrer Arbeitsumgebung."
|
msgstr "Hören Sie Ihre Lieblings-Podcasts direkt in Ihrer Arbeitsumgebung."
|
||||||
|
|
||||||
|
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
|
||||||
|
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:6
|
||||||
|
msgid "@icon@"
|
||||||
|
msgstr "@icon@"
|
||||||
|
|
||||||
#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
|
#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:13
|
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:13
|
||||||
msgid "Podcast;RSS;"
|
msgid "Podcast;RSS;"
|
||||||
@ -90,7 +95,7 @@ msgstr "Podcast;RSS;"
|
|||||||
msgid "Podcast app for GNOME"
|
msgid "Podcast app for GNOME"
|
||||||
msgstr "Podcast-Anwendung für GNOME"
|
msgstr "Podcast-Anwendung für GNOME"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:84
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:77
|
||||||
msgid "Jordan Petridis"
|
msgid "Jordan Petridis"
|
||||||
msgstr "Jordan Petridis"
|
msgstr "Jordan Petridis"
|
||||||
|
|
||||||
@ -116,23 +121,19 @@ msgstr "Neue Podcasts mittels Quellen-Adresse hinzufügen"
|
|||||||
msgid "Import shows from another device"
|
msgid "Import shows from another device"
|
||||||
msgstr "Podcasts von einem anderen Gerät importieren"
|
msgstr "Podcasts von einem anderen Gerät importieren"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:79
|
#: podcasts-gtk/resources/gtk/episode_widget.ui:180
|
||||||
msgid "You’ve already listened to this episode."
|
|
||||||
msgstr "Sie haben sich diese Folge bereits angehört."
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:208
|
|
||||||
msgid "Calculating episode size…"
|
msgid "Calculating episode size…"
|
||||||
msgstr "Größe der Folge wird ermittelt …"
|
msgstr "Größe der Folge wird ermittelt …"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:248
|
#: podcasts-gtk/resources/gtk/episode_widget.ui:220
|
||||||
msgid "Play this episode"
|
msgid "Play this episode"
|
||||||
msgstr "Diese Folge abspielen"
|
msgstr "Diese Folge abspielen"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:269
|
#: podcasts-gtk/resources/gtk/episode_widget.ui:241
|
||||||
msgid "Cancel the download process"
|
msgid "Cancel the download process"
|
||||||
msgstr "Herunterladen abbrechen"
|
msgstr "Herunterladen abbrechen"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:292
|
#: podcasts-gtk/resources/gtk/episode_widget.ui:264
|
||||||
msgid "Download this episode"
|
msgid "Download this episode"
|
||||||
msgstr "Diese Folge herunterladen"
|
msgstr "Diese Folge herunterladen"
|
||||||
|
|
||||||
@ -149,15 +150,19 @@ msgid "_Export Shows"
|
|||||||
msgstr "Podcasts e_xportieren"
|
msgstr "Podcasts e_xportieren"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/hamburger.ui:22
|
#: podcasts-gtk/resources/gtk/hamburger.ui:22
|
||||||
|
msgid "_Preferences"
|
||||||
|
msgstr "_Einstellungen"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/hamburger.ui:27
|
||||||
msgid "_Keyboard Shortcuts"
|
msgid "_Keyboard Shortcuts"
|
||||||
msgstr "Tasten_kürzel"
|
msgstr "Tasten_kürzel"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/hamburger.ui:30
|
#: podcasts-gtk/resources/gtk/hamburger.ui:35
|
||||||
msgid "_About Podcasts"
|
msgid "_About Podcasts"
|
||||||
msgstr "Info zu _Podcasts"
|
msgstr "Info zu _Podcasts"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:186
|
#: podcasts-gtk/resources/gtk/headerbar.ui:189
|
||||||
msgid "Add a new feed"
|
msgid "Add a new feed"
|
||||||
msgstr "Neue Quelle hinzufügen"
|
msgstr "Neue Quelle hinzufügen"
|
||||||
|
|
||||||
@ -169,11 +174,15 @@ msgstr "Hinzuzufügende Quellen-Adresse eingeben"
|
|||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Hinzufügen"
|
msgstr "Hinzufügen"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:171
|
#: podcasts-gtk/resources/gtk/headerbar.ui:133
|
||||||
|
msgid "You are already subscribed to that feed!"
|
||||||
|
msgstr "Sie haben diese Quelle bereits abonniert!"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/headerbar.ui:169
|
||||||
msgid "Show Title"
|
msgid "Show Title"
|
||||||
msgstr "Titel anzeigen"
|
msgstr "Titel anzeigen"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:207
|
#: podcasts-gtk/resources/gtk/headerbar.ui:210
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr "Zurück"
|
msgstr "Zurück"
|
||||||
|
|
||||||
@ -188,6 +197,11 @@ msgstr "Auf neue Folgen prüfen"
|
|||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/help-overlay.ui:25
|
#: podcasts-gtk/resources/gtk/help-overlay.ui:25
|
||||||
msgctxt "shortcut window"
|
msgctxt "shortcut window"
|
||||||
|
msgid "Preferences"
|
||||||
|
msgstr "Einstellungen"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/help-overlay.ui:32
|
||||||
|
msgctxt "shortcut window"
|
||||||
msgid "Quit the application"
|
msgid "Quit the application"
|
||||||
msgstr "Die Anwendung beenden"
|
msgstr "Die Anwendung beenden"
|
||||||
|
|
||||||
@ -219,55 +233,72 @@ msgstr "Eine anwendungsinterne Aktionsmeldung"
|
|||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Rückgängig"
|
msgstr "Rückgängig"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_dialog.ui:14
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:72
|
||||||
msgid "Now Playing"
|
|
||||||
msgstr "Läuft gerade"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:32
|
|
||||||
msgid "Change the playback speed"
|
|
||||||
msgstr "Die Wiedergabegeschwindigkeit ändern"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:47
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:122
|
|
||||||
msgid "1.00×"
|
|
||||||
msgstr "1,00×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:86
|
|
||||||
msgid "1.50×"
|
|
||||||
msgstr "1,50×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:90
|
|
||||||
msgid "1.5 speed rate"
|
|
||||||
msgstr "1,5-fache Geschwindigkeit"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:104
|
|
||||||
msgid "1.25×"
|
|
||||||
msgstr "1,25×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:108
|
|
||||||
msgid "1.25 speed rate"
|
|
||||||
msgstr "1,25-fache Geschwindigkeit"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:126
|
|
||||||
msgid "Normal speed"
|
|
||||||
msgstr "Normale Geschwindigkeit"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:97
|
|
||||||
msgid "Rewind 10 seconds"
|
msgid "Rewind 10 seconds"
|
||||||
msgstr "10 Sekunden zurückspulen"
|
msgstr "10 Sekunden zurückspulen"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:112
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:87
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Wiedergeben"
|
msgstr "Wiedergeben"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:128
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:103
|
||||||
msgid "Pause"
|
msgid "Pause"
|
||||||
msgstr "Pause"
|
msgstr "Pause"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:144
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:119
|
||||||
msgid "Fast forward 10 seconds"
|
msgid "Fast forward 10 seconds"
|
||||||
msgstr "10 Sekunden vorspulen"
|
msgstr "10 Sekunden vorspulen"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:285
|
||||||
|
msgid "Change the playback speed"
|
||||||
|
msgstr "Die Wiedergabegeschwindigkeit ändern"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:300
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:380
|
||||||
|
msgid "1.00×"
|
||||||
|
msgstr "1,00×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:344
|
||||||
|
msgid "1.50×"
|
||||||
|
msgstr "1,50×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:348
|
||||||
|
msgid "1.5 speed rate"
|
||||||
|
msgstr "1,5-fache Geschwindigkeit"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:362
|
||||||
|
msgid "1.25×"
|
||||||
|
msgstr "1,25×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:366
|
||||||
|
msgid "1.25 speed rate"
|
||||||
|
msgstr "1,25-fache Geschwindigkeit"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:384
|
||||||
|
msgid "Normal speed"
|
||||||
|
msgstr "Normale Geschwidigkeit"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:42
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:295
|
||||||
|
msgid "Preferences"
|
||||||
|
msgstr "Einstellungen"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:76
|
||||||
|
msgid "Appearance"
|
||||||
|
msgstr "Erscheinungsbild"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:120
|
||||||
|
msgid "Dark Theme"
|
||||||
|
msgstr "Dunkles Thema"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:166
|
||||||
|
msgid "Delete played episodes"
|
||||||
|
msgstr "Angehörte Folgen löschen"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:211
|
||||||
|
msgid "After"
|
||||||
|
msgstr "Nach"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
||||||
msgid "_Mark All Episodes as Played"
|
msgid "_Mark All Episodes as Played"
|
||||||
msgstr "Alle Folgen als angehört _markieren"
|
msgstr "Alle Folgen als angehört _markieren"
|
||||||
@ -292,14 +323,38 @@ msgstr "Alle als angehört markieren"
|
|||||||
msgid "Unsubscribe"
|
msgid "Unsubscribe"
|
||||||
msgstr "Abbestellen"
|
msgstr "Abbestellen"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/show_widget.ui:99
|
#: podcasts-gtk/src/app.rs:369
|
||||||
msgid "Read More"
|
|
||||||
msgstr "Weiterlesen"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/app.rs:287
|
|
||||||
msgid "Fetching new episodes"
|
msgid "Fetching new episodes"
|
||||||
msgstr "Neue Folgen werden abgerufen"
|
msgstr "Neue Folgen werden abgerufen"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:117
|
||||||
|
msgid "You are already subscribed to this show"
|
||||||
|
msgstr "Sie haben diese Show nun abonniert"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:125
|
||||||
|
msgid "Invalid URL"
|
||||||
|
msgstr "Ungültige Adresse"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:78
|
||||||
|
msgid "Seconds"
|
||||||
|
msgstr "Sekunden"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:79
|
||||||
|
msgid "Minutes"
|
||||||
|
msgstr "Minuten"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:80
|
||||||
|
msgid "Hours"
|
||||||
|
msgstr "Stunden"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:81
|
||||||
|
msgid "Days"
|
||||||
|
msgstr "Tage"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:82
|
||||||
|
msgid "Weeks"
|
||||||
|
msgstr "Wochen"
|
||||||
|
|
||||||
#: podcasts-gtk/src/stacks/content.rs:54
|
#: podcasts-gtk/src/stacks/content.rs:54
|
||||||
msgid "New"
|
msgid "New"
|
||||||
msgstr "Neu"
|
msgstr "Neu"
|
||||||
@ -308,43 +363,43 @@ msgstr "Neu"
|
|||||||
msgid "Shows"
|
msgid "Shows"
|
||||||
msgstr "Podcasts"
|
msgstr "Podcasts"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:398
|
#: podcasts-gtk/src/utils.rs:377
|
||||||
msgid "Select the file from which to you want to import shows."
|
msgid "Select the file from which to you want to import shows."
|
||||||
msgstr "Wählen Sie die Datei aus, aus der Sie Podcasts importieren wollen."
|
msgstr "Wählen Sie die Datei aus, aus der Sie Shows importieren wollen."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:401
|
#: podcasts-gtk/src/utils.rs:380
|
||||||
msgid "_Import"
|
msgid "_Import"
|
||||||
msgstr "_Importieren"
|
msgstr "_Importieren"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:410 podcasts-gtk/src/utils.rs:457
|
#: podcasts-gtk/src/utils.rs:389 podcasts-gtk/src/utils.rs:435
|
||||||
msgid "OPML file"
|
msgid "OPML file"
|
||||||
msgstr "OPML-Datei"
|
msgstr "OPML-Datei"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:427
|
#: podcasts-gtk/src/utils.rs:406
|
||||||
msgid "Failed to parse the imported file"
|
msgid "Failed to parse the imported file"
|
||||||
msgstr "Die importierte Datei konnte nicht ausgewertet werden"
|
msgstr "Die importierte Datei konnte nicht ausgewertet werden"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:432 podcasts-gtk/src/utils.rs:475
|
#: podcasts-gtk/src/utils.rs:411 podcasts-gtk/src/utils.rs:453
|
||||||
msgid "Selected file could not be accessed."
|
msgid "Selected file could not be accessed."
|
||||||
msgstr "Auf die gewählte Datei konnte nicht zugegriffen werden."
|
msgstr "Auf die gewählte Datei konnte nicht zugegriffen werden."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:445
|
#: podcasts-gtk/src/utils.rs:423
|
||||||
msgid "Export shows to…"
|
msgid "Export shows to…"
|
||||||
msgstr "Podcasts exportieren nach …"
|
msgstr "Podcasts exportieren nach …"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:448
|
#: podcasts-gtk/src/utils.rs:426
|
||||||
msgid "_Export"
|
msgid "_Export"
|
||||||
msgstr "E_xportieren"
|
msgstr "E_xportieren"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:449
|
#: podcasts-gtk/src/utils.rs:427
|
||||||
msgid "_Cancel"
|
msgid "_Cancel"
|
||||||
msgstr "A_bbrechen"
|
msgstr "A_bbrechen"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:469
|
#: podcasts-gtk/src/utils.rs:447
|
||||||
msgid "GNOME Podcasts Subscriptions"
|
msgid "GNOME Podcasts Subscriptions"
|
||||||
msgstr "GNOME Podcasts Abonnements"
|
msgstr "GNOME Podcasts Abonnements"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:470
|
#: podcasts-gtk/src/utils.rs:448
|
||||||
msgid "Failed to export podcasts"
|
msgid "Failed to export podcasts"
|
||||||
msgstr "Export der Podcasts ist fehlgeschlagen"
|
msgstr "Export der Podcasts ist fehlgeschlagen"
|
||||||
|
|
||||||
@ -360,71 +415,24 @@ msgstr "Erfahren Sie mehr über GNOME Podcasts"
|
|||||||
msgid "translator-credits"
|
msgid "translator-credits"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Mario Blättermann <mario.blaettermann@gmail.com>\n"
|
"Mario Blättermann <mario.blaettermann@gmail.com>\n"
|
||||||
"Tim Sabsch <tim@sabsch.com>\n"
|
"Tim Sabsch <tim@sabsch.com>"
|
||||||
"Onno Giesmann <nutzer3105@gmail.com>"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/episode.rs:149
|
#: podcasts-gtk/src/widgets/episode.rs:149
|
||||||
msgid "{} min"
|
msgid "{} min"
|
||||||
msgstr "{} min"
|
msgstr "{} min"
|
||||||
|
|
||||||
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
||||||
#: podcasts-gtk/src/widgets/player.rs:828
|
#: podcasts-gtk/src/widgets/player.rs:536
|
||||||
msgid "The media player was unable to execute an action."
|
msgid "The media player was unable to execute an action."
|
||||||
msgstr "Die Medienwiedergabe konnte eine Aktion nicht ausführen."
|
msgstr "Die Medienwiedergabe konnte eine Aktion nicht ausführen."
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/show_menu.rs:174
|
#: podcasts-gtk/src/widgets/show_menu.rs:169
|
||||||
msgid "Marked all episodes as listened"
|
msgid "Marked all episodes as listened"
|
||||||
msgstr "Alle Folgen als angehört markieren"
|
msgstr "Alle Folgen als angehört markieren"
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/show_menu.rs:179
|
#: podcasts-gtk/src/widgets/show_menu.rs:174
|
||||||
msgid "Unsubscribed from {}"
|
msgid "Unsubscribed from {}"
|
||||||
msgstr "Abonnement von {} gekündigt"
|
msgstr "Abonnement von {} gekündigt"
|
||||||
|
|
||||||
#~ msgid "@icon@"
|
|
||||||
#~ msgstr "@icon@"
|
|
||||||
|
|
||||||
#~ msgid "_Preferences"
|
|
||||||
#~ msgstr "_Einstellungen"
|
|
||||||
|
|
||||||
#~ msgid "You are already subscribed to that feed!"
|
|
||||||
#~ msgstr "Sie haben diese Quelle bereits abonniert!"
|
|
||||||
|
|
||||||
#~ msgctxt "shortcut window"
|
|
||||||
#~ msgid "Preferences"
|
|
||||||
#~ msgstr "Einstellungen"
|
|
||||||
|
|
||||||
#~ msgid "Preferences"
|
|
||||||
#~ msgstr "Einstellungen"
|
|
||||||
|
|
||||||
#~ msgid "Appearance"
|
|
||||||
#~ msgstr "Erscheinungsbild"
|
|
||||||
|
|
||||||
#~ msgid "Dark Theme"
|
|
||||||
#~ msgstr "Dunkles Thema"
|
|
||||||
|
|
||||||
#~ msgid "Delete played episodes"
|
|
||||||
#~ msgstr "Angehörte Folgen löschen"
|
|
||||||
|
|
||||||
#~ msgid "After"
|
|
||||||
#~ msgstr "Nach"
|
|
||||||
|
|
||||||
#~ msgid "Invalid URL"
|
|
||||||
#~ msgstr "Ungültige Adresse"
|
|
||||||
|
|
||||||
#~ msgid "Seconds"
|
|
||||||
#~ msgstr "Sekunden"
|
|
||||||
|
|
||||||
#~ msgid "Minutes"
|
|
||||||
#~ msgstr "Minuten"
|
|
||||||
|
|
||||||
#~ msgid "Hours"
|
|
||||||
#~ msgstr "Stunden"
|
|
||||||
|
|
||||||
#~ msgid "Days"
|
|
||||||
#~ msgstr "Tage"
|
|
||||||
|
|
||||||
#~ msgid "Weeks"
|
|
||||||
#~ msgstr "Wochen"
|
|
||||||
|
|
||||||
#~ msgid "_About"
|
#~ msgid "_About"
|
||||||
#~ msgstr "I_nfo"
|
#~ msgstr "I_nfo"
|
||||||
|
|||||||
@ -5,22 +5,22 @@
|
|||||||
# Daniel Garcia Moreno <danigm@wadobo.com>, 2018.
|
# Daniel Garcia Moreno <danigm@wadobo.com>, 2018.
|
||||||
# Rodrigo <rodhos92@gmail.com>, 2018.
|
# Rodrigo <rodhos92@gmail.com>, 2018.
|
||||||
# Rodrigo Lledó <rodhos92@gmail.com>, 2019.
|
# Rodrigo Lledó <rodhos92@gmail.com>, 2019.
|
||||||
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2018-2020.
|
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2018-2019.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-podcasts\n"
|
"Project-Id-Version: gnome-podcasts\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
||||||
"POT-Creation-Date: 2020-02-07 11:33+0000\n"
|
"POT-Creation-Date: 2019-06-15 10:55+0000\n"
|
||||||
"PO-Revision-Date: 2020-02-07 13:18+0100\n"
|
"PO-Revision-Date: 2019-06-19 12:19+0200\n"
|
||||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||||
"Language-Team: Spanish - Spain <gnome-es-list@gnome.org>\n"
|
"Language-Team: es <gnome-es-list@gnome.org>\n"
|
||||||
"Language: es_ES\n"
|
"Language: es\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Gtranslator 3.34.0\n"
|
"X-Generator: Gtranslator 3.32.0\n"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
||||||
msgid "Top position of the last open main window"
|
msgid "Top position of the last open main window"
|
||||||
@ -75,8 +75,8 @@ msgstr "Cuántos periodos de tiempo hay que esperar entre limpiezas automáticas
|
|||||||
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:158 podcasts-gtk/src/app.rs:330
|
#: podcasts-gtk/src/app.rs:109 podcasts-gtk/src/app.rs:433
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:56 podcasts-gtk/src/window.rs:80
|
#: podcasts-gtk/src/widgets/aboutdialog.rs:56
|
||||||
msgid "Podcasts"
|
msgid "Podcasts"
|
||||||
msgstr "Podcasts"
|
msgstr "Podcasts"
|
||||||
|
|
||||||
@ -94,7 +94,7 @@ msgstr "Podcast;RSS;"
|
|||||||
msgid "Podcast app for GNOME"
|
msgid "Podcast app for GNOME"
|
||||||
msgstr "Aplicación de Podcast para GNOME"
|
msgstr "Aplicación de Podcast para GNOME"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:84
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:77
|
||||||
msgid "Jordan Petridis"
|
msgid "Jordan Petridis"
|
||||||
msgstr "Jordan Petridis"
|
msgstr "Jordan Petridis"
|
||||||
|
|
||||||
@ -119,6 +119,7 @@ msgid "Import shows from another device"
|
|||||||
msgstr "Importar programas de otro dispositivo"
|
msgstr "Importar programas de otro dispositivo"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:79
|
#: podcasts-gtk/resources/gtk/episode_widget.ui:79
|
||||||
|
#| msgid "You've already listened to this episode."
|
||||||
msgid "You’ve already listened to this episode."
|
msgid "You’ve already listened to this episode."
|
||||||
msgstr "Ya ha escuchado este episodio."
|
msgstr "Ya ha escuchado este episodio."
|
||||||
|
|
||||||
@ -159,7 +160,7 @@ msgid "_About Podcasts"
|
|||||||
msgstr "_Acerca de Podcasts"
|
msgstr "_Acerca de Podcasts"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:186
|
#: podcasts-gtk/resources/gtk/headerbar.ui:177
|
||||||
msgid "Add a new feed"
|
msgid "Add a new feed"
|
||||||
msgstr "Añadir un canal nuevo"
|
msgstr "Añadir un canal nuevo"
|
||||||
|
|
||||||
@ -171,11 +172,11 @@ msgstr "Introduzca la dirección del canal que añadir"
|
|||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Añadir"
|
msgstr "Añadir"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:171
|
#: podcasts-gtk/resources/gtk/headerbar.ui:157
|
||||||
msgid "Show Title"
|
msgid "Show Title"
|
||||||
msgstr "Título del programa"
|
msgstr "Título del programa"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:207
|
#: podcasts-gtk/resources/gtk/headerbar.ui:198
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr "Atrás"
|
msgstr "Atrás"
|
||||||
|
|
||||||
@ -221,55 +222,51 @@ msgstr "Una notificación de acción dentro de la aplicación"
|
|||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Deshacer"
|
msgstr "Deshacer"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_dialog.ui:14
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:72
|
||||||
msgid "Now Playing"
|
|
||||||
msgstr "Reproduciendo ahora"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:32
|
|
||||||
msgid "Change the playback speed"
|
|
||||||
msgstr "Cambiar velocidad de reproducción"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:47
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:122
|
|
||||||
msgid "1.00×"
|
|
||||||
msgstr "1.00×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:86
|
|
||||||
msgid "1.50×"
|
|
||||||
msgstr "1.50×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:90
|
|
||||||
msgid "1.5 speed rate"
|
|
||||||
msgstr "velocidad 1.5"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:104
|
|
||||||
msgid "1.25×"
|
|
||||||
msgstr "1.25×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:108
|
|
||||||
msgid "1.25 speed rate"
|
|
||||||
msgstr "velocidad 1.25"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:126
|
|
||||||
msgid "Normal speed"
|
|
||||||
msgstr "Velocidad normal"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:97
|
|
||||||
msgid "Rewind 10 seconds"
|
msgid "Rewind 10 seconds"
|
||||||
msgstr "Retroceder 10 segundos"
|
msgstr "Retroceder 10 segundos"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:112
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:87
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Reproducir"
|
msgstr "Reproducir"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:128
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:103
|
||||||
msgid "Pause"
|
msgid "Pause"
|
||||||
msgstr "Pausa"
|
msgstr "Pausa"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:144
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:119
|
||||||
msgid "Fast forward 10 seconds"
|
msgid "Fast forward 10 seconds"
|
||||||
msgstr "Avanzar 10 segundos"
|
msgstr "Avanzar 10 segundos"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:285
|
||||||
|
msgid "Change the playback speed"
|
||||||
|
msgstr "Cambiar velocidad de reproducción"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:300
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:380
|
||||||
|
msgid "1.00×"
|
||||||
|
msgstr "1.00×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:344
|
||||||
|
msgid "1.50×"
|
||||||
|
msgstr "1.50×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:348
|
||||||
|
msgid "1.5 speed rate"
|
||||||
|
msgstr "velocidad 1.5"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:362
|
||||||
|
msgid "1.25×"
|
||||||
|
msgstr "1.25×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:366
|
||||||
|
msgid "1.25 speed rate"
|
||||||
|
msgstr "velocidad 1.25"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:384
|
||||||
|
msgid "Normal speed"
|
||||||
|
msgstr "Velocidad normal"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
||||||
msgid "_Mark All Episodes as Played"
|
msgid "_Mark All Episodes as Played"
|
||||||
msgstr "_Marcar todos los episodios como reproducidos"
|
msgstr "_Marcar todos los episodios como reproducidos"
|
||||||
@ -294,14 +291,18 @@ msgstr "Marcar todo como reproducido"
|
|||||||
msgid "Unsubscribe"
|
msgid "Unsubscribe"
|
||||||
msgstr "Cancelar suscripción"
|
msgstr "Cancelar suscripción"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/show_widget.ui:99
|
#: podcasts-gtk/src/app.rs:351
|
||||||
msgid "Read More"
|
|
||||||
msgstr "Leer más"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/app.rs:265
|
|
||||||
msgid "Fetching new episodes"
|
msgid "Fetching new episodes"
|
||||||
msgstr "Obteniendo nuevos episodios"
|
msgstr "Obteniendo nuevos episodios"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:127
|
||||||
|
msgid "You are already subscribed to this show"
|
||||||
|
msgstr "Ya está suscrito a este programa"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:145
|
||||||
|
msgid "Invalid URL"
|
||||||
|
msgstr "URL no válido"
|
||||||
|
|
||||||
#: podcasts-gtk/src/stacks/content.rs:54
|
#: podcasts-gtk/src/stacks/content.rs:54
|
||||||
msgid "New"
|
msgid "New"
|
||||||
msgstr "Nuevo"
|
msgstr "Nuevo"
|
||||||
@ -310,43 +311,43 @@ msgstr "Nuevo"
|
|||||||
msgid "Shows"
|
msgid "Shows"
|
||||||
msgstr "Programas"
|
msgstr "Programas"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:396
|
#: podcasts-gtk/src/utils.rs:397
|
||||||
msgid "Select the file from which to you want to import shows."
|
msgid "Select the file from which to you want to import shows."
|
||||||
msgstr "Selecciona el fichero desde el que quiere importar programas."
|
msgstr "Selecciona el fichero desde el que quiere importar programas."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:399
|
#: podcasts-gtk/src/utils.rs:400
|
||||||
msgid "_Import"
|
msgid "_Import"
|
||||||
msgstr "_Importar"
|
msgstr "_Importar"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:408 podcasts-gtk/src/utils.rs:456
|
#: podcasts-gtk/src/utils.rs:409 podcasts-gtk/src/utils.rs:457
|
||||||
msgid "OPML file"
|
msgid "OPML file"
|
||||||
msgstr "fichero OPML"
|
msgstr "fichero OPML"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:425
|
#: podcasts-gtk/src/utils.rs:426
|
||||||
msgid "Failed to parse the imported file"
|
msgid "Failed to parse the imported file"
|
||||||
msgstr "Fallo al analizar el fichero importado"
|
msgstr "Fallo al analizar el fichero importado"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:430 podcasts-gtk/src/utils.rs:474
|
#: podcasts-gtk/src/utils.rs:431 podcasts-gtk/src/utils.rs:475
|
||||||
msgid "Selected file could not be accessed."
|
msgid "Selected file could not be accessed."
|
||||||
msgstr "No se ha podido acceder al archivo seleccionado."
|
msgstr "No se ha podido acceder al archivo seleccionado."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:444
|
#: podcasts-gtk/src/utils.rs:445
|
||||||
msgid "Export shows to…"
|
msgid "Export shows to…"
|
||||||
msgstr "Exportar programas a…"
|
msgstr "Exportar programas a…"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:447
|
#: podcasts-gtk/src/utils.rs:448
|
||||||
msgid "_Export"
|
msgid "_Export"
|
||||||
msgstr "_Exportar"
|
msgstr "_Exportar"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:448
|
#: podcasts-gtk/src/utils.rs:449
|
||||||
msgid "_Cancel"
|
msgid "_Cancel"
|
||||||
msgstr "_Cancelar"
|
msgstr "_Cancelar"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:468
|
#: podcasts-gtk/src/utils.rs:469
|
||||||
msgid "GNOME Podcasts Subscriptions"
|
msgid "GNOME Podcasts Subscriptions"
|
||||||
msgstr "Suscripciones a podcasts de GNOME"
|
msgstr "Suscripciones a podcasts de GNOME"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:469
|
#: podcasts-gtk/src/utils.rs:470
|
||||||
msgid "Failed to export podcasts"
|
msgid "Failed to export podcasts"
|
||||||
msgstr "Falló al exportar podcasts"
|
msgstr "Falló al exportar podcasts"
|
||||||
|
|
||||||
@ -369,7 +370,7 @@ msgid "{} min"
|
|||||||
msgstr "{} min"
|
msgstr "{} min"
|
||||||
|
|
||||||
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
||||||
#: podcasts-gtk/src/widgets/player.rs:824
|
#: podcasts-gtk/src/widgets/player.rs:534
|
||||||
msgid "The media player was unable to execute an action."
|
msgid "The media player was unable to execute an action."
|
||||||
msgstr "El reproductor no ha podido reproducir una acción."
|
msgstr "El reproductor no ha podido reproducir una acción."
|
||||||
|
|
||||||
@ -381,12 +382,6 @@ msgstr "Marcar todos los episodios como escuchados"
|
|||||||
msgid "Unsubscribed from {}"
|
msgid "Unsubscribed from {}"
|
||||||
msgstr "Suscripción cancelada para {}"
|
msgstr "Suscripción cancelada para {}"
|
||||||
|
|
||||||
#~ msgid "You are already subscribed to this show"
|
|
||||||
#~ msgstr "Ya está suscrito a este programa"
|
|
||||||
|
|
||||||
#~ msgid "Invalid URL"
|
|
||||||
#~ msgstr "URL no válido"
|
|
||||||
|
|
||||||
#~ msgid "You are already subscribed to that feed!"
|
#~ msgid "You are already subscribed to that feed!"
|
||||||
#~ msgstr "¡Ya está suscrito a este canal!"
|
#~ msgstr "¡Ya está suscrito a este canal!"
|
||||||
|
|
||||||
|
|||||||
@ -7,8 +7,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: podcasts master\n"
|
"Project-Id-Version: podcasts master\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
||||||
"POT-Creation-Date: 2020-02-07 11:33+0000\n"
|
"POT-Creation-Date: 2019-05-18 12:55+0000\n"
|
||||||
"PO-Revision-Date: 2020-02-23 13:44+0200\n"
|
"PO-Revision-Date: 2019-06-01 20:20+0300\n"
|
||||||
"Last-Translator: Jiri Grönroos <jiri.gronroos+l10n@iki.fi>\n"
|
"Last-Translator: Jiri Grönroos <jiri.gronroos+l10n@iki.fi>\n"
|
||||||
"Language-Team: Finnish <lokalisointi-lista@googlegroups.com>\n"
|
"Language-Team: Finnish <lokalisointi-lista@googlegroups.com>\n"
|
||||||
"Language: fi\n"
|
"Language: fi\n"
|
||||||
@ -16,7 +16,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Poedit 2.3\n"
|
"X-Generator: Poedit 2.0.6\n"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
||||||
msgid "Top position of the last open main window"
|
msgid "Top position of the last open main window"
|
||||||
@ -69,8 +69,8 @@ msgstr ""
|
|||||||
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:158 podcasts-gtk/src/app.rs:330
|
#: podcasts-gtk/src/app.rs:109 podcasts-gtk/src/app.rs:433
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:56 podcasts-gtk/src/window.rs:80
|
#: podcasts-gtk/src/widgets/aboutdialog.rs:56
|
||||||
msgid "Podcasts"
|
msgid "Podcasts"
|
||||||
msgstr "Podcastit"
|
msgstr "Podcastit"
|
||||||
|
|
||||||
@ -88,7 +88,7 @@ msgstr "Podcast;RSS;"
|
|||||||
msgid "Podcast app for GNOME"
|
msgid "Podcast app for GNOME"
|
||||||
msgstr "Podcast-sovellus Gnomelle"
|
msgstr "Podcast-sovellus Gnomelle"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:84
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:77
|
||||||
msgid "Jordan Petridis"
|
msgid "Jordan Petridis"
|
||||||
msgstr "Jordan Petridis"
|
msgstr "Jordan Petridis"
|
||||||
|
|
||||||
@ -153,7 +153,7 @@ msgid "_About Podcasts"
|
|||||||
msgstr "_Tietoja - Podcastit"
|
msgstr "_Tietoja - Podcastit"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:186
|
#: podcasts-gtk/resources/gtk/headerbar.ui:189
|
||||||
msgid "Add a new feed"
|
msgid "Add a new feed"
|
||||||
msgstr "Lisää uusi syöte"
|
msgstr "Lisää uusi syöte"
|
||||||
|
|
||||||
@ -165,11 +165,15 @@ msgstr "Anna lisättävän syötteen osoite"
|
|||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Lisää"
|
msgstr "Lisää"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:171
|
#: podcasts-gtk/resources/gtk/headerbar.ui:133
|
||||||
|
msgid "You are already subscribed to that feed!"
|
||||||
|
msgstr "Olet jo tilannut kyseisen syötteen!"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/headerbar.ui:169
|
||||||
msgid "Show Title"
|
msgid "Show Title"
|
||||||
msgstr "Ohjelman nimi"
|
msgstr "Ohjelman nimi"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:207
|
#: podcasts-gtk/resources/gtk/headerbar.ui:210
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr "Takaisin"
|
msgstr "Takaisin"
|
||||||
|
|
||||||
@ -215,55 +219,51 @@ msgstr "Sovelluksen sisäinen ilmoitus"
|
|||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Kumoa"
|
msgstr "Kumoa"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_dialog.ui:14
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:72
|
||||||
msgid "Now Playing"
|
|
||||||
msgstr "Nyt toistetaan"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:32
|
|
||||||
msgid "Change the playback speed"
|
|
||||||
msgstr "Vaihda toistonopeutta"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:47
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:122
|
|
||||||
msgid "1.00×"
|
|
||||||
msgstr "1.00×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:86
|
|
||||||
msgid "1.50×"
|
|
||||||
msgstr "1.50×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:90
|
|
||||||
msgid "1.5 speed rate"
|
|
||||||
msgstr "1,5-kertainen nopeus"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:104
|
|
||||||
msgid "1.25×"
|
|
||||||
msgstr "1.25×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:108
|
|
||||||
msgid "1.25 speed rate"
|
|
||||||
msgstr "1,25-kertainen nopeus"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:126
|
|
||||||
msgid "Normal speed"
|
|
||||||
msgstr "Tavallinen nopeus"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:97
|
|
||||||
msgid "Rewind 10 seconds"
|
msgid "Rewind 10 seconds"
|
||||||
msgstr "Siirry taakse 10 sekuntia"
|
msgstr "Siirry taakse 10 sekuntia"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:112
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:87
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Toista"
|
msgstr "Toista"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:128
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:103
|
||||||
msgid "Pause"
|
msgid "Pause"
|
||||||
msgstr "Keskeytä"
|
msgstr "Keskeytä"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:144
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:119
|
||||||
msgid "Fast forward 10 seconds"
|
msgid "Fast forward 10 seconds"
|
||||||
msgstr "Siirry eteen 10 sekuntia"
|
msgstr "Siirry eteen 10 sekuntia"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:285
|
||||||
|
msgid "Change the playback speed"
|
||||||
|
msgstr "Vaihda toistonopeutta"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:300
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:380
|
||||||
|
msgid "1.00×"
|
||||||
|
msgstr "1.00×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:344
|
||||||
|
msgid "1.50×"
|
||||||
|
msgstr "1.50×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:348
|
||||||
|
msgid "1.5 speed rate"
|
||||||
|
msgstr "1,5-kertainen nopeus"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:362
|
||||||
|
msgid "1.25×"
|
||||||
|
msgstr "1.25×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:366
|
||||||
|
msgid "1.25 speed rate"
|
||||||
|
msgstr "1,25-kertainen nopeus"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:384
|
||||||
|
msgid "Normal speed"
|
||||||
|
msgstr "Tavallinen nopeus"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
||||||
msgid "_Mark All Episodes as Played"
|
msgid "_Mark All Episodes as Played"
|
||||||
msgstr "_Merkitse kaikki jaksot toistetuiksi"
|
msgstr "_Merkitse kaikki jaksot toistetuiksi"
|
||||||
@ -288,14 +288,18 @@ msgstr "Merkitse kaikki toistetuiksi"
|
|||||||
msgid "Unsubscribe"
|
msgid "Unsubscribe"
|
||||||
msgstr "Lopeta tilaus"
|
msgstr "Lopeta tilaus"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/show_widget.ui:99
|
#: podcasts-gtk/src/app.rs:351
|
||||||
msgid "Read More"
|
|
||||||
msgstr "Lue lisää"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/app.rs:265
|
|
||||||
msgid "Fetching new episodes"
|
msgid "Fetching new episodes"
|
||||||
msgstr "Noudetaan uusia jaksoja"
|
msgstr "Noudetaan uusia jaksoja"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:117
|
||||||
|
msgid "You are already subscribed to this show"
|
||||||
|
msgstr "Olet jo tilannut tämän ohjelman"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:125
|
||||||
|
msgid "Invalid URL"
|
||||||
|
msgstr "Virheellinen osoite"
|
||||||
|
|
||||||
#: podcasts-gtk/src/stacks/content.rs:54
|
#: podcasts-gtk/src/stacks/content.rs:54
|
||||||
msgid "New"
|
msgid "New"
|
||||||
msgstr "Uudet"
|
msgstr "Uudet"
|
||||||
@ -304,43 +308,43 @@ msgstr "Uudet"
|
|||||||
msgid "Shows"
|
msgid "Shows"
|
||||||
msgstr "Ohjelmat"
|
msgstr "Ohjelmat"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:396
|
#: podcasts-gtk/src/utils.rs:397
|
||||||
msgid "Select the file from which to you want to import shows."
|
msgid "Select the file from which to you want to import shows."
|
||||||
msgstr "Valitse tiedosto, josta haluat tuoda ohjelmia."
|
msgstr "Valitse tiedosto, josta haluat tuoda ohjelmia."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:399
|
#: podcasts-gtk/src/utils.rs:400
|
||||||
msgid "_Import"
|
msgid "_Import"
|
||||||
msgstr "_Tuo"
|
msgstr "_Tuo"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:408 podcasts-gtk/src/utils.rs:456
|
#: podcasts-gtk/src/utils.rs:409 podcasts-gtk/src/utils.rs:457
|
||||||
msgid "OPML file"
|
msgid "OPML file"
|
||||||
msgstr "OPML-tiedosto"
|
msgstr "OPML-tiedosto"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:425
|
#: podcasts-gtk/src/utils.rs:426
|
||||||
msgid "Failed to parse the imported file"
|
msgid "Failed to parse the imported file"
|
||||||
msgstr "Tuotua tiedostoa ei voitu jäsentää"
|
msgstr "Tuotua tiedostoa ei voitu jäsentää"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:430 podcasts-gtk/src/utils.rs:474
|
#: podcasts-gtk/src/utils.rs:431 podcasts-gtk/src/utils.rs:475
|
||||||
msgid "Selected file could not be accessed."
|
msgid "Selected file could not be accessed."
|
||||||
msgstr "Valittua tiedostoa ei voitu käyttää."
|
msgstr "Valittua tiedostoa ei voitu käyttää."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:444
|
#: podcasts-gtk/src/utils.rs:445
|
||||||
msgid "Export shows to…"
|
msgid "Export shows to…"
|
||||||
msgstr "Vie jaksot…"
|
msgstr "Vie jaksot…"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:447
|
#: podcasts-gtk/src/utils.rs:448
|
||||||
msgid "_Export"
|
msgid "_Export"
|
||||||
msgstr "_Vie"
|
msgstr "_Vie"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:448
|
#: podcasts-gtk/src/utils.rs:449
|
||||||
msgid "_Cancel"
|
msgid "_Cancel"
|
||||||
msgstr "_Peru"
|
msgstr "_Peru"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:468
|
#: podcasts-gtk/src/utils.rs:469
|
||||||
msgid "GNOME Podcasts Subscriptions"
|
msgid "GNOME Podcasts Subscriptions"
|
||||||
msgstr "Gnomen podcastsovelluksen tilaukset"
|
msgstr "Gnomen podcastsovelluksen tilaukset"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:469
|
#: podcasts-gtk/src/utils.rs:470
|
||||||
msgid "Failed to export podcasts"
|
msgid "Failed to export podcasts"
|
||||||
msgstr "Podcastien vienti epäonnistui"
|
msgstr "Podcastien vienti epäonnistui"
|
||||||
|
|
||||||
@ -361,7 +365,7 @@ msgid "{} min"
|
|||||||
msgstr "{} min"
|
msgstr "{} min"
|
||||||
|
|
||||||
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
||||||
#: podcasts-gtk/src/widgets/player.rs:824
|
#: podcasts-gtk/src/widgets/player.rs:534
|
||||||
msgid "The media player was unable to execute an action."
|
msgid "The media player was unable to execute an action."
|
||||||
msgstr "Mediasoitin ei kyennyt suorittamaan toimintoa."
|
msgstr "Mediasoitin ei kyennyt suorittamaan toimintoa."
|
||||||
|
|
||||||
@ -373,15 +377,6 @@ msgstr "Merkitse kaikki jaksot toistetuiksi"
|
|||||||
msgid "Unsubscribed from {}"
|
msgid "Unsubscribed from {}"
|
||||||
msgstr "Lopeta syötteen {} tilaus"
|
msgstr "Lopeta syötteen {} tilaus"
|
||||||
|
|
||||||
#~ msgid "You are already subscribed to that feed!"
|
|
||||||
#~ msgstr "Olet jo tilannut kyseisen syötteen!"
|
|
||||||
|
|
||||||
#~ msgid "You are already subscribed to this show"
|
|
||||||
#~ msgstr "Olet jo tilannut tämän ohjelman"
|
|
||||||
|
|
||||||
#~ msgid "Invalid URL"
|
|
||||||
#~ msgstr "Virheellinen osoite"
|
|
||||||
|
|
||||||
#~ msgid "@icon@"
|
#~ msgid "@icon@"
|
||||||
#~ msgstr "@icon@"
|
#~ msgstr "@icon@"
|
||||||
|
|
||||||
|
|||||||
@ -2,23 +2,22 @@
|
|||||||
# Copyright (C) 2018 podcasts's COPYRIGHT HOLDER
|
# Copyright (C) 2018 podcasts's COPYRIGHT HOLDER
|
||||||
# This file is distributed under the same license as the podcasts package.
|
# This file is distributed under the same license as the podcasts package.
|
||||||
# arverne73 <arverne@wanadoo.fr>, 2018.
|
# arverne73 <arverne@wanadoo.fr>, 2018.
|
||||||
# Alexandre Franke <alexandre.franke@gmail.com>, 2018, 2020
|
# Alexandre Franke <alexandre.franke@gmail.com>, 2018
|
||||||
# Thibault Martin <mail@thibaultmart.in>, 2020.
|
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: podcasts master\n"
|
"Project-Id-Version: podcasts master\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
||||||
"POT-Creation-Date: 2020-06-03 20:13+0000\n"
|
"POT-Creation-Date: 2018-10-23 10:23+0000\n"
|
||||||
"PO-Revision-Date: 2020-06-19 17:15+0200\n"
|
"PO-Revision-Date: 2018-10-29 13:53+0100\n"
|
||||||
"Last-Translator: Thibault Martin <mail@thibaultmart.in>\n"
|
"Last-Translator: Alexandre Franke <alexandre.franke@gmail.com>\n"
|
||||||
"Language-Team: French <gnomefr@traduc.org>\n"
|
"Language-Team: French <gnomefr@traduc.org>\n"
|
||||||
"Language: fr\n"
|
"Language: fr\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
"X-Generator: Gtranslator 3.36.0\n"
|
"X-Generator: Poedit 2.0.6\n"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
||||||
msgid "Top position of the last open main window"
|
msgid "Top position of the last open main window"
|
||||||
@ -50,7 +49,8 @@ msgstr "Indique s’il faut actualiser périodiquement le contenu"
|
|||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:46
|
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:46
|
||||||
msgid "How many periods of time to wait between automatic refreshes"
|
msgid "How many periods of time to wait between automatic refreshes"
|
||||||
msgstr "Nombre de délais à attendre entre les actualisations automatiques"
|
msgstr ""
|
||||||
|
"Nombre de périodes de délais à attendre entre les actualisations automatiques"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:50
|
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:50
|
||||||
msgid "What period of time to wait between automatic refreshes"
|
msgid "What period of time to wait between automatic refreshes"
|
||||||
@ -71,8 +71,8 @@ msgstr "Délai entre les nettoyages automatiques"
|
|||||||
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:158 podcasts-gtk/src/app.rs:353
|
#: podcasts-gtk/src/app.rs:92 podcasts-gtk/src/app.rs:416
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:56 podcasts-gtk/src/window.rs:82
|
#: podcasts-gtk/src/widgets/aboutdialog.rs:37
|
||||||
msgid "Podcasts"
|
msgid "Podcasts"
|
||||||
msgstr "Podcasts"
|
msgstr "Podcasts"
|
||||||
|
|
||||||
@ -81,6 +81,11 @@ msgstr "Podcasts"
|
|||||||
msgid "Listen to your favorite podcasts, right from your desktop."
|
msgid "Listen to your favorite podcasts, right from your desktop."
|
||||||
msgstr "Écouter vos podcasts favoris directement sur votre bureau."
|
msgstr "Écouter vos podcasts favoris directement sur votre bureau."
|
||||||
|
|
||||||
|
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
|
||||||
|
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:6
|
||||||
|
msgid "@icon@"
|
||||||
|
msgstr "@icon@"
|
||||||
|
|
||||||
#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
|
#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:13
|
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:13
|
||||||
msgid "Podcast;RSS;"
|
msgid "Podcast;RSS;"
|
||||||
@ -90,13 +95,13 @@ msgstr "Podcast;RSS;Baladodiffusion;Émissions;"
|
|||||||
msgid "Podcast app for GNOME"
|
msgid "Podcast app for GNOME"
|
||||||
msgstr "Application de podcast pour GNOME"
|
msgstr "Application de podcast pour GNOME"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:84
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:68
|
||||||
msgid "Jordan Petridis"
|
msgid "Jordan Petridis"
|
||||||
msgstr "Jordan Petridis"
|
msgstr "Jordan Petridis"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/empty_view.ui:46
|
#: podcasts-gtk/resources/gtk/empty_view.ui:46
|
||||||
msgid "This show does not have episodes yet"
|
msgid "This show does not have episodes yet"
|
||||||
msgstr "Cette émission n’a pas encore d’épisode"
|
msgstr "Cette émission n’a pas encore d’épisodes"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/empty_view.ui:62
|
#: podcasts-gtk/resources/gtk/empty_view.ui:62
|
||||||
msgid "If you think this is an error, please consider writing a bug report."
|
msgid "If you think this is an error, please consider writing a bug report."
|
||||||
@ -114,23 +119,19 @@ msgstr "Ajouter de nouvelles émissions via une URL de flux"
|
|||||||
msgid "Import shows from another device"
|
msgid "Import shows from another device"
|
||||||
msgstr "Importer des émissions à partir d’un autre appareil"
|
msgstr "Importer des émissions à partir d’un autre appareil"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:79
|
#: podcasts-gtk/resources/gtk/episode_widget.ui:180
|
||||||
msgid "You’ve already listened to this episode."
|
|
||||||
msgstr "Vous avez déjà écouté cet épisode."
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:208
|
|
||||||
msgid "Calculating episode size…"
|
msgid "Calculating episode size…"
|
||||||
msgstr "Calcul de la taille de l’épisode…"
|
msgstr "Calcul de la taille de l’épisode…"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:248
|
#: podcasts-gtk/resources/gtk/episode_widget.ui:220
|
||||||
msgid "Play this episode"
|
msgid "Play this episode"
|
||||||
msgstr "Lire cet épisode"
|
msgstr "Lire cet épisode"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:269
|
#: podcasts-gtk/resources/gtk/episode_widget.ui:241
|
||||||
msgid "Cancel the download process"
|
msgid "Cancel the download process"
|
||||||
msgstr "Annuler le téléchargement"
|
msgstr "Annuler le téléchargement"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:292
|
#: podcasts-gtk/resources/gtk/episode_widget.ui:264
|
||||||
msgid "Download this episode"
|
msgid "Download this episode"
|
||||||
msgstr "Télécharger cet épisode"
|
msgstr "Télécharger cet épisode"
|
||||||
|
|
||||||
@ -142,20 +143,20 @@ msgstr "_Chercher de nouveaux épisodes"
|
|||||||
msgid "_Import Shows"
|
msgid "_Import Shows"
|
||||||
msgstr "_Importer les émissions"
|
msgstr "_Importer les émissions"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/hamburger.ui:16
|
|
||||||
msgid "_Export Shows"
|
|
||||||
msgstr "_Exporter les émissions"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/hamburger.ui:22
|
#: podcasts-gtk/resources/gtk/hamburger.ui:22
|
||||||
|
msgid "_Preferences"
|
||||||
|
msgstr "_Préférences"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/hamburger.ui:27
|
||||||
msgid "_Keyboard Shortcuts"
|
msgid "_Keyboard Shortcuts"
|
||||||
msgstr "_Raccourcis clavier"
|
msgstr "_Raccourcis clavier"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/hamburger.ui:30
|
#: podcasts-gtk/resources/gtk/hamburger.ui:35
|
||||||
msgid "_About Podcasts"
|
msgid "_About Podcasts"
|
||||||
msgstr "À _propos de Podcasts"
|
msgstr "À _propos de Podcasts"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:186
|
#: podcasts-gtk/resources/gtk/headerbar.ui:189
|
||||||
msgid "Add a new feed"
|
msgid "Add a new feed"
|
||||||
msgstr "Ajouter un nouveau flux"
|
msgstr "Ajouter un nouveau flux"
|
||||||
|
|
||||||
@ -167,11 +168,15 @@ msgstr "Entrer l’adresse du flux à ajouter"
|
|||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Ajouter"
|
msgstr "Ajouter"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:171
|
#: podcasts-gtk/resources/gtk/headerbar.ui:133
|
||||||
|
msgid "You are already subscribed to that feed!"
|
||||||
|
msgstr "Vous êtes déjà abonné à ce flux !"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/headerbar.ui:169
|
||||||
msgid "Show Title"
|
msgid "Show Title"
|
||||||
msgstr "Titre de l’émission"
|
msgstr "Titre de l’émission"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:207
|
#: podcasts-gtk/resources/gtk/headerbar.ui:210
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr "Retour"
|
msgstr "Retour"
|
||||||
|
|
||||||
@ -186,6 +191,11 @@ msgstr "Chercher de nouveaux épisodes"
|
|||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/help-overlay.ui:25
|
#: podcasts-gtk/resources/gtk/help-overlay.ui:25
|
||||||
msgctxt "shortcut window"
|
msgctxt "shortcut window"
|
||||||
|
msgid "Preferences"
|
||||||
|
msgstr "Préférences"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/help-overlay.ui:32
|
||||||
|
msgctxt "shortcut window"
|
||||||
msgid "Quit the application"
|
msgid "Quit the application"
|
||||||
msgstr "Quitter l’application"
|
msgstr "Quitter l’application"
|
||||||
|
|
||||||
@ -217,55 +227,72 @@ msgstr "Une notification d’action intégrée à l’application"
|
|||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Annuler"
|
msgstr "Annuler"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_dialog.ui:14
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:72
|
||||||
msgid "Now Playing"
|
|
||||||
msgstr "Lecture en cours"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:32
|
|
||||||
msgid "Change the playback speed"
|
|
||||||
msgstr "Changer la vitesse de lecture"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:47
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:122
|
|
||||||
msgid "1.00×"
|
|
||||||
msgstr "1,00×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:86
|
|
||||||
msgid "1.50×"
|
|
||||||
msgstr "1,50×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:90
|
|
||||||
msgid "1.5 speed rate"
|
|
||||||
msgstr "Débit × 1,5"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:104
|
|
||||||
msgid "1.25×"
|
|
||||||
msgstr "1,25×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:108
|
|
||||||
msgid "1.25 speed rate"
|
|
||||||
msgstr "Débit × 1,25"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:126
|
|
||||||
msgid "Normal speed"
|
|
||||||
msgstr "Vitesse normale"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:97
|
|
||||||
msgid "Rewind 10 seconds"
|
msgid "Rewind 10 seconds"
|
||||||
msgstr "Reculer de 10 secondes"
|
msgstr "Reculer de 10 secondes"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:112
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:87
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Lire"
|
msgstr "Lire"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:128
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:103
|
||||||
msgid "Pause"
|
msgid "Pause"
|
||||||
msgstr "Pause"
|
msgstr "Pause"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:144
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:119
|
||||||
msgid "Fast forward 10 seconds"
|
msgid "Fast forward 10 seconds"
|
||||||
msgstr "Avancer de 10 secondes"
|
msgstr "Avancer de 10 secondes"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:285
|
||||||
|
msgid "Change the playback speed"
|
||||||
|
msgstr "Changer la vitesse de lecture"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:300
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:380
|
||||||
|
msgid "1.00×"
|
||||||
|
msgstr "1,00×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:344
|
||||||
|
msgid "1.50×"
|
||||||
|
msgstr "1,50×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:348
|
||||||
|
msgid "1.5 speed rate"
|
||||||
|
msgstr "Débit × 1,5"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:362
|
||||||
|
msgid "1.25×"
|
||||||
|
msgstr "1,25×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:366
|
||||||
|
msgid "1.25 speed rate"
|
||||||
|
msgstr "Débit × 1,25"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:384
|
||||||
|
msgid "Normal speed"
|
||||||
|
msgstr "Vitesse normale"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:42
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:295
|
||||||
|
msgid "Preferences"
|
||||||
|
msgstr "Préférences"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:76
|
||||||
|
msgid "Appearance"
|
||||||
|
msgstr "Apparence"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:120
|
||||||
|
msgid "Dark Theme"
|
||||||
|
msgstr "Thème sombre"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:166
|
||||||
|
msgid "Delete played episodes"
|
||||||
|
msgstr "Supprimer les épisodes lus"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:211
|
||||||
|
msgid "After"
|
||||||
|
msgstr "Après"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
||||||
msgid "_Mark All Episodes as Played"
|
msgid "_Mark All Episodes as Played"
|
||||||
msgstr "_Marquer tous les épisodes comme lus"
|
msgstr "_Marquer tous les épisodes comme lus"
|
||||||
@ -290,135 +317,91 @@ msgstr "Marquer tout comme lu"
|
|||||||
msgid "Unsubscribe"
|
msgid "Unsubscribe"
|
||||||
msgstr "Se désabonner"
|
msgstr "Se désabonner"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/show_widget.ui:99
|
#: podcasts-gtk/src/app.rs:333
|
||||||
msgid "Read More"
|
|
||||||
msgstr "En savoir plus"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/app.rs:287
|
|
||||||
msgid "Fetching new episodes"
|
msgid "Fetching new episodes"
|
||||||
msgstr "Récupérer les nouveaux épisodes"
|
msgstr "Récupérer les nouveaux épisodes"
|
||||||
|
|
||||||
#: podcasts-gtk/src/stacks/content.rs:54
|
#: podcasts-gtk/src/headerbar.rs:98
|
||||||
|
msgid "You are already subscribed to this show"
|
||||||
|
msgstr "Vous êtes déjà abonné à cette émission"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:106
|
||||||
|
msgid "Invalid URL"
|
||||||
|
msgstr "URL non valide"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:59
|
||||||
|
msgid "Seconds"
|
||||||
|
msgstr "Secondes"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:60
|
||||||
|
msgid "Minutes"
|
||||||
|
msgstr "Minutes"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:61
|
||||||
|
msgid "Hours"
|
||||||
|
msgstr "Heures"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:62
|
||||||
|
msgid "Days"
|
||||||
|
msgstr "Jours"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:63
|
||||||
|
msgid "Weeks"
|
||||||
|
msgstr "Semaines"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/stacks/content.rs:35
|
||||||
msgid "New"
|
msgid "New"
|
||||||
msgstr "Nouveau"
|
msgstr "Nouveau"
|
||||||
|
|
||||||
#: podcasts-gtk/src/stacks/content.rs:55
|
#: podcasts-gtk/src/stacks/content.rs:36
|
||||||
msgid "Shows"
|
msgid "Shows"
|
||||||
msgstr "Émissions"
|
msgstr "Émissions"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:398
|
#: podcasts-gtk/src/utils.rs:357
|
||||||
msgid "Select the file from which to you want to import shows."
|
msgid "Select the file from which to you want to import shows."
|
||||||
msgstr "Sélectionnez le fichier à partir duquel importer les émissions."
|
msgstr "Sélectionnez le fichier à partir duquel importer les émissions."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:401
|
#: podcasts-gtk/src/utils.rs:360
|
||||||
msgid "_Import"
|
msgid "_Import"
|
||||||
msgstr "_Importer"
|
msgstr "_Importer"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:410 podcasts-gtk/src/utils.rs:457
|
#: podcasts-gtk/src/utils.rs:369
|
||||||
msgid "OPML file"
|
msgid "OPML file"
|
||||||
msgstr "Fichier OPML"
|
msgstr "Fichier OPML"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:427
|
#: podcasts-gtk/src/utils.rs:386
|
||||||
msgid "Failed to parse the imported file"
|
msgid "Failed to parse the imported file"
|
||||||
msgstr "Échec de l’analyse du fichier importé"
|
msgstr "Échec de l’analyse du fichier importé"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:432 podcasts-gtk/src/utils.rs:475
|
#: podcasts-gtk/src/utils.rs:391
|
||||||
msgid "Selected file could not be accessed."
|
msgid "Selected file could not be accessed."
|
||||||
msgstr "Le fichier sélectionné n’est pas accessible."
|
msgstr "Le fichier sélectionné n’est pas accessible."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:445
|
#: podcasts-gtk/src/widgets/aboutdialog.rs:32
|
||||||
msgid "Export shows to…"
|
|
||||||
msgstr "Exporter les émissions vers…"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:448
|
|
||||||
msgid "_Export"
|
|
||||||
msgstr "_Exporter"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:449
|
|
||||||
msgid "_Cancel"
|
|
||||||
msgstr "A_nnuler"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:469
|
|
||||||
msgid "GNOME Podcasts Subscriptions"
|
|
||||||
msgstr "Abonnements GNOME Podcasts"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:470
|
|
||||||
msgid "Failed to export podcasts"
|
|
||||||
msgstr "Échec de l’exportation des podcasts"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:51
|
|
||||||
msgid "Podcast Client for the GNOME Desktop."
|
msgid "Podcast Client for the GNOME Desktop."
|
||||||
msgstr "Client de podcast pour le bureau GNOME."
|
msgstr "Client de podcast pour le bureau GNOME."
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:58
|
#: podcasts-gtk/src/widgets/aboutdialog.rs:39
|
||||||
msgid "Learn more about GNOME Podcasts"
|
msgid "Learn more about GNOME Podcasts"
|
||||||
msgstr "En apprendre plus sur GNOME Podcasts"
|
msgstr "En apprendre plus sur GNOME Podcasts"
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:63
|
#: podcasts-gtk/src/widgets/aboutdialog.rs:44
|
||||||
msgid "translator-credits"
|
msgid "translator-credits"
|
||||||
msgstr ""
|
msgstr "Alexandre Franke"
|
||||||
"Alexandre Franke\n"
|
|
||||||
"Thibault Martin"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/episode.rs:149
|
#: podcasts-gtk/src/widgets/episode.rs:130
|
||||||
msgid "{} min"
|
msgid "{} min"
|
||||||
msgstr "{} min"
|
msgstr "{} min"
|
||||||
|
|
||||||
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
||||||
#: podcasts-gtk/src/widgets/player.rs:828
|
#: podcasts-gtk/src/widgets/player.rs:365
|
||||||
msgid "The media player was unable to execute an action."
|
msgid "The media player was unable to execute an action."
|
||||||
msgstr "Le lecteur n’a pas pu réaliser l’action."
|
msgstr "Le lecteur n’a pas pu réaliser l’action."
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/show_menu.rs:174
|
#: podcasts-gtk/src/widgets/show_menu.rs:150
|
||||||
msgid "Marked all episodes as listened"
|
msgid "Marked all episodes as listened"
|
||||||
msgstr "Marquer tous les épisodes comme écoutés"
|
msgstr "Marquer tous les épisodes comme écoutés"
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/show_menu.rs:179
|
#: podcasts-gtk/src/widgets/show_menu.rs:155
|
||||||
msgid "Unsubscribed from {}"
|
msgid "Unsubscribed from {}"
|
||||||
msgstr "Se désabonner de {}"
|
msgstr "Se désabonner de {}"
|
||||||
|
|
||||||
#~ msgid "@icon@"
|
|
||||||
#~ msgstr "@icon@"
|
|
||||||
|
|
||||||
#~ msgid "_Preferences"
|
|
||||||
#~ msgstr "_Préférences"
|
|
||||||
|
|
||||||
#~ msgid "You are already subscribed to that feed!"
|
|
||||||
#~ msgstr "Vous êtes déjà abonné à ce flux !"
|
|
||||||
|
|
||||||
#~ msgctxt "shortcut window"
|
|
||||||
#~ msgid "Preferences"
|
|
||||||
#~ msgstr "Préférences"
|
|
||||||
|
|
||||||
#~ msgid "Preferences"
|
|
||||||
#~ msgstr "Préférences"
|
|
||||||
|
|
||||||
#~ msgid "Appearance"
|
|
||||||
#~ msgstr "Apparence"
|
|
||||||
|
|
||||||
#~ msgid "Dark Theme"
|
|
||||||
#~ msgstr "Thème sombre"
|
|
||||||
|
|
||||||
#~ msgid "Delete played episodes"
|
|
||||||
#~ msgstr "Supprimer les épisodes lus"
|
|
||||||
|
|
||||||
#~ msgid "After"
|
|
||||||
#~ msgstr "Après"
|
|
||||||
|
|
||||||
#~ msgid "Invalid URL"
|
|
||||||
#~ msgstr "URL non valide"
|
|
||||||
|
|
||||||
#~ msgid "Seconds"
|
|
||||||
#~ msgstr "Secondes"
|
|
||||||
|
|
||||||
#~ msgid "Minutes"
|
|
||||||
#~ msgstr "Minutes"
|
|
||||||
|
|
||||||
#~ msgid "Hours"
|
|
||||||
#~ msgstr "Heures"
|
|
||||||
|
|
||||||
#~ msgid "Days"
|
|
||||||
#~ msgstr "Jours"
|
|
||||||
|
|
||||||
#~ msgid "Weeks"
|
|
||||||
#~ msgstr "Semaines"
|
|
||||||
|
|||||||
@ -7,15 +7,15 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: podcasts master\n"
|
"Project-Id-Version: podcasts master\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
||||||
"POT-Creation-Date: 2019-12-08 20:03+0000\n"
|
"POT-Creation-Date: 2018-09-03 13:42+0000\n"
|
||||||
"PO-Revision-Date: 2020-01-21 11:00+0100\n"
|
"PO-Revision-Date: 2018-09-04 20:17+0200\n"
|
||||||
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
|
|
||||||
"Language-Team: Friulian <fur@li.org>\n"
|
"Language-Team: Friulian <fur@li.org>\n"
|
||||||
"Language: fur\n"
|
"Language: fur\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: Poedit 2.2.4\n"
|
"Last-Translator: \n"
|
||||||
|
"X-Generator: Poedit 2.0.7\n"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
||||||
msgid "Top position of the last open main window"
|
msgid "Top position of the last open main window"
|
||||||
@ -68,8 +68,8 @@ msgstr "Ce periodi di timp di spietâ tra lis netisiis automatichis"
|
|||||||
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:158 podcasts-gtk/src/app.rs:330
|
#: podcasts-gtk/src/app.rs:91 podcasts-gtk/src/app.rs:414
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:56
|
#: podcasts-gtk/src/widgets/aboutdialog.rs:31
|
||||||
msgid "Podcasts"
|
msgid "Podcasts"
|
||||||
msgstr "Podcasts"
|
msgstr "Podcasts"
|
||||||
|
|
||||||
@ -78,6 +78,11 @@ msgstr "Podcasts"
|
|||||||
msgid "Listen to your favorite podcasts, right from your desktop."
|
msgid "Listen to your favorite podcasts, right from your desktop."
|
||||||
msgstr "Scolte i tiei podcast preferîts, daurman dal to scritori."
|
msgstr "Scolte i tiei podcast preferîts, daurman dal to scritori."
|
||||||
|
|
||||||
|
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
|
||||||
|
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:6
|
||||||
|
msgid "@icon@"
|
||||||
|
msgstr "@icon@"
|
||||||
|
|
||||||
#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
|
#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:13
|
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:13
|
||||||
msgid "Podcast;RSS;"
|
msgid "Podcast;RSS;"
|
||||||
@ -87,7 +92,7 @@ msgstr "Podcast;RSS;Regjistrazion;Trasmission;"
|
|||||||
msgid "Podcast app for GNOME"
|
msgid "Podcast app for GNOME"
|
||||||
msgstr "Aplicazion podcast par GNOME"
|
msgstr "Aplicazion podcast par GNOME"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:84
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:51
|
||||||
msgid "Jordan Petridis"
|
msgid "Jordan Petridis"
|
||||||
msgstr "Jordan Petridis"
|
msgstr "Jordan Petridis"
|
||||||
|
|
||||||
@ -97,9 +102,7 @@ msgstr "Chest spetacul nol à ancjemò episodis"
|
|||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/empty_view.ui:62
|
#: podcasts-gtk/resources/gtk/empty_view.ui:62
|
||||||
msgid "If you think this is an error, please consider writing a bug report."
|
msgid "If you think this is an error, please consider writing a bug report."
|
||||||
msgstr ""
|
msgstr "Se tu pensis che chest al sedi un erôr, considere di scrivi une segnalazion di erôr."
|
||||||
"Se tu pensis che chest al sedi un erôr, considere di scrivi une segnalazion "
|
|
||||||
"di erôr."
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/empty_view.ui:106
|
#: podcasts-gtk/resources/gtk/empty_view.ui:106
|
||||||
msgid "Get some shows"
|
msgid "Get some shows"
|
||||||
@ -113,26 +116,22 @@ msgstr "Zonte gnûfs spetacui vie URL di feed"
|
|||||||
msgid "Import shows from another device"
|
msgid "Import shows from another device"
|
||||||
msgstr "Impuarte i spetacui di un altri dispositîf"
|
msgstr "Impuarte i spetacui di un altri dispositîf"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:79
|
#: podcasts-gtk/resources/gtk/episode_widget.ui:178
|
||||||
msgid "You’ve already listened to this episode."
|
|
||||||
msgstr "Tu âs za scoltât chest episodi."
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:208
|
|
||||||
msgid "Calculating episode size…"
|
msgid "Calculating episode size…"
|
||||||
msgstr "Calcul de dimension dal episodi…"
|
msgstr "Calcul de dimension dal episodi…"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:248
|
#: podcasts-gtk/resources/gtk/episode_widget.ui:214
|
||||||
msgid "Play this episode"
|
msgid "Cancel"
|
||||||
msgstr "Viôt chest episodi"
|
msgstr "Anule"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:269
|
#: podcasts-gtk/resources/gtk/episode_widget.ui:232
|
||||||
msgid "Cancel the download process"
|
|
||||||
msgstr "Anule il procès di discjariament"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:292
|
|
||||||
msgid "Download this episode"
|
msgid "Download this episode"
|
||||||
msgstr "Discjarie chest episodi"
|
msgstr "Discjarie chest episodi"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/episode_widget.ui:256
|
||||||
|
msgid "Play this episode"
|
||||||
|
msgstr "Viôt chest episodi"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/hamburger.ui:7
|
#: podcasts-gtk/resources/gtk/hamburger.ui:7
|
||||||
msgid "_Check for New Episodes"
|
msgid "_Check for New Episodes"
|
||||||
msgstr "_Controle par gnûfs episodis"
|
msgstr "_Controle par gnûfs episodis"
|
||||||
@ -141,20 +140,20 @@ msgstr "_Controle par gnûfs episodis"
|
|||||||
msgid "_Import Shows"
|
msgid "_Import Shows"
|
||||||
msgstr "_Impuarte spetacui"
|
msgstr "_Impuarte spetacui"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/hamburger.ui:16
|
|
||||||
msgid "_Export Shows"
|
|
||||||
msgstr "_Espuarte spetacui"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/hamburger.ui:22
|
#: podcasts-gtk/resources/gtk/hamburger.ui:22
|
||||||
|
msgid "_Preferences"
|
||||||
|
msgstr "_Preferencis"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/hamburger.ui:29
|
||||||
msgid "_Keyboard Shortcuts"
|
msgid "_Keyboard Shortcuts"
|
||||||
msgstr "_Scurtis tastiere"
|
msgstr "_Scurtis tastiere"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/hamburger.ui:30
|
#: podcasts-gtk/resources/gtk/hamburger.ui:37
|
||||||
msgid "_About Podcasts"
|
msgid "_About"
|
||||||
msgstr "_Informazions su Podcasts"
|
msgstr "_Informazions"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:186
|
#: podcasts-gtk/resources/gtk/headerbar.ui:189
|
||||||
msgid "Add a new feed"
|
msgid "Add a new feed"
|
||||||
msgstr "Zonte un gnûf feed"
|
msgstr "Zonte un gnûf feed"
|
||||||
|
|
||||||
@ -166,11 +165,15 @@ msgstr "Inserìs la direzion dal feed di zontâ"
|
|||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Zonte"
|
msgstr "Zonte"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:171
|
#: podcasts-gtk/resources/gtk/headerbar.ui:133
|
||||||
|
msgid "You are already subscribed to that feed!"
|
||||||
|
msgstr "Tu sês za sotscrit a chest feed!"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/headerbar.ui:169
|
||||||
msgid "Show Title"
|
msgid "Show Title"
|
||||||
msgstr "Titul dal spetacul"
|
msgstr "Titul dal spetacul"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:207
|
#: podcasts-gtk/resources/gtk/headerbar.ui:210
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr "Indaûr"
|
msgstr "Indaûr"
|
||||||
|
|
||||||
@ -185,6 +188,11 @@ msgstr "Controle se a son gnûfs episodis"
|
|||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/help-overlay.ui:25
|
#: podcasts-gtk/resources/gtk/help-overlay.ui:25
|
||||||
msgctxt "shortcut window"
|
msgctxt "shortcut window"
|
||||||
|
msgid "Preferences"
|
||||||
|
msgstr "Preferencis"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/help-overlay.ui:32
|
||||||
|
msgctxt "shortcut window"
|
||||||
msgid "Quit the application"
|
msgid "Quit the application"
|
||||||
msgstr "Jes de aplicazion"
|
msgstr "Jes de aplicazion"
|
||||||
|
|
||||||
@ -261,6 +269,27 @@ msgstr "rapuart di velocitât 1.25"
|
|||||||
msgid "Normal speed"
|
msgid "Normal speed"
|
||||||
msgstr "Velocitât normâl"
|
msgstr "Velocitât normâl"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:42
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:295
|
||||||
|
msgid "Preferences"
|
||||||
|
msgstr "Preferencis"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:76
|
||||||
|
msgid "Appearance"
|
||||||
|
msgstr "Aspiet"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:120
|
||||||
|
msgid "Dark Theme"
|
||||||
|
msgstr "Teme scûr"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:166
|
||||||
|
msgid "Delete played episodes"
|
||||||
|
msgstr "Elimine i episodis viodûts"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:211
|
||||||
|
msgid "After"
|
||||||
|
msgstr "Dopo"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
||||||
msgid "_Mark All Episodes as Played"
|
msgid "_Mark All Episodes as Played"
|
||||||
msgstr "_Segne ducj i episodis come viodûts"
|
msgstr "_Segne ducj i episodis come viodûts"
|
||||||
@ -285,136 +314,91 @@ msgstr "Segne dut come viodût"
|
|||||||
msgid "Unsubscribe"
|
msgid "Unsubscribe"
|
||||||
msgstr "Anule sotscrizion"
|
msgstr "Anule sotscrizion"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/show_widget.ui:99
|
#: podcasts-gtk/src/app.rs:332
|
||||||
msgid "Read More"
|
|
||||||
msgstr "Lei di plui"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/app.rs:265
|
|
||||||
msgid "Fetching new episodes"
|
msgid "Fetching new episodes"
|
||||||
msgstr "Daûr a recuperâ i gnûfs episodis"
|
msgstr "Daûr a recuperâ i gnûfs episodis"
|
||||||
|
|
||||||
#: podcasts-gtk/src/stacks/content.rs:54
|
#: podcasts-gtk/src/headerbar.rs:98
|
||||||
|
msgid "You are already subscribed to this show"
|
||||||
|
msgstr "Tu sês za sotscrit a chest spetacul"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:106
|
||||||
|
msgid "Invalid URL"
|
||||||
|
msgstr "URL no valit"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:59
|
||||||
|
msgid "Seconds"
|
||||||
|
msgstr "Seconts"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:60
|
||||||
|
msgid "Minutes"
|
||||||
|
msgstr "Minûts"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:61
|
||||||
|
msgid "Hours"
|
||||||
|
msgstr "Oris"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:62
|
||||||
|
msgid "Days"
|
||||||
|
msgstr "Diis"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:63
|
||||||
|
msgid "Weeks"
|
||||||
|
msgstr "Setemanis"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/stacks/content.rs:35
|
||||||
msgid "New"
|
msgid "New"
|
||||||
msgstr "Gnûf"
|
msgstr "Gnûf"
|
||||||
|
|
||||||
#: podcasts-gtk/src/stacks/content.rs:55
|
#: podcasts-gtk/src/stacks/content.rs:36
|
||||||
msgid "Shows"
|
msgid "Shows"
|
||||||
msgstr "Spetacui"
|
msgstr "Spetacui"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:396
|
#: podcasts-gtk/src/utils.rs:357
|
||||||
msgid "Select the file from which to you want to import shows."
|
msgid "Select the file from which to you want to import shows."
|
||||||
msgstr "Selezione il file che di chei si desidere impuartâ i spetacui."
|
msgstr "Selezione il file che di chei si desidere impuartâ i spetacui."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:399
|
#: podcasts-gtk/src/utils.rs:360
|
||||||
msgid "_Import"
|
msgid "_Import"
|
||||||
msgstr "_Impuarte"
|
msgstr "_Impuarte"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:408 podcasts-gtk/src/utils.rs:456
|
#: podcasts-gtk/src/utils.rs:369
|
||||||
msgid "OPML file"
|
msgid "OPML file"
|
||||||
msgstr "File OPML"
|
msgstr "File OPML"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:425
|
#: podcasts-gtk/src/utils.rs:386
|
||||||
msgid "Failed to parse the imported file"
|
msgid "Failed to parse the imported file"
|
||||||
msgstr "No si è rivâts a analizâ il file impuartât"
|
msgstr "No si è rivâts a analizâ il file impuartât"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:430 podcasts-gtk/src/utils.rs:474
|
#: podcasts-gtk/src/utils.rs:391
|
||||||
msgid "Selected file could not be accessed."
|
msgid "Selected file could not be accessed."
|
||||||
msgstr "Il file selezionât nol pues jessi doprât."
|
msgstr "Il file selezionât nol pues jessi doprât."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:444
|
#: podcasts-gtk/src/widgets/aboutdialog.rs:26
|
||||||
msgid "Export shows to…"
|
|
||||||
msgstr "_Espuarte spetacui su…"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:447
|
|
||||||
msgid "_Export"
|
|
||||||
msgstr "_Espuarte"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:448
|
|
||||||
msgid "_Cancel"
|
|
||||||
msgstr "_Anule"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:468
|
|
||||||
msgid "GNOME Podcasts Subscriptions"
|
|
||||||
msgstr "Sotscrizions di GNOME Podcasts"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:469
|
|
||||||
msgid "Failed to export podcasts"
|
|
||||||
msgstr "No si è rivâts a espuartâ i podcast"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:51
|
|
||||||
msgid "Podcast Client for the GNOME Desktop."
|
msgid "Podcast Client for the GNOME Desktop."
|
||||||
msgstr "Client podcast pal scritori GNOME."
|
msgstr "Client podcast pal scritori GNOME."
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:58
|
#: podcasts-gtk/src/widgets/aboutdialog.rs:33
|
||||||
msgid "Learn more about GNOME Podcasts"
|
msgid "Learn more about GNOME Podcasts"
|
||||||
msgstr "Plui informazions su GNOME Podcasts"
|
msgstr "Plui informazions su GNOME Podcasts"
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:63
|
#: podcasts-gtk/src/widgets/aboutdialog.rs:38
|
||||||
msgid "translator-credits"
|
msgid "translator-credits"
|
||||||
msgstr "Fabio Tomat <f.t.public@gmail.com>"
|
msgstr "Fabio Tomat <f.t.public@gmail.com>"
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/episode.rs:148
|
#: podcasts-gtk/src/widgets/episode.rs:129
|
||||||
msgid "{} min"
|
msgid "{} min"
|
||||||
msgstr "{} min"
|
msgstr "{} min"
|
||||||
|
|
||||||
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
||||||
#: podcasts-gtk/src/widgets/player.rs:539
|
#: podcasts-gtk/src/widgets/player.rs:301
|
||||||
msgid "The media player was unable to execute an action."
|
msgid "The media player was unable to execute an action."
|
||||||
msgstr "Il riprodutôr multimediâl nol è stât bon di eseguî une azion."
|
msgstr "Il riprodutôr multimediâl nol è stât bon di eseguî une azion."
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/show_menu.rs:179
|
#: podcasts-gtk/src/widgets/show_menu.rs:150
|
||||||
msgid "Marked all episodes as listened"
|
msgid "Marked all episodes as listened"
|
||||||
msgstr "Segnât ducj i episodis come scoltâts"
|
msgstr "Segnât ducj i episodis come scoltâts"
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/show_menu.rs:184
|
#: podcasts-gtk/src/widgets/show_menu.rs:155
|
||||||
msgid "Unsubscribed from {}"
|
msgid "Unsubscribed from {}"
|
||||||
msgstr "Sotscrizion anulade di {}"
|
msgstr "Sotscrizion anulade di {}"
|
||||||
|
|
||||||
#~ msgid "@icon@"
|
|
||||||
#~ msgstr "@icon@"
|
|
||||||
|
|
||||||
#~ msgid "_Preferences"
|
|
||||||
#~ msgstr "_Preferencis"
|
|
||||||
|
|
||||||
#~ msgid "_About"
|
|
||||||
#~ msgstr "_Informazions"
|
|
||||||
|
|
||||||
#~ msgid "You are already subscribed to that feed!"
|
|
||||||
#~ msgstr "Tu sês za sotscrit a chest feed!"
|
|
||||||
|
|
||||||
#~ msgctxt "shortcut window"
|
|
||||||
#~ msgid "Preferences"
|
|
||||||
#~ msgstr "Preferencis"
|
|
||||||
|
|
||||||
#~ msgid "Preferences"
|
|
||||||
#~ msgstr "Preferencis"
|
|
||||||
|
|
||||||
#~ msgid "Appearance"
|
|
||||||
#~ msgstr "Aspiet"
|
|
||||||
|
|
||||||
#~ msgid "Dark Theme"
|
|
||||||
#~ msgstr "Teme scûr"
|
|
||||||
|
|
||||||
#~ msgid "Delete played episodes"
|
|
||||||
#~ msgstr "Elimine i episodis viodûts"
|
|
||||||
|
|
||||||
#~ msgid "After"
|
|
||||||
#~ msgstr "Dopo"
|
|
||||||
|
|
||||||
#~ msgid "Invalid URL"
|
|
||||||
#~ msgstr "URL no valit"
|
|
||||||
|
|
||||||
#~ msgid "Seconds"
|
|
||||||
#~ msgstr "Seconts"
|
|
||||||
|
|
||||||
#~ msgid "Minutes"
|
|
||||||
#~ msgstr "Minûts"
|
|
||||||
|
|
||||||
#~ msgid "Hours"
|
|
||||||
#~ msgstr "Oris"
|
|
||||||
|
|
||||||
#~ msgid "Days"
|
|
||||||
#~ msgstr "Diis"
|
|
||||||
|
|
||||||
#~ msgid "Weeks"
|
|
||||||
#~ msgstr "Setemanis"
|
|
||||||
|
|||||||
@ -7,9 +7,9 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: podcasts master\n"
|
"Project-Id-Version: podcasts master\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
||||||
"POT-Creation-Date: 2020-02-07 11:33+0000\n"
|
"POT-Creation-Date: 2019-06-15 10:55+0000\n"
|
||||||
"PO-Revision-Date: 2020-03-15 15:53+0100\n"
|
"PO-Revision-Date: 2019-06-22 22:30+0200\n"
|
||||||
"Last-Translator: gogo <linux.hr@protonmail.com>\n"
|
"Last-Translator: gogo <trebelnik2@gmail.com>\n"
|
||||||
"Language-Team: Croatian <hr@li.org>\n"
|
"Language-Team: Croatian <hr@li.org>\n"
|
||||||
"Language: hr\n"
|
"Language: hr\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@ -17,7 +17,7 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||||
"X-Generator: Poedit 2.0.6\n"
|
"X-Generator: Poedit 2.2.1\n"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
||||||
msgid "Top position of the last open main window"
|
msgid "Top position of the last open main window"
|
||||||
@ -73,8 +73,8 @@ msgstr "Koliko vremensko razdoblje treba pričekati između automatskih čišće
|
|||||||
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:158 podcasts-gtk/src/app.rs:330
|
#: podcasts-gtk/src/app.rs:109 podcasts-gtk/src/app.rs:433
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:56 podcasts-gtk/src/window.rs:80
|
#: podcasts-gtk/src/widgets/aboutdialog.rs:56
|
||||||
msgid "Podcasts"
|
msgid "Podcasts"
|
||||||
msgstr "Podcasti"
|
msgstr "Podcasti"
|
||||||
|
|
||||||
@ -92,7 +92,7 @@ msgstr "Podcast;RSS;"
|
|||||||
msgid "Podcast app for GNOME"
|
msgid "Podcast app for GNOME"
|
||||||
msgstr "Podcast aplikacija za GNOME"
|
msgstr "Podcast aplikacija za GNOME"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:84
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:77
|
||||||
msgid "Jordan Petridis"
|
msgid "Jordan Petridis"
|
||||||
msgstr "Jordan Petridis"
|
msgstr "Jordan Petridis"
|
||||||
|
|
||||||
@ -157,7 +157,7 @@ msgid "_About Podcasts"
|
|||||||
msgstr "_O Podcasti"
|
msgstr "_O Podcasti"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:186
|
#: podcasts-gtk/resources/gtk/headerbar.ui:177
|
||||||
msgid "Add a new feed"
|
msgid "Add a new feed"
|
||||||
msgstr "Dodaj novi kanal"
|
msgstr "Dodaj novi kanal"
|
||||||
|
|
||||||
@ -169,11 +169,11 @@ msgstr "Upišite adresu kanala za dodavanje"
|
|||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Dodaj"
|
msgstr "Dodaj"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:171
|
#: podcasts-gtk/resources/gtk/headerbar.ui:157
|
||||||
msgid "Show Title"
|
msgid "Show Title"
|
||||||
msgstr "Prikaži naslov"
|
msgstr "Prikaži naslov"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:207
|
#: podcasts-gtk/resources/gtk/headerbar.ui:198
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr "Natrag"
|
msgstr "Natrag"
|
||||||
|
|
||||||
@ -219,55 +219,51 @@ msgstr "Obavijesti radnja iz aplikacije"
|
|||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Vrati"
|
msgstr "Vrati"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_dialog.ui:14
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:72
|
||||||
msgid "Now Playing"
|
|
||||||
msgstr "Trenutna reprodukcija"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:32
|
|
||||||
msgid "Change the playback speed"
|
|
||||||
msgstr "Promijeni brzinu reprodukcije"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:47
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:122
|
|
||||||
msgid "1.00×"
|
|
||||||
msgstr "1.00×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:86
|
|
||||||
msgid "1.50×"
|
|
||||||
msgstr "1.50×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:90
|
|
||||||
msgid "1.5 speed rate"
|
|
||||||
msgstr "1.5 brže"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:104
|
|
||||||
msgid "1.25×"
|
|
||||||
msgstr "1.25×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:108
|
|
||||||
msgid "1.25 speed rate"
|
|
||||||
msgstr "1.25 brže"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:126
|
|
||||||
msgid "Normal speed"
|
|
||||||
msgstr "Normalna brzina"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:97
|
|
||||||
msgid "Rewind 10 seconds"
|
msgid "Rewind 10 seconds"
|
||||||
msgstr "Premotaj 10 sekundi"
|
msgstr "Premotaj 10 sekundi"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:112
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:87
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Reproduciraj"
|
msgstr "Reproduciraj"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:128
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:103
|
||||||
msgid "Pause"
|
msgid "Pause"
|
||||||
msgstr "Pauziraj"
|
msgstr "Pauziraj"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:144
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:119
|
||||||
msgid "Fast forward 10 seconds"
|
msgid "Fast forward 10 seconds"
|
||||||
msgstr "Brzo premotaj 10 sekundi"
|
msgstr "Brzo premotaj 10 sekundi"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:285
|
||||||
|
msgid "Change the playback speed"
|
||||||
|
msgstr "Promijeni brzinu reprodukcije"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:300
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:380
|
||||||
|
msgid "1.00×"
|
||||||
|
msgstr "1.00×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:344
|
||||||
|
msgid "1.50×"
|
||||||
|
msgstr "1.50×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:348
|
||||||
|
msgid "1.5 speed rate"
|
||||||
|
msgstr "1.5 brže"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:362
|
||||||
|
msgid "1.25×"
|
||||||
|
msgstr "1.25×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:366
|
||||||
|
msgid "1.25 speed rate"
|
||||||
|
msgstr "1.25 brže"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:384
|
||||||
|
msgid "Normal speed"
|
||||||
|
msgstr "Normalna brzina"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
||||||
msgid "_Mark All Episodes as Played"
|
msgid "_Mark All Episodes as Played"
|
||||||
msgstr "_Označi se epizode kao odslušane"
|
msgstr "_Označi se epizode kao odslušane"
|
||||||
@ -292,14 +288,18 @@ msgstr "Označi sve kao odslušano"
|
|||||||
msgid "Unsubscribe"
|
msgid "Unsubscribe"
|
||||||
msgstr "Ukini pretplatu"
|
msgstr "Ukini pretplatu"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/show_widget.ui:99
|
#: podcasts-gtk/src/app.rs:351
|
||||||
msgid "Read More"
|
|
||||||
msgstr "Pročitaj više"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/app.rs:265
|
|
||||||
msgid "Fetching new episodes"
|
msgid "Fetching new episodes"
|
||||||
msgstr "Preuzimanje novi epizoda"
|
msgstr "Preuzimanje novi epizoda"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:127
|
||||||
|
msgid "You are already subscribed to this show"
|
||||||
|
msgstr "Već ste pretplaćeni na ovu emisiju"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:145
|
||||||
|
msgid "Invalid URL"
|
||||||
|
msgstr "Nevažeći URL"
|
||||||
|
|
||||||
#: podcasts-gtk/src/stacks/content.rs:54
|
#: podcasts-gtk/src/stacks/content.rs:54
|
||||||
msgid "New"
|
msgid "New"
|
||||||
msgstr "Novo"
|
msgstr "Novo"
|
||||||
@ -308,43 +308,43 @@ msgstr "Novo"
|
|||||||
msgid "Shows"
|
msgid "Shows"
|
||||||
msgstr "Emisije"
|
msgstr "Emisije"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:396
|
#: podcasts-gtk/src/utils.rs:397
|
||||||
msgid "Select the file from which to you want to import shows."
|
msgid "Select the file from which to you want to import shows."
|
||||||
msgstr "Odaberite datoteku iz koje želite uvesti emisije."
|
msgstr "Odaberite datoteku iz koje želite uvesti emisije."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:399
|
#: podcasts-gtk/src/utils.rs:400
|
||||||
msgid "_Import"
|
msgid "_Import"
|
||||||
msgstr "_Uvoz"
|
msgstr "_Uvoz"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:408 podcasts-gtk/src/utils.rs:456
|
#: podcasts-gtk/src/utils.rs:409 podcasts-gtk/src/utils.rs:457
|
||||||
msgid "OPML file"
|
msgid "OPML file"
|
||||||
msgstr "OPML datoteka"
|
msgstr "OPML datoteka"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:425
|
#: podcasts-gtk/src/utils.rs:426
|
||||||
msgid "Failed to parse the imported file"
|
msgid "Failed to parse the imported file"
|
||||||
msgstr "Neuspjela obrada uvezene datoteke"
|
msgstr "Neuspjela obrada uvezene datoteke"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:430 podcasts-gtk/src/utils.rs:474
|
#: podcasts-gtk/src/utils.rs:431 podcasts-gtk/src/utils.rs:475
|
||||||
msgid "Selected file could not be accessed."
|
msgid "Selected file could not be accessed."
|
||||||
msgstr "Nemoguć pristup dabranoj datoteci."
|
msgstr "Nemoguć pristup dabranoj datoteci."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:444
|
#: podcasts-gtk/src/utils.rs:445
|
||||||
msgid "Export shows to…"
|
msgid "Export shows to…"
|
||||||
msgstr "_Izvezi emisije u…"
|
msgstr "_Izvezi emisije u…"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:447
|
#: podcasts-gtk/src/utils.rs:448
|
||||||
msgid "_Export"
|
msgid "_Export"
|
||||||
msgstr "_Uvoz"
|
msgstr "_Uvoz"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:448
|
#: podcasts-gtk/src/utils.rs:449
|
||||||
msgid "_Cancel"
|
msgid "_Cancel"
|
||||||
msgstr "_Odustani"
|
msgstr "_Odustani"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:468
|
#: podcasts-gtk/src/utils.rs:469
|
||||||
msgid "GNOME Podcasts Subscriptions"
|
msgid "GNOME Podcasts Subscriptions"
|
||||||
msgstr "GNOME Podcast pretplate"
|
msgstr "GNOME Podcast pretplate"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:469
|
#: podcasts-gtk/src/utils.rs:470
|
||||||
msgid "Failed to export podcasts"
|
msgid "Failed to export podcasts"
|
||||||
msgstr "Neuspjeli uvoz podcasta"
|
msgstr "Neuspjeli uvoz podcasta"
|
||||||
|
|
||||||
@ -367,7 +367,7 @@ msgid "{} min"
|
|||||||
msgstr "{} min"
|
msgstr "{} min"
|
||||||
|
|
||||||
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
||||||
#: podcasts-gtk/src/widgets/player.rs:824
|
#: podcasts-gtk/src/widgets/player.rs:534
|
||||||
msgid "The media player was unable to execute an action."
|
msgid "The media player was unable to execute an action."
|
||||||
msgstr "Medijski reproduktor nije uspio izvršiti radnju."
|
msgstr "Medijski reproduktor nije uspio izvršiti radnju."
|
||||||
|
|
||||||
@ -379,12 +379,6 @@ msgstr "Označi sve epizodae kao odslušane"
|
|||||||
msgid "Unsubscribed from {}"
|
msgid "Unsubscribed from {}"
|
||||||
msgstr "Ukini pretplatu za {}"
|
msgstr "Ukini pretplatu za {}"
|
||||||
|
|
||||||
#~ msgid "You are already subscribed to this show"
|
|
||||||
#~ msgstr "Već ste pretplaćeni na ovu emisiju"
|
|
||||||
|
|
||||||
#~ msgid "Invalid URL"
|
|
||||||
#~ msgstr "Nevažeći URL"
|
|
||||||
|
|
||||||
#~ msgid "_Preferences"
|
#~ msgid "_Preferences"
|
||||||
#~ msgstr "_Osobitosti"
|
#~ msgstr "_Osobitosti"
|
||||||
|
|
||||||
|
|||||||
@ -1,15 +1,15 @@
|
|||||||
# Hungarian translation for podcasts.
|
# Hungarian translation for podcasts.
|
||||||
# Copyright (C) 2018, 2019, 2020 Free Software Foundation, Inc.
|
# Copyright (C) 2018, 2019. Free Software Foundation, Inc.
|
||||||
# This file is distributed under the same license as the podcasts package.
|
# This file is distributed under the same license as the podcasts package.
|
||||||
#
|
#
|
||||||
# Meskó Balázs <mesko.balazs at fsf dot hu>, 2018.
|
# Meskó Balázs <mesko.balazs at fsf dot hu>, 2018.
|
||||||
# Balázs Úr <ur.balazs at fsf dot hu>, 2019, 2020.
|
# Balázs Úr <ur.balazs at fsf dot hu>, 2019.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: podcasts master\n"
|
"Project-Id-Version: podcasts master\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
||||||
"POT-Creation-Date: 2020-02-07 11:33+0000\n"
|
"POT-Creation-Date: 2019-05-18 12:55+0000\n"
|
||||||
"PO-Revision-Date: 2020-02-17 23:31+0100\n"
|
"PO-Revision-Date: 2019-06-03 22:27+0200\n"
|
||||||
"Last-Translator: Balázs Úr <ur.balazs at fsf dot hu>\n"
|
"Last-Translator: Balázs Úr <ur.balazs at fsf dot hu>\n"
|
||||||
"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
|
"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
|
||||||
"Language: hu\n"
|
"Language: hu\n"
|
||||||
@ -17,7 +17,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Lokalize 19.04.3\n"
|
"X-Generator: Lokalize 18.12.3\n"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
||||||
msgid "Top position of the last open main window"
|
msgid "Top position of the last open main window"
|
||||||
@ -70,8 +70,8 @@ msgstr "Milyen időközöket várjon az automatikus tisztítások között"
|
|||||||
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:158 podcasts-gtk/src/app.rs:330
|
#: podcasts-gtk/src/app.rs:109 podcasts-gtk/src/app.rs:433
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:56 podcasts-gtk/src/window.rs:80
|
#: podcasts-gtk/src/widgets/aboutdialog.rs:56
|
||||||
msgid "Podcasts"
|
msgid "Podcasts"
|
||||||
msgstr "Podcastok"
|
msgstr "Podcastok"
|
||||||
|
|
||||||
@ -89,7 +89,7 @@ msgstr "Podcast;RSS;"
|
|||||||
msgid "Podcast app for GNOME"
|
msgid "Podcast app for GNOME"
|
||||||
msgstr "Podcast alkalmazás a GNOME-hoz"
|
msgstr "Podcast alkalmazás a GNOME-hoz"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:84
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:77
|
||||||
msgid "Jordan Petridis"
|
msgid "Jordan Petridis"
|
||||||
msgstr "Jordan Petridis"
|
msgstr "Jordan Petridis"
|
||||||
|
|
||||||
@ -114,6 +114,7 @@ msgid "Import shows from another device"
|
|||||||
msgstr "Műsorok importálása egy másik eszközről"
|
msgstr "Műsorok importálása egy másik eszközről"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:79
|
#: podcasts-gtk/resources/gtk/episode_widget.ui:79
|
||||||
|
#| msgid "You are already subscribed to this show"
|
||||||
msgid "You’ve already listened to this episode."
|
msgid "You’ve already listened to this episode."
|
||||||
msgstr "Már meghallgatta ezt az epizódot."
|
msgstr "Már meghallgatta ezt az epizódot."
|
||||||
|
|
||||||
@ -154,7 +155,7 @@ msgid "_About Podcasts"
|
|||||||
msgstr "A Podcastok _névjegye"
|
msgstr "A Podcastok _névjegye"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:186
|
#: podcasts-gtk/resources/gtk/headerbar.ui:189
|
||||||
msgid "Add a new feed"
|
msgid "Add a new feed"
|
||||||
msgstr "Új csatorna hozzáadása"
|
msgstr "Új csatorna hozzáadása"
|
||||||
|
|
||||||
@ -166,11 +167,15 @@ msgstr "Adja meg a hozzáadandó csatorna címét"
|
|||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Hozzáadás"
|
msgstr "Hozzáadás"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:171
|
#: podcasts-gtk/resources/gtk/headerbar.ui:133
|
||||||
|
msgid "You are already subscribed to that feed!"
|
||||||
|
msgstr "Már feliratkozott erre a csatornára."
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/headerbar.ui:169
|
||||||
msgid "Show Title"
|
msgid "Show Title"
|
||||||
msgstr "Műsor címe"
|
msgstr "Műsor címe"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:207
|
#: podcasts-gtk/resources/gtk/headerbar.ui:210
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr "Vissza"
|
msgstr "Vissza"
|
||||||
|
|
||||||
@ -216,55 +221,51 @@ msgstr "Alkalmazáson belüli műveletértesítések"
|
|||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Visszavonás"
|
msgstr "Visszavonás"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_dialog.ui:14
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:72
|
||||||
msgid "Now Playing"
|
|
||||||
msgstr "Most játssza"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:32
|
|
||||||
msgid "Change the playback speed"
|
|
||||||
msgstr "Lejátszási sebesség módosítása"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:47
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:122
|
|
||||||
msgid "1.00×"
|
|
||||||
msgstr "1,00×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:86
|
|
||||||
msgid "1.50×"
|
|
||||||
msgstr "1,50×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:90
|
|
||||||
msgid "1.5 speed rate"
|
|
||||||
msgstr "1,5-szeres sebesség"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:104
|
|
||||||
msgid "1.25×"
|
|
||||||
msgstr "1,25×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:108
|
|
||||||
msgid "1.25 speed rate"
|
|
||||||
msgstr "1,25-szörös sebesség"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:126
|
|
||||||
msgid "Normal speed"
|
|
||||||
msgstr "Normál sebesség"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:97
|
|
||||||
msgid "Rewind 10 seconds"
|
msgid "Rewind 10 seconds"
|
||||||
msgstr "Visszatekerés 10 másodperccel"
|
msgstr "Visszatekerés 10 másodperccel"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:112
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:87
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Lejátszás"
|
msgstr "Lejátszás"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:128
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:103
|
||||||
msgid "Pause"
|
msgid "Pause"
|
||||||
msgstr "Szünet"
|
msgstr "Szünet"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:144
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:119
|
||||||
msgid "Fast forward 10 seconds"
|
msgid "Fast forward 10 seconds"
|
||||||
msgstr "Előretekerés 10 másodperccel"
|
msgstr "Előretekerés 10 másodperccel"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:285
|
||||||
|
msgid "Change the playback speed"
|
||||||
|
msgstr "Lejátszási sebesség módosítása"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:300
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:380
|
||||||
|
msgid "1.00×"
|
||||||
|
msgstr "1,00×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:344
|
||||||
|
msgid "1.50×"
|
||||||
|
msgstr "1,50×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:348
|
||||||
|
msgid "1.5 speed rate"
|
||||||
|
msgstr "1,5-szeres sebesség"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:362
|
||||||
|
msgid "1.25×"
|
||||||
|
msgstr "1,25×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:366
|
||||||
|
msgid "1.25 speed rate"
|
||||||
|
msgstr "1,25-szörös sebesség"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:384
|
||||||
|
msgid "Normal speed"
|
||||||
|
msgstr "Normál sebesség"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
||||||
msgid "_Mark All Episodes as Played"
|
msgid "_Mark All Episodes as Played"
|
||||||
msgstr "Összes epizód meg_jelölése lejátszottként"
|
msgstr "Összes epizód meg_jelölése lejátszottként"
|
||||||
@ -289,14 +290,18 @@ msgstr "Összes megjelölése lejátszottként"
|
|||||||
msgid "Unsubscribe"
|
msgid "Unsubscribe"
|
||||||
msgstr "Leiratkozás"
|
msgstr "Leiratkozás"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/show_widget.ui:99
|
#: podcasts-gtk/src/app.rs:351
|
||||||
msgid "Read More"
|
|
||||||
msgstr "Olvassa tovább"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/app.rs:265
|
|
||||||
msgid "Fetching new episodes"
|
msgid "Fetching new episodes"
|
||||||
msgstr "Új epizódok lekérése"
|
msgstr "Új epizódok lekérése"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:117
|
||||||
|
msgid "You are already subscribed to this show"
|
||||||
|
msgstr "Már feliratkozott erre a műsorra"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:125
|
||||||
|
msgid "Invalid URL"
|
||||||
|
msgstr "Érvénytelen URL"
|
||||||
|
|
||||||
#: podcasts-gtk/src/stacks/content.rs:54
|
#: podcasts-gtk/src/stacks/content.rs:54
|
||||||
msgid "New"
|
msgid "New"
|
||||||
msgstr "Új"
|
msgstr "Új"
|
||||||
@ -305,43 +310,43 @@ msgstr "Új"
|
|||||||
msgid "Shows"
|
msgid "Shows"
|
||||||
msgstr "Műsorok"
|
msgstr "Műsorok"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:396
|
#: podcasts-gtk/src/utils.rs:397
|
||||||
msgid "Select the file from which to you want to import shows."
|
msgid "Select the file from which to you want to import shows."
|
||||||
msgstr "Válasszon egy fájlt, amelyből műsorokat akar importálni."
|
msgstr "Válasszon egy fájlt, amelyből műsorokat akar importálni."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:399
|
#: podcasts-gtk/src/utils.rs:400
|
||||||
msgid "_Import"
|
msgid "_Import"
|
||||||
msgstr "_Importálás"
|
msgstr "_Importálás"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:408 podcasts-gtk/src/utils.rs:456
|
#: podcasts-gtk/src/utils.rs:409 podcasts-gtk/src/utils.rs:457
|
||||||
msgid "OPML file"
|
msgid "OPML file"
|
||||||
msgstr "OPML fájl"
|
msgstr "OPML fájl"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:425
|
#: podcasts-gtk/src/utils.rs:426
|
||||||
msgid "Failed to parse the imported file"
|
msgid "Failed to parse the imported file"
|
||||||
msgstr "Az importált fájl feldolgozása meghiúsult"
|
msgstr "Az importált fájl feldolgozása meghiúsult"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:430 podcasts-gtk/src/utils.rs:474
|
#: podcasts-gtk/src/utils.rs:431 podcasts-gtk/src/utils.rs:475
|
||||||
msgid "Selected file could not be accessed."
|
msgid "Selected file could not be accessed."
|
||||||
msgstr "A kiválasztott fájlok nem érhetőek el."
|
msgstr "A kiválasztott fájlok nem érhetőek el."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:444
|
#: podcasts-gtk/src/utils.rs:445
|
||||||
msgid "Export shows to…"
|
msgid "Export shows to…"
|
||||||
msgstr "Műsorok exportálása ide…"
|
msgstr "Műsorok exportálása ide…"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:447
|
#: podcasts-gtk/src/utils.rs:448
|
||||||
msgid "_Export"
|
msgid "_Export"
|
||||||
msgstr "_Exportálás"
|
msgstr "_Exportálás"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:448
|
#: podcasts-gtk/src/utils.rs:449
|
||||||
msgid "_Cancel"
|
msgid "_Cancel"
|
||||||
msgstr "_Mégse"
|
msgstr "_Mégse"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:468
|
#: podcasts-gtk/src/utils.rs:469
|
||||||
msgid "GNOME Podcasts Subscriptions"
|
msgid "GNOME Podcasts Subscriptions"
|
||||||
msgstr "GNOME Podcastok feliratkozások"
|
msgstr "GNOME Podcastok feliratkozások"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:469
|
#: podcasts-gtk/src/utils.rs:470
|
||||||
msgid "Failed to export podcasts"
|
msgid "Failed to export podcasts"
|
||||||
msgstr "A podcastok exportálása meghiúsult"
|
msgstr "A podcastok exportálása meghiúsult"
|
||||||
|
|
||||||
@ -362,7 +367,7 @@ msgid "{} min"
|
|||||||
msgstr "{} perc"
|
msgstr "{} perc"
|
||||||
|
|
||||||
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
||||||
#: podcasts-gtk/src/widgets/player.rs:824
|
#: podcasts-gtk/src/widgets/player.rs:534
|
||||||
msgid "The media player was unable to execute an action."
|
msgid "The media player was unable to execute an action."
|
||||||
msgstr "A médialejátszó nem tudott végrehajtani egy műveletet."
|
msgstr "A médialejátszó nem tudott végrehajtani egy műveletet."
|
||||||
|
|
||||||
|
|||||||
@ -1,21 +1,21 @@
|
|||||||
# Indonesian translation for podcasts.
|
# Indonesian translation for podcasts.
|
||||||
# Copyright (C) 2018 podcasts's COPYRIGHT HOLDER
|
# Copyright (C) 2018 podcasts's COPYRIGHT HOLDER
|
||||||
# This file is distributed under the same license as the podcasts package.
|
# This file is distributed under the same license as the podcasts package.
|
||||||
# Kukuh Syafaat <kukuhsyafaat@gnome.org>, 2018-2020.
|
# Kukuh Syafaat <kukuhsyafaat@gnome.org>, 2018, 2019.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: podcasts master\n"
|
"Project-Id-Version: podcasts master\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
||||||
"POT-Creation-Date: 2020-02-07 11:33+0000\n"
|
"POT-Creation-Date: 2019-06-15 10:55+0000\n"
|
||||||
"PO-Revision-Date: 2020-02-13 19:33+0700\n"
|
"PO-Revision-Date: 2019-07-11 15:21+0700\n"
|
||||||
"Last-Translator: Kukuh Syafaat <kukuhsyafaat@gnome.org>\n"
|
"Last-Translator: Kukuh Syafaat <kukuhsyafaat@gnome.org>\n"
|
||||||
"Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
|
"Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
|
||||||
"Language: id\n"
|
"Language: id\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: Poedit 2.3\n"
|
"X-Generator: Poedit 2.2.3\n"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
||||||
msgid "Top position of the last open main window"
|
msgid "Top position of the last open main window"
|
||||||
@ -68,8 +68,8 @@ msgstr "Berapa lama waktu untuk menunggu di antara pembersihan otomatis"
|
|||||||
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:158 podcasts-gtk/src/app.rs:330
|
#: podcasts-gtk/src/app.rs:109 podcasts-gtk/src/app.rs:433
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:56 podcasts-gtk/src/window.rs:80
|
#: podcasts-gtk/src/widgets/aboutdialog.rs:56
|
||||||
msgid "Podcasts"
|
msgid "Podcasts"
|
||||||
msgstr "Podcast"
|
msgstr "Podcast"
|
||||||
|
|
||||||
@ -87,7 +87,7 @@ msgstr "Podcast;RSS;"
|
|||||||
msgid "Podcast app for GNOME"
|
msgid "Podcast app for GNOME"
|
||||||
msgstr "Aplikasi Podcast untuk GNOME"
|
msgstr "Aplikasi Podcast untuk GNOME"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:84
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:77
|
||||||
msgid "Jordan Petridis"
|
msgid "Jordan Petridis"
|
||||||
msgstr "Jordan Petridis"
|
msgstr "Jordan Petridis"
|
||||||
|
|
||||||
@ -154,7 +154,7 @@ msgid "_About Podcasts"
|
|||||||
msgstr "Tent_ang Podcast"
|
msgstr "Tent_ang Podcast"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:186
|
#: podcasts-gtk/resources/gtk/headerbar.ui:177
|
||||||
msgid "Add a new feed"
|
msgid "Add a new feed"
|
||||||
msgstr "Tambahkan feed baru"
|
msgstr "Tambahkan feed baru"
|
||||||
|
|
||||||
@ -166,11 +166,11 @@ msgstr "Masukkan alamat feed untuk ditambahkan"
|
|||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Tambah"
|
msgstr "Tambah"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:171
|
#: podcasts-gtk/resources/gtk/headerbar.ui:157
|
||||||
msgid "Show Title"
|
msgid "Show Title"
|
||||||
msgstr "Tampilkan Judul"
|
msgstr "Tampilkan Judul"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:207
|
#: podcasts-gtk/resources/gtk/headerbar.ui:198
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr "Kembali"
|
msgstr "Kembali"
|
||||||
|
|
||||||
@ -216,55 +216,51 @@ msgstr "Notifikasi aksi dalam aplikasi"
|
|||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Tak Jadi"
|
msgstr "Tak Jadi"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_dialog.ui:14
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:72
|
||||||
msgid "Now Playing"
|
|
||||||
msgstr "Sedang Diputar"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:32
|
|
||||||
msgid "Change the playback speed"
|
|
||||||
msgstr "Ubah kecepatan pemutaran"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:47
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:122
|
|
||||||
msgid "1.00×"
|
|
||||||
msgstr "Ubah kecepatan pemutaran"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:86
|
|
||||||
msgid "1.50×"
|
|
||||||
msgstr "1.50×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:90
|
|
||||||
msgid "1.5 speed rate"
|
|
||||||
msgstr "tingkat kecepatan 1.5"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:104
|
|
||||||
msgid "1.25×"
|
|
||||||
msgstr "1.25×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:108
|
|
||||||
msgid "1.25 speed rate"
|
|
||||||
msgstr "tingkat kecepatan 1.25"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:126
|
|
||||||
msgid "Normal speed"
|
|
||||||
msgstr "Kecepatan normal"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:97
|
|
||||||
msgid "Rewind 10 seconds"
|
msgid "Rewind 10 seconds"
|
||||||
msgstr "Putar mundur 10 detik"
|
msgstr "Putar mundur 10 detik"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:112
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:87
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Putar"
|
msgstr "Putar"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:128
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:103
|
||||||
msgid "Pause"
|
msgid "Pause"
|
||||||
msgstr "Jeda"
|
msgstr "Jeda"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:144
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:119
|
||||||
msgid "Fast forward 10 seconds"
|
msgid "Fast forward 10 seconds"
|
||||||
msgstr "Maju cepat 10 detik"
|
msgstr "Maju cepat 10 detik"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:285
|
||||||
|
msgid "Change the playback speed"
|
||||||
|
msgstr "Ubah kecepatan pemutaran"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:300
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:380
|
||||||
|
msgid "1.00×"
|
||||||
|
msgstr "Ubah kecepatan pemutaran"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:344
|
||||||
|
msgid "1.50×"
|
||||||
|
msgstr "1.50×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:348
|
||||||
|
msgid "1.5 speed rate"
|
||||||
|
msgstr "tingkat kecepatan 1.5"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:362
|
||||||
|
msgid "1.25×"
|
||||||
|
msgstr "1.25×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:366
|
||||||
|
msgid "1.25 speed rate"
|
||||||
|
msgstr "tingkat kecepatan 1.25"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:384
|
||||||
|
msgid "Normal speed"
|
||||||
|
msgstr "Kecepatan normal"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
||||||
msgid "_Mark All Episodes as Played"
|
msgid "_Mark All Episodes as Played"
|
||||||
msgstr "Tandai Se_mua Episode sebagai Sudah Diputar"
|
msgstr "Tandai Se_mua Episode sebagai Sudah Diputar"
|
||||||
@ -289,14 +285,18 @@ msgstr "Tandai Semua sebagai Sudah Diputar"
|
|||||||
msgid "Unsubscribe"
|
msgid "Unsubscribe"
|
||||||
msgstr "Berhenti Berlangganan"
|
msgstr "Berhenti Berlangganan"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/show_widget.ui:99
|
#: podcasts-gtk/src/app.rs:351
|
||||||
msgid "Read More"
|
|
||||||
msgstr "Baca Lebih Lanjut"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/app.rs:265
|
|
||||||
msgid "Fetching new episodes"
|
msgid "Fetching new episodes"
|
||||||
msgstr "Mengambil episode baru"
|
msgstr "Mengambil episode baru"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:127
|
||||||
|
msgid "You are already subscribed to this show"
|
||||||
|
msgstr "Anda sudah berlangganan ke acara ini"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:145
|
||||||
|
msgid "Invalid URL"
|
||||||
|
msgstr "URL tak valid"
|
||||||
|
|
||||||
#: podcasts-gtk/src/stacks/content.rs:54
|
#: podcasts-gtk/src/stacks/content.rs:54
|
||||||
msgid "New"
|
msgid "New"
|
||||||
msgstr "Baru"
|
msgstr "Baru"
|
||||||
@ -305,43 +305,43 @@ msgstr "Baru"
|
|||||||
msgid "Shows"
|
msgid "Shows"
|
||||||
msgstr "Acara"
|
msgstr "Acara"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:396
|
#: podcasts-gtk/src/utils.rs:397
|
||||||
msgid "Select the file from which to you want to import shows."
|
msgid "Select the file from which to you want to import shows."
|
||||||
msgstr "Pilih berkas dari mana Anda ingin mengimpor acara."
|
msgstr "Pilih berkas dari mana Anda ingin mengimpor acara."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:399
|
#: podcasts-gtk/src/utils.rs:400
|
||||||
msgid "_Import"
|
msgid "_Import"
|
||||||
msgstr "_Impor"
|
msgstr "_Impor"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:408 podcasts-gtk/src/utils.rs:456
|
#: podcasts-gtk/src/utils.rs:409 podcasts-gtk/src/utils.rs:457
|
||||||
msgid "OPML file"
|
msgid "OPML file"
|
||||||
msgstr "Berkas OPML"
|
msgstr "Berkas OPML"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:425
|
#: podcasts-gtk/src/utils.rs:426
|
||||||
msgid "Failed to parse the imported file"
|
msgid "Failed to parse the imported file"
|
||||||
msgstr "Gagal mengurai berkas yang diimpor"
|
msgstr "Gagal mengurai berkas yang diimpor"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:430 podcasts-gtk/src/utils.rs:474
|
#: podcasts-gtk/src/utils.rs:431 podcasts-gtk/src/utils.rs:475
|
||||||
msgid "Selected file could not be accessed."
|
msgid "Selected file could not be accessed."
|
||||||
msgstr "Berkas yang dipilih tidak dapat diakses."
|
msgstr "Berkas yang dipilih tidak dapat diakses."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:444
|
#: podcasts-gtk/src/utils.rs:445
|
||||||
msgid "Export shows to…"
|
msgid "Export shows to…"
|
||||||
msgstr "Ekspor acara ke…"
|
msgstr "Ekspor acara ke…"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:447
|
#: podcasts-gtk/src/utils.rs:448
|
||||||
msgid "_Export"
|
msgid "_Export"
|
||||||
msgstr "_Ekspor"
|
msgstr "_Ekspor"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:448
|
#: podcasts-gtk/src/utils.rs:449
|
||||||
msgid "_Cancel"
|
msgid "_Cancel"
|
||||||
msgstr "_Batal"
|
msgstr "_Batal"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:468
|
#: podcasts-gtk/src/utils.rs:469
|
||||||
msgid "GNOME Podcasts Subscriptions"
|
msgid "GNOME Podcasts Subscriptions"
|
||||||
msgstr "Berlangganan GNOME Podcast"
|
msgstr "Berlangganan GNOME Podcast"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:469
|
#: podcasts-gtk/src/utils.rs:470
|
||||||
msgid "Failed to export podcasts"
|
msgid "Failed to export podcasts"
|
||||||
msgstr "Gagal mengekspor podcast"
|
msgstr "Gagal mengekspor podcast"
|
||||||
|
|
||||||
@ -355,14 +355,14 @@ msgstr "Pelajari lebih lanjut tentang GNOME Podcast"
|
|||||||
|
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:63
|
#: podcasts-gtk/src/widgets/aboutdialog.rs:63
|
||||||
msgid "translator-credits"
|
msgid "translator-credits"
|
||||||
msgstr "Kukuh Syafaat <kukuhsyafaat@gnome.org>, 2018-2020."
|
msgstr "Kukuh Syafaat <kukuhsyafaat@gnome.org>, 2018, 2019."
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/episode.rs:148
|
#: podcasts-gtk/src/widgets/episode.rs:148
|
||||||
msgid "{} min"
|
msgid "{} min"
|
||||||
msgstr "{} mnt"
|
msgstr "{} mnt"
|
||||||
|
|
||||||
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
||||||
#: podcasts-gtk/src/widgets/player.rs:824
|
#: podcasts-gtk/src/widgets/player.rs:534
|
||||||
msgid "The media player was unable to execute an action."
|
msgid "The media player was unable to execute an action."
|
||||||
msgstr "Pemutar media tidak dapat melakukan aksi."
|
msgstr "Pemutar media tidak dapat melakukan aksi."
|
||||||
|
|
||||||
@ -374,12 +374,6 @@ msgstr "Tandai semua episode sebagai sudah didengarkan"
|
|||||||
msgid "Unsubscribed from {}"
|
msgid "Unsubscribed from {}"
|
||||||
msgstr "Berhenti berlangganan dari {}"
|
msgstr "Berhenti berlangganan dari {}"
|
||||||
|
|
||||||
#~ msgid "You are already subscribed to this show"
|
|
||||||
#~ msgstr "Anda sudah berlangganan ke acara ini"
|
|
||||||
|
|
||||||
#~ msgid "Invalid URL"
|
|
||||||
#~ msgstr "URL tak valid"
|
|
||||||
|
|
||||||
#~ msgid "@icon@"
|
#~ msgid "@icon@"
|
||||||
#~ msgstr "@icon@"
|
#~ msgstr "@icon@"
|
||||||
|
|
||||||
|
|||||||
@ -1,14 +1,14 @@
|
|||||||
# Italian translation for podcasts.
|
# Italian translation for podcasts.
|
||||||
# Copyright (C) 2018, 2019, 2020 podcasts's Free Software Foundation, Inc.
|
# Copyright (C) 2018, 2019 podcasts's Free Software Foundation, Inc.
|
||||||
# This file is distributed under the same license as the podcasts package.
|
# This file is distributed under the same license as the podcasts package.
|
||||||
# Milo Casagrande <milo@milo.name>, 2018, 2019, 2020.
|
# Milo Casagrande <milo@milo.name>, 2018, 2019.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: podcasts master\n"
|
"Project-Id-Version: podcasts master\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
||||||
"POT-Creation-Date: 2020-02-07 11:33+0000\n"
|
"POT-Creation-Date: 2019-02-02 15:17+0000\n"
|
||||||
"PO-Revision-Date: 2020-03-06 09:41+0100\n"
|
"PO-Revision-Date: 2019-02-28 09:25+0100\n"
|
||||||
"Last-Translator: Milo Casagrande <milo@milo.name>\n"
|
"Last-Translator: Milo Casagrande <milo@milo.name>\n"
|
||||||
"Language-Team: Italian <gnome-it-list@gnome.org>\n"
|
"Language-Team: Italian <gnome-it-list@gnome.org>\n"
|
||||||
"Language: it\n"
|
"Language: it\n"
|
||||||
@ -16,7 +16,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Poedit 2.2.4\n"
|
"X-Generator: Poedit 2.2.1\n"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
||||||
msgid "Top position of the last open main window"
|
msgid "Top position of the last open main window"
|
||||||
@ -69,8 +69,8 @@ msgstr "Che periodi di tempo aspettare tra la pulizia automatica"
|
|||||||
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:158 podcasts-gtk/src/app.rs:330
|
#: podcasts-gtk/src/app.rs:124 podcasts-gtk/src/app.rs:455
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:56 podcasts-gtk/src/window.rs:80
|
#: podcasts-gtk/src/widgets/aboutdialog.rs:56
|
||||||
msgid "Podcasts"
|
msgid "Podcasts"
|
||||||
msgstr "Podcast"
|
msgstr "Podcast"
|
||||||
|
|
||||||
@ -79,6 +79,11 @@ msgstr "Podcast"
|
|||||||
msgid "Listen to your favorite podcasts, right from your desktop."
|
msgid "Listen to your favorite podcasts, right from your desktop."
|
||||||
msgstr "Ascoltare i propri podcast preferiti, direttamente proprio computer."
|
msgstr "Ascoltare i propri podcast preferiti, direttamente proprio computer."
|
||||||
|
|
||||||
|
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
|
||||||
|
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:6
|
||||||
|
msgid "@icon@"
|
||||||
|
msgstr "@icon@"
|
||||||
|
|
||||||
#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
|
#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:13
|
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:13
|
||||||
msgid "Podcast;RSS;"
|
msgid "Podcast;RSS;"
|
||||||
@ -88,7 +93,7 @@ msgstr "Podcast;RSS;"
|
|||||||
msgid "Podcast app for GNOME"
|
msgid "Podcast app for GNOME"
|
||||||
msgstr "Applicazione per podcast per GNOME"
|
msgstr "Applicazione per podcast per GNOME"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:84
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:77
|
||||||
msgid "Jordan Petridis"
|
msgid "Jordan Petridis"
|
||||||
msgstr "Jordan Petridis"
|
msgstr "Jordan Petridis"
|
||||||
|
|
||||||
@ -112,23 +117,19 @@ msgstr "Aggiungi nuovi show via URL"
|
|||||||
msgid "Import shows from another device"
|
msgid "Import shows from another device"
|
||||||
msgstr "Importa show da un altro dispositivo"
|
msgstr "Importa show da un altro dispositivo"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:79
|
#: podcasts-gtk/resources/gtk/episode_widget.ui:180
|
||||||
msgid "You’ve already listened to this episode."
|
|
||||||
msgstr "Questo episodio è già stato ascoltato."
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:208
|
|
||||||
msgid "Calculating episode size…"
|
msgid "Calculating episode size…"
|
||||||
msgstr "Calcolo dimensione episodio…"
|
msgstr "Calcolo dimensione episodio…"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:248
|
#: podcasts-gtk/resources/gtk/episode_widget.ui:220
|
||||||
msgid "Play this episode"
|
msgid "Play this episode"
|
||||||
msgstr "Riproduci questo episodio"
|
msgstr "Riproduci questo episodio"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:269
|
#: podcasts-gtk/resources/gtk/episode_widget.ui:241
|
||||||
msgid "Cancel the download process"
|
msgid "Cancel the download process"
|
||||||
msgstr "Annulla lo scaricamento"
|
msgstr "Annulla lo scaricamento"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:292
|
#: podcasts-gtk/resources/gtk/episode_widget.ui:264
|
||||||
msgid "Download this episode"
|
msgid "Download this episode"
|
||||||
msgstr "Scarica questo episodio"
|
msgstr "Scarica questo episodio"
|
||||||
|
|
||||||
@ -145,15 +146,19 @@ msgid "_Export Shows"
|
|||||||
msgstr "_Esporta show"
|
msgstr "_Esporta show"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/hamburger.ui:22
|
#: podcasts-gtk/resources/gtk/hamburger.ui:22
|
||||||
|
msgid "_Preferences"
|
||||||
|
msgstr "Preferen_ze"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/hamburger.ui:27
|
||||||
msgid "_Keyboard Shortcuts"
|
msgid "_Keyboard Shortcuts"
|
||||||
msgstr "_Scorciatoie da tastiera"
|
msgstr "_Scorciatoie da tastiera"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/hamburger.ui:30
|
#: podcasts-gtk/resources/gtk/hamburger.ui:35
|
||||||
msgid "_About Podcasts"
|
msgid "_About Podcasts"
|
||||||
msgstr "I_nformazioni su Podcast"
|
msgstr "I_nformazioni su Podcast"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:186
|
#: podcasts-gtk/resources/gtk/headerbar.ui:189
|
||||||
msgid "Add a new feed"
|
msgid "Add a new feed"
|
||||||
msgstr "Aggiungi nuovo feed"
|
msgstr "Aggiungi nuovo feed"
|
||||||
|
|
||||||
@ -165,11 +170,15 @@ msgstr "Inserire un indirizzo da aggiungere"
|
|||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Aggiungi"
|
msgstr "Aggiungi"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:171
|
#: podcasts-gtk/resources/gtk/headerbar.ui:133
|
||||||
|
msgid "You are already subscribed to that feed!"
|
||||||
|
msgstr "Si è già abbonati a questo feed."
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/headerbar.ui:169
|
||||||
msgid "Show Title"
|
msgid "Show Title"
|
||||||
msgstr "Titolo show"
|
msgstr "Titolo show"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:207
|
#: podcasts-gtk/resources/gtk/headerbar.ui:210
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr "Indietro"
|
msgstr "Indietro"
|
||||||
|
|
||||||
@ -184,6 +193,11 @@ msgstr "Controlla presenza nuovi episodi"
|
|||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/help-overlay.ui:25
|
#: podcasts-gtk/resources/gtk/help-overlay.ui:25
|
||||||
msgctxt "shortcut window"
|
msgctxt "shortcut window"
|
||||||
|
msgid "Preferences"
|
||||||
|
msgstr "Preferenze"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/help-overlay.ui:32
|
||||||
|
msgctxt "shortcut window"
|
||||||
msgid "Quit the application"
|
msgid "Quit the application"
|
||||||
msgstr "Esce dall'applicazione"
|
msgstr "Esce dall'applicazione"
|
||||||
|
|
||||||
@ -215,55 +229,72 @@ msgstr "Una notifica"
|
|||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Annulla"
|
msgstr "Annulla"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_dialog.ui:14
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:72
|
||||||
msgid "Now Playing"
|
|
||||||
msgstr "In riproduzione"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:32
|
|
||||||
msgid "Change the playback speed"
|
|
||||||
msgstr "Modifica la velocità di riproduzione"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:47
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:122
|
|
||||||
msgid "1.00×"
|
|
||||||
msgstr "1,00×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:86
|
|
||||||
msgid "1.50×"
|
|
||||||
msgstr "1,50×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:90
|
|
||||||
msgid "1.5 speed rate"
|
|
||||||
msgstr "1,5 volte la velocità"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:104
|
|
||||||
msgid "1.25×"
|
|
||||||
msgstr "1,25×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:108
|
|
||||||
msgid "1.25 speed rate"
|
|
||||||
msgstr "1,25 volte la velocità"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:126
|
|
||||||
msgid "Normal speed"
|
|
||||||
msgstr "Velocità normale"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:97
|
|
||||||
msgid "Rewind 10 seconds"
|
msgid "Rewind 10 seconds"
|
||||||
msgstr "Indietro 10 secondi"
|
msgstr "Indietro 10 secondi"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:112
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:87
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Riproduci"
|
msgstr "Riproduci"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:128
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:103
|
||||||
msgid "Pause"
|
msgid "Pause"
|
||||||
msgstr "Pausa"
|
msgstr "Pausa"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:144
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:119
|
||||||
msgid "Fast forward 10 seconds"
|
msgid "Fast forward 10 seconds"
|
||||||
msgstr "Avanti veloce 10 secondi"
|
msgstr "Avanti veloce 10 secondi"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:285
|
||||||
|
msgid "Change the playback speed"
|
||||||
|
msgstr "Modifica la velocità di riproduzione"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:300
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:380
|
||||||
|
msgid "1.00×"
|
||||||
|
msgstr "1,00×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:344
|
||||||
|
msgid "1.50×"
|
||||||
|
msgstr "1,50×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:348
|
||||||
|
msgid "1.5 speed rate"
|
||||||
|
msgstr "1,5 volte la velocità"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:362
|
||||||
|
msgid "1.25×"
|
||||||
|
msgstr "1,25×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:366
|
||||||
|
msgid "1.25 speed rate"
|
||||||
|
msgstr "1,25 volte la velocità"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:384
|
||||||
|
msgid "Normal speed"
|
||||||
|
msgstr "Velocità normale"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:42
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:295
|
||||||
|
msgid "Preferences"
|
||||||
|
msgstr "Preferenze"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:76
|
||||||
|
msgid "Appearance"
|
||||||
|
msgstr "Aspetto"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:120
|
||||||
|
msgid "Dark Theme"
|
||||||
|
msgstr "Tema scuro"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:166
|
||||||
|
msgid "Delete played episodes"
|
||||||
|
msgstr "Eliminare episodi ascoltati"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:211
|
||||||
|
msgid "After"
|
||||||
|
msgstr "Dopo"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
||||||
msgid "_Mark All Episodes as Played"
|
msgid "_Mark All Episodes as Played"
|
||||||
msgstr "_Segna tutti gli episodi come ascoltati"
|
msgstr "_Segna tutti gli episodi come ascoltati"
|
||||||
@ -288,14 +319,38 @@ msgstr "Segna tutti ascoltati"
|
|||||||
msgid "Unsubscribe"
|
msgid "Unsubscribe"
|
||||||
msgstr "Annulla abbonamento"
|
msgstr "Annulla abbonamento"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/show_widget.ui:99
|
#: podcasts-gtk/src/app.rs:369
|
||||||
msgid "Read More"
|
|
||||||
msgstr "Leggi altro"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/app.rs:265
|
|
||||||
msgid "Fetching new episodes"
|
msgid "Fetching new episodes"
|
||||||
msgstr "Scaricamento nuovi episodi"
|
msgstr "Scaricamento nuovi episodi"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:117
|
||||||
|
msgid "You are already subscribed to this show"
|
||||||
|
msgstr "Si è già abbonati a questo show"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:125
|
||||||
|
msgid "Invalid URL"
|
||||||
|
msgstr "URL non valido"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:78
|
||||||
|
msgid "Seconds"
|
||||||
|
msgstr "Secondi"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:79
|
||||||
|
msgid "Minutes"
|
||||||
|
msgstr "Minuti"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:80
|
||||||
|
msgid "Hours"
|
||||||
|
msgstr "Ore"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:81
|
||||||
|
msgid "Days"
|
||||||
|
msgstr "Giorni"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:82
|
||||||
|
msgid "Weeks"
|
||||||
|
msgstr "Settimane"
|
||||||
|
|
||||||
#: podcasts-gtk/src/stacks/content.rs:54
|
#: podcasts-gtk/src/stacks/content.rs:54
|
||||||
msgid "New"
|
msgid "New"
|
||||||
msgstr "Nuovo"
|
msgstr "Nuovo"
|
||||||
@ -304,43 +359,43 @@ msgstr "Nuovo"
|
|||||||
msgid "Shows"
|
msgid "Shows"
|
||||||
msgstr "Show"
|
msgstr "Show"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:396
|
#: podcasts-gtk/src/utils.rs:377
|
||||||
msgid "Select the file from which to you want to import shows."
|
msgid "Select the file from which to you want to import shows."
|
||||||
msgstr "Selezionare il file da cui importare gli show."
|
msgstr "Selezionare il file da cui importare gli show."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:399
|
#: podcasts-gtk/src/utils.rs:380
|
||||||
msgid "_Import"
|
msgid "_Import"
|
||||||
msgstr "_Importa"
|
msgstr "_Importa"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:408 podcasts-gtk/src/utils.rs:456
|
#: podcasts-gtk/src/utils.rs:389 podcasts-gtk/src/utils.rs:435
|
||||||
msgid "OPML file"
|
msgid "OPML file"
|
||||||
msgstr "File OPML"
|
msgstr "File OPML"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:425
|
#: podcasts-gtk/src/utils.rs:406
|
||||||
msgid "Failed to parse the imported file"
|
msgid "Failed to parse the imported file"
|
||||||
msgstr "Analisi del file importato non riuscita"
|
msgstr "Analisi del file importato non riuscita"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:430 podcasts-gtk/src/utils.rs:474
|
#: podcasts-gtk/src/utils.rs:411 podcasts-gtk/src/utils.rs:453
|
||||||
msgid "Selected file could not be accessed."
|
msgid "Selected file could not be accessed."
|
||||||
msgstr "Impossibile accedere al file selezionato."
|
msgstr "Impossibile accedere al file selezionato."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:444
|
#: podcasts-gtk/src/utils.rs:423
|
||||||
msgid "Export shows to…"
|
msgid "Export shows to…"
|
||||||
msgstr "Esporta show su…"
|
msgstr "Esporta show su…"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:447
|
#: podcasts-gtk/src/utils.rs:426
|
||||||
msgid "_Export"
|
msgid "_Export"
|
||||||
msgstr "_Esporta"
|
msgstr "_Esporta"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:448
|
#: podcasts-gtk/src/utils.rs:427
|
||||||
msgid "_Cancel"
|
msgid "_Cancel"
|
||||||
msgstr "A_nnulla"
|
msgstr "A_nnulla"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:468
|
#: podcasts-gtk/src/utils.rs:447
|
||||||
msgid "GNOME Podcasts Subscriptions"
|
msgid "GNOME Podcasts Subscriptions"
|
||||||
msgstr "Abbonamenti Podcast GNOME"
|
msgstr "Abbonamenti Podcast GNOME"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:469
|
#: podcasts-gtk/src/utils.rs:448
|
||||||
msgid "Failed to export podcasts"
|
msgid "Failed to export podcasts"
|
||||||
msgstr "Esportazioni podcast non riuscita"
|
msgstr "Esportazioni podcast non riuscita"
|
||||||
|
|
||||||
@ -356,19 +411,22 @@ msgstr "Maggiori informazioni su Podcast GNOME"
|
|||||||
msgid "translator-credits"
|
msgid "translator-credits"
|
||||||
msgstr "Milo Casagrande <milo@milo.name>"
|
msgstr "Milo Casagrande <milo@milo.name>"
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/episode.rs:148
|
#: podcasts-gtk/src/widgets/episode.rs:149
|
||||||
msgid "{} min"
|
msgid "{} min"
|
||||||
msgstr "{} min"
|
msgstr "{} min"
|
||||||
|
|
||||||
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
||||||
#: podcasts-gtk/src/widgets/player.rs:824
|
#: podcasts-gtk/src/widgets/player.rs:536
|
||||||
msgid "The media player was unable to execute an action."
|
msgid "The media player was unable to execute an action."
|
||||||
msgstr "Il riproduttore multimediale non può eseguire un'azione."
|
msgstr "Il riproduttore multimediale non può eseguire un'azione."
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/show_menu.rs:179
|
#: podcasts-gtk/src/widgets/show_menu.rs:169
|
||||||
msgid "Marked all episodes as listened"
|
msgid "Marked all episodes as listened"
|
||||||
msgstr "Episodi segnati come letti"
|
msgstr "Episodi segnati come letti"
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/show_menu.rs:184
|
#: podcasts-gtk/src/widgets/show_menu.rs:174
|
||||||
msgid "Unsubscribed from {}"
|
msgid "Unsubscribed from {}"
|
||||||
msgstr "Abbonamento a {} annullato"
|
msgstr "Abbonamento a {} annullato"
|
||||||
|
|
||||||
|
#~ msgid "_About"
|
||||||
|
#~ msgstr "I_nformazioni"
|
||||||
|
|||||||
@ -1,14 +1,14 @@
|
|||||||
# Dutch translation for podcasts.
|
# Dutch translation for podcasts.
|
||||||
# Copyright (C) 2019 podcasts's COPYRIGHT HOLDER
|
# Copyright (C) 2019 podcasts's COPYRIGHT HOLDER
|
||||||
# This file is distributed under the same license as the podcasts package.
|
# This file is distributed under the same license as the podcasts package.
|
||||||
# Nathan Follens <nthn@unseen.is>, 2019-2020.
|
# Nathan Follens <nthn@unseen.is>, 2019.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: podcasts master\n"
|
"Project-Id-Version: podcasts master\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
||||||
"POT-Creation-Date: 2020-02-07 11:33+0000\n"
|
"POT-Creation-Date: 2019-02-02 15:17+0000\n"
|
||||||
"PO-Revision-Date: 2020-02-26 14:31+0100\n"
|
"PO-Revision-Date: 2019-02-26 12:47+0100\n"
|
||||||
"Last-Translator: Nathan Follens <nthn@unseen.is>\n"
|
"Last-Translator: Nathan Follens <nthn@unseen.is>\n"
|
||||||
"Language-Team: Dutch <gnome-nl-list@gnome.org>\n"
|
"Language-Team: Dutch <gnome-nl-list@gnome.org>\n"
|
||||||
"Language: nl\n"
|
"Language: nl\n"
|
||||||
@ -16,7 +16,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Poedit 2.3\n"
|
"X-Generator: Poedit 2.2.1\n"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
||||||
msgid "Top position of the last open main window"
|
msgid "Top position of the last open main window"
|
||||||
@ -69,8 +69,8 @@ msgstr "Hoe lang te wachten tussen automatische opruimbeurten"
|
|||||||
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:158 podcasts-gtk/src/app.rs:330
|
#: podcasts-gtk/src/app.rs:124 podcasts-gtk/src/app.rs:455
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:56 podcasts-gtk/src/window.rs:80
|
#: podcasts-gtk/src/widgets/aboutdialog.rs:56
|
||||||
msgid "Podcasts"
|
msgid "Podcasts"
|
||||||
msgstr "Podcasts"
|
msgstr "Podcasts"
|
||||||
|
|
||||||
@ -79,6 +79,11 @@ msgstr "Podcasts"
|
|||||||
msgid "Listen to your favorite podcasts, right from your desktop."
|
msgid "Listen to your favorite podcasts, right from your desktop."
|
||||||
msgstr "Luister naar uw favoriete podcasts, rechtstreeks vanop uw bureaublad."
|
msgstr "Luister naar uw favoriete podcasts, rechtstreeks vanop uw bureaublad."
|
||||||
|
|
||||||
|
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
|
||||||
|
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:6
|
||||||
|
msgid "@icon@"
|
||||||
|
msgstr "@icon@"
|
||||||
|
|
||||||
#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
|
#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:13
|
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:13
|
||||||
msgid "Podcast;RSS;"
|
msgid "Podcast;RSS;"
|
||||||
@ -88,7 +93,7 @@ msgstr "Podcast;RSS;"
|
|||||||
msgid "Podcast app for GNOME"
|
msgid "Podcast app for GNOME"
|
||||||
msgstr "Podcast-toepassing voor Gnome"
|
msgstr "Podcast-toepassing voor Gnome"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:84
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:77
|
||||||
msgid "Jordan Petridis"
|
msgid "Jordan Petridis"
|
||||||
msgstr "Jordan Petridis"
|
msgstr "Jordan Petridis"
|
||||||
|
|
||||||
@ -112,23 +117,19 @@ msgstr "Nieuwe shows toevoegen via feed-URL"
|
|||||||
msgid "Import shows from another device"
|
msgid "Import shows from another device"
|
||||||
msgstr "Shows importeren van een ander apparaat"
|
msgstr "Shows importeren van een ander apparaat"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:79
|
#: podcasts-gtk/resources/gtk/episode_widget.ui:180
|
||||||
msgid "You’ve already listened to this episode."
|
|
||||||
msgstr "U heeft deze aflevering reeds beluisterd."
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:208
|
|
||||||
msgid "Calculating episode size…"
|
msgid "Calculating episode size…"
|
||||||
msgstr "Grootte van aflevering berekenen…"
|
msgstr "Grootte van aflevering berekenen…"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:248
|
#: podcasts-gtk/resources/gtk/episode_widget.ui:220
|
||||||
msgid "Play this episode"
|
msgid "Play this episode"
|
||||||
msgstr "Deze aflevering afspelen"
|
msgstr "Deze aflevering afspelen"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:269
|
#: podcasts-gtk/resources/gtk/episode_widget.ui:241
|
||||||
msgid "Cancel the download process"
|
msgid "Cancel the download process"
|
||||||
msgstr "Downloadproces annuleren"
|
msgstr "Downloadproces annuleren"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:292
|
#: podcasts-gtk/resources/gtk/episode_widget.ui:264
|
||||||
msgid "Download this episode"
|
msgid "Download this episode"
|
||||||
msgstr "Deze aflevering downloaden"
|
msgstr "Deze aflevering downloaden"
|
||||||
|
|
||||||
@ -145,15 +146,19 @@ msgid "_Export Shows"
|
|||||||
msgstr "Shows _exporteren"
|
msgstr "Shows _exporteren"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/hamburger.ui:22
|
#: podcasts-gtk/resources/gtk/hamburger.ui:22
|
||||||
|
msgid "_Preferences"
|
||||||
|
msgstr "_Voorkeuren"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/hamburger.ui:27
|
||||||
msgid "_Keyboard Shortcuts"
|
msgid "_Keyboard Shortcuts"
|
||||||
msgstr "_Sneltoetsen"
|
msgstr "_Sneltoetsen"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/hamburger.ui:30
|
#: podcasts-gtk/resources/gtk/hamburger.ui:35
|
||||||
msgid "_About Podcasts"
|
msgid "_About Podcasts"
|
||||||
msgstr "_Over Podcasts"
|
msgstr "_Over Podcasts"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:186
|
#: podcasts-gtk/resources/gtk/headerbar.ui:189
|
||||||
msgid "Add a new feed"
|
msgid "Add a new feed"
|
||||||
msgstr "Nieuwe feed toevoegen"
|
msgstr "Nieuwe feed toevoegen"
|
||||||
|
|
||||||
@ -165,11 +170,15 @@ msgstr "Voer het toe te voegen feedadres in"
|
|||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Toevoegen"
|
msgstr "Toevoegen"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:171
|
#: podcasts-gtk/resources/gtk/headerbar.ui:133
|
||||||
|
msgid "You are already subscribed to that feed!"
|
||||||
|
msgstr "U bent reeds geabonneerd op die feed!"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/headerbar.ui:169
|
||||||
msgid "Show Title"
|
msgid "Show Title"
|
||||||
msgstr "Titel tonen"
|
msgstr "Titel tonen"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:207
|
#: podcasts-gtk/resources/gtk/headerbar.ui:210
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr "Terug"
|
msgstr "Terug"
|
||||||
|
|
||||||
@ -184,6 +193,11 @@ msgstr "Controleren op nieuwe afleveringen"
|
|||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/help-overlay.ui:25
|
#: podcasts-gtk/resources/gtk/help-overlay.ui:25
|
||||||
msgctxt "shortcut window"
|
msgctxt "shortcut window"
|
||||||
|
msgid "Preferences"
|
||||||
|
msgstr "Voorkeuren"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/help-overlay.ui:32
|
||||||
|
msgctxt "shortcut window"
|
||||||
msgid "Quit the application"
|
msgid "Quit the application"
|
||||||
msgstr "De toepassing afsluiten"
|
msgstr "De toepassing afsluiten"
|
||||||
|
|
||||||
@ -215,55 +229,72 @@ msgstr "Een in-app-actiemelding"
|
|||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Ongedaan maken"
|
msgstr "Ongedaan maken"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_dialog.ui:14
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:72
|
||||||
msgid "Now Playing"
|
|
||||||
msgstr "U luistert naar"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:32
|
|
||||||
msgid "Change the playback speed"
|
|
||||||
msgstr "De afspeelsnelheid wijzigen"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:47
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:122
|
|
||||||
msgid "1.00×"
|
|
||||||
msgstr "1,00×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:86
|
|
||||||
msgid "1.50×"
|
|
||||||
msgstr "1,50×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:90
|
|
||||||
msgid "1.5 speed rate"
|
|
||||||
msgstr "1,5 snelheid"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:104
|
|
||||||
msgid "1.25×"
|
|
||||||
msgstr "1,25×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:108
|
|
||||||
msgid "1.25 speed rate"
|
|
||||||
msgstr "1,25 snelheid"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:126
|
|
||||||
msgid "Normal speed"
|
|
||||||
msgstr "Normale snelheid"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:97
|
|
||||||
msgid "Rewind 10 seconds"
|
msgid "Rewind 10 seconds"
|
||||||
msgstr "10 seconden terugspoelen"
|
msgstr "10 seconden terugspoelen"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:112
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:87
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Afspelen"
|
msgstr "Afspelen"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:128
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:103
|
||||||
msgid "Pause"
|
msgid "Pause"
|
||||||
msgstr "Pauzeren"
|
msgstr "Pauzeren"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:144
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:119
|
||||||
msgid "Fast forward 10 seconds"
|
msgid "Fast forward 10 seconds"
|
||||||
msgstr "10 seconden doorspoelen"
|
msgstr "10 seconden doorspoelen"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:285
|
||||||
|
msgid "Change the playback speed"
|
||||||
|
msgstr "De afspeelsnelheid wijzigen"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:300
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:380
|
||||||
|
msgid "1.00×"
|
||||||
|
msgstr "1,00×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:344
|
||||||
|
msgid "1.50×"
|
||||||
|
msgstr "1,50×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:348
|
||||||
|
msgid "1.5 speed rate"
|
||||||
|
msgstr "1,5 snelheid"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:362
|
||||||
|
msgid "1.25×"
|
||||||
|
msgstr "1,25×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:366
|
||||||
|
msgid "1.25 speed rate"
|
||||||
|
msgstr "1,25 snelheid"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:384
|
||||||
|
msgid "Normal speed"
|
||||||
|
msgstr "Normale snelheid"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:42
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:295
|
||||||
|
msgid "Preferences"
|
||||||
|
msgstr "Voorkeuren"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:76
|
||||||
|
msgid "Appearance"
|
||||||
|
msgstr "Uiterlijk"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:120
|
||||||
|
msgid "Dark Theme"
|
||||||
|
msgstr "Donker thema"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:166
|
||||||
|
msgid "Delete played episodes"
|
||||||
|
msgstr "Afgespeelde afleveringen verwijderen"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/prefs.ui:211
|
||||||
|
msgid "After"
|
||||||
|
msgstr "Na"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
||||||
msgid "_Mark All Episodes as Played"
|
msgid "_Mark All Episodes as Played"
|
||||||
msgstr "Alle afleveringen _markeren als afgespeeld"
|
msgstr "Alle afleveringen _markeren als afgespeeld"
|
||||||
@ -288,14 +319,38 @@ msgstr "Alles markeren als afgespeeld"
|
|||||||
msgid "Unsubscribe"
|
msgid "Unsubscribe"
|
||||||
msgstr "Opzeggen"
|
msgstr "Opzeggen"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/show_widget.ui:99
|
#: podcasts-gtk/src/app.rs:369
|
||||||
msgid "Read More"
|
|
||||||
msgstr "Lees meer"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/app.rs:265
|
|
||||||
msgid "Fetching new episodes"
|
msgid "Fetching new episodes"
|
||||||
msgstr "Nieuwe afleveringen worden opgehaald"
|
msgstr "Nieuwe afleveringen worden opgehaald"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:117
|
||||||
|
msgid "You are already subscribed to this show"
|
||||||
|
msgstr "U bent reeds geabonneerd op deze show"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:125
|
||||||
|
msgid "Invalid URL"
|
||||||
|
msgstr "Ongeldige URL"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:78
|
||||||
|
msgid "Seconds"
|
||||||
|
msgstr "Seconden"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:79
|
||||||
|
msgid "Minutes"
|
||||||
|
msgstr "Minuten"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:80
|
||||||
|
msgid "Hours"
|
||||||
|
msgstr "Uur"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:81
|
||||||
|
msgid "Days"
|
||||||
|
msgstr "Dagen"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/prefs.rs:82
|
||||||
|
msgid "Weeks"
|
||||||
|
msgstr "Weken"
|
||||||
|
|
||||||
#: podcasts-gtk/src/stacks/content.rs:54
|
#: podcasts-gtk/src/stacks/content.rs:54
|
||||||
msgid "New"
|
msgid "New"
|
||||||
msgstr "Nieuw"
|
msgstr "Nieuw"
|
||||||
@ -304,43 +359,43 @@ msgstr "Nieuw"
|
|||||||
msgid "Shows"
|
msgid "Shows"
|
||||||
msgstr "Shows"
|
msgstr "Shows"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:396
|
#: podcasts-gtk/src/utils.rs:377
|
||||||
msgid "Select the file from which to you want to import shows."
|
msgid "Select the file from which to you want to import shows."
|
||||||
msgstr "Selecteer het bestand waaruit u shows wilt importeren."
|
msgstr "Selecteer het bestand waaruit u shows wilt importeren."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:399
|
#: podcasts-gtk/src/utils.rs:380
|
||||||
msgid "_Import"
|
msgid "_Import"
|
||||||
msgstr "_Importeren"
|
msgstr "_Importeren"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:408 podcasts-gtk/src/utils.rs:456
|
#: podcasts-gtk/src/utils.rs:389 podcasts-gtk/src/utils.rs:435
|
||||||
msgid "OPML file"
|
msgid "OPML file"
|
||||||
msgstr "OPML-bestand"
|
msgstr "OPML-bestand"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:425
|
#: podcasts-gtk/src/utils.rs:406
|
||||||
msgid "Failed to parse the imported file"
|
msgid "Failed to parse the imported file"
|
||||||
msgstr "Verwerken van geïmporteerd bestand mislukt"
|
msgstr "Verwerken van geïmporteerd bestand mislukt"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:430 podcasts-gtk/src/utils.rs:474
|
#: podcasts-gtk/src/utils.rs:411 podcasts-gtk/src/utils.rs:453
|
||||||
msgid "Selected file could not be accessed."
|
msgid "Selected file could not be accessed."
|
||||||
msgstr "Kon geen toegang verkrijgen tot geselecteerd bestand."
|
msgstr "Kon geen toegang verkrijgen tot geselecteerd bestand."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:444
|
#: podcasts-gtk/src/utils.rs:423
|
||||||
msgid "Export shows to…"
|
msgid "Export shows to…"
|
||||||
msgstr "Shows exporteren naar…"
|
msgstr "Shows exporteren naar…"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:447
|
#: podcasts-gtk/src/utils.rs:426
|
||||||
msgid "_Export"
|
msgid "_Export"
|
||||||
msgstr "_Exporteren"
|
msgstr "_Exporteren"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:448
|
#: podcasts-gtk/src/utils.rs:427
|
||||||
msgid "_Cancel"
|
msgid "_Cancel"
|
||||||
msgstr "_Annuleren"
|
msgstr "_Annuleren"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:468
|
#: podcasts-gtk/src/utils.rs:447
|
||||||
msgid "GNOME Podcasts Subscriptions"
|
msgid "GNOME Podcasts Subscriptions"
|
||||||
msgstr "Gnome Podcasts-abonnementen"
|
msgstr "Gnome Podcasts-abonnementen"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:469
|
#: podcasts-gtk/src/utils.rs:448
|
||||||
msgid "Failed to export podcasts"
|
msgid "Failed to export podcasts"
|
||||||
msgstr "Exporteren van podcasts mislukt"
|
msgstr "Exporteren van podcasts mislukt"
|
||||||
|
|
||||||
@ -359,65 +414,19 @@ msgstr ""
|
|||||||
"\n"
|
"\n"
|
||||||
"Meer info over Gnome-NL http://nl.gnome.org/"
|
"Meer info over Gnome-NL http://nl.gnome.org/"
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/episode.rs:148
|
#: podcasts-gtk/src/widgets/episode.rs:149
|
||||||
msgid "{} min"
|
msgid "{} min"
|
||||||
msgstr "{} min"
|
msgstr "{} min"
|
||||||
|
|
||||||
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
||||||
#: podcasts-gtk/src/widgets/player.rs:824
|
#: podcasts-gtk/src/widgets/player.rs:536
|
||||||
msgid "The media player was unable to execute an action."
|
msgid "The media player was unable to execute an action."
|
||||||
msgstr "De mediaspeler kon een handeling niet uitvoeren."
|
msgstr "De mediaspeler kon een handeling niet uitvoeren."
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/show_menu.rs:179
|
#: podcasts-gtk/src/widgets/show_menu.rs:169
|
||||||
msgid "Marked all episodes as listened"
|
msgid "Marked all episodes as listened"
|
||||||
msgstr "Alle afleveringen markeren als beluisterd"
|
msgstr "Alle afleveringen markeren als beluisterd"
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/show_menu.rs:184
|
#: podcasts-gtk/src/widgets/show_menu.rs:174
|
||||||
msgid "Unsubscribed from {}"
|
msgid "Unsubscribed from {}"
|
||||||
msgstr "Abonnement op {} opgezegd"
|
msgstr "Abonnement op {} opgezegd"
|
||||||
|
|
||||||
#~ msgid "@icon@"
|
|
||||||
#~ msgstr "@icon@"
|
|
||||||
|
|
||||||
#~ msgid "_Preferences"
|
|
||||||
#~ msgstr "_Voorkeuren"
|
|
||||||
|
|
||||||
#~ msgid "You are already subscribed to that feed!"
|
|
||||||
#~ msgstr "U bent reeds geabonneerd op die feed!"
|
|
||||||
|
|
||||||
#~ msgctxt "shortcut window"
|
|
||||||
#~ msgid "Preferences"
|
|
||||||
#~ msgstr "Voorkeuren"
|
|
||||||
|
|
||||||
#~ msgid "Preferences"
|
|
||||||
#~ msgstr "Voorkeuren"
|
|
||||||
|
|
||||||
#~ msgid "Appearance"
|
|
||||||
#~ msgstr "Uiterlijk"
|
|
||||||
|
|
||||||
#~ msgid "Dark Theme"
|
|
||||||
#~ msgstr "Donker thema"
|
|
||||||
|
|
||||||
#~ msgid "Delete played episodes"
|
|
||||||
#~ msgstr "Afgespeelde afleveringen verwijderen"
|
|
||||||
|
|
||||||
#~ msgid "After"
|
|
||||||
#~ msgstr "Na"
|
|
||||||
|
|
||||||
#~ msgid "Invalid URL"
|
|
||||||
#~ msgstr "Ongeldige URL"
|
|
||||||
|
|
||||||
#~ msgid "Seconds"
|
|
||||||
#~ msgstr "Seconden"
|
|
||||||
|
|
||||||
#~ msgid "Minutes"
|
|
||||||
#~ msgstr "Minuten"
|
|
||||||
|
|
||||||
#~ msgid "Hours"
|
|
||||||
#~ msgstr "Uur"
|
|
||||||
|
|
||||||
#~ msgid "Days"
|
|
||||||
#~ msgstr "Dagen"
|
|
||||||
|
|
||||||
#~ msgid "Weeks"
|
|
||||||
#~ msgstr "Weken"
|
|
||||||
|
|||||||
@ -1,15 +1,15 @@
|
|||||||
# Polish translation for podcasts.
|
# Polish translation for podcasts.
|
||||||
# Copyright © 2018-2020 the podcasts authors.
|
# Copyright © 2018-2019 the podcasts authors.
|
||||||
# This file is distributed under the same license as the podcasts package.
|
# This file is distributed under the same license as the podcasts package.
|
||||||
# Piotr Drąg <piotrdrag@gmail.com>, 2018-2020.
|
# Piotr Drąg <piotrdrag@gmail.com>, 2018-2019.
|
||||||
# Aviary.pl <community-poland@mozilla.org>, 2018-2020.
|
# Aviary.pl <community-poland@mozilla.org>, 2018-2019.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: podcasts\n"
|
"Project-Id-Version: podcasts\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
||||||
"POT-Creation-Date: 2020-02-07 11:33+0000\n"
|
"POT-Creation-Date: 2019-05-18 12:55+0000\n"
|
||||||
"PO-Revision-Date: 2020-02-09 12:19+0100\n"
|
"PO-Revision-Date: 2019-05-19 12:37+0200\n"
|
||||||
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
||||||
"Language-Team: Polish <community-poland@mozilla.org>\n"
|
"Language-Team: Polish <community-poland@mozilla.org>\n"
|
||||||
"Language: pl\n"
|
"Language: pl\n"
|
||||||
@ -70,8 +70,8 @@ msgstr "Jaki okres czekać między automatycznym czyszczeniem"
|
|||||||
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:158 podcasts-gtk/src/app.rs:330
|
#: podcasts-gtk/src/app.rs:109 podcasts-gtk/src/app.rs:433
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:56 podcasts-gtk/src/window.rs:80
|
#: podcasts-gtk/src/widgets/aboutdialog.rs:56
|
||||||
msgid "Podcasts"
|
msgid "Podcasts"
|
||||||
msgstr "Podcasty"
|
msgstr "Podcasty"
|
||||||
|
|
||||||
@ -89,7 +89,7 @@ msgstr "Podcast;Podkasty;RSS;Atom;"
|
|||||||
msgid "Podcast app for GNOME"
|
msgid "Podcast app for GNOME"
|
||||||
msgstr "Aplikacja do słuchania podcastów w GNOME"
|
msgstr "Aplikacja do słuchania podcastów w GNOME"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:84
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:77
|
||||||
msgid "Jordan Petridis"
|
msgid "Jordan Petridis"
|
||||||
msgstr "Jordan Petridis"
|
msgstr "Jordan Petridis"
|
||||||
|
|
||||||
@ -154,7 +154,7 @@ msgid "_About Podcasts"
|
|||||||
msgstr "_O programie"
|
msgstr "_O programie"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:186
|
#: podcasts-gtk/resources/gtk/headerbar.ui:189
|
||||||
msgid "Add a new feed"
|
msgid "Add a new feed"
|
||||||
msgstr "Dodaje nowy kanał"
|
msgstr "Dodaje nowy kanał"
|
||||||
|
|
||||||
@ -166,11 +166,15 @@ msgstr "Adres kanału do dodania"
|
|||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Dodaj"
|
msgstr "Dodaj"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:171
|
#: podcasts-gtk/resources/gtk/headerbar.ui:133
|
||||||
|
msgid "You are already subscribed to that feed!"
|
||||||
|
msgstr "Ten kanał jest już subskrybowany."
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/headerbar.ui:169
|
||||||
msgid "Show Title"
|
msgid "Show Title"
|
||||||
msgstr "Tytuł programu"
|
msgstr "Tytuł programu"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:207
|
#: podcasts-gtk/resources/gtk/headerbar.ui:210
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr "Wstecz"
|
msgstr "Wstecz"
|
||||||
|
|
||||||
@ -216,55 +220,51 @@ msgstr "Powiadomienie z działaniem w programie"
|
|||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Cofnij"
|
msgstr "Cofnij"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_dialog.ui:14
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:72
|
||||||
msgid "Now Playing"
|
|
||||||
msgstr "Odtwarzanie"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:32
|
|
||||||
msgid "Change the playback speed"
|
|
||||||
msgstr "Zmienia prędkość odtwarzania"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:47
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:122
|
|
||||||
msgid "1.00×"
|
|
||||||
msgstr "1,00×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:86
|
|
||||||
msgid "1.50×"
|
|
||||||
msgstr "1,50×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:90
|
|
||||||
msgid "1.5 speed rate"
|
|
||||||
msgstr "Prędkość 1,5"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:104
|
|
||||||
msgid "1.25×"
|
|
||||||
msgstr "1,25×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:108
|
|
||||||
msgid "1.25 speed rate"
|
|
||||||
msgstr "Prędkość 1,25"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:126
|
|
||||||
msgid "Normal speed"
|
|
||||||
msgstr "Zwykła prędkość"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:97
|
|
||||||
msgid "Rewind 10 seconds"
|
msgid "Rewind 10 seconds"
|
||||||
msgstr "Przewija wstecz o 10 sekund"
|
msgstr "Przewija wstecz o 10 sekund"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:112
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:87
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Odtwarza"
|
msgstr "Odtwarza"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:128
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:103
|
||||||
msgid "Pause"
|
msgid "Pause"
|
||||||
msgstr "Wstrzymuje"
|
msgstr "Wstrzymuje"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:144
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:119
|
||||||
msgid "Fast forward 10 seconds"
|
msgid "Fast forward 10 seconds"
|
||||||
msgstr "Przewija wprzód o 10 sekund"
|
msgstr "Przewija wprzód o 10 sekund"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:285
|
||||||
|
msgid "Change the playback speed"
|
||||||
|
msgstr "Zmienia prędkość odtwarzania"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:300
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:380
|
||||||
|
msgid "1.00×"
|
||||||
|
msgstr "1,00×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:344
|
||||||
|
msgid "1.50×"
|
||||||
|
msgstr "1,50×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:348
|
||||||
|
msgid "1.5 speed rate"
|
||||||
|
msgstr "Prędkość 1,5"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:362
|
||||||
|
msgid "1.25×"
|
||||||
|
msgstr "1,25×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:366
|
||||||
|
msgid "1.25 speed rate"
|
||||||
|
msgstr "Prędkość 1,25"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:384
|
||||||
|
msgid "Normal speed"
|
||||||
|
msgstr "Zwykła prędkość"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
||||||
msgid "_Mark All Episodes as Played"
|
msgid "_Mark All Episodes as Played"
|
||||||
msgstr "_Oznacz wszystkie odcinki jako odtworzone"
|
msgstr "_Oznacz wszystkie odcinki jako odtworzone"
|
||||||
@ -289,14 +289,18 @@ msgstr "Oznacz wszystkie jako odtworzone"
|
|||||||
msgid "Unsubscribe"
|
msgid "Unsubscribe"
|
||||||
msgstr "Zrezygnuj z subskrypcji"
|
msgstr "Zrezygnuj z subskrypcji"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/show_widget.ui:99
|
#: podcasts-gtk/src/app.rs:351
|
||||||
msgid "Read More"
|
|
||||||
msgstr "Czytaj dalej"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/app.rs:265
|
|
||||||
msgid "Fetching new episodes"
|
msgid "Fetching new episodes"
|
||||||
msgstr "Pobieranie nowych odcinków"
|
msgstr "Pobieranie nowych odcinków"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:117
|
||||||
|
msgid "You are already subscribed to this show"
|
||||||
|
msgstr "Ten program jest już subskrybowany"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:125
|
||||||
|
msgid "Invalid URL"
|
||||||
|
msgstr "Nieprawidłowy adres"
|
||||||
|
|
||||||
#: podcasts-gtk/src/stacks/content.rs:54
|
#: podcasts-gtk/src/stacks/content.rs:54
|
||||||
msgid "New"
|
msgid "New"
|
||||||
msgstr "Nowe"
|
msgstr "Nowe"
|
||||||
@ -305,43 +309,43 @@ msgstr "Nowe"
|
|||||||
msgid "Shows"
|
msgid "Shows"
|
||||||
msgstr "Programy"
|
msgstr "Programy"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:396
|
#: podcasts-gtk/src/utils.rs:397
|
||||||
msgid "Select the file from which to you want to import shows."
|
msgid "Select the file from which to you want to import shows."
|
||||||
msgstr "Proszę wybrać plik, z którego zaimportować programy."
|
msgstr "Proszę wybrać plik, z którego zaimportować programy."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:399
|
#: podcasts-gtk/src/utils.rs:400
|
||||||
msgid "_Import"
|
msgid "_Import"
|
||||||
msgstr "Zai_mportuj"
|
msgstr "Zai_mportuj"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:408 podcasts-gtk/src/utils.rs:456
|
#: podcasts-gtk/src/utils.rs:409 podcasts-gtk/src/utils.rs:457
|
||||||
msgid "OPML file"
|
msgid "OPML file"
|
||||||
msgstr "Plik OPML"
|
msgstr "Plik OPML"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:425
|
#: podcasts-gtk/src/utils.rs:426
|
||||||
msgid "Failed to parse the imported file"
|
msgid "Failed to parse the imported file"
|
||||||
msgstr "Przetworzenie zaimportowanego pliku się nie powiodło"
|
msgstr "Przetworzenie zaimportowanego pliku się nie powiodło"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:430 podcasts-gtk/src/utils.rs:474
|
#: podcasts-gtk/src/utils.rs:431 podcasts-gtk/src/utils.rs:475
|
||||||
msgid "Selected file could not be accessed."
|
msgid "Selected file could not be accessed."
|
||||||
msgstr "Nie można uzyskać dostępu do wybranego pliku."
|
msgstr "Nie można uzyskać dostępu do wybranego pliku."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:444
|
#: podcasts-gtk/src/utils.rs:445
|
||||||
msgid "Export shows to…"
|
msgid "Export shows to…"
|
||||||
msgstr "Eksport programów do…"
|
msgstr "Eksport programów do…"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:447
|
#: podcasts-gtk/src/utils.rs:448
|
||||||
msgid "_Export"
|
msgid "_Export"
|
||||||
msgstr "Wy_eksportuj"
|
msgstr "Wy_eksportuj"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:448
|
#: podcasts-gtk/src/utils.rs:449
|
||||||
msgid "_Cancel"
|
msgid "_Cancel"
|
||||||
msgstr "_Anuluj"
|
msgstr "_Anuluj"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:468
|
#: podcasts-gtk/src/utils.rs:469
|
||||||
msgid "GNOME Podcasts Subscriptions"
|
msgid "GNOME Podcasts Subscriptions"
|
||||||
msgstr "Subskrypcje Podcastów GNOME"
|
msgstr "Subskrypcje Podcastów GNOME"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:469
|
#: podcasts-gtk/src/utils.rs:470
|
||||||
msgid "Failed to export podcasts"
|
msgid "Failed to export podcasts"
|
||||||
msgstr "Wyeksportowanie podcastów się nie powiodło"
|
msgstr "Wyeksportowanie podcastów się nie powiodło"
|
||||||
|
|
||||||
@ -356,15 +360,15 @@ msgstr "Więcej informacji o Podcastach GNOME"
|
|||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:63
|
#: podcasts-gtk/src/widgets/aboutdialog.rs:63
|
||||||
msgid "translator-credits"
|
msgid "translator-credits"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Piotr Drąg <piotrdrag@gmail.com>, 2018-2020\n"
|
"Piotr Drąg <piotrdrag@gmail.com>, 2018-2019\n"
|
||||||
"Aviary.pl <community-poland@mozilla.org>, 2018-2020"
|
"Aviary.pl <community-poland@mozilla.org>, 2018-2019"
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/episode.rs:148
|
#: podcasts-gtk/src/widgets/episode.rs:148
|
||||||
msgid "{} min"
|
msgid "{} min"
|
||||||
msgstr "{} min"
|
msgstr "{} min"
|
||||||
|
|
||||||
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
||||||
#: podcasts-gtk/src/widgets/player.rs:824
|
#: podcasts-gtk/src/widgets/player.rs:534
|
||||||
msgid "The media player was unable to execute an action."
|
msgid "The media player was unable to execute an action."
|
||||||
msgstr "Odtwarzacz multimediów nie może wykonać działania."
|
msgstr "Odtwarzacz multimediów nie może wykonać działania."
|
||||||
|
|
||||||
|
|||||||
@ -1,23 +1,23 @@
|
|||||||
# Brazilian Portuguese translation for podcasts.
|
# Brazilian Portuguese translation for podcasts.
|
||||||
# Copyright (C) 2020 podcasts's COPYRIGHT HOLDER
|
# Copyright (C) 2019 podcasts's COPYRIGHT HOLDER
|
||||||
# This file is distributed under the same license as the podcasts package.
|
# This file is distributed under the same license as the podcasts package.
|
||||||
# Yuri Otávio Lopes Gomes <yuriotavio@hotmail.com>, 2018, 2020.
|
# Yuri Otávio Lopes Gomes <yuriotavio@hotmail.com>, 2018.
|
||||||
# Rafael Fontenelle <rafaelff@gnome.org>, 2018-2019.
|
# Rafael Fontenelle <rafaelff@gnome.org>, 2018-2019.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: podcasts master\n"
|
"Project-Id-Version: podcasts master\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
||||||
"POT-Creation-Date: 2020-02-07 19:22+0000\n"
|
"POT-Creation-Date: 2019-06-09 02:38+0000\n"
|
||||||
"PO-Revision-Date: 2020-02-07 15:18-0300\n"
|
"PO-Revision-Date: 2019-06-13 15:32-0300\n"
|
||||||
"Last-Translator: Yuri Otávio Lopes Gomes <yuriotavio@hotmail.com>\n"
|
"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
|
||||||
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
|
"Language-Team: Portuguese - Brazil <gnome-pt_br-list@gnome.org>\n"
|
||||||
"Language: pt_BR\n"
|
"Language: pt_BR\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
"X-Generator: Poedit 2.3\n"
|
"X-Generator: Poedit 2.2.3\n"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
||||||
msgid "Top position of the last open main window"
|
msgid "Top position of the last open main window"
|
||||||
@ -71,8 +71,8 @@ msgstr "Qual período de tempo deve esperar entre limpezas automáticas"
|
|||||||
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:158 podcasts-gtk/src/app.rs:329
|
#: podcasts-gtk/src/app.rs:109 podcasts-gtk/src/app.rs:433
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:56 podcasts-gtk/src/window.rs:80
|
#: podcasts-gtk/src/widgets/aboutdialog.rs:56
|
||||||
msgid "Podcasts"
|
msgid "Podcasts"
|
||||||
msgstr "Podcasts"
|
msgstr "Podcasts"
|
||||||
|
|
||||||
@ -90,7 +90,7 @@ msgstr "Podcast;RSS;"
|
|||||||
msgid "Podcast app for GNOME"
|
msgid "Podcast app for GNOME"
|
||||||
msgstr "Aplicativo de podcast para o GNOME"
|
msgstr "Aplicativo de podcast para o GNOME"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:84
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:77
|
||||||
msgid "Jordan Petridis"
|
msgid "Jordan Petridis"
|
||||||
msgstr "Jordan Petridis"
|
msgstr "Jordan Petridis"
|
||||||
|
|
||||||
@ -157,7 +157,7 @@ msgid "_About Podcasts"
|
|||||||
msgstr "_Sobre Podcasts"
|
msgstr "_Sobre Podcasts"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:186
|
#: podcasts-gtk/resources/gtk/headerbar.ui:177
|
||||||
msgid "Add a new feed"
|
msgid "Add a new feed"
|
||||||
msgstr "Adiciona um novo feed"
|
msgstr "Adiciona um novo feed"
|
||||||
|
|
||||||
@ -169,11 +169,11 @@ msgstr "Insira o endereço do feed para adicioná-lo"
|
|||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Adicionar"
|
msgstr "Adicionar"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:171
|
#: podcasts-gtk/resources/gtk/headerbar.ui:157
|
||||||
msgid "Show Title"
|
msgid "Show Title"
|
||||||
msgstr "Mostrar título"
|
msgstr "Mostrar título"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:207
|
#: podcasts-gtk/resources/gtk/headerbar.ui:198
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr "Voltar"
|
msgstr "Voltar"
|
||||||
|
|
||||||
@ -219,55 +219,51 @@ msgstr "Uma notificação de ação no aplicativo"
|
|||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Desfazer"
|
msgstr "Desfazer"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_dialog.ui:14
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:72
|
||||||
msgid "Now Playing"
|
|
||||||
msgstr "Reproduzindo agora"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:32
|
|
||||||
msgid "Change the playback speed"
|
|
||||||
msgstr "Altera a velocidade de reprodução"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:47
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:122
|
|
||||||
msgid "1.00×"
|
|
||||||
msgstr "1,00×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:86
|
|
||||||
msgid "1.50×"
|
|
||||||
msgstr "1,50×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:90
|
|
||||||
msgid "1.5 speed rate"
|
|
||||||
msgstr "Taxa de velocidade de 1,5"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:104
|
|
||||||
msgid "1.25×"
|
|
||||||
msgstr "1,25×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:108
|
|
||||||
msgid "1.25 speed rate"
|
|
||||||
msgstr "Taxa de velocidade de 1,25"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:126
|
|
||||||
msgid "Normal speed"
|
|
||||||
msgstr "Velocidade normal"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:97
|
|
||||||
msgid "Rewind 10 seconds"
|
msgid "Rewind 10 seconds"
|
||||||
msgstr "Retroceder 10 segundos"
|
msgstr "Retroceder 10 segundos"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:112
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:87
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Reproduz"
|
msgstr "Reproduz"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:128
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:103
|
||||||
msgid "Pause"
|
msgid "Pause"
|
||||||
msgstr "Pausa"
|
msgstr "Pausa"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:144
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:119
|
||||||
msgid "Fast forward 10 seconds"
|
msgid "Fast forward 10 seconds"
|
||||||
msgstr "Adianta 10 segundos"
|
msgstr "Adianta 10 segundos"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:285
|
||||||
|
msgid "Change the playback speed"
|
||||||
|
msgstr "Altera a velocidade de reprodução"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:300
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:380
|
||||||
|
msgid "1.00×"
|
||||||
|
msgstr "1,00×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:344
|
||||||
|
msgid "1.50×"
|
||||||
|
msgstr "1,50×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:348
|
||||||
|
msgid "1.5 speed rate"
|
||||||
|
msgstr "Taxa de velocidade de 1,5"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:362
|
||||||
|
msgid "1.25×"
|
||||||
|
msgstr "1,25×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:366
|
||||||
|
msgid "1.25 speed rate"
|
||||||
|
msgstr "Taxa de velocidade de 1,25"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:384
|
||||||
|
msgid "Normal speed"
|
||||||
|
msgstr "Velocidade normal"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
||||||
msgid "_Mark All Episodes as Played"
|
msgid "_Mark All Episodes as Played"
|
||||||
msgstr "_Marcar todos os episódios como reproduzidos"
|
msgstr "_Marcar todos os episódios como reproduzidos"
|
||||||
@ -292,14 +288,18 @@ msgstr "Marcar todos como reproduzidos"
|
|||||||
msgid "Unsubscribe"
|
msgid "Unsubscribe"
|
||||||
msgstr "Desinscrever"
|
msgstr "Desinscrever"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/show_widget.ui:99
|
#: podcasts-gtk/src/app.rs:351
|
||||||
msgid "Read More"
|
|
||||||
msgstr "Leia mais"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/app.rs:264
|
|
||||||
msgid "Fetching new episodes"
|
msgid "Fetching new episodes"
|
||||||
msgstr "Buscando novos episódios"
|
msgstr "Buscando novos episódios"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:120
|
||||||
|
msgid "You are already subscribed to this show"
|
||||||
|
msgstr "Você já está inscrito neste podcast"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:135
|
||||||
|
msgid "Invalid URL"
|
||||||
|
msgstr "URL inválida"
|
||||||
|
|
||||||
#: podcasts-gtk/src/stacks/content.rs:54
|
#: podcasts-gtk/src/stacks/content.rs:54
|
||||||
msgid "New"
|
msgid "New"
|
||||||
msgstr "Novo"
|
msgstr "Novo"
|
||||||
@ -308,43 +308,43 @@ msgstr "Novo"
|
|||||||
msgid "Shows"
|
msgid "Shows"
|
||||||
msgstr "Podcasts"
|
msgstr "Podcasts"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:396
|
#: podcasts-gtk/src/utils.rs:397
|
||||||
msgid "Select the file from which to you want to import shows."
|
msgid "Select the file from which to you want to import shows."
|
||||||
msgstr "Selecione o arquivo a partir do qual você deseja importar podcasts."
|
msgstr "Selecione o arquivo a partir do qual você deseja importar podcasts."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:399
|
#: podcasts-gtk/src/utils.rs:400
|
||||||
msgid "_Import"
|
msgid "_Import"
|
||||||
msgstr "_Importar"
|
msgstr "_Importar"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:408 podcasts-gtk/src/utils.rs:455
|
#: podcasts-gtk/src/utils.rs:409 podcasts-gtk/src/utils.rs:457
|
||||||
msgid "OPML file"
|
msgid "OPML file"
|
||||||
msgstr "Arquivo OPML"
|
msgstr "Arquivo OPML"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:425
|
#: podcasts-gtk/src/utils.rs:426
|
||||||
msgid "Failed to parse the imported file"
|
msgid "Failed to parse the imported file"
|
||||||
msgstr "Falha ao analisar o arquivo importado"
|
msgstr "Falha ao analisar o arquivo importado"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:430 podcasts-gtk/src/utils.rs:473
|
#: podcasts-gtk/src/utils.rs:431 podcasts-gtk/src/utils.rs:475
|
||||||
msgid "Selected file could not be accessed."
|
msgid "Selected file could not be accessed."
|
||||||
msgstr "O arquivo selecionado não pôde ser acessado."
|
msgstr "O arquivo selecionado não pôde ser acessado."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:443
|
#: podcasts-gtk/src/utils.rs:445
|
||||||
msgid "Export shows to…"
|
msgid "Export shows to…"
|
||||||
msgstr "Exportar podcasts para…"
|
msgstr "Exportar podcasts para…"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:446
|
#: podcasts-gtk/src/utils.rs:448
|
||||||
msgid "_Export"
|
msgid "_Export"
|
||||||
msgstr "_Exportar"
|
msgstr "_Exportar"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:447
|
#: podcasts-gtk/src/utils.rs:449
|
||||||
msgid "_Cancel"
|
msgid "_Cancel"
|
||||||
msgstr "_Cancelar"
|
msgstr "_Cancelar"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:467
|
#: podcasts-gtk/src/utils.rs:469
|
||||||
msgid "GNOME Podcasts Subscriptions"
|
msgid "GNOME Podcasts Subscriptions"
|
||||||
msgstr "Inscrições do GNOME Podcasts"
|
msgstr "Inscrições do GNOME Podcasts"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:468
|
#: podcasts-gtk/src/utils.rs:470
|
||||||
msgid "Failed to export podcasts"
|
msgid "Failed to export podcasts"
|
||||||
msgstr "Falha ao exportar podcasts"
|
msgstr "Falha ao exportar podcasts"
|
||||||
|
|
||||||
@ -367,7 +367,7 @@ msgid "{} min"
|
|||||||
msgstr "{} min"
|
msgstr "{} min"
|
||||||
|
|
||||||
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
||||||
#: podcasts-gtk/src/widgets/player.rs:822
|
#: podcasts-gtk/src/widgets/player.rs:534
|
||||||
msgid "The media player was unable to execute an action."
|
msgid "The media player was unable to execute an action."
|
||||||
msgstr "O reprodutor de mídia não conseguiu executar uma ação."
|
msgstr "O reprodutor de mídia não conseguiu executar uma ação."
|
||||||
|
|
||||||
@ -379,12 +379,6 @@ msgstr "Marcados todos os episódios como ouvidos"
|
|||||||
msgid "Unsubscribed from {}"
|
msgid "Unsubscribed from {}"
|
||||||
msgstr "Desinscrito de {}"
|
msgstr "Desinscrito de {}"
|
||||||
|
|
||||||
#~ msgid "You are already subscribed to this show"
|
|
||||||
#~ msgstr "Você já está inscrito neste podcast"
|
|
||||||
|
|
||||||
#~ msgid "Invalid URL"
|
|
||||||
#~ msgstr "URL inválida"
|
|
||||||
|
|
||||||
#~ msgid "@icon@"
|
#~ msgid "@icon@"
|
||||||
#~ msgstr "@icon@"
|
#~ msgstr "@icon@"
|
||||||
|
|
||||||
|
|||||||
@ -1,14 +1,14 @@
|
|||||||
# Swedish translation for podcasts.
|
# Swedish translation for podcasts.
|
||||||
# Copyright © 2018-2020 podcasts's COPYRIGHT HOLDER
|
# Copyright © 2018, 2019 podcasts's COPYRIGHT HOLDER
|
||||||
# This file is distributed under the same license as the podcasts package.
|
# This file is distributed under the same license as the podcasts package.
|
||||||
# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2018, 2019, 2020.
|
# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2018, 2019.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: podcasts master\n"
|
"Project-Id-Version: podcasts master\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
||||||
"POT-Creation-Date: 2020-02-07 11:33+0000\n"
|
"POT-Creation-Date: 2019-06-15 10:55+0000\n"
|
||||||
"PO-Revision-Date: 2020-02-13 22:38+0100\n"
|
"PO-Revision-Date: 2019-08-22 17:54+0200\n"
|
||||||
"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
|
"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
|
||||||
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
|
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
|
||||||
"Language: sv\n"
|
"Language: sv\n"
|
||||||
@ -16,7 +16,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Poedit 2.2.4\n"
|
"X-Generator: Poedit 2.2.3\n"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
||||||
msgid "Top position of the last open main window"
|
msgid "Top position of the last open main window"
|
||||||
@ -69,8 +69,8 @@ msgstr "Vilken sorts tidsperiod att vänta mellan automatiska upprensningar"
|
|||||||
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:158 podcasts-gtk/src/app.rs:330
|
#: podcasts-gtk/src/app.rs:109 podcasts-gtk/src/app.rs:433
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:56 podcasts-gtk/src/window.rs:80
|
#: podcasts-gtk/src/widgets/aboutdialog.rs:56
|
||||||
msgid "Podcasts"
|
msgid "Podcasts"
|
||||||
msgstr "Poddsändningar"
|
msgstr "Poddsändningar"
|
||||||
|
|
||||||
@ -88,7 +88,7 @@ msgstr "Poddsändning;Podcast;RSS;"
|
|||||||
msgid "Podcast app for GNOME"
|
msgid "Podcast app for GNOME"
|
||||||
msgstr "Poddsändningsprogram för GNOME"
|
msgstr "Poddsändningsprogram för GNOME"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:84
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:77
|
||||||
msgid "Jordan Petridis"
|
msgid "Jordan Petridis"
|
||||||
msgstr "Jordan Petridis"
|
msgstr "Jordan Petridis"
|
||||||
|
|
||||||
@ -153,7 +153,7 @@ msgid "_About Podcasts"
|
|||||||
msgstr "_Om Poddsändningar"
|
msgstr "_Om Poddsändningar"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:186
|
#: podcasts-gtk/resources/gtk/headerbar.ui:177
|
||||||
msgid "Add a new feed"
|
msgid "Add a new feed"
|
||||||
msgstr "Lägg till ett nytt flöde"
|
msgstr "Lägg till ett nytt flöde"
|
||||||
|
|
||||||
@ -165,11 +165,11 @@ msgstr "Ange flödesadress att lägga till"
|
|||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Lägg till"
|
msgstr "Lägg till"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:171
|
#: podcasts-gtk/resources/gtk/headerbar.ui:157
|
||||||
msgid "Show Title"
|
msgid "Show Title"
|
||||||
msgstr "Visa titel"
|
msgstr "Visa titel"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:207
|
#: podcasts-gtk/resources/gtk/headerbar.ui:198
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr "Bakåt"
|
msgstr "Bakåt"
|
||||||
|
|
||||||
@ -215,55 +215,51 @@ msgstr "En åtgärdsavisering i programmet"
|
|||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Ångra"
|
msgstr "Ångra"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_dialog.ui:14
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:72
|
||||||
msgid "Now Playing"
|
|
||||||
msgstr "Spelar nu"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:32
|
|
||||||
msgid "Change the playback speed"
|
|
||||||
msgstr "Ändra uppspelningshastigheten"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:47
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:122
|
|
||||||
msgid "1.00×"
|
|
||||||
msgstr "1,00×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:86
|
|
||||||
msgid "1.50×"
|
|
||||||
msgstr "1,50×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:90
|
|
||||||
msgid "1.5 speed rate"
|
|
||||||
msgstr "Hastighetsfaktor 1,5"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:104
|
|
||||||
msgid "1.25×"
|
|
||||||
msgstr "1,25×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:108
|
|
||||||
msgid "1.25 speed rate"
|
|
||||||
msgstr "Hastighetsfaktor 1,25"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:126
|
|
||||||
msgid "Normal speed"
|
|
||||||
msgstr "Normal hastighet"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:97
|
|
||||||
msgid "Rewind 10 seconds"
|
msgid "Rewind 10 seconds"
|
||||||
msgstr "Spola tillbaka 10 sekunder"
|
msgstr "Spola tillbaka 10 sekunder"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:112
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:87
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Spela"
|
msgstr "Spela"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:128
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:103
|
||||||
msgid "Pause"
|
msgid "Pause"
|
||||||
msgstr "Pausa"
|
msgstr "Pausa"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:144
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:119
|
||||||
msgid "Fast forward 10 seconds"
|
msgid "Fast forward 10 seconds"
|
||||||
msgstr "Spola framåt 10 sekunder"
|
msgstr "Spola framåt 10 sekunder"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:285
|
||||||
|
msgid "Change the playback speed"
|
||||||
|
msgstr "Ändra uppspelningshastigheten"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:300
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:380
|
||||||
|
msgid "1.00×"
|
||||||
|
msgstr "1,00×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:344
|
||||||
|
msgid "1.50×"
|
||||||
|
msgstr "1,50×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:348
|
||||||
|
msgid "1.5 speed rate"
|
||||||
|
msgstr "Hastighetsfaktor 1,5"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:362
|
||||||
|
msgid "1.25×"
|
||||||
|
msgstr "1,25×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:366
|
||||||
|
msgid "1.25 speed rate"
|
||||||
|
msgstr "Hastighetsfaktor 1,25"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:384
|
||||||
|
msgid "Normal speed"
|
||||||
|
msgstr "Normal hastighet"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
||||||
msgid "_Mark All Episodes as Played"
|
msgid "_Mark All Episodes as Played"
|
||||||
msgstr "_Markera alla avsnitt som spelade"
|
msgstr "_Markera alla avsnitt som spelade"
|
||||||
@ -288,14 +284,18 @@ msgstr "Markera alla som spelade"
|
|||||||
msgid "Unsubscribe"
|
msgid "Unsubscribe"
|
||||||
msgstr "Säg upp prenumeration"
|
msgstr "Säg upp prenumeration"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/show_widget.ui:99
|
#: podcasts-gtk/src/app.rs:351
|
||||||
msgid "Read More"
|
|
||||||
msgstr "Läs mer"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/app.rs:265
|
|
||||||
msgid "Fetching new episodes"
|
msgid "Fetching new episodes"
|
||||||
msgstr "Hämtar nya avsnitt"
|
msgstr "Hämtar nya avsnitt"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:127
|
||||||
|
msgid "You are already subscribed to this show"
|
||||||
|
msgstr "Du prenumererar redan på denna show"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:145
|
||||||
|
msgid "Invalid URL"
|
||||||
|
msgstr "Ogiltig URL"
|
||||||
|
|
||||||
#: podcasts-gtk/src/stacks/content.rs:54
|
#: podcasts-gtk/src/stacks/content.rs:54
|
||||||
msgid "New"
|
msgid "New"
|
||||||
msgstr "Nytt"
|
msgstr "Nytt"
|
||||||
@ -304,43 +304,43 @@ msgstr "Nytt"
|
|||||||
msgid "Shows"
|
msgid "Shows"
|
||||||
msgstr "Shower"
|
msgstr "Shower"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:396
|
#: podcasts-gtk/src/utils.rs:397
|
||||||
msgid "Select the file from which to you want to import shows."
|
msgid "Select the file from which to you want to import shows."
|
||||||
msgstr "Välj filen från vilken du vill importera shower."
|
msgstr "Välj filen från vilken du vill importera shower."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:399
|
#: podcasts-gtk/src/utils.rs:400
|
||||||
msgid "_Import"
|
msgid "_Import"
|
||||||
msgstr "_Importera"
|
msgstr "_Importera"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:408 podcasts-gtk/src/utils.rs:456
|
#: podcasts-gtk/src/utils.rs:409 podcasts-gtk/src/utils.rs:457
|
||||||
msgid "OPML file"
|
msgid "OPML file"
|
||||||
msgstr "OPML-fil"
|
msgstr "OPML-fil"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:425
|
#: podcasts-gtk/src/utils.rs:426
|
||||||
msgid "Failed to parse the imported file"
|
msgid "Failed to parse the imported file"
|
||||||
msgstr "Misslyckades med att tolka den importerade filen"
|
msgstr "Misslyckades med att tolka den importerade filen"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:430 podcasts-gtk/src/utils.rs:474
|
#: podcasts-gtk/src/utils.rs:431 podcasts-gtk/src/utils.rs:475
|
||||||
msgid "Selected file could not be accessed."
|
msgid "Selected file could not be accessed."
|
||||||
msgstr "Den markerade filen kunde inte kommas åt."
|
msgstr "Den markerade filen kunde inte kommas åt."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:444
|
#: podcasts-gtk/src/utils.rs:445
|
||||||
msgid "Export shows to…"
|
msgid "Export shows to…"
|
||||||
msgstr "Exportera shower till…"
|
msgstr "Exportera shower till…"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:447
|
#: podcasts-gtk/src/utils.rs:448
|
||||||
msgid "_Export"
|
msgid "_Export"
|
||||||
msgstr "_Exportera"
|
msgstr "_Exportera"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:448
|
#: podcasts-gtk/src/utils.rs:449
|
||||||
msgid "_Cancel"
|
msgid "_Cancel"
|
||||||
msgstr "A_vbryt"
|
msgstr "A_vbryt"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:468
|
#: podcasts-gtk/src/utils.rs:469
|
||||||
msgid "GNOME Podcasts Subscriptions"
|
msgid "GNOME Podcasts Subscriptions"
|
||||||
msgstr "GNOME Poddsändningar-prenumerationer"
|
msgstr "GNOME Poddsändningar-prenumerationer"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:469
|
#: podcasts-gtk/src/utils.rs:470
|
||||||
msgid "Failed to export podcasts"
|
msgid "Failed to export podcasts"
|
||||||
msgstr "Misslyckades med att exportera poddsändningar"
|
msgstr "Misslyckades med att exportera poddsändningar"
|
||||||
|
|
||||||
@ -365,7 +365,7 @@ msgid "{} min"
|
|||||||
msgstr "{} min"
|
msgstr "{} min"
|
||||||
|
|
||||||
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
||||||
#: podcasts-gtk/src/widgets/player.rs:824
|
#: podcasts-gtk/src/widgets/player.rs:534
|
||||||
msgid "The media player was unable to execute an action."
|
msgid "The media player was unable to execute an action."
|
||||||
msgstr "Mediaspelaren kunde inte utföra en åtgärd."
|
msgstr "Mediaspelaren kunde inte utföra en åtgärd."
|
||||||
|
|
||||||
@ -377,12 +377,6 @@ msgstr "Markerade alla avsnitt som lyssnade"
|
|||||||
msgid "Unsubscribed from {}"
|
msgid "Unsubscribed from {}"
|
||||||
msgstr "Sade upp prenumeration från {}"
|
msgstr "Sade upp prenumeration från {}"
|
||||||
|
|
||||||
#~ msgid "You are already subscribed to this show"
|
|
||||||
#~ msgstr "Du prenumererar redan på denna show"
|
|
||||||
|
|
||||||
#~ msgid "Invalid URL"
|
|
||||||
#~ msgstr "Ogiltig URL"
|
|
||||||
|
|
||||||
#~ msgid "@icon@"
|
#~ msgid "@icon@"
|
||||||
#~ msgstr "@icon@"
|
#~ msgstr "@icon@"
|
||||||
|
|
||||||
|
|||||||
@ -2,16 +2,16 @@
|
|||||||
# Copyright (C) 2018-2019 podcasts's COPYRIGHT HOLDER
|
# Copyright (C) 2018-2019 podcasts's COPYRIGHT HOLDER
|
||||||
# This file is distributed under the same license as the podcasts package.
|
# This file is distributed under the same license as the podcasts package.
|
||||||
#
|
#
|
||||||
# Emin Tufan Çetin <etcetin@gmail.com>, 2018-2020.
|
# Emin Tufan Çetin <etcetin@gmail.com>, 2018-2019.
|
||||||
# Sabri Ünal <libreajans@gmail.com>, 2019.
|
# Sabri Ünal <libreajans@gmail.com>, 2019.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: podcasts master\n"
|
"Project-Id-Version: podcasts master\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
||||||
"POT-Creation-Date: 2020-02-07 11:33+0000\n"
|
"POT-Creation-Date: 2019-06-15 10:55+0000\n"
|
||||||
"PO-Revision-Date: 2020-02-19 10:52+0300\n"
|
"PO-Revision-Date: 2019-09-04 15:16+0300\n"
|
||||||
"Last-Translator: Emin Tufan Çetin <etcetin@gmail.com>\n"
|
"Last-Translator: Sabri Ünal <libreajans@gmail.com>\n"
|
||||||
"Language-Team: Türkçe <gnome-turk@gnome.org>\n"
|
"Language-Team: Türkçe <gnome-turk@gnome.org>\n"
|
||||||
"Language: tr\n"
|
"Language: tr\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@ -71,8 +71,8 @@ msgstr "Kendiliğinden temizlemeler arasında beklenecek zaman aralığı"
|
|||||||
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:158 podcasts-gtk/src/app.rs:330
|
#: podcasts-gtk/src/app.rs:109 podcasts-gtk/src/app.rs:433
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:56 podcasts-gtk/src/window.rs:80
|
#: podcasts-gtk/src/widgets/aboutdialog.rs:56
|
||||||
msgid "Podcasts"
|
msgid "Podcasts"
|
||||||
msgstr "Podcastler"
|
msgstr "Podcastler"
|
||||||
|
|
||||||
@ -90,7 +90,7 @@ msgstr "Podcast;RSS;Pod Yayını;"
|
|||||||
msgid "Podcast app for GNOME"
|
msgid "Podcast app for GNOME"
|
||||||
msgstr "GNOME için Podcast uygulaması"
|
msgstr "GNOME için Podcast uygulaması"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:84
|
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:77
|
||||||
msgid "Jordan Petridis"
|
msgid "Jordan Petridis"
|
||||||
msgstr "Jordan Petridis"
|
msgstr "Jordan Petridis"
|
||||||
|
|
||||||
@ -155,7 +155,7 @@ msgid "_About Podcasts"
|
|||||||
msgstr "Podcastler _Hakkında"
|
msgstr "Podcastler _Hakkında"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:186
|
#: podcasts-gtk/resources/gtk/headerbar.ui:177
|
||||||
msgid "Add a new feed"
|
msgid "Add a new feed"
|
||||||
msgstr "Yeni besleme ekle"
|
msgstr "Yeni besleme ekle"
|
||||||
|
|
||||||
@ -167,11 +167,11 @@ msgstr "Eklenecek besleme adresini gir"
|
|||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "Ekle"
|
msgstr "Ekle"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:171
|
#: podcasts-gtk/resources/gtk/headerbar.ui:157
|
||||||
msgid "Show Title"
|
msgid "Show Title"
|
||||||
msgstr "Gösteri Başlığı"
|
msgstr "Gösteri Başlığı"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:207
|
#: podcasts-gtk/resources/gtk/headerbar.ui:198
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr "Geri"
|
msgstr "Geri"
|
||||||
|
|
||||||
@ -217,55 +217,51 @@ msgstr "Uygulama içi eylem bildirimi"
|
|||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Geri al"
|
msgstr "Geri al"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_dialog.ui:14
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:72
|
||||||
msgid "Now Playing"
|
|
||||||
msgstr "Şimdi Oynatılıyor"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:32
|
|
||||||
msgid "Change the playback speed"
|
|
||||||
msgstr "Kayıttan yürütme hızını değiştir"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:47
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:122
|
|
||||||
msgid "1.00×"
|
|
||||||
msgstr "1.00×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:86
|
|
||||||
msgid "1.50×"
|
|
||||||
msgstr "1.50×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:90
|
|
||||||
msgid "1.5 speed rate"
|
|
||||||
msgstr "1.5 hız oranı"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:104
|
|
||||||
msgid "1.25×"
|
|
||||||
msgstr "1.25×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:108
|
|
||||||
msgid "1.25 speed rate"
|
|
||||||
msgstr "1.25 hız oranı"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:126
|
|
||||||
msgid "Normal speed"
|
|
||||||
msgstr "Olağan hız"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:97
|
|
||||||
msgid "Rewind 10 seconds"
|
msgid "Rewind 10 seconds"
|
||||||
msgstr "10 saniye geri sar"
|
msgstr "10 saniye geri sar"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:112
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:87
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Oynat"
|
msgstr "Oynat"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:128
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:103
|
||||||
msgid "Pause"
|
msgid "Pause"
|
||||||
msgstr "Duraklat"
|
msgstr "Duraklat"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:144
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:119
|
||||||
msgid "Fast forward 10 seconds"
|
msgid "Fast forward 10 seconds"
|
||||||
msgstr "10 saniye ileri sar"
|
msgstr "10 saniye ileri sar"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:285
|
||||||
|
msgid "Change the playback speed"
|
||||||
|
msgstr "Kayıttan yürütme hızını değiştir"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:300
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:380
|
||||||
|
msgid "1.00×"
|
||||||
|
msgstr "1.00×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:344
|
||||||
|
msgid "1.50×"
|
||||||
|
msgstr "1.50×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:348
|
||||||
|
msgid "1.5 speed rate"
|
||||||
|
msgstr "1.5 hız oranı"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:362
|
||||||
|
msgid "1.25×"
|
||||||
|
msgstr "1.25×"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:366
|
||||||
|
msgid "1.25 speed rate"
|
||||||
|
msgstr "1.25 hız oranı"
|
||||||
|
|
||||||
|
#: podcasts-gtk/resources/gtk/player_toolbar.ui:384
|
||||||
|
msgid "Normal speed"
|
||||||
|
msgstr "Olağan hız"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
||||||
msgid "_Mark All Episodes as Played"
|
msgid "_Mark All Episodes as Played"
|
||||||
msgstr "Tüm Bölümleri Oynatıldı Olarak _İmle"
|
msgstr "Tüm Bölümleri Oynatıldı Olarak _İmle"
|
||||||
@ -290,14 +286,18 @@ msgstr "Tümünü Oynatıldı Olarak İmle"
|
|||||||
msgid "Unsubscribe"
|
msgid "Unsubscribe"
|
||||||
msgstr "Abonelikten Çık"
|
msgstr "Abonelikten Çık"
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/show_widget.ui:99
|
#: podcasts-gtk/src/app.rs:351
|
||||||
msgid "Read More"
|
|
||||||
msgstr "Daha Çoğunu Oku"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/app.rs:265
|
|
||||||
msgid "Fetching new episodes"
|
msgid "Fetching new episodes"
|
||||||
msgstr "Yeni bölümler alınıyor"
|
msgstr "Yeni bölümler alınıyor"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:127
|
||||||
|
msgid "You are already subscribed to this show"
|
||||||
|
msgstr "Bu gösteriye zaten abonesiniz"
|
||||||
|
|
||||||
|
#: podcasts-gtk/src/headerbar.rs:145
|
||||||
|
msgid "Invalid URL"
|
||||||
|
msgstr "Geçersiz URL"
|
||||||
|
|
||||||
#: podcasts-gtk/src/stacks/content.rs:54
|
#: podcasts-gtk/src/stacks/content.rs:54
|
||||||
msgid "New"
|
msgid "New"
|
||||||
msgstr "Yeni"
|
msgstr "Yeni"
|
||||||
@ -306,43 +306,43 @@ msgstr "Yeni"
|
|||||||
msgid "Shows"
|
msgid "Shows"
|
||||||
msgstr "Gösteriler"
|
msgstr "Gösteriler"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:396
|
#: podcasts-gtk/src/utils.rs:397
|
||||||
msgid "Select the file from which to you want to import shows."
|
msgid "Select the file from which to you want to import shows."
|
||||||
msgstr "Gösterileri içe aktarmak istediğiniz dosyayı seçin."
|
msgstr "Gösterileri içe aktarmak istediğiniz dosyayı seçin."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:399
|
#: podcasts-gtk/src/utils.rs:400
|
||||||
msgid "_Import"
|
msgid "_Import"
|
||||||
msgstr "_İçe Aktar"
|
msgstr "_İçe Aktar"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:408 podcasts-gtk/src/utils.rs:456
|
#: podcasts-gtk/src/utils.rs:409 podcasts-gtk/src/utils.rs:457
|
||||||
msgid "OPML file"
|
msgid "OPML file"
|
||||||
msgstr "OPML dosyası"
|
msgstr "OPML dosyası"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:425
|
#: podcasts-gtk/src/utils.rs:426
|
||||||
msgid "Failed to parse the imported file"
|
msgid "Failed to parse the imported file"
|
||||||
msgstr "İçe aktarılan dosya ayrıştırılamadı"
|
msgstr "İçe aktarılan dosya ayrıştırılamadı"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:430 podcasts-gtk/src/utils.rs:474
|
#: podcasts-gtk/src/utils.rs:431 podcasts-gtk/src/utils.rs:475
|
||||||
msgid "Selected file could not be accessed."
|
msgid "Selected file could not be accessed."
|
||||||
msgstr "Seçilen dosyaya erişilemedi."
|
msgstr "Seçilen dosyaya erişilemedi."
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:444
|
#: podcasts-gtk/src/utils.rs:445
|
||||||
msgid "Export shows to…"
|
msgid "Export shows to…"
|
||||||
msgstr "Gösterileri dışa aktar…"
|
msgstr "Gösterileri dışa aktar…"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:447
|
#: podcasts-gtk/src/utils.rs:448
|
||||||
msgid "_Export"
|
msgid "_Export"
|
||||||
msgstr "_Dışa Aktar"
|
msgstr "_Dışa Aktar"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:448
|
#: podcasts-gtk/src/utils.rs:449
|
||||||
msgid "_Cancel"
|
msgid "_Cancel"
|
||||||
msgstr "_İptal"
|
msgstr "_İptal"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:468
|
#: podcasts-gtk/src/utils.rs:469
|
||||||
msgid "GNOME Podcasts Subscriptions"
|
msgid "GNOME Podcasts Subscriptions"
|
||||||
msgstr "GNOME Podcastler Abonelikleri"
|
msgstr "GNOME Podcastler Abonelikleri"
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:469
|
#: podcasts-gtk/src/utils.rs:470
|
||||||
msgid "Failed to export podcasts"
|
msgid "Failed to export podcasts"
|
||||||
msgstr "Podcastler dışa aktarılamadı"
|
msgstr "Podcastler dışa aktarılamadı"
|
||||||
|
|
||||||
@ -365,7 +365,7 @@ msgid "{} min"
|
|||||||
msgstr "{} dak"
|
msgstr "{} dak"
|
||||||
|
|
||||||
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
||||||
#: podcasts-gtk/src/widgets/player.rs:824
|
#: podcasts-gtk/src/widgets/player.rs:534
|
||||||
msgid "The media player was unable to execute an action."
|
msgid "The media player was unable to execute an action."
|
||||||
msgstr "Ortam oynatıcı eylemi yürütemiyor."
|
msgstr "Ortam oynatıcı eylemi yürütemiyor."
|
||||||
|
|
||||||
@ -377,12 +377,6 @@ msgstr "Tüm bölümler dinlendi olarak imlendi"
|
|||||||
msgid "Unsubscribed from {}"
|
msgid "Unsubscribed from {}"
|
||||||
msgstr "{} aboneliğinden çıkıldı"
|
msgstr "{} aboneliğinden çıkıldı"
|
||||||
|
|
||||||
#~ msgid "You are already subscribed to this show"
|
|
||||||
#~ msgstr "Bu gösteriye zaten abonesiniz"
|
|
||||||
|
|
||||||
#~ msgid "Invalid URL"
|
|
||||||
#~ msgstr "Geçersiz URL"
|
|
||||||
|
|
||||||
#~ msgid "@icon@"
|
#~ msgid "@icon@"
|
||||||
#~ msgstr "@icon@"
|
#~ msgstr "@icon@"
|
||||||
|
|
||||||
|
|||||||
@ -1,386 +0,0 @@
|
|||||||
# Ukrainian translation for podcasts.
|
|
||||||
# Copyright (C) 2020 podcasts's COPYRIGHT HOLDER
|
|
||||||
# This file is distributed under the same license as the podcasts package.
|
|
||||||
#
|
|
||||||
# Yuri Chornoivan <yurchor@ukr.net>, 2020.
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: podcasts master\n"
|
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
|
||||||
"POT-Creation-Date: 2020-03-21 20:34+0000\n"
|
|
||||||
"PO-Revision-Date: 2020-04-06 19:49+0300\n"
|
|
||||||
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
|
|
||||||
"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
|
|
||||||
"Language: uk\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
|
|
||||||
"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
|
||||||
"X-Generator: Lokalize 20.07.70\n"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
|
||||||
msgid "Top position of the last open main window"
|
|
||||||
msgstr ""
|
|
||||||
"Розташування останнього відкритого головного вікна за вертикаллю (згори)"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:19
|
|
||||||
msgid "Left position of the last open main window"
|
|
||||||
msgstr ""
|
|
||||||
"Розташування останнього відкритого головного вікна за горизонталлю (ліворуч)"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:23
|
|
||||||
msgid "Height of the last open main window"
|
|
||||||
msgstr "Висота останнього відкритого головного вікна"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:27
|
|
||||||
msgid "Width of the last open main window"
|
|
||||||
msgstr "Ширина останнього відкритого головного вікна"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:31
|
|
||||||
msgid "Maximized state of the last open main window"
|
|
||||||
msgstr "Стан максимізації останнього відкритого головного вікна"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:36
|
|
||||||
msgid "Enable or disable dark theme"
|
|
||||||
msgstr "Увімкнути або вимкнути темну тему"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:41
|
|
||||||
msgid "Whether to periodically refresh content"
|
|
||||||
msgstr "Чи слід періодично оновлювати дані"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:46
|
|
||||||
msgid "How many periods of time to wait between automatic refreshes"
|
|
||||||
msgstr ""
|
|
||||||
"Скільки періодів часу слід очікувати між двома послідовними автоматичними"
|
|
||||||
" оновленнями"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:50
|
|
||||||
msgid "What period of time to wait between automatic refreshes"
|
|
||||||
msgstr ""
|
|
||||||
"Який період часу слід використовувати для очікування між двома послідовними"
|
|
||||||
" автоматичними оновленнями"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:54
|
|
||||||
msgid "Whether to refresh content after startup"
|
|
||||||
msgstr "Чи слід оновлювати дані після запуску"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:60
|
|
||||||
msgid "How many periods of time to wait between automatic cleanups"
|
|
||||||
msgstr ""
|
|
||||||
"Скільки періодів часу слід очікувати між двома послідовними автоматичними"
|
|
||||||
" очищеннями"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:64
|
|
||||||
msgid "What period of time to wait between automatic cleanups"
|
|
||||||
msgstr ""
|
|
||||||
"Який період часу слід використовувати для очікування між двома послідовними"
|
|
||||||
" автоматичними очищеннями"
|
|
||||||
|
|
||||||
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:158 podcasts-gtk/src/app.rs:353
|
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:56 podcasts-gtk/src/window.rs:82
|
|
||||||
msgid "Podcasts"
|
|
||||||
msgstr "Подкасти"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:4
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:10
|
|
||||||
msgid "Listen to your favorite podcasts, right from your desktop."
|
|
||||||
msgstr "Слухайте ваші улюблені подкасти безпосередньо з вашої стільниці."
|
|
||||||
|
|
||||||
#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:13
|
|
||||||
msgid "Podcast;RSS;"
|
|
||||||
msgstr "Podcast;RSS;подкаст;рсс;"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:8
|
|
||||||
msgid "Podcast app for GNOME"
|
|
||||||
msgstr "Програма для прослуховування подкастів у GNOME"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:84
|
|
||||||
msgid "Jordan Petridis"
|
|
||||||
msgstr "Jordan Petridis"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/empty_view.ui:46
|
|
||||||
msgid "This show does not have episodes yet"
|
|
||||||
msgstr "У цьому шоу ще немає серій"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/empty_view.ui:62
|
|
||||||
msgid "If you think this is an error, please consider writing a bug report."
|
|
||||||
msgstr ""
|
|
||||||
"Якщо ви вважаєте це помилкою, будь ласка, повідомте про неї розробникам."
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/empty_view.ui:106
|
|
||||||
msgid "Get some shows"
|
|
||||||
msgstr "Отримати шоу"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/empty_view.ui:143
|
|
||||||
msgid "Add new shows via feed URL"
|
|
||||||
msgstr "Додайте нові шоу за допомогою адреси стрічки"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/empty_view.ui:172
|
|
||||||
msgid "Import shows from another device"
|
|
||||||
msgstr "Імпортувати шоу з іншого пристрою"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:79
|
|
||||||
msgid "You’ve already listened to this episode."
|
|
||||||
msgstr "Ви вже прослуховували цю серію."
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:208
|
|
||||||
msgid "Calculating episode size…"
|
|
||||||
msgstr "Обчислюємо розмір серії…"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:248
|
|
||||||
msgid "Play this episode"
|
|
||||||
msgstr "Відтворити цю серію"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:269
|
|
||||||
msgid "Cancel the download process"
|
|
||||||
msgstr "Скасувати процедуру отримання"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:292
|
|
||||||
msgid "Download this episode"
|
|
||||||
msgstr "Отримати цю серію"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/hamburger.ui:7
|
|
||||||
msgid "_Check for New Episodes"
|
|
||||||
msgstr "_Шукати нові серії"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/hamburger.ui:12
|
|
||||||
msgid "_Import Shows"
|
|
||||||
msgstr "_Імпортувати шоу"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/hamburger.ui:16
|
|
||||||
msgid "_Export Shows"
|
|
||||||
msgstr "_Експортувати шоу"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/hamburger.ui:22
|
|
||||||
msgid "_Keyboard Shortcuts"
|
|
||||||
msgstr "_Клавіатурні скорочення"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/hamburger.ui:30
|
|
||||||
msgid "_About Podcasts"
|
|
||||||
msgstr "_Про «Подкасти»"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:186
|
|
||||||
msgid "Add a new feed"
|
|
||||||
msgstr "Додати нову подачу"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:53
|
|
||||||
msgid "Enter feed address to add"
|
|
||||||
msgstr "Введіть адресу подачі для додавання"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:89
|
|
||||||
msgid "Add"
|
|
||||||
msgstr "Додати"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:171
|
|
||||||
msgid "Show Title"
|
|
||||||
msgstr "Показувати заголовок"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:207
|
|
||||||
msgid "Back"
|
|
||||||
msgstr "Назад"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/help-overlay.ui:12
|
|
||||||
msgid "General"
|
|
||||||
msgstr "Загальне"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/help-overlay.ui:18
|
|
||||||
msgctxt "shortcut window"
|
|
||||||
msgid "Check for new episodes"
|
|
||||||
msgstr "Шукати нові серії"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/help-overlay.ui:25
|
|
||||||
msgctxt "shortcut window"
|
|
||||||
msgid "Quit the application"
|
|
||||||
msgstr "Вийти з програми"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/home_view.ui:56
|
|
||||||
msgid "Today"
|
|
||||||
msgstr "Сьогодні"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/home_view.ui:112
|
|
||||||
msgid "Yesterday"
|
|
||||||
msgstr "Вчора"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/home_view.ui:168
|
|
||||||
msgid "This Week"
|
|
||||||
msgstr "Цього тижня"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/home_view.ui:224
|
|
||||||
msgid "This Month"
|
|
||||||
msgstr "Цього місяця"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/home_view.ui:281
|
|
||||||
msgid "Older"
|
|
||||||
msgstr "Старіше"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/inapp_notif.ui:101
|
|
||||||
msgid "An in-app action notification"
|
|
||||||
msgstr "Сповіщення про дію у програмі"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/inapp_notif.ui:112
|
|
||||||
msgid "Undo"
|
|
||||||
msgstr "Скасувати"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_dialog.ui:14
|
|
||||||
msgid "Now Playing"
|
|
||||||
msgstr "Зараз відтворюється"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:32
|
|
||||||
msgid "Change the playback speed"
|
|
||||||
msgstr "Змінити швидкість відтворення"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:47
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:122
|
|
||||||
msgid "1.00×"
|
|
||||||
msgstr "1,00×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:86
|
|
||||||
msgid "1.50×"
|
|
||||||
msgstr "1,50×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:90
|
|
||||||
msgid "1.5 speed rate"
|
|
||||||
msgstr "Швидкість відтворення 1,5"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:104
|
|
||||||
msgid "1.25×"
|
|
||||||
msgstr "1,25×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:108
|
|
||||||
msgid "1.25 speed rate"
|
|
||||||
msgstr "Швидкість відтворення 1,25"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_rate.ui:126
|
|
||||||
msgid "Normal speed"
|
|
||||||
msgstr "Звичайна швидкість"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:97
|
|
||||||
msgid "Rewind 10 seconds"
|
|
||||||
msgstr "На 10 назад"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:112
|
|
||||||
msgid "Play"
|
|
||||||
msgstr "Відтворити"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:128
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "Пауза"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:144
|
|
||||||
msgid "Fast forward 10 seconds"
|
|
||||||
msgstr "На 10 секунд вперед"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
|
||||||
msgid "_Mark All Episodes as Played"
|
|
||||||
msgstr "П_означити усі серії як відтворені"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/secondary_menu.ui:11
|
|
||||||
msgid "_Website"
|
|
||||||
msgstr "_Сайт"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/secondary_menu.ui:15
|
|
||||||
msgid "_Unsubscribe"
|
|
||||||
msgstr "_Відписатись"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/show_menu.ui:51
|
|
||||||
msgid "Open Website"
|
|
||||||
msgstr "Відкрити сайт"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/show_menu.ui:64
|
|
||||||
msgid "Mark All as Played"
|
|
||||||
msgstr "Позначити усе як відтворене"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/show_menu.ui:89
|
|
||||||
msgid "Unsubscribe"
|
|
||||||
msgstr "Відписатися"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/show_widget.ui:99
|
|
||||||
msgid "Read More"
|
|
||||||
msgstr "Дізнатися більше"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/app.rs:287
|
|
||||||
msgid "Fetching new episodes"
|
|
||||||
msgstr "Отримання нових серій"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/stacks/content.rs:54
|
|
||||||
msgid "New"
|
|
||||||
msgstr "Створити"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/stacks/content.rs:55
|
|
||||||
msgid "Shows"
|
|
||||||
msgstr "Шоу"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:398
|
|
||||||
msgid "Select the file from which to you want to import shows."
|
|
||||||
msgstr "Виберіть файл, з якого ви хочете імпортувати шоу."
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:401
|
|
||||||
msgid "_Import"
|
|
||||||
msgstr "_Імпортувати"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:410 podcasts-gtk/src/utils.rs:457
|
|
||||||
msgid "OPML file"
|
|
||||||
msgstr "файл OPML"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:427
|
|
||||||
msgid "Failed to parse the imported file"
|
|
||||||
msgstr "Не вдалося обробити імпортований файл"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:432 podcasts-gtk/src/utils.rs:475
|
|
||||||
msgid "Selected file could not be accessed."
|
|
||||||
msgstr "Не вдалося отримати доступ до вибраного файла."
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:445
|
|
||||||
msgid "Export shows to…"
|
|
||||||
msgstr "Експортувати шоу до…"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:448
|
|
||||||
msgid "_Export"
|
|
||||||
msgstr "_Експортувати"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:449
|
|
||||||
msgid "_Cancel"
|
|
||||||
msgstr "_Скасувати"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:469
|
|
||||||
msgid "GNOME Podcasts Subscriptions"
|
|
||||||
msgstr "Підписки на подкасти GNOME"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:470
|
|
||||||
msgid "Failed to export podcasts"
|
|
||||||
msgstr "Не вдалося експортувати подкасти"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:51
|
|
||||||
msgid "Podcast Client for the GNOME Desktop."
|
|
||||||
msgstr "Клієнт подкастів для стільниці GNOME."
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:58
|
|
||||||
msgid "Learn more about GNOME Podcasts"
|
|
||||||
msgstr "Дізнатися більше про «Подкасти» GNOME"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:63
|
|
||||||
msgid "translator-credits"
|
|
||||||
msgstr "Юрій Чорноіван <yurchor@ukr.net>"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/episode.rs:149
|
|
||||||
msgid "{} min"
|
|
||||||
msgstr "{} хв."
|
|
||||||
|
|
||||||
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
|
||||||
#: podcasts-gtk/src/widgets/player.rs:828
|
|
||||||
msgid "The media player was unable to execute an action."
|
|
||||||
msgstr "Програвачеві мультимедійних даних не вдалося виконати цю дію."
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/show_menu.rs:174
|
|
||||||
msgid "Marked all episodes as listened"
|
|
||||||
msgstr "Усі серії позначено як прослухані"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/show_menu.rs:179
|
|
||||||
msgid "Unsubscribed from {}"
|
|
||||||
msgstr "Скасовано підписку на {}"
|
|
||||||
@ -1,405 +0,0 @@
|
|||||||
# Chinese (China) translation for podcasts.
|
|
||||||
# Copyright (C) 2018 podcasts's COPYRIGHT HOLDER
|
|
||||||
# This file is distributed under the same license as the podcasts package.
|
|
||||||
# Dingzhong Chen <wsxy162@gmail.com>, 2018.
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: podcasts master\n"
|
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/podcasts/issues\n"
|
|
||||||
"POT-Creation-Date: 2018-09-06 18:29+0000\n"
|
|
||||||
"PO-Revision-Date: 2018-09-07 12:07+0800\n"
|
|
||||||
"Language-Team: Chinese (China) <i18n-zh@googlegroups.com>\n"
|
|
||||||
"Language: zh_CN\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Last-Translator: Dingzhong Chen <wsxy162@gmail.com>\n"
|
|
||||||
"X-Generator: Gtranslator 2.91.7\n"
|
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:15
|
|
||||||
msgid "Top position of the last open main window"
|
|
||||||
msgstr "最后打开的主窗口顶部位置"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:19
|
|
||||||
msgid "Left position of the last open main window"
|
|
||||||
msgstr "最后打开的主窗口左侧位置"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:23
|
|
||||||
msgid "Height of the last open main window"
|
|
||||||
msgstr "最后打开的主窗口高度"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:27
|
|
||||||
msgid "Width of the last open main window"
|
|
||||||
msgstr "最后打开的主窗口宽度"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:31
|
|
||||||
msgid "Maximized state of the last open main window"
|
|
||||||
msgstr "最后打开的主窗口最大化状态"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:36
|
|
||||||
msgid "Enable or disable dark theme"
|
|
||||||
msgstr "启用或禁用暗色主题"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:41
|
|
||||||
msgid "Whether to periodically refresh content"
|
|
||||||
msgstr "是否定期刷新内容"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:46
|
|
||||||
msgid "How many periods of time to wait between automatic refreshes"
|
|
||||||
msgstr "自动刷新之间要等待多久的时间"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:50
|
|
||||||
msgid "What period of time to wait between automatic refreshes"
|
|
||||||
msgstr "自动刷新之间要等待的时间段"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:54
|
|
||||||
msgid "Whether to refresh content after startup"
|
|
||||||
msgstr "启动后是否刷新内容"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:60
|
|
||||||
msgid "How many periods of time to wait between automatic cleanups"
|
|
||||||
msgstr "自动清理之间要等待多久的时间"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.gschema.xml:64
|
|
||||||
msgid "What period of time to wait between automatic cleanups"
|
|
||||||
msgstr "自动清理之间要等待的时间段"
|
|
||||||
|
|
||||||
#. Weird magic I copy-pasted that sets the Application Name in the Shell.
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:3
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:4
|
|
||||||
#: podcasts-gtk/src/app.rs:91 podcasts-gtk/src/app.rs:414
|
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:31
|
|
||||||
msgid "Podcasts"
|
|
||||||
msgstr "播客"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:4
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:10
|
|
||||||
msgid "Listen to your favorite podcasts, right from your desktop."
|
|
||||||
msgstr "直接在您的桌面上收听喜欢的播客。"
|
|
||||||
|
|
||||||
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:6
|
|
||||||
msgid "@icon@"
|
|
||||||
msgstr "@icon@"
|
|
||||||
|
|
||||||
#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.desktop.in.in:13
|
|
||||||
msgid "Podcast;RSS;"
|
|
||||||
msgstr "Podcast;RSS;播客;订阅;聚合;"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:8
|
|
||||||
msgid "Podcast app for GNOME"
|
|
||||||
msgstr "GNOME 的播客应用"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/org.gnome.Podcasts.appdata.xml.in.in:51
|
|
||||||
msgid "Jordan Petridis"
|
|
||||||
msgstr "Jordan Petridis"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/empty_view.ui:46
|
|
||||||
msgid "This show does not have episodes yet"
|
|
||||||
msgstr "这个节目还没有剧集"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/empty_view.ui:62
|
|
||||||
msgid "If you think this is an error, please consider writing a bug report."
|
|
||||||
msgstr "如果您认为这是个错误,请考虑编写个缺陷报告。"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/empty_view.ui:106
|
|
||||||
msgid "Get some shows"
|
|
||||||
msgstr "获取节目"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/empty_view.ui:143
|
|
||||||
msgid "Add new shows via feed URL"
|
|
||||||
msgstr "通过订阅源 URL 添加新节目"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/empty_view.ui:172
|
|
||||||
msgid "Import shows from another device"
|
|
||||||
msgstr "从另一设备导入节目"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:178
|
|
||||||
msgid "Calculating episode size…"
|
|
||||||
msgstr "正在计算剧集大小……"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:214
|
|
||||||
msgid "Cancel"
|
|
||||||
msgstr "取消"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:232
|
|
||||||
msgid "Download this episode"
|
|
||||||
msgstr "下载此剧集"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/episode_widget.ui:256
|
|
||||||
msgid "Play this episode"
|
|
||||||
msgstr "播放此剧集"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/hamburger.ui:7
|
|
||||||
msgid "_Check for New Episodes"
|
|
||||||
msgstr "检查新剧集(_C)"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/hamburger.ui:12
|
|
||||||
msgid "_Import Shows"
|
|
||||||
msgstr "导入节目(_I)"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/hamburger.ui:22
|
|
||||||
msgid "_Preferences"
|
|
||||||
msgstr "首选项(_P)"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/hamburger.ui:29
|
|
||||||
msgid "_Keyboard Shortcuts"
|
|
||||||
msgstr "键盘快捷键(_K)"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/hamburger.ui:37
|
|
||||||
msgid "_About"
|
|
||||||
msgstr "关于(_A)"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:35
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:189
|
|
||||||
msgid "Add a new feed"
|
|
||||||
msgstr "添加新订阅源"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:53
|
|
||||||
msgid "Enter feed address to add"
|
|
||||||
msgstr "输入要添加的订阅源地址"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:89
|
|
||||||
msgid "Add"
|
|
||||||
msgstr "添加"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:133
|
|
||||||
msgid "You are already subscribed to that feed!"
|
|
||||||
msgstr "您已经订阅了那条订阅源!"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:169
|
|
||||||
msgid "Show Title"
|
|
||||||
msgstr "显示标题"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/headerbar.ui:210
|
|
||||||
msgid "Back"
|
|
||||||
msgstr "后退"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/help-overlay.ui:12
|
|
||||||
msgid "General"
|
|
||||||
msgstr "常规"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/help-overlay.ui:18
|
|
||||||
msgctxt "shortcut window"
|
|
||||||
msgid "Check for new episodes"
|
|
||||||
msgstr "检查新剧集"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/help-overlay.ui:25
|
|
||||||
msgctxt "shortcut window"
|
|
||||||
msgid "Preferences"
|
|
||||||
msgstr "首选项"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/help-overlay.ui:32
|
|
||||||
msgctxt "shortcut window"
|
|
||||||
msgid "Quit the application"
|
|
||||||
msgstr "退出程序"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/home_view.ui:56
|
|
||||||
msgid "Today"
|
|
||||||
msgstr "今天"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/home_view.ui:112
|
|
||||||
msgid "Yesterday"
|
|
||||||
msgstr "昨天"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/home_view.ui:168
|
|
||||||
msgid "This Week"
|
|
||||||
msgstr "本周"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/home_view.ui:224
|
|
||||||
msgid "This Month"
|
|
||||||
msgstr "本月"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/home_view.ui:281
|
|
||||||
msgid "Older"
|
|
||||||
msgstr "更早"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/inapp_notif.ui:101
|
|
||||||
msgid "An in-app action notification"
|
|
||||||
msgstr "应用内操作通知"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/inapp_notif.ui:112
|
|
||||||
msgid "Undo"
|
|
||||||
msgstr "撤消"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:72
|
|
||||||
msgid "Rewind 10 seconds"
|
|
||||||
msgstr "后退 10 秒"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:87
|
|
||||||
msgid "Play"
|
|
||||||
msgstr "播放"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:103
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "暂停"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:119
|
|
||||||
msgid "Fast forward 10 seconds"
|
|
||||||
msgstr "快进 10 秒"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:285
|
|
||||||
msgid "Change the playback speed"
|
|
||||||
msgstr "更改播放速度"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:300
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:380
|
|
||||||
msgid "1.00×"
|
|
||||||
msgstr "1.00×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:344
|
|
||||||
msgid "1.50×"
|
|
||||||
msgstr "1.50×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:348
|
|
||||||
msgid "1.5 speed rate"
|
|
||||||
msgstr "1.5 倍速率"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:362
|
|
||||||
msgid "1.25×"
|
|
||||||
msgstr "1.25×"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:366
|
|
||||||
msgid "1.25 speed rate"
|
|
||||||
msgstr "1.25 倍速率"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/player_toolbar.ui:384
|
|
||||||
msgid "Normal speed"
|
|
||||||
msgstr "正常速度"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/prefs.ui:42
|
|
||||||
#: podcasts-gtk/resources/gtk/prefs.ui:295
|
|
||||||
msgid "Preferences"
|
|
||||||
msgstr "首选项"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/prefs.ui:76
|
|
||||||
msgid "Appearance"
|
|
||||||
msgstr "外观"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/prefs.ui:120
|
|
||||||
msgid "Dark Theme"
|
|
||||||
msgstr "暗色主题"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/prefs.ui:166
|
|
||||||
msgid "Delete played episodes"
|
|
||||||
msgstr "删除播放过的剧集"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/prefs.ui:211
|
|
||||||
msgid "After"
|
|
||||||
msgstr "经过"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/secondary_menu.ui:7
|
|
||||||
msgid "_Mark All Episodes as Played"
|
|
||||||
msgstr "标记所有剧集为已播放(_M)"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/secondary_menu.ui:11
|
|
||||||
msgid "_Website"
|
|
||||||
msgstr "网站(_W)"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/secondary_menu.ui:15
|
|
||||||
msgid "_Unsubscribe"
|
|
||||||
msgstr "退订(_U)"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/show_menu.ui:51
|
|
||||||
msgid "Open Website"
|
|
||||||
msgstr "打开网站"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/show_menu.ui:64
|
|
||||||
msgid "Mark All as Played"
|
|
||||||
msgstr "全部标记为已播放"
|
|
||||||
|
|
||||||
#: podcasts-gtk/resources/gtk/show_menu.ui:89
|
|
||||||
msgid "Unsubscribe"
|
|
||||||
msgstr "退订"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/app.rs:332
|
|
||||||
msgid "Fetching new episodes"
|
|
||||||
msgstr "正在提取新剧集"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/headerbar.rs:98
|
|
||||||
msgid "You are already subscribed to this show"
|
|
||||||
msgstr "您已经订阅了此节目"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/headerbar.rs:106
|
|
||||||
msgid "Invalid URL"
|
|
||||||
msgstr "无效的 URL"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/prefs.rs:59
|
|
||||||
msgid "Seconds"
|
|
||||||
msgstr "秒"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/prefs.rs:60
|
|
||||||
msgid "Minutes"
|
|
||||||
msgstr "分"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/prefs.rs:61
|
|
||||||
msgid "Hours"
|
|
||||||
msgstr "小时"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/prefs.rs:62
|
|
||||||
msgid "Days"
|
|
||||||
msgstr "天"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/prefs.rs:63
|
|
||||||
msgid "Weeks"
|
|
||||||
msgstr "周"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/stacks/content.rs:35
|
|
||||||
msgid "New"
|
|
||||||
msgstr "更新"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/stacks/content.rs:36
|
|
||||||
msgid "Shows"
|
|
||||||
msgstr "节目"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:357
|
|
||||||
msgid "Select the file from which to you want to import shows."
|
|
||||||
msgstr "选择您想要从中导入节目的文件。"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:360
|
|
||||||
msgid "_Import"
|
|
||||||
msgstr "导入(_I)"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:369
|
|
||||||
msgid "OPML file"
|
|
||||||
msgstr "OPML 文件"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:386
|
|
||||||
msgid "Failed to parse the imported file"
|
|
||||||
msgstr "解析导入文件失败"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/utils.rs:391
|
|
||||||
msgid "Selected file could not be accessed."
|
|
||||||
msgstr "所选文件无法访问。"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:26
|
|
||||||
msgid "Podcast Client for the GNOME Desktop."
|
|
||||||
msgstr "GNOME 桌面的播客客户端。"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:33
|
|
||||||
msgid "Learn more about GNOME Podcasts"
|
|
||||||
msgstr "了解关于 GNOME 播客的更多信息"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/aboutdialog.rs:38
|
|
||||||
msgid "translator-credits"
|
|
||||||
msgstr "Dingzhong Chen <wsxy162@gmail.com>, 2018."
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/episode.rs:129
|
|
||||||
msgid "{} min"
|
|
||||||
msgstr "{} 分钟"
|
|
||||||
|
|
||||||
#. sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
|
||||||
#: podcasts-gtk/src/widgets/player.rs:301
|
|
||||||
msgid "The media player was unable to execute an action."
|
|
||||||
msgstr "媒体播放器无法执行此操作。"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/show_menu.rs:150
|
|
||||||
msgid "Marked all episodes as listened"
|
|
||||||
msgstr "标记所有剧集为已听过"
|
|
||||||
|
|
||||||
#: podcasts-gtk/src/widgets/show_menu.rs:155
|
|
||||||
msgid "Unsubscribed from {}"
|
|
||||||
msgstr "已退订 {}"
|
|
||||||
@ -110,9 +110,6 @@ Tobias Bernard
|
|||||||
<style>
|
<style>
|
||||||
<class name="dim-label"/>
|
<class name="dim-label"/>
|
||||||
</style>
|
</style>
|
||||||
<attributes>
|
|
||||||
<attribute name="font-features" value="tnum=1"/>
|
|
||||||
</attributes>
|
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
@ -146,9 +143,6 @@ Tobias Bernard
|
|||||||
<style>
|
<style>
|
||||||
<class name="dim-label"/>
|
<class name="dim-label"/>
|
||||||
</style>
|
</style>
|
||||||
<attributes>
|
|
||||||
<attribute name="font-features" value="tnum=1"/>
|
|
||||||
</attributes>
|
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
@ -183,9 +177,6 @@ Tobias Bernard
|
|||||||
<style>
|
<style>
|
||||||
<class name="dim-label"/>
|
<class name="dim-label"/>
|
||||||
</style>
|
</style>
|
||||||
<attributes>
|
|
||||||
<attribute name="font-features" value="tnum=1"/>
|
|
||||||
</attributes>
|
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
@ -221,9 +212,6 @@ Tobias Bernard
|
|||||||
<style>
|
<style>
|
||||||
<class name="dim-label"/>
|
<class name="dim-label"/>
|
||||||
</style>
|
</style>
|
||||||
<attributes>
|
|
||||||
<attribute name="font-features" value="tnum=1"/>
|
|
||||||
</attributes>
|
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
|
|||||||
@ -129,52 +129,43 @@ Tobias Bernard
|
|||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<object class="HdyHeaderBar" id="headerbar">
|
<object class="GtkHeaderBar" id="headerbar">
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="show_close_button">True</property>
|
<property name="show_close_button">True</property>
|
||||||
<property name="centering-policy">strict</property>
|
|
||||||
<child type="title">
|
<child type="title">
|
||||||
<object class="GtkStack" id="title_stack">
|
<object class="GtkBox">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="transition_type">crossfade</property>
|
<property name="orientation">vertical</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="HdySqueezer" id="switch_squeezer">
|
<object class="GtkStackSwitcher" id="switch">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="transition_type">crossfade</property>
|
<property name="halign">center</property>
|
||||||
<child>
|
<property name="valign">center</property>
|
||||||
<object class="HdyViewSwitcher" id="switch">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="halign">center</property>
|
|
||||||
<property name="policy">wide</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="label" translatable="yes">Podcasts</property>
|
|
||||||
<style>
|
|
||||||
<class name="title"/>
|
|
||||||
</style>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="show_title">
|
<object class="GtkLabel" id="show_title">
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="no_show_all">True</property>
|
<property name="no_show_all">True</property>
|
||||||
<property name="label" translatable="yes">Show Title</property>
|
<property name="label" translatable="yes">Show Title</property>
|
||||||
<property name="ellipsize">end</property>
|
<property name="ellipsize">end</property>
|
||||||
<property name="track_visited_links">False</property>
|
<property name="track_visited_links">False</property>
|
||||||
<style>
|
<attributes>
|
||||||
<class name="title" />
|
<attribute name="weight" value="bold"/>
|
||||||
</style>
|
</attributes>
|
||||||
</object>
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
|||||||
@ -1,306 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!-- Generated with glade 3.22.1 -->
|
|
||||||
<interface>
|
|
||||||
<requires lib="gtk+" version="3.20"/>
|
|
||||||
<requires lib="libhandy" version="0.0"/>
|
|
||||||
<object class="HdyDialog" id="dialog">
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="type_hint">dialog</property>
|
|
||||||
<property name="modal">True</property>
|
|
||||||
<child type="titlebar">
|
|
||||||
<object class="HdyHeaderBar" id="headerbar">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="title" translatable="yes">Now Playing</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="close">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="icon_name">go-previous-symbolic</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child internal-child="vbox">
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
<property name="spacing">2</property>
|
|
||||||
<child internal-child="action_area">
|
|
||||||
<object class="GtkButtonBox">
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="layout_style">end</property>
|
|
||||||
<child>
|
|
||||||
<placeholder/>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<placeholder/>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="margin_left">6</property>
|
|
||||||
<property name="margin_right">6</property>
|
|
||||||
<property name="margin_top">6</property>
|
|
||||||
<property name="margin_bottom">6</property>
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
<property name="spacing">18</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="valign">center</property>
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage" id="cover">
|
|
||||||
<property name="width_request">256</property>
|
|
||||||
<property name="height_request">256</property>
|
|
||||||
<property name="margin">18</property>
|
|
||||||
<property name="margin-top">36</property>
|
|
||||||
<property name="margin-bottom">6</property>
|
|
||||||
<property name="valign">center</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="stock">gtk-missing-image</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="spacing">6</property>
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
<property name="margin-start">6</property>
|
|
||||||
<property name="margin-end">6</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel" id="episode_label">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="halign">center</property>
|
|
||||||
<property name="label">Episode Title</property>
|
|
||||||
<property name="wrap">True</property>
|
|
||||||
<property name="justify">center</property>
|
|
||||||
<style>
|
|
||||||
<class name="bold-label" />
|
|
||||||
</style>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel" id="show_label">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="halign">center</property>
|
|
||||||
<property name="label">Show Title</property>
|
|
||||||
<property name="wrap">True</property>
|
|
||||||
<property name="ellipsize">end</property>
|
|
||||||
<style>
|
|
||||||
<class name="dim-label"/>
|
|
||||||
</style>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="margin-start">12</property>
|
|
||||||
<property name="margin-end">12</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel" id="progressed">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="width_chars">5</property>
|
|
||||||
<property name="xalign">1</property>
|
|
||||||
<attributes>
|
|
||||||
<attribute name="font-features" value="tnum=1"/>
|
|
||||||
</attributes>
|
|
||||||
<style>
|
|
||||||
<class name="dim-label"/>
|
|
||||||
<class name="small-label"/>
|
|
||||||
</style>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkScale" id="slider">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="draw_value">False</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel" id="duration">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="width_chars">5</property>
|
|
||||||
<attributes>
|
|
||||||
<attribute name="font-features" value="tnum=1"/>
|
|
||||||
</attributes>
|
|
||||||
<style>
|
|
||||||
<class name="dim-label"/>
|
|
||||||
<class name="small-label"/>
|
|
||||||
</style>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="halign">center</property>
|
|
||||||
<property name="spacing">12</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="rewind">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="width_request">60</property>
|
|
||||||
<property name="height_request">60</property>
|
|
||||||
<property name="valign">center</property>
|
|
||||||
<property name="margin-end">12</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="icon_name">skip-back-large-symbolic</property>
|
|
||||||
<property name="icon_size">5</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<style>
|
|
||||||
<class name="circular"/>
|
|
||||||
</style>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkStack" id="play_pause">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="play">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="width_request">80</property>
|
|
||||||
<property name="height_request">80</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="icon_name">media-playback-start-symbolic</property>
|
|
||||||
<property name="icon_size">6</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<style>
|
|
||||||
<class name="circular"/>
|
|
||||||
</style>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="pause">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="width_request">80</property>
|
|
||||||
<property name="height_request">80</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="icon_name">media-playback-pause-symbolic</property>
|
|
||||||
<property name="icon_size">6</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<style>
|
|
||||||
<class name="circular"/>
|
|
||||||
</style>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="forward">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="width_request">60</property>
|
|
||||||
<property name="height_request">60</property>
|
|
||||||
<property name="valign">center</property>
|
|
||||||
<property name="margin-start">12</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="icon_name">skip-forward-large-symbolic</property>
|
|
||||||
<property name="icon_size">5</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<style>
|
|
||||||
<class name="circular"/>
|
|
||||||
</style>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox" id="bottom">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="pack_type">end</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</interface>
|
|
||||||
@ -1,269 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!-- Generated with glade 3.22.0
|
|
||||||
|
|
||||||
Copyright (C) 2017 - 2018
|
|
||||||
|
|
||||||
This file is part of GNOME Podcast.
|
|
||||||
|
|
||||||
GNOME Podcast is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
GNOME Podcast is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with GNOME Podcast. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Authors:
|
|
||||||
Jordan Petridis
|
|
||||||
Tobias Bernard
|
|
||||||
|
|
||||||
-->
|
|
||||||
<interface>
|
|
||||||
<requires lib="gtk+" version="3.22"/>
|
|
||||||
<object class="GtkMenuButton" id="rate_button">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">Change the playback speed</property>
|
|
||||||
<property name="halign">center</property>
|
|
||||||
<property name="valign">center</property>
|
|
||||||
<property name="margin_start">6</property>
|
|
||||||
<property name="direction">up</property>
|
|
||||||
<property name="popover">rate_popover</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="spacing">6</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel" id="rate_label">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="label" translatable="yes">1.00×</property>
|
|
||||||
<attributes>
|
|
||||||
<attribute name="font-features" value="tnum=1"/>
|
|
||||||
</attributes>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="icon_name">pan-down-symbolic</property>
|
|
||||||
<property name="icon_size">1</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<object class="GtkPopover" id="rate_popover">
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="relative_to">rate_button</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="margin">6</property>
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkModelButton" id="rate_4_00">
|
|
||||||
<property name="text"><span font-features="tnum=1">4.00×</span></property>
|
|
||||||
<property name="use-markup">True</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">4.0 speed rate</property>
|
|
||||||
<property name="role">radio</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkModelButton" id="rate_3_75">
|
|
||||||
<property name="text"><span font-features="tnum=1">3.75×</span></property>
|
|
||||||
<property name="use-markup">True</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">3.75 speed rate</property>
|
|
||||||
<property name="role">radio</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkModelButton" id="rate_3_50">
|
|
||||||
<property name="text"><span font-features="tnum=1">3.50×</span></property>
|
|
||||||
<property name="use-markup">True</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">3.5 speed rate</property>
|
|
||||||
<property name="role">radio</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">2</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkModelButton" id="rate_3_25">
|
|
||||||
<property name="text"><span font-features="tnum=1">3.25×</span></property>
|
|
||||||
<property name="use-markup">True</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">3.25 speed rate</property>
|
|
||||||
<property name="role">radio</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">3</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkModelButton" id="rate_3_00">
|
|
||||||
<property name="text"><span font-features="tnum=1">3.00×</span></property>
|
|
||||||
<property name="use-markup">True</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">3.0 speed rate</property>
|
|
||||||
<property name="role">radio</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">4</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkModelButton" id="rate_2_75">
|
|
||||||
<property name="text"><span font-features="tnum=1">2.75×</span></property>
|
|
||||||
<property name="use-markup">True</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">2.75 speed rate</property>
|
|
||||||
<property name="role">radio</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">5</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkModelButton" id="rate_2_50">
|
|
||||||
<property name="text"><span font-features="tnum=1">2.50×</span></property>
|
|
||||||
<property name="use-markup">True</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">2.5 speed rate</property>
|
|
||||||
<property name="role">radio</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">6</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkModelButton" id="rate_2_25">
|
|
||||||
<property name="text"><span font-features="tnum=1">2.25×</span></property>
|
|
||||||
<property name="use-markup">True</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">2.25 speed rate</property>
|
|
||||||
<property name="role">radio</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">7</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkModelButton" id="rate_2_00">
|
|
||||||
<property name="text"><span font-features="tnum=1">2.00×</span></property>
|
|
||||||
<property name="use-markup">True</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">2.0 speed rate</property>
|
|
||||||
<property name="role">radio</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">8</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkModelButton" id="rate_1_75">
|
|
||||||
<property name="text"><span font-features="tnum=1">1.75×</span></property>
|
|
||||||
<property name="use-markup">True</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">1.75 speed rate</property>
|
|
||||||
<property name="role">radio</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">9</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkModelButton" id="rate_1_50">
|
|
||||||
<property name="text"><span font-features="tnum=1">1.50×</span></property>
|
|
||||||
<property name="use-markup">True</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">1.5 speed rate</property>
|
|
||||||
<property name="role">radio</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">10</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkModelButton" id="rate_1_25">
|
|
||||||
<property name="text"><span font-features="tnum=1">1.25×</span></property>
|
|
||||||
<property name="use-markup">True</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">1.25 speed rate</property>
|
|
||||||
<property name="role">radio</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">11</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkModelButton" id="normal_rate">
|
|
||||||
<property name="text"><span font-features="tnum=1">1.00×</span></property>
|
|
||||||
<property name="use-markup">True</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">Normal speed</property>
|
|
||||||
<property name="active">True</property>
|
|
||||||
<property name="role">radio</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">12</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</interface>
|
|
||||||
@ -54,371 +54,344 @@ Tobias Bernard
|
|||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="icon_name">skip-back-symbolic</property>
|
<property name="icon_name">skip-back-symbolic</property>
|
||||||
</object>
|
</object>
|
||||||
<object class="GtkBox" id="container">
|
<object class="GtkActionBar" id="action_bar">
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="orientation">vertical</property>
|
<property name="no_show_all">True</property>
|
||||||
<property name="spacing">0</property>
|
<property name="valign">center</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkProgressBar" id="progress_bar">
|
<object class="GtkBox" id="buttons">
|
||||||
<property name="no_show_all">True</property>
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="rewind_button">
|
||||||
|
<property name="width_request">42</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Rewind 10 seconds</property>
|
||||||
|
<property name="image">rewind</property>
|
||||||
|
<property name="always_show_image">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="play_button">
|
||||||
|
<property name="width_request">60</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Play</property>
|
||||||
|
<property name="image">play_image</property>
|
||||||
|
<property name="always_show_image">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="pause_button">
|
||||||
|
<property name="width_request">60</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Pause</property>
|
||||||
|
<property name="image">pause_image</property>
|
||||||
|
<property name="always_show_image">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="ff_button">
|
||||||
|
<property name="width_request">42</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Fast forward 10 seconds</property>
|
||||||
|
<property name="image">fast_forward</property>
|
||||||
|
<property name="always_show_image">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">3</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
<style>
|
<style>
|
||||||
<class name="playback-progress"/>
|
<class name="linked"/>
|
||||||
</style>
|
</style>
|
||||||
</object>
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkEventBox" id="evbox">
|
<object class="GtkBox" id="info">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="spacing">6</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkActionBar" id="action_bar">
|
<object class="GtkImage" id="show_cover">
|
||||||
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="no_show_all">True</property>
|
|
||||||
<property name="valign">center</property>
|
<property name="valign">center</property>
|
||||||
<child>
|
<property name="pixel_size">34</property>
|
||||||
<object class="HdySqueezer" id="squeezer">
|
<property name="icon_name">image-x-generic-symbolic</property>
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="transition_type">crossfade</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox" id="full">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="spacing">6</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox" id="buttons">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="valign">center</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="rewind_button">
|
|
||||||
<property name="width_request">42</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">Rewind 10 seconds</property>
|
|
||||||
<property name="image">rewind</property>
|
|
||||||
<property name="always_show_image">True</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="play_button">
|
|
||||||
<property name="width_request">60</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">Play</property>
|
|
||||||
<property name="image">play_image</property>
|
|
||||||
<property name="always_show_image">True</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="pause_button">
|
|
||||||
<property name="width_request">60</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">Pause</property>
|
|
||||||
<property name="image">pause_image</property>
|
|
||||||
<property name="always_show_image">True</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
<property name="position">2</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="ff_button">
|
|
||||||
<property name="width_request">42</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="tooltip_text" translatable="yes">Fast forward 10 seconds</property>
|
|
||||||
<property name="image">fast_forward</property>
|
|
||||||
<property name="always_show_image">True</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
<property name="position">3</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<style>
|
|
||||||
<class name="linked"/>
|
|
||||||
</style>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox" id="info">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="spacing">6</property>
|
|
||||||
<property name="width_request">150</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage" id="show_cover">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="valign">center</property>
|
|
||||||
<property name="pixel_size">34</property>
|
|
||||||
<property name="icon_name">image-x-generic-symbolic</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="halign">center</property>
|
|
||||||
<property name="valign">center</property>
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel" id="show_label">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="halign">start</property>
|
|
||||||
<property name="label">Show Title</property>
|
|
||||||
<property name="wrap">True</property>
|
|
||||||
<property name="ellipsize">end</property>
|
|
||||||
<property name="max_width_chars">20</property>
|
|
||||||
<property name="xalign">0</property>
|
|
||||||
<style>
|
|
||||||
<class name="player-show-label"/>
|
|
||||||
</style>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel" id="episode_label">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="halign">start</property>
|
|
||||||
<property name="label">Episode Title</property>
|
|
||||||
<property name="wrap">True</property>
|
|
||||||
<property name="ellipsize">end</property>
|
|
||||||
<property name="max_width_chars">20</property>
|
|
||||||
<property name="xalign">0</property>
|
|
||||||
<style>
|
|
||||||
<class name="player-episode-label"/>
|
|
||||||
</style>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkScale" id="seek">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="hexpand">True</property>
|
|
||||||
<property name="round_digits">1</property>
|
|
||||||
<property name="draw_value">False</property>
|
|
||||||
<property name="width_request">150</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="position">2</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox" id="timer">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="halign">start</property>
|
|
||||||
<property name="valign">center</property>
|
|
||||||
<property name="spacing">6</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel" id="progress_time_label">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="halign">start</property>
|
|
||||||
<property name="valign">center</property>
|
|
||||||
<property name="label">0:00</property>
|
|
||||||
<attributes>
|
|
||||||
<attribute name="font-features" value="tnum=1"/>
|
|
||||||
</attributes>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel" id="separator">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="halign">start</property>
|
|
||||||
<property name="valign">center</property>
|
|
||||||
<property name="label">/</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel" id="total_duration_label">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="halign">start</property>
|
|
||||||
<property name="valign">center</property>
|
|
||||||
<property name="label">0:00</property>
|
|
||||||
<attributes>
|
|
||||||
<attribute name="font-features" value="tnum=1"/>
|
|
||||||
</attributes>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
<property name="position">2</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="position">3</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox" id="small">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="spacing">6</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage" id="show_cover_small">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="valign">center</property>
|
|
||||||
<property name="pixel_size">34</property>
|
|
||||||
<property name="icon_name">image-x-generic-symbolic</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="halign">center</property>
|
|
||||||
<property name="valign">center</property>
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel" id="show_label_small">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="halign">start</property>
|
|
||||||
<property name="label">Show Title</property>
|
|
||||||
<property name="ellipsize">end</property>
|
|
||||||
<property name="xalign">0</property>
|
|
||||||
<style>
|
|
||||||
<class name="player-show-label"/>
|
|
||||||
</style>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel" id="episode_label_small">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="halign">start</property>
|
|
||||||
<property name="label">Episode Title</property>
|
|
||||||
<property name="ellipsize">end</property>
|
|
||||||
<property name="xalign">0</property>
|
|
||||||
<style>
|
|
||||||
<class name="player-episode-label"/>
|
|
||||||
</style>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkStack" id="play_pause_small">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="play_button_small">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="icon_name">media-playback-start-symbolic</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="pause_button_small">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="icon_name">media-playback-pause-symbolic</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="pack_type">end</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<style>
|
|
||||||
<class name="player-actionbar"/>
|
|
||||||
</style>
|
|
||||||
</object>
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="halign">center</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="show_label">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="label">Show Title</property>
|
||||||
|
<property name="wrap">True</property>
|
||||||
|
<property name="ellipsize">end</property>
|
||||||
|
<property name="max_width_chars">20</property>
|
||||||
|
<style>
|
||||||
|
<class name="player-show-label"/>
|
||||||
|
</style>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="episode_label">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="label">Episode Title</property>
|
||||||
|
<property name="wrap">True</property>
|
||||||
|
<property name="ellipsize">end</property>
|
||||||
|
<property name="max_width_chars">20</property>
|
||||||
|
<style>
|
||||||
|
<class name="player-episode-label"/>
|
||||||
|
</style>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkScale" id="seek">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="hexpand">True</property>
|
||||||
|
<property name="round_digits">1</property>
|
||||||
|
<property name="draw_value">False</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="position">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="timer">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="spacing">6</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="progress_time_label">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="label">0:00</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="separator">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="label">/</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="total_duration_label">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="label">0:00</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="position">3</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkMenuButton" id="rate_button">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Change the playback speed</property>
|
||||||
|
<property name="halign">center</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="margin_start">6</property>
|
||||||
|
<property name="direction">up</property>
|
||||||
|
<property name="popover">rate_popover</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="spacing">6</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="rate_label">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label" translatable="yes">1.00×</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImage">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="icon_name">go-down-symbolic</property>
|
||||||
|
<property name="icon_size">1</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="position">4</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<object class="GtkPopover" id="rate_popover">
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="relative_to">rate_button</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="margin_start">6</property>
|
||||||
|
<property name="margin_end">6</property>
|
||||||
|
<property name="margin_top">6</property>
|
||||||
|
<property name="margin_bottom">6</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<property name="spacing">3</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkRadioButton" id="rate_1_50">
|
||||||
|
<property name="label" translatable="yes">1.50×</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">False</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">1.5 speed rate</property>
|
||||||
|
<property name="halign">center</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="draw_indicator">True</property>
|
||||||
|
<property name="group">normal_rate</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkRadioButton" id="rate_1_25">
|
||||||
|
<property name="label" translatable="yes">1.25×</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">False</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">1.25 speed rate</property>
|
||||||
|
<property name="halign">center</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="draw_indicator">True</property>
|
||||||
|
<property name="group">normal_rate</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkRadioButton" id="normal_rate">
|
||||||
|
<property name="label" translatable="yes">1.00×</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">False</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Normal speed</property>
|
||||||
|
<property name="halign">center</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="active">True</property>
|
||||||
|
<property name="draw_indicator">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">2</property>
|
||||||
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
|||||||
@ -58,78 +58,38 @@ Tobias Bernard
|
|||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="HdyColumn">
|
<object class="GtkScrolledWindow">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="maximum_width">600</property>
|
<property name="can_focus">True</property>
|
||||||
|
<property name="hscrollbar_policy">never</property>
|
||||||
|
<property name="min_content_height">80</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkStack" id="description_stack">
|
<object class="GtkViewport">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="vhomogeneous">False</property>
|
<property name="shadow_type">none</property>
|
||||||
<property name="transition_type">none</property>
|
|
||||||
<property name="interpolate_size">True</property>
|
|
||||||
<property name="margin">12</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="halign">fill</property>
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel" id="description_short">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="halign">center</property>
|
|
||||||
<property name="valign">center</property>
|
|
||||||
<property name="use_markup">True</property>
|
|
||||||
<property name="justify">center</property>
|
|
||||||
<property name="wrap">True</property>
|
|
||||||
<property name="wrap_mode">word-char</property>
|
|
||||||
<property name="ellipsize">end</property>
|
|
||||||
<property name="lines">4</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkRevealer" id="description_button_revealer">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="reveal_child">False</property>
|
|
||||||
<property name="transition_duration">1</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="description_button">
|
|
||||||
<property name="label" translatable="yes">Read More</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="receives_default">False</property>
|
|
||||||
<property name="halign">center</property>
|
|
||||||
<property name="margin_top">12</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="name">short</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="description">
|
<object class="GtkLabel" id="description">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="halign">center</property>
|
<property name="halign">center</property>
|
||||||
<property name="valign">center</property>
|
<property name="valign">center</property>
|
||||||
|
<property name="label">This is embarrasing!
|
||||||
|
Sorry, we could not find a description for this Show.</property>
|
||||||
<property name="use_markup">True</property>
|
<property name="use_markup">True</property>
|
||||||
<property name="justify">center</property>
|
<property name="justify">center</property>
|
||||||
<property name="wrap">True</property>
|
<property name="wrap">True</property>
|
||||||
<property name="wrap_mode">word-char</property>
|
<property name="wrap_mode">word-char</property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
|
||||||
<property name="name">full</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
|
|||||||
@ -18,24 +18,3 @@ list, border {
|
|||||||
.player-show-label {
|
.player-show-label {
|
||||||
font-size: smaller;
|
font-size: smaller;
|
||||||
}
|
}
|
||||||
|
|
||||||
.small-label {
|
|
||||||
font-size: smaller;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bold-label {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
progressbar.playback-progress trough {
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
progressbar.playback-progress trough progress {
|
|
||||||
border-radius: 0;
|
|
||||||
border-right: none;
|
|
||||||
border-left: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
actionbar.player-small revealer box {
|
|
||||||
border-top: none
|
|
||||||
}
|
|
||||||
|
|||||||
@ -1,71 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
width="32"
|
|
||||||
height="32"
|
|
||||||
viewBox="0 0 8.4666665 8.4666669"
|
|
||||||
version="1.1"
|
|
||||||
id="svg2916"
|
|
||||||
sodipodi:docname="skip-back-large-symbolic.svg"
|
|
||||||
inkscape:version="0.92.4 (unknown)">
|
|
||||||
<sodipodi:namedview
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1"
|
|
||||||
objecttolerance="10"
|
|
||||||
gridtolerance="10"
|
|
||||||
guidetolerance="10"
|
|
||||||
inkscape:pageopacity="0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:window-width="1366"
|
|
||||||
inkscape:window-height="731"
|
|
||||||
id="namedview11"
|
|
||||||
showgrid="false"
|
|
||||||
inkscape:zoom="7.375"
|
|
||||||
inkscape:cx="16"
|
|
||||||
inkscape:cy="16"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="0"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:current-layer="svg2916" />
|
|
||||||
<defs
|
|
||||||
id="defs2910" />
|
|
||||||
<metadata
|
|
||||||
id="metadata2913">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
<dc:title />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<path
|
|
||||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.52916664;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
d="m 4.2324219,1.3222656 a 0.26464845,0.26464845 0 1 0 0,0.5292969 C 5.3033196,1.8515612 6.2679165,2.4969489 6.6777344,3.4863281 7.0875525,4.4757119 6.8607584,5.6118992 6.1035156,6.3691406 5.3462755,7.1263812 4.2100855,7.3531746 3.2207031,6.9433594 2.2313192,6.5335432 1.5878886,5.5689483 1.5878906,4.4980469 a 0.2646484,0.2646484 0 1 0 -0.5292968,0 c -2.5e-6,1.28341 0.7732681,2.442454 1.9589843,2.9335937 1.1857144,0.4911386 2.5534315,0.2200067 3.4609375,-0.6875 C 7.3860249,5.836633 7.6571577,4.4689192 7.1660156,3.2832031 6.6748739,2.0974925 5.5158274,1.3222641 4.2324219,1.3222656 Z"
|
|
||||||
id="path7994"
|
|
||||||
inkscape:connector-curvature="0" />
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path7996"
|
|
||||||
d="M 4.2332975,0.794 V 1.05858 2.11691 2.3815 H 3.9687142 C 3.9164802,2.38149 3.8654129,2.366 3.8219524,2.3371 l -0.79375,-0.52916 c -0.157054,-0.10475 -0.157054,-0.33554 0,-0.44028 l 0.79375,-0.52917 c 0.043461,-0.029 0.094528,-0.0444 0.1467618,-0.0444 h 0.0031 z"
|
|
||||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
d="m 2.6458333,5.8208334 h 1.400175 v -0.4699 h -0.42545 V 3.6173835 h -0.327025 l -0.758825,0.4381499 0.206375,0.3937 0.3302,-0.17145 v 1.07315 h -0.42545 z"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell Ultra-Bold';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.26458335"
|
|
||||||
id="path5132" />
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
d="m 5.0778791,5.8525834 c 0.5588,0 0.936625,-0.4572 0.936625,-1.146175 0,-0.6731 -0.371475,-1.1207749 -0.92075,-1.1207749 -0.561975,0 -0.9398,0.4571999 -0.9398,1.1429999 0,0.6731 0.371475,1.12395 0.923925,1.12395 z m 0.0127,-0.4699 c -0.225425,0 -0.371475,-0.269875 -0.371475,-0.6731 0,-0.3937 0.14605,-0.65405 0.36195,-0.65405 0.219075,0 0.3683,0.269875 0.3683,0.676275 0,0.390525 -0.14605,0.650875 -0.358775,0.650875 z"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell Ultra-Bold';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.26458335"
|
|
||||||
id="path5134" />
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 6.2 KiB |
@ -1,71 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
width="32"
|
|
||||||
height="32"
|
|
||||||
viewBox="0 0 8.4666665 8.4666669"
|
|
||||||
version="1.1"
|
|
||||||
id="svg2916"
|
|
||||||
sodipodi:docname="skip-forward-large-symbolic.svg"
|
|
||||||
inkscape:version="0.92.4 (unknown)">
|
|
||||||
<sodipodi:namedview
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1"
|
|
||||||
objecttolerance="10"
|
|
||||||
gridtolerance="10"
|
|
||||||
guidetolerance="10"
|
|
||||||
inkscape:pageopacity="0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:window-width="1366"
|
|
||||||
inkscape:window-height="731"
|
|
||||||
id="namedview11"
|
|
||||||
showgrid="false"
|
|
||||||
inkscape:zoom="7.375"
|
|
||||||
inkscape:cx="16"
|
|
||||||
inkscape:cy="16"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="0"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:current-layer="svg2916" />
|
|
||||||
<defs
|
|
||||||
id="defs2910" />
|
|
||||||
<metadata
|
|
||||||
id="metadata2913">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
<dc:title />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
d="m 2.6458333,5.8208334 h 1.400175 v -0.4699 h -0.42545 V 3.6173835 h -0.327025 l -0.758825,0.4381499 0.206375,0.3937 0.3302,-0.17145 v 1.07315 h -0.42545 z"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell Ultra-Bold';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.26458335"
|
|
||||||
id="path5132" />
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
d="m 5.0778791,5.8525834 c 0.5588,0 0.936625,-0.4572 0.936625,-1.146175 0,-0.6731 -0.371475,-1.1207749 -0.92075,-1.1207749 -0.561975,0 -0.9398,0.4571999 -0.9398,1.1429999 0,0.6731 0.371475,1.12395 0.923925,1.12395 z m 0.0127,-0.4699 c -0.225425,0 -0.371475,-0.269875 -0.371475,-0.6731 0,-0.3937 0.14605,-0.65405 0.36195,-0.65405 0.219075,0 0.3683,0.269875 0.3683,0.676275 0,0.390525 -0.14605,0.650875 -0.358775,0.650875 z"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:Cantarell;-inkscape-font-specification:'Cantarell Ultra-Bold';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.26458335"
|
|
||||||
id="path5134" />
|
|
||||||
<path
|
|
||||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.52916664;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
d="M 4.2324219,1.3222656 C 2.9490163,1.3222641 1.7899699,2.0974925 1.2988281,3.2832031 0.80768607,4.4689192 1.080772,5.836633 1.9882812,6.7441406 c 0.9075061,0.9075067 2.2732701,1.1786386 3.4589844,0.6875 1.1857163,-0.4911397 1.96094,-1.6501837 1.9609375,-2.9335937 a 0.26464845,0.26464845 0 1 0 -0.5292969,0 C 6.8789083,5.5689483 6.2354777,6.5335432 5.2460938,6.9433594 4.2567114,7.3531746 3.1185682,7.1263812 2.3613281,6.3691406 1.6040853,5.6118992 1.3792443,4.4757119 1.7890625,3.4863281 2.1988804,2.4969489 3.1615242,1.8515612 4.2324219,1.8515625 a 0.26464845,0.26464845 0 1 0 0,-0.5292969 z"
|
|
||||||
id="path5156"
|
|
||||||
inkscape:connector-curvature="0" />
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
d="M 4.2327462,0.794 V 1.05858 2.11691 2.3815 h 0.2645833 c 0.052234,-1e-5 0.1033013,-0.0155 0.1467618,-0.0444 l 0.79375,-0.52916 c 0.157054,-0.10475 0.157054,-0.33554 0,-0.44028 l -0.79375,-0.52917 c -0.043461,-0.029 -0.094528,-0.0444 -0.1467618,-0.0444 h -0.0031 z"
|
|
||||||
id="path5158" />
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 6.2 KiB |
@ -24,13 +24,6 @@
|
|||||||
</screenshot>
|
</screenshot>
|
||||||
</screenshots>
|
</screenshots>
|
||||||
<releases>
|
<releases>
|
||||||
<release version="0.4.7" date="2019-10-23">
|
|
||||||
<description>
|
|
||||||
<p>
|
|
||||||
Small release including OPML export functionality, partial support for premium feeds, a couple of bugfixes and overall life improvements.
|
|
||||||
</p>
|
|
||||||
</description>
|
|
||||||
</release>
|
|
||||||
<release version="0.4.6" date="2018-10-07">
|
<release version="0.4.6" date="2018-10-07">
|
||||||
<description>
|
<description>
|
||||||
<p>
|
<p>
|
||||||
@ -51,13 +44,13 @@
|
|||||||
<release version="0.4.5" date="2018-08-31">
|
<release version="0.4.5" date="2018-08-31">
|
||||||
<description>
|
<description>
|
||||||
<p>
|
<p>
|
||||||
Podcasts 0.4.5 brings a month of bug fixes, performance improvements and initial translations support.
|
Podcasts 0.4.5 brings a month of bug fixes, performance improvements and initial tranlations support.
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Finish, Polish, Turkish, Spanish, German, Galician, Indonesian and Korean Translations were added.</li>
|
<li>Finish, Polish, Turkish, Spanish, German, Galician, Indonesian and Korean Translations were added.</li>
|
||||||
<li>Views now adapt better to different window sizes, thanks to libhandy HdyColumn</li>
|
<li>Views now adapt better to different window sizes, thanks to libhandy HdyColumn</li>
|
||||||
<li>The update indacator was moved to an In-App notification</li>
|
<li>The update indacator was moved to an In-App notification</li>
|
||||||
<li>Performance improvements when loading Show Cover images.</li>
|
<li>Performance improvments when loading Show Cover images.</li>
|
||||||
<li>Improved handling of HTTP Redirects</li>
|
<li>Improved handling of HTTP Redirects</li>
|
||||||
</ul>
|
</ul>
|
||||||
</description>
|
</description>
|
||||||
|
|||||||
@ -11,12 +11,8 @@
|
|||||||
<file compressed="true" preprocess="xml-stripblanks">gtk/hamburger.ui</file>
|
<file compressed="true" preprocess="xml-stripblanks">gtk/hamburger.ui</file>
|
||||||
<file compressed="true" preprocess="xml-stripblanks">gtk/show_menu.ui</file>
|
<file compressed="true" preprocess="xml-stripblanks">gtk/show_menu.ui</file>
|
||||||
<file compressed="true" preprocess="xml-stripblanks">gtk/help-overlay.ui</file>
|
<file compressed="true" preprocess="xml-stripblanks">gtk/help-overlay.ui</file>
|
||||||
<file compressed="true" preprocess="xml-stripblanks">gtk/player_dialog.ui</file>
|
|
||||||
<file compressed="true" preprocess="xml-stripblanks">gtk/player_rate.ui</file>
|
|
||||||
<file compressed="true" preprocess="xml-stripblanks">gtk/player_toolbar.ui</file>
|
<file compressed="true" preprocess="xml-stripblanks">gtk/player_toolbar.ui</file>
|
||||||
<file compressed="true" preprocess="xml-stripblanks">icons/skip-back-large-symbolic.svg</file>
|
|
||||||
<file compressed="true" preprocess="xml-stripblanks">icons/skip-back-symbolic.svg</file>
|
<file compressed="true" preprocess="xml-stripblanks">icons/skip-back-symbolic.svg</file>
|
||||||
<file compressed="true" preprocess="xml-stripblanks">icons/skip-forward-large-symbolic.svg</file>
|
|
||||||
<file compressed="true" preprocess="xml-stripblanks">icons/skip-forward-symbolic.svg</file>
|
<file compressed="true" preprocess="xml-stripblanks">icons/skip-forward-symbolic.svg</file>
|
||||||
<file compressed="true">gtk/style.css</file>
|
<file compressed="true">gtk/style.css</file>
|
||||||
</gresource>
|
</gresource>
|
||||||
|
|||||||
@ -17,11 +17,11 @@
|
|||||||
//
|
//
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
#![allow(clippy::new_without_default)]
|
|
||||||
|
|
||||||
use glib::clone;
|
#![allow(new_without_default)]
|
||||||
|
|
||||||
|
use glib::subclass;
|
||||||
use glib::subclass::prelude::*;
|
use glib::subclass::prelude::*;
|
||||||
use glib::subclass::simple::{ClassStruct, InstanceStruct};
|
|
||||||
use glib::translate::*;
|
use glib::translate::*;
|
||||||
use glib::{glib_object_impl, glib_object_subclass, glib_object_wrapper, glib_wrapper};
|
use glib::{glib_object_impl, glib_object_subclass, glib_object_wrapper, glib_wrapper};
|
||||||
|
|
||||||
@ -35,7 +35,7 @@ use gettextrs::{bindtextdomain, setlocale, textdomain, LocaleCategory};
|
|||||||
|
|
||||||
use crossbeam_channel::Receiver;
|
use crossbeam_channel::Receiver;
|
||||||
use fragile::Fragile;
|
use fragile::Fragile;
|
||||||
use podcasts_data::{Show, Source};
|
use podcasts_data::Show;
|
||||||
|
|
||||||
use crate::settings;
|
use crate::settings;
|
||||||
use crate::stacks::PopulatedState;
|
use crate::stacks::PopulatedState;
|
||||||
@ -59,8 +59,8 @@ pub struct PdApplicationPrivate {
|
|||||||
impl ObjectSubclass for PdApplicationPrivate {
|
impl ObjectSubclass for PdApplicationPrivate {
|
||||||
const NAME: &'static str = "PdApplication";
|
const NAME: &'static str = "PdApplication";
|
||||||
type ParentType = gtk::Application;
|
type ParentType = gtk::Application;
|
||||||
type Instance = InstanceStruct<Self>;
|
type Instance = subclass::simple::InstanceStruct<Self>;
|
||||||
type Class = ClassStruct<Self>;
|
type Class = subclass::simple::ClassStruct<Self>;
|
||||||
|
|
||||||
glib_object_subclass!();
|
glib_object_subclass!();
|
||||||
|
|
||||||
@ -95,10 +95,7 @@ impl gio::subclass::prelude::ApplicationImpl for PdApplicationPrivate {
|
|||||||
window.present();
|
window.present();
|
||||||
self.window.replace(Some(window));
|
self.window.replace(Some(window));
|
||||||
// Setup the Action channel
|
// Setup the Action channel
|
||||||
gtk::timeout_add(
|
gtk::timeout_add(25, clone!(app => move || app.setup_action_channel()));
|
||||||
25,
|
|
||||||
clone!(@strong app => move || app.setup_action_channel()),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn startup(&self, app: &gio::Application) {
|
fn startup(&self, app: &gio::Application) {
|
||||||
@ -122,7 +119,7 @@ impl gio::subclass::prelude::ApplicationImpl for PdApplicationPrivate {
|
|||||||
impl gtk::subclass::application::GtkApplicationImpl for PdApplicationPrivate {}
|
impl gtk::subclass::application::GtkApplicationImpl for PdApplicationPrivate {}
|
||||||
|
|
||||||
glib_wrapper! {
|
glib_wrapper! {
|
||||||
pub struct PdApplication(Object<InstanceStruct<PdApplicationPrivate>, ClassStruct<PdApplicationPrivate>, PdApplicationClass>) @extends gio::Application, gtk::Application;
|
pub struct PdApplication(Object<subclass::simple::InstanceStruct<PdApplicationPrivate>, subclass::simple::ClassStruct<PdApplicationPrivate>, PdApplicationClass>) @extends gio::Application, gtk::Application;
|
||||||
|
|
||||||
match fn {
|
match fn {
|
||||||
get_type => || PdApplicationPrivate::get_type().to_glib(),
|
get_type => || PdApplicationPrivate::get_type().to_glib(),
|
||||||
@ -142,9 +139,7 @@ pub(crate) enum Action {
|
|||||||
HeaderBarShowTile(String),
|
HeaderBarShowTile(String),
|
||||||
HeaderBarNormal,
|
HeaderBarNormal,
|
||||||
MarkAllPlayerNotification(Arc<Show>),
|
MarkAllPlayerNotification(Arc<Show>),
|
||||||
UpdateFeed(Option<Vec<Source>>),
|
|
||||||
ShowUpdateNotif(Receiver<bool>),
|
ShowUpdateNotif(Receiver<bool>),
|
||||||
StopUpdating,
|
|
||||||
RemoveShow(Arc<Show>),
|
RemoveShow(Arc<Show>),
|
||||||
ErrorNotification(String),
|
ErrorNotification(String),
|
||||||
InitEpisode(i32),
|
InitEpisode(i32),
|
||||||
@ -254,17 +249,6 @@ impl PdApplication {
|
|||||||
let notif = InAppNotification::new(&err, 6000, callback, undo_cb);
|
let notif = InAppNotification::new(&err, 6000, callback, undo_cb);
|
||||||
notif.show(&window.overlay);
|
notif.show(&window.overlay);
|
||||||
}
|
}
|
||||||
Action::UpdateFeed(source) => {
|
|
||||||
if window.updating.get() {
|
|
||||||
info!("Ignoring feed update request (another one is already running)")
|
|
||||||
} else {
|
|
||||||
window.updating.set(true);
|
|
||||||
utils::refresh_feed(source, window.sender.clone())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Action::StopUpdating => {
|
|
||||||
window.updating.set(false);
|
|
||||||
}
|
|
||||||
Action::ShowUpdateNotif(receiver) => {
|
Action::ShowUpdateNotif(receiver) => {
|
||||||
let sender = window.sender.clone();
|
let sender = window.sender.clone();
|
||||||
let callback = move |revealer: gtk::Revealer| match receiver.try_recv() {
|
let callback = move |revealer: gtk::Revealer| match receiver.try_recv() {
|
||||||
@ -272,15 +256,9 @@ impl PdApplication {
|
|||||||
Err(TryRecvError::Disconnected) => glib::Continue(false),
|
Err(TryRecvError::Disconnected) => glib::Continue(false),
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
revealer.set_reveal_child(false);
|
revealer.set_reveal_child(false);
|
||||||
|
|
||||||
sender
|
|
||||||
.send(Action::StopUpdating)
|
|
||||||
.expect("Action channel blew up somehow");
|
|
||||||
|
|
||||||
sender
|
sender
|
||||||
.send(Action::RefreshAllViews)
|
.send(Action::RefreshAllViews)
|
||||||
.expect("Action channel blew up somehow");
|
.expect("Action channel blew up somehow");
|
||||||
|
|
||||||
glib::Continue(false)
|
glib::Continue(false)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -292,7 +270,6 @@ impl PdApplication {
|
|||||||
|
|
||||||
let old = window.updater.replace(Some(updater));
|
let old = window.updater.replace(Some(updater));
|
||||||
old.map(|i| i.destroy());
|
old.map(|i| i.destroy());
|
||||||
|
|
||||||
window
|
window
|
||||||
.updater
|
.updater
|
||||||
.borrow()
|
.borrow()
|
||||||
|
|||||||
@ -18,11 +18,8 @@
|
|||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
use gio;
|
use gio;
|
||||||
use glib::clone;
|
|
||||||
use gtk;
|
use gtk;
|
||||||
use gtk::prelude::*;
|
use gtk::prelude::*;
|
||||||
use libhandy;
|
|
||||||
use libhandy::prelude::*;
|
|
||||||
|
|
||||||
use crossbeam_channel::Sender;
|
use crossbeam_channel::Sender;
|
||||||
use failure::Error;
|
use failure::Error;
|
||||||
@ -33,7 +30,7 @@ use podcasts_data::{dbqueries, Source};
|
|||||||
|
|
||||||
use crate::app::Action;
|
use crate::app::Action;
|
||||||
use crate::stacks::Content;
|
use crate::stacks::Content;
|
||||||
use crate::utils::{itunes_to_rss, schedule_refresh};
|
use crate::utils::{itunes_to_rss, refresh};
|
||||||
|
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
|
|
||||||
@ -42,12 +39,9 @@ use crate::i18n::i18n;
|
|||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
// TODO: Make a proper state machine for the headerbar states
|
// TODO: Make a proper state machine for the headerbar states
|
||||||
pub(crate) struct Header {
|
pub(crate) struct Header {
|
||||||
pub(crate) container: libhandy::HeaderBar,
|
pub(crate) container: gtk::HeaderBar,
|
||||||
pub(crate) switch: libhandy::ViewSwitcher,
|
pub(crate) switch: gtk::StackSwitcher,
|
||||||
pub(crate) bottom_switcher: libhandy::ViewSwitcherBar,
|
|
||||||
switch_squeezer: libhandy::Squeezer,
|
|
||||||
back: gtk::Button,
|
back: gtk::Button,
|
||||||
title_stack: gtk::Stack,
|
|
||||||
show_title: gtk::Label,
|
show_title: gtk::Label,
|
||||||
hamburger: gtk::MenuButton,
|
hamburger: gtk::MenuButton,
|
||||||
add: AddPopover,
|
add: AddPopover,
|
||||||
@ -84,9 +78,9 @@ impl AddPopover {
|
|||||||
url.to_owned()
|
url.to_owned()
|
||||||
};
|
};
|
||||||
|
|
||||||
rayon::spawn(clone!(@strong sender => move || {
|
rayon::spawn(clone!(sender => move || {
|
||||||
if let Ok(source) = Source::from_url(&url) {
|
if let Ok(source) = Source::from_url(&url) {
|
||||||
schedule_refresh(Some(vec![source]), sender.clone());
|
refresh(Some(vec![source]), sender.clone());
|
||||||
} else {
|
} else {
|
||||||
error!("Failed to convert, url: {}, to a source entry", url);
|
error!("Failed to convert, url: {}, to a source entry", url);
|
||||||
}
|
}
|
||||||
@ -175,10 +169,8 @@ impl Default for Header {
|
|||||||
let menus = gtk::Builder::new_from_resource("/org/gnome/Podcasts/gtk/hamburger.ui");
|
let menus = gtk::Builder::new_from_resource("/org/gnome/Podcasts/gtk/hamburger.ui");
|
||||||
|
|
||||||
let header = builder.get_object("headerbar").unwrap();
|
let header = builder.get_object("headerbar").unwrap();
|
||||||
let switch: libhandy::ViewSwitcher = builder.get_object("switch").unwrap();
|
let switch = builder.get_object("switch").unwrap();
|
||||||
let back = builder.get_object("back").unwrap();
|
let back = builder.get_object("back").unwrap();
|
||||||
let title_stack = builder.get_object("title_stack").unwrap();
|
|
||||||
let switch_squeezer: libhandy::Squeezer = builder.get_object("switch_squeezer").unwrap();
|
|
||||||
let show_title = builder.get_object("show_title").unwrap();
|
let show_title = builder.get_object("show_title").unwrap();
|
||||||
|
|
||||||
// The hamburger menu
|
// The hamburger menu
|
||||||
@ -200,17 +192,10 @@ impl Default for Header {
|
|||||||
add: add_button,
|
add: add_button,
|
||||||
};
|
};
|
||||||
|
|
||||||
// View switcher bar that goes at the bottom of the window
|
|
||||||
let switcher = libhandy::ViewSwitcherBar::new();
|
|
||||||
switcher.set_reveal(false);
|
|
||||||
|
|
||||||
Header {
|
Header {
|
||||||
container: header,
|
container: header,
|
||||||
switch,
|
switch,
|
||||||
back,
|
back,
|
||||||
title_stack,
|
|
||||||
switch_squeezer,
|
|
||||||
bottom_switcher: switcher,
|
|
||||||
show_title,
|
show_title,
|
||||||
hamburger,
|
hamburger,
|
||||||
add,
|
add,
|
||||||
@ -228,57 +213,43 @@ impl Header {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn init(s: &Rc<Self>, content: &Content, sender: &Sender<Action>) {
|
pub(crate) fn init(s: &Rc<Self>, content: &Content, sender: &Sender<Action>) {
|
||||||
s.bottom_switcher.set_stack(Some(&content.get_stack()));
|
let weak = Rc::downgrade(s);
|
||||||
|
|
||||||
s.switch.set_stack(Some(&content.get_stack()));
|
s.switch.set_stack(Some(&content.get_stack()));
|
||||||
|
|
||||||
s.add.entry.connect_changed(clone!(@weak s => move |_| {
|
s.add.entry.connect_changed(clone!(weak => move |_| {
|
||||||
s.add.on_entry_changed()
|
weak.upgrade().map(|h| {
|
||||||
.map_err(|err| error!("Error: {}", err))
|
h.add.on_entry_changed()
|
||||||
.ok();
|
.map_err(|err| error!("Error: {}", err))
|
||||||
|
.ok();
|
||||||
|
});
|
||||||
}));
|
}));
|
||||||
|
|
||||||
s.add
|
s.add.add.connect_clicked(clone!(weak, sender => move |_| {
|
||||||
.add
|
weak.upgrade().map(|h| h.add.on_add_clicked(&sender));
|
||||||
.connect_clicked(clone!(@weak s, @strong sender => move |_| {
|
}));
|
||||||
s.add.on_add_clicked(&sender).unwrap();
|
|
||||||
}));
|
|
||||||
|
|
||||||
s.add
|
s.back.connect_clicked(clone!(weak, sender => move |_| {
|
||||||
.entry
|
weak.upgrade().map(|h| h.switch_to_normal());
|
||||||
.connect_activate(clone!(@weak s, @strong sender => move |_| {
|
sender.send(Action::ShowShowsAnimated).expect("Action channel blew up somehow");
|
||||||
if s.add.add.get_sensitive() {
|
}));
|
||||||
s.add.on_add_clicked(&sender).unwrap();
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
|
|
||||||
s.back
|
|
||||||
.connect_clicked(clone!(@weak s, @strong sender => move |_| {
|
|
||||||
s.switch_to_normal();
|
|
||||||
sender.send(Action::ShowShowsAnimated).expect("Action channel blew up somehow");
|
|
||||||
}));
|
|
||||||
|
|
||||||
s.switch_squeezer
|
|
||||||
.connect_property_visible_child_notify(clone!(@weak s => move |_| {
|
|
||||||
s.update_bottom_switcher();
|
|
||||||
}));
|
|
||||||
s.update_bottom_switcher();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn switch_to_back(&self, title: &str) {
|
pub(crate) fn switch_to_back(&self, title: &str) {
|
||||||
|
self.switch.hide();
|
||||||
self.add.toggle.hide();
|
self.add.toggle.hide();
|
||||||
self.back.show();
|
self.back.show();
|
||||||
self.set_show_title(title);
|
self.set_show_title(title);
|
||||||
self.title_stack.set_visible_child(&self.show_title);
|
self.show_title.show();
|
||||||
self.bottom_switcher.set_reveal(false);
|
|
||||||
self.hamburger.hide();
|
self.hamburger.hide();
|
||||||
self.dots.show();
|
self.dots.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn switch_to_normal(&self) {
|
pub(crate) fn switch_to_normal(&self) {
|
||||||
|
self.switch.show();
|
||||||
self.add.toggle.show();
|
self.add.toggle.show();
|
||||||
self.back.hide();
|
self.back.hide();
|
||||||
self.title_stack.set_visible_child(&self.switch_squeezer);
|
self.show_title.hide();
|
||||||
self.update_bottom_switcher();
|
|
||||||
self.hamburger.show();
|
self.hamburger.show();
|
||||||
self.dots.hide();
|
self.dots.hide();
|
||||||
}
|
}
|
||||||
@ -294,10 +265,4 @@ impl Header {
|
|||||||
pub(crate) fn set_secondary_menu(&self, pop: >k::PopoverMenu) {
|
pub(crate) fn set_secondary_menu(&self, pop: >k::PopoverMenu) {
|
||||||
self.dots.set_popover(Some(pop));
|
self.dots.set_popover(Some(pop));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn update_bottom_switcher(&self) {
|
|
||||||
if let Some(child) = self.switch_squeezer.get_visible_child() {
|
|
||||||
self.bottom_switcher.set_reveal(child != self.switch);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,12 +17,11 @@
|
|||||||
//
|
//
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
#![allow(
|
#![cfg_attr(
|
||||||
clippy::clone_on_ref_ptr,
|
feature = "cargo-clippy",
|
||||||
clippy::blacklisted_name,
|
allow(clone_on_ref_ptr, blacklisted_name, match_same_arms,)
|
||||||
clippy::match_same_arms,
|
|
||||||
unknown_lints
|
|
||||||
)]
|
)]
|
||||||
|
#![allow(unknown_lints)]
|
||||||
// Enable lint group collections
|
// Enable lint group collections
|
||||||
#![warn(nonstandard_style, edition_2018, rust_2018_idioms, bad_style, unused)]
|
#![warn(nonstandard_style, edition_2018, rust_2018_idioms, bad_style, unused)]
|
||||||
// standalone lints
|
// standalone lints
|
||||||
@ -60,6 +59,25 @@ use log::Level;
|
|||||||
|
|
||||||
use gtk::prelude::*;
|
use gtk::prelude::*;
|
||||||
|
|
||||||
|
// https://gtk-rs.org/docs-src/tutorial/closures
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! clone {
|
||||||
|
(@param _) => ( _ );
|
||||||
|
(@param $x:ident) => ( $x );
|
||||||
|
($($n:ident),+ => move || $body:expr) => (
|
||||||
|
{
|
||||||
|
$( let $n = $n.clone(); )+
|
||||||
|
move || $body
|
||||||
|
}
|
||||||
|
);
|
||||||
|
($($n:ident),+ => move |$($p:tt),+| $body:expr) => (
|
||||||
|
{
|
||||||
|
$( let $n = $n.clone(); )+
|
||||||
|
move |$(clone!(@param $p),)+| $body
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
mod stacks;
|
mod stacks;
|
||||||
mod widgets;
|
mod widgets;
|
||||||
|
|
||||||
|
|||||||
@ -54,14 +54,12 @@ podcasts_sources = files(
|
|||||||
'main.rs',
|
'main.rs',
|
||||||
'manager.rs',
|
'manager.rs',
|
||||||
'settings.rs',
|
'settings.rs',
|
||||||
'utils.rs',
|
'utils.rs'
|
||||||
'window.rs',
|
|
||||||
)
|
)
|
||||||
|
|
||||||
cargo_release = custom_target('cargo-build',
|
cargo_release = custom_target('cargo-build',
|
||||||
build_by_default: true,
|
build_by_default: true,
|
||||||
input: [
|
input: [
|
||||||
podcast_toml,
|
|
||||||
data_sources,
|
data_sources,
|
||||||
downloader_sources,
|
downloader_sources,
|
||||||
podcasts_sources,
|
podcasts_sources,
|
||||||
|
|||||||
@ -81,21 +81,11 @@ impl WindowGeometry {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn write(&self, settings: &gio::Settings) {
|
pub(crate) fn write(&self, settings: &gio::Settings) {
|
||||||
settings
|
settings.set_int("persist-window-geometry-left", self.left);
|
||||||
.set_int("persist-window-geometry-left", self.left)
|
settings.set_int("persist-window-geometry-top", self.top);
|
||||||
.unwrap();
|
settings.set_int("persist-window-geometry-width", self.width);
|
||||||
settings
|
settings.set_int("persist-window-geometry-height", self.height);
|
||||||
.set_int("persist-window-geometry-top", self.top)
|
settings.set_boolean("persist-window-geometry-maximized", self.is_maximized);
|
||||||
.unwrap();
|
|
||||||
settings
|
|
||||||
.set_int("persist-window-geometry-width", self.width)
|
|
||||||
.unwrap();
|
|
||||||
settings
|
|
||||||
.set_int("persist-window-geometry-height", self.height)
|
|
||||||
.unwrap();
|
|
||||||
settings
|
|
||||||
.set_boolean("persist-window-geometry-maximized", self.is_maximized)
|
|
||||||
.unwrap();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -54,15 +54,6 @@ impl Content {
|
|||||||
stack.add_titled(&home.borrow().get_stack(), "home", &i18n("New"));
|
stack.add_titled(&home.borrow().get_stack(), "home", &i18n("New"));
|
||||||
stack.add_titled(&shows.borrow().get_stack(), "shows", &i18n("Shows"));
|
stack.add_titled(&shows.borrow().get_stack(), "shows", &i18n("Shows"));
|
||||||
|
|
||||||
stack.set_child_icon_name(
|
|
||||||
&home.borrow().get_stack(),
|
|
||||||
Some("document-open-recent-symbolic"),
|
|
||||||
);
|
|
||||||
stack.set_child_icon_name(
|
|
||||||
&shows.borrow().get_stack(),
|
|
||||||
Some("audio-input-microphone-symbolic"),
|
|
||||||
);
|
|
||||||
|
|
||||||
let con = Content {
|
let con = Content {
|
||||||
stack,
|
stack,
|
||||||
shows,
|
shows,
|
||||||
|
|||||||
89
podcasts-gtk/src/stacks/main_stack.rs
Normal file
89
podcasts-gtk/src/stacks/main_stack.rs
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
// main_stack.rs
|
||||||
|
//
|
||||||
|
// Copyright 2019 Jordan Petridis <jpetridis@gnome.org>
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
//
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
#![allow(unused)]
|
||||||
|
|
||||||
|
use crossbeam_channel::Sender;
|
||||||
|
use failure::Error;
|
||||||
|
|
||||||
|
use crate::app::Action;
|
||||||
|
|
||||||
|
use std::cell::RefCell;
|
||||||
|
use std::rc::Rc;
|
||||||
|
|
||||||
|
use crate::i18n::i18n;
|
||||||
|
|
||||||
|
use gtk::{self, prelude::*};
|
||||||
|
|
||||||
|
use crate:: widgets::{EpisodeWidget, EmptyView, ShowWidget, HomeView, ShowsView};
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Copy)]
|
||||||
|
pub (crate) enum State {
|
||||||
|
Empty, // Empty view in case you are not subbed into any shows
|
||||||
|
Home, // ListBox with the latests episodes
|
||||||
|
ShowsFlwobox, // Flowbox to browse all the shows you are subbed
|
||||||
|
ShowDetails, // 2 States, either empty or episodes list
|
||||||
|
EpisodeDetails, // WebView that shows the html description
|
||||||
|
DisoverView, // Way into the future view ??
|
||||||
|
}
|
||||||
|
|
||||||
|
struct StackWrapper {
|
||||||
|
state: State,
|
||||||
|
stack: gtk::Stack,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct PodcastsStack {
|
||||||
|
sender: Sender<Action>,
|
||||||
|
stack: StackWrapper,
|
||||||
|
empty_view: Rc<EmptyView>,
|
||||||
|
home: Rc<HomeView>,
|
||||||
|
shows_flowbox: Rc<ShowsView>,
|
||||||
|
show_details: Rc<ShowWidget>,
|
||||||
|
// episdoe: Rc<EpisodeDetails>,
|
||||||
|
// discover: unimplemented!(),
|
||||||
|
}
|
||||||
|
|
||||||
|
impl PodcastsStack {
|
||||||
|
fn new(sender: Sender<Action>) -> Self {
|
||||||
|
let stack = StackWrapper {
|
||||||
|
state: State::Empty,
|
||||||
|
stack: gtk::Stack::new(),
|
||||||
|
};
|
||||||
|
|
||||||
|
let empty = Rc::new(EmptyView::default());
|
||||||
|
let home = HomeView::new(sender.clone(), None).expect("Could not create a HomeView");
|
||||||
|
let shows = ShowsView::new(sender.clone(), None);
|
||||||
|
let show = Rc::new(ShowWidget::default());
|
||||||
|
// let episode = EpisodeDetails::default();
|
||||||
|
|
||||||
|
// stack.add_titled(&home.borrow().get_stack(), "home", &i18n("New"));
|
||||||
|
// stack.add_titled(&shows.borrow().get_stack(), "shows", &i18n("Shows"));
|
||||||
|
|
||||||
|
PodcastsStack {
|
||||||
|
sender,
|
||||||
|
stack,
|
||||||
|
empty_view: empty,
|
||||||
|
home,
|
||||||
|
shows_flowbox: shows,
|
||||||
|
show_details: show,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -90,7 +90,7 @@ impl PopulatedStack {
|
|||||||
|
|
||||||
pub(crate) fn replace_shows(&mut self) -> Result<(), Error> {
|
pub(crate) fn replace_shows(&mut self) -> Result<(), Error> {
|
||||||
let old = &self.populated.view.container().clone();
|
let old = &self.populated.view.container().clone();
|
||||||
debug!("Name: {:?}", old.get_widget_name());
|
debug!("Name: {:?}", WidgetExt::get_name(old));
|
||||||
|
|
||||||
let vadj = self.populated.view.get_vadjustment();
|
let vadj = self.populated.view.get_vadjustment();
|
||||||
let pop = ShowsView::new(self.sender.clone(), vadj);
|
let pop = ShowsView::new(self.sender.clone(), vadj);
|
||||||
|
|||||||
@ -17,8 +17,8 @@
|
|||||||
//
|
//
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
use gio::{resources_register, Resource};
|
use gio::{resources_register, Error, Resource};
|
||||||
use glib::{Error, Bytes};
|
use glib::Bytes;
|
||||||
|
|
||||||
pub(crate) fn init() -> Result<(), Error> {
|
pub(crate) fn init() -> Result<(), Error> {
|
||||||
// load the gresource binary at build time and include/link it into the final
|
// load the gresource binary at build time and include/link it into the final
|
||||||
|
|||||||
@ -17,15 +17,13 @@
|
|||||||
//
|
//
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
#![allow(clippy::type_complexity)]
|
#![cfg_attr(feature = "cargo-clippy", allow(type_complexity))]
|
||||||
|
|
||||||
use gdk_pixbuf::Pixbuf;
|
use gdk_pixbuf::{Object, Pixbuf};
|
||||||
use glib::clone;
|
|
||||||
use glib::{self, object::WeakRef};
|
use glib::{self, object::WeakRef};
|
||||||
use glib::{IsA, Object};
|
|
||||||
use gtk;
|
use gtk;
|
||||||
use gtk::prelude::*;
|
use gtk::prelude::*;
|
||||||
use gtk::Widget;
|
use gtk::{IsA, Widget};
|
||||||
|
|
||||||
use chrono::prelude::*;
|
use chrono::prelude::*;
|
||||||
use crossbeam_channel::{bounded, unbounded, Sender};
|
use crossbeam_channel::{bounded, unbounded, Sender};
|
||||||
@ -88,7 +86,7 @@ use crate::i18n::i18n;
|
|||||||
pub(crate) fn lazy_load<T, C, F, W, U>(
|
pub(crate) fn lazy_load<T, C, F, W, U>(
|
||||||
data: T,
|
data: T,
|
||||||
container: WeakRef<C>,
|
container: WeakRef<C>,
|
||||||
mut constructor: F,
|
mut contructor: F,
|
||||||
callback: U,
|
callback: U,
|
||||||
) where
|
) where
|
||||||
T: IntoIterator + 'static,
|
T: IntoIterator + 'static,
|
||||||
@ -104,7 +102,7 @@ pub(crate) fn lazy_load<T, C, F, W, U>(
|
|||||||
None => return,
|
None => return,
|
||||||
};
|
};
|
||||||
|
|
||||||
let widget = constructor(x);
|
let widget = contructor(x);
|
||||||
container.add(&widget);
|
container.add(&widget);
|
||||||
widget.show();
|
widget.show();
|
||||||
};
|
};
|
||||||
@ -117,7 +115,7 @@ pub(crate) fn lazy_load<T, C, F, W, U>(
|
|||||||
/// This is a more flexible version of `lazy_load` with less constrains.
|
/// This is a more flexible version of `lazy_load` with less constrains.
|
||||||
/// If you just want to lazy add `widgets` to a `container` check if
|
/// If you just want to lazy add `widgets` to a `container` check if
|
||||||
/// `lazy_load` fits your needs first.
|
/// `lazy_load` fits your needs first.
|
||||||
#[allow(clippy::redundant_closure)]
|
#[cfg_attr(feature = "cargo-clippy", allow(redundant_closure))]
|
||||||
pub(crate) fn lazy_load_full<T, F, U>(data: T, mut func: F, finish_callback: U)
|
pub(crate) fn lazy_load_full<T, F, U>(data: T, mut func: F, finish_callback: U)
|
||||||
where
|
where
|
||||||
T: IntoIterator + 'static,
|
T: IntoIterator + 'static,
|
||||||
@ -139,7 +137,7 @@ where
|
|||||||
|
|
||||||
// Kudos to Julian Sparber
|
// Kudos to Julian Sparber
|
||||||
// https://blogs.gnome.org/jsparber/2018/04/29/animate-a-scrolledwindow/
|
// https://blogs.gnome.org/jsparber/2018/04/29/animate-a-scrolledwindow/
|
||||||
#[allow(clippy::float_cmp)]
|
#[cfg_attr(feature = "cargo-clippy", allow(float_cmp))]
|
||||||
pub(crate) fn smooth_scroll_to(view: >k::ScrolledWindow, target: >k::Adjustment) {
|
pub(crate) fn smooth_scroll_to(view: >k::ScrolledWindow, target: >k::Adjustment) {
|
||||||
if let Some(adj) = view.get_vadjustment() {
|
if let Some(adj) = view.get_vadjustment() {
|
||||||
if let Some(clock) = view.get_frame_clock() {
|
if let Some(clock) = view.get_frame_clock() {
|
||||||
@ -184,7 +182,7 @@ pub(crate) fn ignore_show(id: i32) -> Result<bool, Error> {
|
|||||||
.map_err(|err| format_err!("{}", err))
|
.map_err(|err| format_err!("{}", err))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn unignore_show(id: i32) -> Result<bool, Error> {
|
pub(crate) fn uningore_show(id: i32) -> Result<bool, Error> {
|
||||||
IGNORESHOWS
|
IGNORESHOWS
|
||||||
.lock()
|
.lock()
|
||||||
.map(|mut guard| guard.remove(&id))
|
.map(|mut guard| guard.remove(&id))
|
||||||
@ -204,10 +202,10 @@ pub(crate) fn cleanup(cleanup_date: DateTime<Utc>) {
|
|||||||
.ok();
|
.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Schedule feed refresh
|
pub(crate) fn refresh<S>(source: Option<S>, sender: Sender<Action>)
|
||||||
/// If `source` is None, Refreshes all sources in the database.
|
where
|
||||||
/// Current implementation ignores update request if another update is already running
|
S: IntoIterator<Item = Source> + Send + 'static,
|
||||||
pub(crate) fn schedule_refresh(source: Option<Vec<Source>>, sender: Sender<Action>) {
|
{
|
||||||
// If we try to update the whole db,
|
// If we try to update the whole db,
|
||||||
// Exit early if `source` table is empty
|
// Exit early if `source` table is empty
|
||||||
if source.is_none() {
|
if source.is_none() {
|
||||||
@ -221,16 +219,15 @@ pub(crate) fn schedule_refresh(source: Option<Vec<Source>>, sender: Sender<Actio
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
sender
|
refresh_feed(source, sender)
|
||||||
.send(Action::UpdateFeed(source))
|
|
||||||
.expect("Action channel blew up somehow")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Update the rss feed(s) originating from `source`.
|
/// Update the rss feed(s) originating from `source`.
|
||||||
/// If `source` is None, Fetches all the `Source` entries in the database and updates them.
|
/// If `source` is None, Fetches all the `Source` entries in the database and updates them.
|
||||||
/// Do not call this function directly unless you are sure no other updates are running.
|
fn refresh_feed<S>(source: Option<S>, sender: Sender<Action>)
|
||||||
/// Use `schedule_refresh()` instead
|
where
|
||||||
pub(crate) fn refresh_feed(source: Option<Vec<Source>>, sender: Sender<Action>) {
|
S: IntoIterator<Item = Source> + Send + 'static,
|
||||||
|
{
|
||||||
rayon::spawn(move || {
|
rayon::spawn(move || {
|
||||||
let (up_sender, up_receiver) = bounded(1);
|
let (up_sender, up_receiver) = bounded(1);
|
||||||
sender
|
sender
|
||||||
@ -301,7 +298,7 @@ pub(crate) fn set_image_from_path(
|
|||||||
// If it fails another download will be scheduled.
|
// If it fails another download will be scheduled.
|
||||||
if let Ok(guard) = COVER_DL_REGISTRY.read() {
|
if let Ok(guard) = COVER_DL_REGISTRY.read() {
|
||||||
if guard.contains(&show_id) {
|
if guard.contains(&show_id) {
|
||||||
let callback = clone!(@weak image => @default-return glib::Continue(false), move || {
|
let callback = clone!(image => move || {
|
||||||
let _ = set_image_from_path(&image, show_id, size);
|
let _ = set_image_from_path(&image, show_id, size);
|
||||||
glib::Continue(false)
|
glib::Continue(false)
|
||||||
});
|
});
|
||||||
@ -391,6 +388,7 @@ fn lookup_id(id: u32) -> Result<String, Error> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn on_import_clicked(window: >k::ApplicationWindow, sender: &Sender<Action>) {
|
pub(crate) fn on_import_clicked(window: >k::ApplicationWindow, sender: &Sender<Action>) {
|
||||||
|
use glib::translate::ToGlib;
|
||||||
use gtk::{FileChooserAction, FileChooserNative, FileFilter, ResponseType};
|
use gtk::{FileChooserAction, FileChooserNative, FileFilter, ResponseType};
|
||||||
|
|
||||||
// Create the FileChooser Dialog
|
// Create the FileChooser Dialog
|
||||||
@ -414,18 +412,18 @@ pub(crate) fn on_import_clicked(window: >k::ApplicationWindow, sender: &Sender
|
|||||||
|
|
||||||
let resp = dialog.run();
|
let resp = dialog.run();
|
||||||
debug!("Dialog Response {}", resp);
|
debug!("Dialog Response {}", resp);
|
||||||
if resp == ResponseType::Accept {
|
if resp == ResponseType::Accept.to_glib() {
|
||||||
if let Some(filename) = dialog.get_filename() {
|
if let Some(filename) = dialog.get_filename() {
|
||||||
debug!("File selected: {:?}", filename);
|
debug!("File selected: {:?}", filename);
|
||||||
|
|
||||||
rayon::spawn(clone!(@strong sender => move || {
|
rayon::spawn(clone!(sender => move || {
|
||||||
// Parse the file and import the feeds
|
// Parse the file and import the feeds
|
||||||
if let Ok(sources) = opml::import_from_file(filename) {
|
if let Ok(sources) = opml::import_from_file(filename) {
|
||||||
// Refresh the successfully parsed feeds to index them
|
// Refresh the successfully parsed feeds to index them
|
||||||
schedule_refresh(Some(sources), sender)
|
refresh(Some(sources), sender)
|
||||||
} else {
|
} else {
|
||||||
let text = i18n("Failed to parse the imported file");
|
let text = i18n("Failed to parse the imported file");
|
||||||
sender.send(Action::ErrorNotification(text)).expect("Action channel blew up somehow");
|
sender.send(Action::ErrorNotification(text)).expect("Action channel blew up somehow");;
|
||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
} else {
|
} else {
|
||||||
@ -438,6 +436,7 @@ pub(crate) fn on_import_clicked(window: >k::ApplicationWindow, sender: &Sender
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn on_export_clicked(window: >k::ApplicationWindow, sender: &Sender<Action>) {
|
pub(crate) fn on_export_clicked(window: >k::ApplicationWindow, sender: &Sender<Action>) {
|
||||||
|
use glib::translate::ToGlib;
|
||||||
use gtk::{FileChooserAction, FileChooserNative, FileFilter, ResponseType};
|
use gtk::{FileChooserAction, FileChooserNative, FileFilter, ResponseType};
|
||||||
|
|
||||||
// Create the FileChooser Dialog
|
// Create the FileChooser Dialog
|
||||||
@ -461,11 +460,11 @@ pub(crate) fn on_export_clicked(window: >k::ApplicationWindow, sender: &Sender
|
|||||||
|
|
||||||
let resp = dialog.run();
|
let resp = dialog.run();
|
||||||
debug!("Dialog Response {}", resp);
|
debug!("Dialog Response {}", resp);
|
||||||
if resp == ResponseType::Accept {
|
if resp == ResponseType::Accept.to_glib() {
|
||||||
if let Some(filename) = dialog.get_filename() {
|
if let Some(filename) = dialog.get_filename() {
|
||||||
debug!("File selected: {:?}", filename);
|
debug!("File selected: {:?}", filename);
|
||||||
|
|
||||||
rayon::spawn(clone!(@strong sender => move || {
|
rayon::spawn(clone!(sender => move || {
|
||||||
if opml::export_from_db(filename, i18n("GNOME Podcasts Subscriptions").as_str()).is_err() {
|
if opml::export_from_db(filename, i18n("GNOME Podcasts Subscriptions").as_str()).is_err() {
|
||||||
let text = i18n("Failed to export podcasts");
|
let text = i18n("Failed to export podcasts");
|
||||||
sender.send(Action::ErrorNotification(text)).expect("Action channel blew up somehow");
|
sender.send(Action::ErrorNotification(text)).expect("Action channel blew up somehow");
|
||||||
|
|||||||
@ -18,7 +18,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
use glib;
|
use glib;
|
||||||
use glib::clone;
|
|
||||||
use gtk;
|
use gtk;
|
||||||
use gtk::prelude::*;
|
use gtk::prelude::*;
|
||||||
|
|
||||||
@ -83,17 +82,21 @@ impl InAppNotification {
|
|||||||
let notif = InAppNotification::default();
|
let notif = InAppNotification::default();
|
||||||
notif.text.set_text(&text);
|
notif.text.set_text(&text);
|
||||||
|
|
||||||
|
let revealer_weak = notif.revealer.downgrade();
|
||||||
let mut time = 0;
|
let mut time = 0;
|
||||||
let id = timeout_add(
|
let id = timeout_add(250, move || {
|
||||||
250,
|
if time < timer {
|
||||||
clone!(@weak notif.revealer as revealer => @default-return glib::Continue(false), move || {
|
time += 250;
|
||||||
if time < timer {
|
return glib::Continue(true);
|
||||||
time += 250;
|
};
|
||||||
return glib::Continue(true);
|
|
||||||
};
|
let revealer = match revealer_weak.upgrade() {
|
||||||
callback(revealer)
|
Some(r) => r,
|
||||||
}),
|
None => return glib::Continue(false),
|
||||||
);
|
};
|
||||||
|
|
||||||
|
callback(revealer)
|
||||||
|
});
|
||||||
let id = Rc::new(RefCell::new(Some(id)));
|
let id = Rc::new(RefCell::new(Some(id)));
|
||||||
|
|
||||||
if undo_callback.is_some() {
|
if undo_callback.is_some() {
|
||||||
|
|||||||
@ -67,7 +67,7 @@ impl BaseView {
|
|||||||
self.scrolled_window.add(widget);
|
self.scrolled_window.add(widget);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn set_adjustments<'a, 'b>(
|
pub(crate) fn set_adjutments<'a, 'b>(
|
||||||
&self,
|
&self,
|
||||||
hadjustment: Option<&'a Adjustment>,
|
hadjustment: Option<&'a Adjustment>,
|
||||||
vadjustment: Option<&'b Adjustment>,
|
vadjustment: Option<&'b Adjustment>,
|
||||||
|
|||||||
@ -18,7 +18,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
use glib;
|
use glib;
|
||||||
use glib::clone;
|
|
||||||
use gtk;
|
use gtk;
|
||||||
use gtk::prelude::*;
|
use gtk::prelude::*;
|
||||||
|
|
||||||
@ -236,18 +235,16 @@ impl EpisodeWidget {
|
|||||||
let widget = Rc::new(Self::default());
|
let widget = Rc::new(Self::default());
|
||||||
let episode = RefCell::new(Some(episode));
|
let episode = RefCell::new(Some(episode));
|
||||||
let weak = Rc::downgrade(&widget);
|
let weak = Rc::downgrade(&widget);
|
||||||
widget
|
widget.container.connect_draw(clone!(sender => move |_, _| {
|
||||||
.container
|
episode.borrow_mut().take().map(|ep| {
|
||||||
.connect_draw(clone!(@strong sender => move |_, _| {
|
weak.upgrade().map(|w| w.info.init(&ep));
|
||||||
episode.borrow_mut().take().map(|ep| {
|
Self::determine_buttons_state(&weak, &ep, &sender)
|
||||||
weak.upgrade().map(|w| w.info.init(&ep));
|
.map_err(|err| error!("Error: {}", err))
|
||||||
Self::determine_buttons_state(&weak, &ep, &sender)
|
.ok();
|
||||||
.map_err(|err| error!("Error: {}", err))
|
});
|
||||||
.ok();
|
|
||||||
});
|
|
||||||
|
|
||||||
gtk::Inhibit(false)
|
gtk::Inhibit(false)
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// When the widget is attached to a parent,
|
// When the widget is attached to a parent,
|
||||||
// since it's a rust struct and not a widget the
|
// since it's a rust struct and not a widget the
|
||||||
@ -375,7 +372,7 @@ impl EpisodeWidget {
|
|||||||
// State: InProgress
|
// State: InProgress
|
||||||
if let Some(prog) = active_dl()? {
|
if let Some(prog) = active_dl()? {
|
||||||
// set a callback that will update the state when the download finishes
|
// set a callback that will update the state when the download finishes
|
||||||
let callback = clone!(@strong weak, @strong sender => move || {
|
let callback = clone!(weak, sender => move || {
|
||||||
if let Ok(guard) = manager::ACTIVE_DOWNLOADS.read() {
|
if let Ok(guard) = manager::ACTIVE_DOWNLOADS.read() {
|
||||||
if !guard.contains_key(&id) {
|
if !guard.contains_key(&id) {
|
||||||
if let Ok(ep) = dbqueries::get_episode_widget_from_rowid(id) {
|
if let Ok(ep) = dbqueries::get_episode_widget_from_rowid(id) {
|
||||||
@ -396,14 +393,14 @@ impl EpisodeWidget {
|
|||||||
widget
|
widget
|
||||||
.buttons
|
.buttons
|
||||||
.cancel
|
.cancel
|
||||||
.connect_clicked(clone!(@strong prog, @strong weak, @strong sender => move |_| {
|
.connect_clicked(clone!(prog, weak, sender => move |_| {
|
||||||
// Cancel the download
|
// Cancel the download
|
||||||
if let Ok(mut m) = prog.lock() {
|
if let Ok(mut m) = prog.lock() {
|
||||||
m.cancel();
|
m.cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cancel is not instant so we have to wait a bit
|
// Cancel is not instant so we have to wait a bit
|
||||||
timeout_add(50, clone!(@strong weak, @strong sender => move || {
|
timeout_add(50, clone!(weak, sender => move || {
|
||||||
if let Ok(thing) = active_dl() {
|
if let Ok(thing) = active_dl() {
|
||||||
if thing.is_none() {
|
if thing.is_none() {
|
||||||
// Recalculate the widget state
|
// Recalculate the widget state
|
||||||
@ -444,7 +441,7 @@ impl EpisodeWidget {
|
|||||||
widget
|
widget
|
||||||
.buttons
|
.buttons
|
||||||
.play
|
.play
|
||||||
.connect_clicked(clone!(@strong weak, @strong sender => move |_| {
|
.connect_clicked(clone!(weak, sender => move |_| {
|
||||||
if let Ok(mut ep) = dbqueries::get_episode_widget_from_rowid(id) {
|
if let Ok(mut ep) = dbqueries::get_episode_widget_from_rowid(id) {
|
||||||
on_play_bttn_clicked(&weak, &mut ep, &sender)
|
on_play_bttn_clicked(&weak, &mut ep, &sender)
|
||||||
.map_err(|err| error!("Error: {}", err))
|
.map_err(|err| error!("Error: {}", err))
|
||||||
@ -460,7 +457,7 @@ impl EpisodeWidget {
|
|||||||
widget
|
widget
|
||||||
.buttons
|
.buttons
|
||||||
.download
|
.download
|
||||||
.connect_clicked(clone!(@strong weak, @strong sender => move |dl| {
|
.connect_clicked(clone!(weak, sender => move |dl| {
|
||||||
// Make the button insensitive so it won't be pressed twice
|
// Make the button insensitive so it won't be pressed twice
|
||||||
dl.set_sensitive(false);
|
dl.set_sensitive(false);
|
||||||
if let Ok(ep) = dbqueries::get_episode_widget_from_rowid(id) {
|
if let Ok(ep) = dbqueries::get_episode_widget_from_rowid(id) {
|
||||||
@ -494,7 +491,7 @@ fn on_download_clicked(ep: &EpisodeWidgetModel, sender: &Sender<Action>) -> Resu
|
|||||||
// Update Views
|
// Update Views
|
||||||
sender
|
sender
|
||||||
.send(Action::RefreshEpisodesViewBGR)
|
.send(Action::RefreshEpisodesViewBGR)
|
||||||
.expect("Action channel blew up somehow");
|
.expect("Action channel blew up somehow");;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -515,30 +512,30 @@ fn on_play_bttn_clicked(
|
|||||||
// Play the episode
|
// Play the episode
|
||||||
sender
|
sender
|
||||||
.send(Action::InitEpisode(episode.rowid()))
|
.send(Action::InitEpisode(episode.rowid()))
|
||||||
.expect("Action channel blew up somehow");
|
.expect("Action channel blew up somehow");;
|
||||||
// Refresh background views to match the normal/greyout title state
|
// Refresh background views to match the normal/greyout title state
|
||||||
sender
|
sender
|
||||||
.send(Action::RefreshEpisodesViewBGR)
|
.send(Action::RefreshEpisodesViewBGR)
|
||||||
.expect("Action channel blew up somehow");
|
.expect("Action channel blew up somehow");;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
// Setup a callback that will update the progress bar.
|
// Setup a callback that will update the progress bar.
|
||||||
#[inline]
|
#[inline]
|
||||||
#[allow(clippy::if_same_then_else)]
|
#[cfg_attr(feature = "cargo-clippy", allow(if_same_then_else))]
|
||||||
fn update_progressbar_callback(
|
fn update_progressbar_callback(
|
||||||
widget: &Weak<EpisodeWidget>,
|
widget: &Weak<EpisodeWidget>,
|
||||||
prog: &Arc<Mutex<manager::Progress>>,
|
prog: &Arc<Mutex<manager::Progress>>,
|
||||||
episode_rowid: i32,
|
episode_rowid: i32,
|
||||||
) {
|
) {
|
||||||
let callback = clone!(@strong widget,@strong prog => move || {
|
let callback = clone!(widget, prog => move || {
|
||||||
progress_bar_helper(&widget, &prog, episode_rowid)
|
progress_bar_helper(&widget, &prog, episode_rowid)
|
||||||
.unwrap_or(glib::Continue(false))
|
.unwrap_or(glib::Continue(false))
|
||||||
});
|
});
|
||||||
timeout_add(100, callback);
|
timeout_add(100, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(clippy::if_same_then_else)]
|
#[allow(if_same_then_else)]
|
||||||
fn progress_bar_helper(
|
fn progress_bar_helper(
|
||||||
widget: &Weak<EpisodeWidget>,
|
widget: &Weak<EpisodeWidget>,
|
||||||
prog: &Arc<Mutex<manager::Progress>>,
|
prog: &Arc<Mutex<manager::Progress>>,
|
||||||
@ -605,7 +602,7 @@ fn progress_bar_helper(
|
|||||||
// relying to the RSS feed.
|
// relying to the RSS feed.
|
||||||
#[inline]
|
#[inline]
|
||||||
fn update_total_size_callback(widget: &Weak<EpisodeWidget>, prog: &Arc<Mutex<manager::Progress>>) {
|
fn update_total_size_callback(widget: &Weak<EpisodeWidget>, prog: &Arc<Mutex<manager::Progress>>) {
|
||||||
let callback = clone!(@strong prog, @strong widget => move || {
|
let callback = clone!(prog, widget => move || {
|
||||||
total_size_helper(&widget, &prog).unwrap_or(glib::Continue(true))
|
total_size_helper(&widget, &prog).unwrap_or(glib::Continue(true))
|
||||||
});
|
});
|
||||||
timeout_add(100, callback);
|
timeout_add(100, callback);
|
||||||
|
|||||||
@ -22,8 +22,6 @@ use failure::Error;
|
|||||||
|
|
||||||
use gtk::{self, prelude::*, Adjustment};
|
use gtk::{self, prelude::*, Adjustment};
|
||||||
|
|
||||||
use glib::clone;
|
|
||||||
|
|
||||||
use crossbeam_channel::Sender;
|
use crossbeam_channel::Sender;
|
||||||
use libhandy::{Column, ColumnExt};
|
use libhandy::{Column, ColumnExt};
|
||||||
use podcasts_data::dbqueries;
|
use podcasts_data::dbqueries;
|
||||||
@ -137,11 +135,17 @@ impl HomeView {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let callback = clone!(@weak home => move || {
|
let home_weak = Rc::downgrade(&home);
|
||||||
if let Some(ref v) = vadj {
|
let callback = move || {
|
||||||
home.view.set_adjustments(None, Some(v))
|
let home = match home_weak.upgrade() {
|
||||||
|
Some(h) => h,
|
||||||
|
None => return,
|
||||||
};
|
};
|
||||||
});
|
|
||||||
|
if let Some(ref v) = vadj {
|
||||||
|
home.view.set_adjutments(None, Some(v))
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
lazy_load_full(episodes, func, callback);
|
lazy_load_full(episodes, func, callback);
|
||||||
home.view.container().show_all();
|
home.view.container().show_all();
|
||||||
|
|||||||
@ -22,11 +22,7 @@ use gst::ClockTime;
|
|||||||
use gtk;
|
use gtk;
|
||||||
use gtk::prelude::*;
|
use gtk::prelude::*;
|
||||||
|
|
||||||
use libhandy as hdy;
|
|
||||||
use libhandy::prelude::*;
|
|
||||||
|
|
||||||
use gio::{File, FileExt};
|
use gio::{File, FileExt};
|
||||||
use glib::clone;
|
|
||||||
use glib::{SignalHandlerId, WeakRef};
|
use glib::{SignalHandlerId, WeakRef};
|
||||||
|
|
||||||
use chrono::{prelude::*, NaiveTime};
|
use chrono::{prelude::*, NaiveTime};
|
||||||
@ -74,29 +70,11 @@ struct PlayerInfo {
|
|||||||
show: gtk::Label,
|
show: gtk::Label,
|
||||||
episode: gtk::Label,
|
episode: gtk::Label,
|
||||||
cover: gtk::Image,
|
cover: gtk::Image,
|
||||||
show_small: gtk::Label,
|
|
||||||
episode_small: gtk::Label,
|
|
||||||
cover_small: gtk::Image,
|
|
||||||
mpris: Arc<MprisPlayer>,
|
mpris: Arc<MprisPlayer>,
|
||||||
episode_id: RefCell<Option<i32>>,
|
episode_id: RefCell<Option<i32>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl PlayerInfo {
|
impl PlayerInfo {
|
||||||
fn create_bindings(&self) {
|
|
||||||
self.show
|
|
||||||
.bind_property("label", &self.show_small, "label")
|
|
||||||
.flags(glib::BindingFlags::SYNC_CREATE)
|
|
||||||
.build();
|
|
||||||
self.episode
|
|
||||||
.bind_property("label", &self.episode_small, "label")
|
|
||||||
.flags(glib::BindingFlags::SYNC_CREATE)
|
|
||||||
.build();
|
|
||||||
self.cover
|
|
||||||
.bind_property("pixbuf", &self.cover_small, "pixbuf")
|
|
||||||
.flags(glib::BindingFlags::SYNC_CREATE)
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
// FIXME: create a Diesel Model of the joined episode and podcast query instead
|
// FIXME: create a Diesel Model of the joined episode and podcast query instead
|
||||||
fn init(&self, episode: &EpisodeWidgetModel, podcast: &ShowCoverModel) {
|
fn init(&self, episode: &EpisodeWidgetModel, podcast: &ShowCoverModel) {
|
||||||
self.episode_id.replace(Some(episode.rowid()));
|
self.episode_id.replace(Some(episode.rowid()));
|
||||||
@ -140,7 +118,6 @@ struct PlayerTimes {
|
|||||||
separator: gtk::Label,
|
separator: gtk::Label,
|
||||||
slider: gtk::Scale,
|
slider: gtk::Scale,
|
||||||
slider_update: Rc<SignalHandlerId>,
|
slider_update: Rc<SignalHandlerId>,
|
||||||
progress_bar: gtk::ProgressBar,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy)]
|
#[derive(Debug, Clone, Copy)]
|
||||||
@ -173,8 +150,6 @@ impl PlayerTimes {
|
|||||||
self.slider.unblock_signal(&self.slider_update);
|
self.slider.unblock_signal(&self.slider_update);
|
||||||
|
|
||||||
self.duration.set_text(&format_duration(seconds as u32));
|
self.duration.set_text(&format_duration(seconds as u32));
|
||||||
|
|
||||||
self.update_progress_bar();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Update the `gtk::Scale` bar when the pipeline position is changed.
|
/// Update the `gtk::Scale` bar when the pipeline position is changed.
|
||||||
@ -186,13 +161,6 @@ impl PlayerTimes {
|
|||||||
self.slider.unblock_signal(&self.slider_update);
|
self.slider.unblock_signal(&self.slider_update);
|
||||||
|
|
||||||
self.progressed.set_text(&format_duration(seconds as u32));
|
self.progressed.set_text(&format_duration(seconds as u32));
|
||||||
|
|
||||||
self.update_progress_bar();
|
|
||||||
}
|
|
||||||
|
|
||||||
fn update_progress_bar(&self) {
|
|
||||||
let fraction = self.slider.get_value() / self.slider.get_adjustment().get_upper();
|
|
||||||
self.progress_bar.set_fraction(fraction);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,231 +176,29 @@ fn format_duration(seconds: u32) -> String {
|
|||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
struct PlayerRate {
|
struct PlayerRate {
|
||||||
radio400: gtk::ModelButton,
|
radio150: gtk::RadioButton,
|
||||||
radio375: gtk::ModelButton,
|
radio125: gtk::RadioButton,
|
||||||
radio350: gtk::ModelButton,
|
radio_normal: gtk::RadioButton,
|
||||||
radio325: gtk::ModelButton,
|
|
||||||
radio300: gtk::ModelButton,
|
|
||||||
radio275: gtk::ModelButton,
|
|
||||||
radio250: gtk::ModelButton,
|
|
||||||
radio225: gtk::ModelButton,
|
|
||||||
radio200: gtk::ModelButton,
|
|
||||||
radio175: gtk::ModelButton,
|
|
||||||
radio150: gtk::ModelButton,
|
|
||||||
radio125: gtk::ModelButton,
|
|
||||||
radio_normal: gtk::ModelButton,
|
|
||||||
popover: gtk::Popover,
|
popover: gtk::Popover,
|
||||||
btn: gtk::MenuButton,
|
btn: gtk::MenuButton,
|
||||||
label: gtk::Label,
|
label: gtk::Label,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl PlayerRate {
|
|
||||||
fn new() -> Self {
|
|
||||||
let builder = gtk::Builder::new_from_resource("/org/gnome/Podcasts/gtk/player_rate.ui");
|
|
||||||
|
|
||||||
let radio400: gtk::ModelButton = builder.get_object("rate_4_00").unwrap();
|
|
||||||
let radio375: gtk::ModelButton = builder.get_object("rate_3_75").unwrap();
|
|
||||||
let radio350: gtk::ModelButton = builder.get_object("rate_3_50").unwrap();
|
|
||||||
let radio325: gtk::ModelButton = builder.get_object("rate_3_25").unwrap();
|
|
||||||
let radio300: gtk::ModelButton = builder.get_object("rate_3_00").unwrap();
|
|
||||||
let radio275: gtk::ModelButton = builder.get_object("rate_2_75").unwrap();
|
|
||||||
let radio250: gtk::ModelButton = builder.get_object("rate_2_50").unwrap();
|
|
||||||
let radio225: gtk::ModelButton = builder.get_object("rate_2_25").unwrap();
|
|
||||||
let radio200: gtk::ModelButton = builder.get_object("rate_2_00").unwrap();
|
|
||||||
let radio175: gtk::ModelButton = builder.get_object("rate_1_75").unwrap();
|
|
||||||
let radio150: gtk::ModelButton = builder.get_object("rate_1_50").unwrap();
|
|
||||||
let radio125: gtk::ModelButton = builder.get_object("rate_1_25").unwrap();
|
|
||||||
let radio_normal: gtk::ModelButton = builder.get_object("normal_rate").unwrap();
|
|
||||||
let popover = builder.get_object("rate_popover").unwrap();
|
|
||||||
let btn = builder.get_object("rate_button").unwrap();
|
|
||||||
let label = builder.get_object("rate_label").unwrap();
|
|
||||||
|
|
||||||
PlayerRate {
|
|
||||||
radio400,
|
|
||||||
radio375,
|
|
||||||
radio350,
|
|
||||||
radio325,
|
|
||||||
radio300,
|
|
||||||
radio275,
|
|
||||||
radio250,
|
|
||||||
radio225,
|
|
||||||
radio200,
|
|
||||||
radio175,
|
|
||||||
radio150,
|
|
||||||
radio125,
|
|
||||||
radio_normal,
|
|
||||||
popover,
|
|
||||||
label,
|
|
||||||
btn,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn set_rate(&self, rate: f64) {
|
|
||||||
self.label.set_text(&format!("{:.2}×", rate));
|
|
||||||
self.radio_normal.set_property_active(rate == 1.0);
|
|
||||||
self.radio125.set_property_active(rate == 1.25);
|
|
||||||
self.radio150.set_property_active(rate == 1.5);
|
|
||||||
self.radio175.set_property_active(rate == 1.75);
|
|
||||||
self.radio200.set_property_active(rate == 2.0);
|
|
||||||
self.radio225.set_property_active(rate == 2.25);
|
|
||||||
self.radio250.set_property_active(rate == 2.5);
|
|
||||||
self.radio275.set_property_active(rate == 2.75);
|
|
||||||
self.radio300.set_property_active(rate == 3.0);
|
|
||||||
self.radio325.set_property_active(rate == 3.25);
|
|
||||||
self.radio350.set_property_active(rate == 3.5);
|
|
||||||
self.radio375.set_property_active(rate == 3.75);
|
|
||||||
self.radio400.set_property_active(rate == 4.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
fn connect_signals(&self, widget: &Rc<PlayerWidget>) {
|
|
||||||
self.radio_normal
|
|
||||||
.connect_clicked(clone!(@weak widget => move |_| {
|
|
||||||
widget.on_rate_changed(1.00);
|
|
||||||
}));
|
|
||||||
self.radio125
|
|
||||||
.connect_clicked(clone!(@weak widget => move |_| {
|
|
||||||
widget.on_rate_changed(1.25);
|
|
||||||
}));
|
|
||||||
self.radio150
|
|
||||||
.connect_clicked(clone!(@weak widget => move |_| {
|
|
||||||
widget.on_rate_changed(1.50);
|
|
||||||
}));
|
|
||||||
self.radio175
|
|
||||||
.connect_clicked(clone!(@weak widget => move |_| {
|
|
||||||
widget.on_rate_changed(1.75);
|
|
||||||
}));
|
|
||||||
self.radio200
|
|
||||||
.connect_clicked(clone!(@weak widget => move |_| {
|
|
||||||
widget.on_rate_changed(2.00);
|
|
||||||
}));
|
|
||||||
self.radio225
|
|
||||||
.connect_clicked(clone!(@weak widget => move |_| {
|
|
||||||
widget.on_rate_changed(2.25);
|
|
||||||
}));
|
|
||||||
self.radio250
|
|
||||||
.connect_clicked(clone!(@weak widget => move |_| {
|
|
||||||
widget.on_rate_changed(2.50);
|
|
||||||
}));
|
|
||||||
self.radio275
|
|
||||||
.connect_clicked(clone!(@weak widget => move |_| {
|
|
||||||
widget.on_rate_changed(2.75);
|
|
||||||
}));
|
|
||||||
self.radio300
|
|
||||||
.connect_clicked(clone!(@weak widget => move |_| {
|
|
||||||
widget.on_rate_changed(3.00);
|
|
||||||
}));
|
|
||||||
self.radio325
|
|
||||||
.connect_clicked(clone!(@weak widget => move |_| {
|
|
||||||
widget.on_rate_changed(3.25);
|
|
||||||
}));
|
|
||||||
self.radio350
|
|
||||||
.connect_clicked(clone!(@weak widget => move |_| {
|
|
||||||
widget.on_rate_changed(3.50);
|
|
||||||
}));
|
|
||||||
self.radio375
|
|
||||||
.connect_clicked(clone!(@weak widget => move |_| {
|
|
||||||
widget.on_rate_changed(3.75);
|
|
||||||
}));
|
|
||||||
self.radio400
|
|
||||||
.connect_clicked(clone!(@weak widget => move |_| {
|
|
||||||
widget.on_rate_changed(4.00);
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
struct PlayerControls {
|
struct PlayerControls {
|
||||||
container: gtk::Box,
|
container: gtk::Box,
|
||||||
play: gtk::Button,
|
play: gtk::Button,
|
||||||
pause: gtk::Button,
|
pause: gtk::Button,
|
||||||
play_small: gtk::Button,
|
|
||||||
pause_small: gtk::Button,
|
|
||||||
play_pause_small: gtk::Stack,
|
|
||||||
forward: gtk::Button,
|
forward: gtk::Button,
|
||||||
rewind: gtk::Button,
|
rewind: gtk::Button,
|
||||||
last_pause: RefCell<Option<DateTime<Local>>>,
|
last_pause: RefCell<Option<DateTime<Local>>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
|
||||||
struct PlayerDialog {
|
|
||||||
dialog: hdy::Dialog,
|
|
||||||
close: gtk::Button,
|
|
||||||
headerbar: hdy::HeaderBar,
|
|
||||||
cover: gtk::Image,
|
|
||||||
play_pause: gtk::Stack,
|
|
||||||
play: gtk::Button,
|
|
||||||
pause: gtk::Button,
|
|
||||||
duration: gtk::Label,
|
|
||||||
progressed: gtk::Label,
|
|
||||||
slider: gtk::Scale,
|
|
||||||
forward: gtk::Button,
|
|
||||||
rewind: gtk::Button,
|
|
||||||
rate: PlayerRate,
|
|
||||||
show: gtk::Label,
|
|
||||||
episode: gtk::Label,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl PlayerDialog {
|
|
||||||
fn new(rate: PlayerRate) -> Self {
|
|
||||||
let builder = gtk::Builder::new_from_resource("/org/gnome/Podcasts/gtk/player_dialog.ui");
|
|
||||||
let dialog = builder.get_object("dialog").unwrap();
|
|
||||||
|
|
||||||
let close = builder.get_object("close").unwrap();
|
|
||||||
let headerbar = builder.get_object("headerbar").unwrap();
|
|
||||||
let cover = builder.get_object("cover").unwrap();
|
|
||||||
let play_pause = builder.get_object("play_pause").unwrap();
|
|
||||||
let play = builder.get_object("play").unwrap();
|
|
||||||
let pause = builder.get_object("pause").unwrap();
|
|
||||||
let duration = builder.get_object("duration").unwrap();
|
|
||||||
let progressed = builder.get_object("progressed").unwrap();
|
|
||||||
let slider = builder.get_object("slider").unwrap();
|
|
||||||
let rewind = builder.get_object("rewind").unwrap();
|
|
||||||
let forward = builder.get_object("forward").unwrap();
|
|
||||||
let bottom: gtk::Box = builder.get_object("bottom").unwrap();
|
|
||||||
let show = builder.get_object("show_label").unwrap();
|
|
||||||
let episode = builder.get_object("episode_label").unwrap();
|
|
||||||
|
|
||||||
bottom.pack_start(&rate.btn, false, true, 0);
|
|
||||||
|
|
||||||
PlayerDialog {
|
|
||||||
dialog,
|
|
||||||
close,
|
|
||||||
headerbar,
|
|
||||||
cover,
|
|
||||||
play_pause,
|
|
||||||
play,
|
|
||||||
pause,
|
|
||||||
duration,
|
|
||||||
progressed,
|
|
||||||
slider,
|
|
||||||
forward,
|
|
||||||
rewind,
|
|
||||||
rate,
|
|
||||||
show,
|
|
||||||
episode,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn initialize_episode(&self, episode: &EpisodeWidgetModel, show: &ShowCoverModel) {
|
|
||||||
self.episode.set_text(episode.title());
|
|
||||||
self.show.set_text(show.title());
|
|
||||||
|
|
||||||
set_image_from_path(&self.cover, show.id(), 256)
|
|
||||||
.map_err(|err| error!("Player Cover: {}", err))
|
|
||||||
.ok();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub(crate) struct PlayerWidget {
|
pub(crate) struct PlayerWidget {
|
||||||
pub(crate) container: gtk::Box,
|
pub(crate) action_bar: gtk::ActionBar,
|
||||||
action_bar: gtk::ActionBar,
|
|
||||||
evbox: gtk::EventBox,
|
|
||||||
player: gst_player::Player,
|
player: gst_player::Player,
|
||||||
controls: PlayerControls,
|
controls: PlayerControls,
|
||||||
dialog: PlayerDialog,
|
|
||||||
full: gtk::Box,
|
|
||||||
squeezer: hdy::Squeezer,
|
|
||||||
timer: PlayerTimes,
|
timer: PlayerTimes,
|
||||||
info: PlayerInfo,
|
info: PlayerInfo,
|
||||||
rate: PlayerRate,
|
rate: PlayerRate,
|
||||||
@ -447,10 +213,6 @@ impl Default for PlayerWidget {
|
|||||||
Some(&dispatcher.upcast::<gst_player::PlayerSignalDispatcher>()),
|
Some(&dispatcher.upcast::<gst_player::PlayerSignalDispatcher>()),
|
||||||
);
|
);
|
||||||
|
|
||||||
// A few podcasts have a video track of the thumbnail, which GStreamer displays in a new
|
|
||||||
// window. Make sure it doesn't do that.
|
|
||||||
player.set_video_track_enabled(false);
|
|
||||||
|
|
||||||
let mpris = MprisPlayer::new(
|
let mpris = MprisPlayer::new(
|
||||||
APP_ID.to_string(),
|
APP_ID.to_string(),
|
||||||
"GNOME Podcasts".to_string(),
|
"GNOME Podcasts".to_string(),
|
||||||
@ -467,23 +229,18 @@ impl Default for PlayerWidget {
|
|||||||
player.set_config(config).unwrap();
|
player.set_config(config).unwrap();
|
||||||
|
|
||||||
let builder = gtk::Builder::new_from_resource("/org/gnome/Podcasts/gtk/player_toolbar.ui");
|
let builder = gtk::Builder::new_from_resource("/org/gnome/Podcasts/gtk/player_toolbar.ui");
|
||||||
|
let action_bar = builder.get_object("action_bar").unwrap();
|
||||||
|
|
||||||
let buttons = builder.get_object("buttons").unwrap();
|
let buttons = builder.get_object("buttons").unwrap();
|
||||||
let play = builder.get_object("play_button").unwrap();
|
let play = builder.get_object("play_button").unwrap();
|
||||||
let pause = builder.get_object("pause_button").unwrap();
|
let pause = builder.get_object("pause_button").unwrap();
|
||||||
let play_small = builder.get_object("play_button_small").unwrap();
|
|
||||||
let pause_small = builder.get_object("pause_button_small").unwrap();
|
|
||||||
let forward: gtk::Button = builder.get_object("ff_button").unwrap();
|
let forward: gtk::Button = builder.get_object("ff_button").unwrap();
|
||||||
let rewind: gtk::Button = builder.get_object("rewind_button").unwrap();
|
let rewind: gtk::Button = builder.get_object("rewind_button").unwrap();
|
||||||
let play_pause_small = builder.get_object("play_pause_small").unwrap();
|
|
||||||
|
|
||||||
let controls = PlayerControls {
|
let controls = PlayerControls {
|
||||||
container: buttons,
|
container: buttons,
|
||||||
play,
|
play,
|
||||||
pause,
|
pause,
|
||||||
play_small,
|
|
||||||
pause_small,
|
|
||||||
play_pause_small,
|
|
||||||
forward,
|
forward,
|
||||||
rewind,
|
rewind,
|
||||||
last_pause: RefCell::new(None),
|
last_pause: RefCell::new(None),
|
||||||
@ -497,7 +254,6 @@ impl Default for PlayerWidget {
|
|||||||
slider.set_range(0.0, 1.0);
|
slider.set_range(0.0, 1.0);
|
||||||
let player_weak = player.downgrade();
|
let player_weak = player.downgrade();
|
||||||
let slider_update = Rc::new(Self::connect_update_slider(&slider, player_weak));
|
let slider_update = Rc::new(Self::connect_update_slider(&slider, player_weak));
|
||||||
let progress_bar = builder.get_object("progress_bar").unwrap();
|
|
||||||
let timer = PlayerTimes {
|
let timer = PlayerTimes {
|
||||||
container: timer_container,
|
container: timer_container,
|
||||||
progressed,
|
progressed,
|
||||||
@ -505,50 +261,40 @@ impl Default for PlayerWidget {
|
|||||||
separator,
|
separator,
|
||||||
slider,
|
slider,
|
||||||
slider_update,
|
slider_update,
|
||||||
progress_bar,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
let labels = builder.get_object("info").unwrap();
|
let labels = builder.get_object("info").unwrap();
|
||||||
let show = builder.get_object("show_label").unwrap();
|
let show = builder.get_object("show_label").unwrap();
|
||||||
let episode = builder.get_object("episode_label").unwrap();
|
let episode = builder.get_object("episode_label").unwrap();
|
||||||
let cover = builder.get_object("show_cover").unwrap();
|
let cover = builder.get_object("show_cover").unwrap();
|
||||||
let show_small = builder.get_object("show_label_small").unwrap();
|
|
||||||
let episode_small = builder.get_object("episode_label_small").unwrap();
|
|
||||||
let cover_small = builder.get_object("show_cover_small").unwrap();
|
|
||||||
let info = PlayerInfo {
|
let info = PlayerInfo {
|
||||||
mpris,
|
mpris,
|
||||||
container: labels,
|
container: labels,
|
||||||
show,
|
show,
|
||||||
episode,
|
episode,
|
||||||
cover,
|
cover,
|
||||||
show_small,
|
|
||||||
episode_small,
|
|
||||||
cover_small,
|
|
||||||
episode_id: RefCell::new(None),
|
episode_id: RefCell::new(None),
|
||||||
};
|
};
|
||||||
info.create_bindings();
|
|
||||||
|
|
||||||
let dialog_rate = PlayerRate::new();
|
let radio150 = builder.get_object("rate_1_50").unwrap();
|
||||||
let dialog = PlayerDialog::new(dialog_rate);
|
let radio125 = builder.get_object("rate_1_25").unwrap();
|
||||||
|
let radio_normal = builder.get_object("normal_rate").unwrap();
|
||||||
let container = builder.get_object("container").unwrap();
|
let popover = builder.get_object("rate_popover").unwrap();
|
||||||
let action_bar: gtk::ActionBar = builder.get_object("action_bar").unwrap();
|
let btn = builder.get_object("rate_button").unwrap();
|
||||||
let evbox = builder.get_object("evbox").unwrap();
|
let label = builder.get_object("rate_label").unwrap();
|
||||||
let full: gtk::Box = builder.get_object("full").unwrap();
|
let rate = PlayerRate {
|
||||||
let squeezer = builder.get_object("squeezer").unwrap();
|
radio150,
|
||||||
|
radio125,
|
||||||
let rate = PlayerRate::new();
|
radio_normal,
|
||||||
full.pack_end(&rate.btn, false, true, 0);
|
popover,
|
||||||
|
label,
|
||||||
|
btn,
|
||||||
|
};
|
||||||
|
|
||||||
PlayerWidget {
|
PlayerWidget {
|
||||||
player,
|
player,
|
||||||
container,
|
|
||||||
action_bar,
|
action_bar,
|
||||||
evbox,
|
|
||||||
controls,
|
controls,
|
||||||
dialog,
|
|
||||||
full,
|
|
||||||
squeezer,
|
|
||||||
timer,
|
timer,
|
||||||
info,
|
info,
|
||||||
rate,
|
rate,
|
||||||
@ -559,8 +305,7 @@ impl Default for PlayerWidget {
|
|||||||
impl PlayerWidget {
|
impl PlayerWidget {
|
||||||
fn on_rate_changed(&self, rate: f64) {
|
fn on_rate_changed(&self, rate: f64) {
|
||||||
self.set_playback_rate(rate);
|
self.set_playback_rate(rate);
|
||||||
self.rate.set_rate(rate);
|
self.rate.label.set_text(&format!("{:.2}×", rate));
|
||||||
self.dialog.rate.set_rate(rate);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn reveal(&self) {
|
fn reveal(&self) {
|
||||||
@ -571,8 +316,6 @@ impl PlayerWidget {
|
|||||||
let ep = dbqueries::get_episode_widget_from_rowid(rowid)?;
|
let ep = dbqueries::get_episode_widget_from_rowid(rowid)?;
|
||||||
let pd = dbqueries::get_podcast_cover_from_id(ep.show_id())?;
|
let pd = dbqueries::get_podcast_cover_from_id(ep.show_id())?;
|
||||||
|
|
||||||
self.dialog.initialize_episode(&ep, &pd);
|
|
||||||
|
|
||||||
self.info.init(&ep, &pd);
|
self.info.init(&ep, &pd);
|
||||||
// Currently that will always be the case since the play button is
|
// Currently that will always be the case since the play button is
|
||||||
// only shown if the file is downloaded
|
// only shown if the file is downloaded
|
||||||
@ -584,10 +327,8 @@ impl PlayerWidget {
|
|||||||
let uri = File::new_for_path(path).get_uri();
|
let uri = File::new_for_path(path).get_uri();
|
||||||
// play the file
|
// play the file
|
||||||
self.player.set_uri(uri.as_str());
|
self.player.set_uri(uri.as_str());
|
||||||
self.rate.set_rate(1.0);
|
self.rate.radio_normal.set_active(true);
|
||||||
self.dialog.rate.set_rate(1.0);
|
|
||||||
self.play();
|
self.play();
|
||||||
|
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
// TODO: log an error
|
// TODO: log an error
|
||||||
@ -646,15 +387,10 @@ impl PlayerWidget {
|
|||||||
|
|
||||||
impl PlayerExt for PlayerWidget {
|
impl PlayerExt for PlayerWidget {
|
||||||
fn play(&self) {
|
fn play(&self) {
|
||||||
self.dialog.play_pause.set_visible_child(&self.dialog.pause);
|
|
||||||
|
|
||||||
self.reveal();
|
self.reveal();
|
||||||
|
|
||||||
self.controls.pause.show();
|
self.controls.pause.show();
|
||||||
self.controls.play.hide();
|
self.controls.play.hide();
|
||||||
self.controls
|
|
||||||
.play_pause_small
|
|
||||||
.set_visible_child(&self.controls.pause_small);
|
|
||||||
|
|
||||||
self.smart_rewind();
|
self.smart_rewind();
|
||||||
self.player.play();
|
self.player.play();
|
||||||
@ -662,13 +398,8 @@ impl PlayerExt for PlayerWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn pause(&self) {
|
fn pause(&self) {
|
||||||
self.dialog.play_pause.set_visible_child(&self.dialog.play);
|
|
||||||
|
|
||||||
self.controls.pause.hide();
|
self.controls.pause.hide();
|
||||||
self.controls.play.show();
|
self.controls.play.show();
|
||||||
self.controls
|
|
||||||
.play_pause_small
|
|
||||||
.set_visible_child(&self.controls.play_small);
|
|
||||||
|
|
||||||
self.player.pause();
|
self.player.pause();
|
||||||
self.info.mpris.set_playback_status(PlaybackStatus::Paused);
|
self.info.mpris.set_playback_status(PlaybackStatus::Paused);
|
||||||
@ -678,7 +409,6 @@ impl PlayerExt for PlayerWidget {
|
|||||||
|
|
||||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
#[cfg_attr(rustfmt, rustfmt_skip)]
|
||||||
fn stop(&self) {
|
fn stop(&self) {
|
||||||
|
|
||||||
self.controls.pause.hide();
|
self.controls.pause.hide();
|
||||||
self.controls.play.show();
|
self.controls.play.show();
|
||||||
|
|
||||||
@ -761,142 +491,36 @@ impl PlayerWrapper {
|
|||||||
self.connect_rate_buttons();
|
self.connect_rate_buttons();
|
||||||
self.connect_mpris_buttons(sender);
|
self.connect_mpris_buttons(sender);
|
||||||
self.connect_gst_signals(sender);
|
self.connect_gst_signals(sender);
|
||||||
self.connect_dialog();
|
|
||||||
}
|
|
||||||
|
|
||||||
fn connect_dialog(&self) {
|
|
||||||
let this = self.deref();
|
|
||||||
self.squeezer
|
|
||||||
.connect_property_visible_child_notify(clone!(@weak this => move |_| {
|
|
||||||
if let Some(child) = this.squeezer.get_visible_child() {
|
|
||||||
let full = child == this.full;
|
|
||||||
this.timer.progress_bar.set_visible(!full);
|
|
||||||
if full {
|
|
||||||
this.action_bar.get_style_context().remove_class("player-small");
|
|
||||||
} else {
|
|
||||||
this.action_bar.get_style_context().add_class("player-small");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
|
|
||||||
self.timer
|
|
||||||
.duration
|
|
||||||
.bind_property("label", &self.dialog.duration, "label")
|
|
||||||
.flags(glib::BindingFlags::SYNC_CREATE)
|
|
||||||
.build();
|
|
||||||
self.timer
|
|
||||||
.progressed
|
|
||||||
.bind_property("label", &self.dialog.progressed, "label")
|
|
||||||
.flags(glib::BindingFlags::SYNC_CREATE)
|
|
||||||
.build();
|
|
||||||
self.dialog
|
|
||||||
.slider
|
|
||||||
.set_adjustment(&self.timer.slider.get_adjustment());
|
|
||||||
|
|
||||||
self.evbox.connect_button_press_event(
|
|
||||||
clone!(@weak this => @default-return Inhibit(false), move |_, event| {
|
|
||||||
if event.get_button() != 1 {
|
|
||||||
return Inhibit(false);
|
|
||||||
}
|
|
||||||
// only open the dialog when the small toolbar is visible
|
|
||||||
if let Some(child) = this.squeezer.get_visible_child() {
|
|
||||||
if child == this.full {
|
|
||||||
return Inhibit(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let parent = this.container.get_toplevel().and_then(|toplevel| {
|
|
||||||
toplevel
|
|
||||||
.downcast::<gtk::Window>()
|
|
||||||
.ok()
|
|
||||||
}).unwrap();
|
|
||||||
|
|
||||||
info!("showing dialog");
|
|
||||||
this.dialog.dialog.set_transient_for(Some(&parent));
|
|
||||||
this.dialog.dialog.show();
|
|
||||||
|
|
||||||
Inhibit(false)
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
|
|
||||||
self.dialog
|
|
||||||
.close
|
|
||||||
.connect_clicked(clone!(@weak this => move |_| {
|
|
||||||
this.dialog.dialog.hide();
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Connect the `PlayerControls` buttons to the `PlayerExt` methods.
|
/// Connect the `PlayerControls` buttons to the `PlayerExt` methods.
|
||||||
fn connect_control_buttons(&self) {
|
fn connect_control_buttons(&self) {
|
||||||
let this = self.deref();
|
let weak = Rc::downgrade(self);
|
||||||
|
|
||||||
// Connect the play button to the gst Player.
|
// Connect the play button to the gst Player.
|
||||||
self.controls
|
self.controls.play.connect_clicked(clone!(weak => move |_| {
|
||||||
.play
|
weak.upgrade().map(|p| p.play());
|
||||||
.connect_clicked(clone!(@weak this => move |_| {
|
}));
|
||||||
this.play();
|
|
||||||
}));
|
|
||||||
|
|
||||||
// Connect the pause button to the gst Player.
|
// Connect the pause button to the gst Player.
|
||||||
self.controls
|
self.controls
|
||||||
.pause
|
.pause
|
||||||
.connect_clicked(clone!(@weak this => move |_| {
|
.connect_clicked(clone!(weak => move |_| {
|
||||||
this.pause();
|
weak.upgrade().map(|p| p.pause());
|
||||||
}));
|
|
||||||
|
|
||||||
// Connect the play button to the gst Player.
|
|
||||||
self.controls
|
|
||||||
.play_small
|
|
||||||
.connect_clicked(clone!(@weak this => move |_| {
|
|
||||||
this.play();
|
|
||||||
}));
|
|
||||||
|
|
||||||
// Connect the pause button to the gst Player.
|
|
||||||
self.controls
|
|
||||||
.pause_small
|
|
||||||
.connect_clicked(clone!(@weak this => move |_| {
|
|
||||||
this.pause();
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Connect the rewind button to the gst Player.
|
// Connect the rewind button to the gst Player.
|
||||||
self.controls
|
self.controls
|
||||||
.rewind
|
.rewind
|
||||||
.connect_clicked(clone!(@weak this => move |_| {
|
.connect_clicked(clone!(weak => move |_| {
|
||||||
this.rewind();
|
weak.upgrade().map(|p| p.rewind());
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Connect the fast-forward button to the gst Player.
|
// Connect the fast-forward button to the gst Player.
|
||||||
self.controls
|
self.controls
|
||||||
.forward
|
.forward
|
||||||
.connect_clicked(clone!(@weak this => move |_| {
|
.connect_clicked(clone!(weak => move |_| {
|
||||||
this.fast_forward();
|
weak.upgrade().map(|p| p.fast_forward());
|
||||||
}));
|
|
||||||
|
|
||||||
// Connect the play button to the gst Player.
|
|
||||||
self.dialog
|
|
||||||
.play
|
|
||||||
.connect_clicked(clone!(@weak this => move |_| {
|
|
||||||
this.play();
|
|
||||||
}));
|
|
||||||
|
|
||||||
// Connect the pause button to the gst Player.
|
|
||||||
self.dialog
|
|
||||||
.pause
|
|
||||||
.connect_clicked(clone!(@weak this => move |_| {
|
|
||||||
this.pause();
|
|
||||||
}));
|
|
||||||
|
|
||||||
// Connect the rewind button to the gst Player.
|
|
||||||
self.dialog
|
|
||||||
.rewind
|
|
||||||
.connect_clicked(clone!(@weak this => move |_| {
|
|
||||||
this.rewind();
|
|
||||||
}));
|
|
||||||
|
|
||||||
// Connect the fast-forward button to the gst Player.
|
|
||||||
self.dialog
|
|
||||||
.forward
|
|
||||||
.connect_clicked(clone!(@weak this => move |_| {
|
|
||||||
this.fast_forward();
|
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -906,7 +530,7 @@ impl PlayerWrapper {
|
|||||||
self.player.connect_warning(move |_, warn| warn!("gst warning: {}", warn));
|
self.player.connect_warning(move |_, warn| warn!("gst warning: {}", warn));
|
||||||
|
|
||||||
// Log gst errors.
|
// Log gst errors.
|
||||||
self.player.connect_error(clone!(@strong sender => move |_, _error| {
|
self.player.connect_error(clone!(sender => move |_, _error| {
|
||||||
// sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
// sender.send(Action::ErrorNotification(format!("Player Error: {}", error)));
|
||||||
let s = i18n("The media player was unable to execute an action.");
|
let s = i18n("The media player was unable to execute an action.");
|
||||||
sender.send(Action::ErrorNotification(s)).expect("Action channel blew up somehow");
|
sender.send(Action::ErrorNotification(s)).expect("Action channel blew up somehow");
|
||||||
@ -916,21 +540,21 @@ impl PlayerWrapper {
|
|||||||
let weak = Fragile::new(Rc::downgrade(self));
|
let weak = Fragile::new(Rc::downgrade(self));
|
||||||
|
|
||||||
// Update the duration label and the slider
|
// Update the duration label and the slider
|
||||||
self.player.connect_duration_changed(clone!(@strong weak => move |_, clock| {
|
self.player.connect_duration_changed(clone!(weak => move |_, clock| {
|
||||||
weak.get()
|
weak.get()
|
||||||
.upgrade()
|
.upgrade()
|
||||||
.map(|p| p.timer.on_duration_changed(Duration(clock)));
|
.map(|p| p.timer.on_duration_changed(Duration(clock)));
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Update the position label and the slider
|
// Update the position label and the slider
|
||||||
self.player.connect_position_updated(clone!(@strong weak => move |_, clock| {
|
self.player.connect_position_updated(clone!(weak => move |_, clock| {
|
||||||
weak.get()
|
weak.get()
|
||||||
.upgrade()
|
.upgrade()
|
||||||
.map(|p| p.timer.on_position_updated(Position(clock)));
|
.map(|p| p.timer.on_position_updated(Position(clock)));
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Reset the slider to 0 and show a play button
|
// Reset the slider to 0 and show a play button
|
||||||
self.player.connect_end_of_stream(clone!(@strong weak => move |_| {
|
self.player.connect_end_of_stream(clone!(weak => move |_| {
|
||||||
weak.get()
|
weak.get()
|
||||||
.upgrade()
|
.upgrade()
|
||||||
.map(|p| p.stop());
|
.map(|p| p.stop());
|
||||||
@ -939,8 +563,25 @@ impl PlayerWrapper {
|
|||||||
|
|
||||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
#[cfg_attr(rustfmt, rustfmt_skip)]
|
||||||
fn connect_rate_buttons(&self) {
|
fn connect_rate_buttons(&self) {
|
||||||
self.rate.connect_signals(self);
|
let weak = Rc::downgrade(self);
|
||||||
self.dialog.rate.connect_signals(self);
|
|
||||||
|
self.rate
|
||||||
|
.radio_normal
|
||||||
|
.connect_toggled(clone!(weak => move |_| {
|
||||||
|
weak.upgrade().map(|p| p.on_rate_changed(1.00));
|
||||||
|
}));
|
||||||
|
|
||||||
|
self.rate
|
||||||
|
.radio125
|
||||||
|
.connect_toggled(clone!(weak => move |_| {
|
||||||
|
weak.upgrade().map(|p| p.on_rate_changed(1.25));
|
||||||
|
}));
|
||||||
|
|
||||||
|
self.rate
|
||||||
|
.radio150
|
||||||
|
.connect_toggled(clone!(weak => move |_| {
|
||||||
|
weak.upgrade().map(|p| p.on_rate_changed(1.50));
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn connect_mpris_buttons(&self, sender: &Sender<Action>) {
|
fn connect_mpris_buttons(&self, sender: &Sender<Action>) {
|
||||||
@ -948,60 +589,49 @@ impl PlayerWrapper {
|
|||||||
|
|
||||||
// FIXME: Reference cycle with mpris
|
// FIXME: Reference cycle with mpris
|
||||||
let mpris = self.info.mpris.clone();
|
let mpris = self.info.mpris.clone();
|
||||||
self.info
|
self.info.mpris.connect_play_pause(clone!(weak => move || {
|
||||||
.mpris
|
let player = match weak.upgrade() {
|
||||||
.connect_play_pause(clone!(@strong weak => move || {
|
Some(s) => s,
|
||||||
let player = match weak.upgrade() {
|
None => return
|
||||||
Some(s) => s,
|
};
|
||||||
None => return
|
|
||||||
|
if let Ok(status) = mpris.get_playback_status() {
|
||||||
|
match status.as_ref() {
|
||||||
|
"Paused" => player.play(),
|
||||||
|
"Stopped" => player.play(),
|
||||||
|
_ => player.pause(),
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
if let Ok(status) = mpris.get_playback_status() {
|
self.info.mpris.connect_play(clone!(weak => move || {
|
||||||
match status.as_ref() {
|
let player = match weak.upgrade() {
|
||||||
"Paused" => player.play(),
|
Some(s) => s,
|
||||||
"Stopped" => player.play(),
|
None => return
|
||||||
_ => player.pause(),
|
};
|
||||||
};
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
self.info
|
|
||||||
.mpris
|
|
||||||
.connect_play(clone!(@strong weak => move || {
|
|
||||||
let player = match weak.upgrade() {
|
|
||||||
Some(s) => s,
|
|
||||||
None => return
|
|
||||||
};
|
|
||||||
|
|
||||||
player.play();
|
player.play();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
self.info
|
self.info.mpris.connect_pause(clone!(weak => move || {
|
||||||
.mpris
|
let player = match weak.upgrade() {
|
||||||
.connect_pause(clone!(@strong weak => move || {
|
Some(s) => s,
|
||||||
let player = match weak.upgrade() {
|
None => return
|
||||||
Some(s) => s,
|
};
|
||||||
None => return
|
|
||||||
};
|
|
||||||
|
|
||||||
player.pause();
|
player.pause();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
self.info
|
self.info.mpris.connect_next(clone!(weak => move || {
|
||||||
.mpris
|
weak.upgrade().map(|p| p.fast_forward());
|
||||||
.connect_next(clone!(@strong weak => move || {
|
}));
|
||||||
weak.upgrade().map(|p| p.fast_forward());
|
|
||||||
}));
|
|
||||||
|
|
||||||
self.info
|
self.info.mpris.connect_previous(clone!(weak => move || {
|
||||||
.mpris
|
weak.upgrade().map(|p| p.rewind());
|
||||||
.connect_previous(clone!(@strong weak => move || {
|
}));
|
||||||
weak.upgrade().map(|p| p.rewind());
|
|
||||||
}));
|
|
||||||
|
|
||||||
self.info
|
self.info.mpris.connect_raise(clone!(sender => move || {
|
||||||
.mpris
|
sender.send(Action::RaiseWindow).expect("Action channel blew up somehow");
|
||||||
.connect_raise(clone!(@strong sender => move || {
|
}));
|
||||||
sender.send(Action::RaiseWindow).expect("Action channel blew up somehow");
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,7 +18,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
use glib;
|
use glib;
|
||||||
use glib::clone;
|
|
||||||
use gtk::{self, prelude::*, Adjustment};
|
use gtk::{self, prelude::*, Adjustment};
|
||||||
|
|
||||||
use crossbeam_channel::{bounded, Sender};
|
use crossbeam_channel::{bounded, Sender};
|
||||||
@ -44,10 +43,6 @@ pub(crate) struct ShowWidget {
|
|||||||
pub(crate) view: BaseView,
|
pub(crate) view: BaseView,
|
||||||
cover: gtk::Image,
|
cover: gtk::Image,
|
||||||
description: gtk::Label,
|
description: gtk::Label,
|
||||||
description_short: gtk::Label,
|
|
||||||
description_stack: gtk::Stack,
|
|
||||||
description_button: gtk::Button,
|
|
||||||
description_button_revealer: gtk::Revealer,
|
|
||||||
episodes: gtk::ListBox,
|
episodes: gtk::ListBox,
|
||||||
show_id: Option<i32>,
|
show_id: Option<i32>,
|
||||||
}
|
}
|
||||||
@ -58,11 +53,6 @@ impl Default for ShowWidget {
|
|||||||
let sub_cont: gtk::Box = builder.get_object("sub_container").unwrap();
|
let sub_cont: gtk::Box = builder.get_object("sub_container").unwrap();
|
||||||
let cover: gtk::Image = builder.get_object("cover").unwrap();
|
let cover: gtk::Image = builder.get_object("cover").unwrap();
|
||||||
let description: gtk::Label = builder.get_object("description").unwrap();
|
let description: gtk::Label = builder.get_object("description").unwrap();
|
||||||
let description_short: gtk::Label = builder.get_object("description_short").unwrap();
|
|
||||||
let description_stack: gtk::Stack = builder.get_object("description_stack").unwrap();
|
|
||||||
let description_button: gtk::Button = builder.get_object("description_button").unwrap();
|
|
||||||
let description_button_revealer =
|
|
||||||
builder.get_object("description_button_revealer").unwrap();
|
|
||||||
let episodes = builder.get_object("episodes").unwrap();
|
let episodes = builder.get_object("episodes").unwrap();
|
||||||
let view = BaseView::default();
|
let view = BaseView::default();
|
||||||
|
|
||||||
@ -81,10 +71,6 @@ impl Default for ShowWidget {
|
|||||||
view,
|
view,
|
||||||
cover,
|
cover,
|
||||||
description,
|
description,
|
||||||
description_short,
|
|
||||||
description_stack,
|
|
||||||
description_button,
|
|
||||||
description_button_revealer,
|
|
||||||
episodes,
|
episodes,
|
||||||
show_id: None,
|
show_id: None,
|
||||||
}
|
}
|
||||||
@ -109,16 +95,6 @@ impl ShowWidget {
|
|||||||
let res = populate_listbox(&pdw, pd.clone(), sender, vadj);
|
let res = populate_listbox(&pdw, pd.clone(), sender, vadj);
|
||||||
debug_assert!(res.is_ok());
|
debug_assert!(res.is_ok());
|
||||||
|
|
||||||
pdw.description_short
|
|
||||||
.connect_size_allocate(clone!(@weak pdw => move |_, _2| {
|
|
||||||
pdw.update_read_more();
|
|
||||||
}));
|
|
||||||
|
|
||||||
pdw.description_button
|
|
||||||
.connect_clicked(clone!(@weak pdw => move |_| {
|
|
||||||
pdw.description_stack.set_visible_child_name("full");
|
|
||||||
}));
|
|
||||||
|
|
||||||
pdw
|
pdw
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -135,31 +111,10 @@ impl ShowWidget {
|
|||||||
utils::set_image_from_path(&self.cover, pd.id(), 256)
|
utils::set_image_from_path(&self.cover, pd.id(), 256)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn update_read_more(&self) {
|
|
||||||
if let Some(layout) = self.description_short.get_layout() {
|
|
||||||
let more = layout.is_ellipsized()
|
|
||||||
|| self.description.get_label() != self.description_short.get_label();
|
|
||||||
self.description_button_revealer.set_reveal_child(more);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Set the description text.
|
/// Set the description text.
|
||||||
fn set_description(&self, text: &str) {
|
fn set_description(&self, text: &str) {
|
||||||
let markup = html2text::from_read(text.as_bytes(), text.as_bytes().len());
|
self.description
|
||||||
let markup = markup.trim();
|
.set_markup(html2text::from_read(text.as_bytes(), 80).trim());
|
||||||
let lines: Vec<&str> = markup.lines().collect();
|
|
||||||
|
|
||||||
if markup.is_empty() {
|
|
||||||
self.description_stack.set_visible(false);
|
|
||||||
} else {
|
|
||||||
self.description_stack.set_visible(true);
|
|
||||||
|
|
||||||
self.description.set_markup(markup);
|
|
||||||
debug_assert!(lines.len() > 0);
|
|
||||||
if lines.len() > 0 {
|
|
||||||
self.description_short.set_markup(lines[0]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn show_id(&self) -> Option<i32> {
|
pub(crate) fn show_id(&self) -> Option<i32> {
|
||||||
@ -179,7 +134,7 @@ fn populate_listbox(
|
|||||||
let count = dbqueries::get_pd_episodes_count(&pd)?;
|
let count = dbqueries::get_pd_episodes_count(&pd)?;
|
||||||
|
|
||||||
let (sender_, receiver) = bounded(1);
|
let (sender_, receiver) = bounded(1);
|
||||||
rayon::spawn(clone!(@strong pd => move || {
|
rayon::spawn(clone!(pd => move || {
|
||||||
if let Ok(episodes) = dbqueries::get_pd_episodeswidgets(&pd) {
|
if let Ok(episodes) = dbqueries::get_pd_episodeswidgets(&pd) {
|
||||||
// The receiver can be dropped if there's an early return
|
// The receiver can be dropped if there's an early return
|
||||||
// like on show without episodes for example.
|
// like on show without episodes for example.
|
||||||
@ -204,13 +159,13 @@ fn populate_listbox(
|
|||||||
|
|
||||||
debug_assert!(episodes.len() as i64 == count);
|
debug_assert!(episodes.len() as i64 == count);
|
||||||
|
|
||||||
let constructor = clone!(@strong sender => move |ep| {
|
let constructor = clone!(sender => move |ep| {
|
||||||
EpisodeWidget::new(ep, &sender).container.clone()
|
EpisodeWidget::new(ep, &sender).container.clone()
|
||||||
});
|
});
|
||||||
|
|
||||||
let callback = clone!(@strong show_weak, @strong vadj => move || {
|
let callback = clone!(show_weak, vadj => move || {
|
||||||
match (show_weak.upgrade(), &vadj) {
|
match (show_weak.upgrade(), &vadj) {
|
||||||
(Some(ref shows), Some(ref v)) => shows.view.set_adjustments(None, Some(v)),
|
(Some(ref shows), Some(ref v)) => shows.view.set_adjutments(None, Some(v)),
|
||||||
_ => (),
|
_ => (),
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@ -18,7 +18,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
use glib;
|
use glib;
|
||||||
use glib::clone;
|
|
||||||
use gtk;
|
use gtk;
|
||||||
use gtk::prelude::*;
|
use gtk::prelude::*;
|
||||||
|
|
||||||
@ -79,7 +78,7 @@ impl ShowMenu {
|
|||||||
|
|
||||||
fn connect_website(&self, pd: &Arc<Show>) {
|
fn connect_website(&self, pd: &Arc<Show>) {
|
||||||
self.website.set_tooltip_text(Some(pd.link()));
|
self.website.set_tooltip_text(Some(pd.link()));
|
||||||
self.website.connect_clicked(clone!(@strong pd => move |_| {
|
self.website.connect_clicked(clone!(pd => move |_| {
|
||||||
let link = pd.link();
|
let link = pd.link();
|
||||||
info!("Opening link: {}", link);
|
info!("Opening link: {}", link);
|
||||||
let res = open::that(link);
|
let res = open::that(link);
|
||||||
@ -88,7 +87,13 @@ impl ShowMenu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn connect_played(&self, pd: &Arc<Show>, episodes: >k::ListBox, sender: &Sender<Action>) {
|
fn connect_played(&self, pd: &Arc<Show>, episodes: >k::ListBox, sender: &Sender<Action>) {
|
||||||
self.played.connect_clicked(clone!(@strong pd, @strong sender, @weak episodes => move |_| {
|
let episodes_weak = episodes.downgrade();
|
||||||
|
self.played.connect_clicked(clone!(pd, sender => move |_| {
|
||||||
|
let episodes = match episodes_weak.upgrade() {
|
||||||
|
Some(e) => e,
|
||||||
|
None => return,
|
||||||
|
};
|
||||||
|
|
||||||
let res = dim_titles(&episodes);
|
let res = dim_titles(&episodes);
|
||||||
debug_assert!(res.is_some());
|
debug_assert!(res.is_some());
|
||||||
|
|
||||||
@ -98,7 +103,7 @@ impl ShowMenu {
|
|||||||
|
|
||||||
fn connect_unsub(&self, pd: &Arc<Show>, sender: &Sender<Action>) {
|
fn connect_unsub(&self, pd: &Arc<Show>, sender: &Sender<Action>) {
|
||||||
self.unsub
|
self.unsub
|
||||||
.connect_clicked(clone!(@strong pd, @strong sender => move |unsub| {
|
.connect_clicked(clone!(pd, sender => move |unsub| {
|
||||||
// hack to get away without properly checking for none.
|
// hack to get away without properly checking for none.
|
||||||
// if pressed twice would panic.
|
// if pressed twice would panic.
|
||||||
unsub.set_sensitive(false);
|
unsub.set_sensitive(false);
|
||||||
@ -168,7 +173,7 @@ pub(crate) fn mark_all_notif(pd: Arc<Show>, sender: &Sender<Action>) -> InAppNot
|
|||||||
glib::Continue(false)
|
glib::Continue(false)
|
||||||
};
|
};
|
||||||
|
|
||||||
let undo_callback = clone!(@strong sender => move || {
|
let undo_callback = clone!(sender => move || {
|
||||||
sender.send(Action::RefreshWidgetIfSame(id)).expect("Action channel blew up somehow")
|
sender.send(Action::RefreshWidgetIfSame(id)).expect("Action channel blew up somehow")
|
||||||
});
|
});
|
||||||
let text = i18n("Marked all episodes as listened");
|
let text = i18n("Marked all episodes as listened");
|
||||||
@ -184,11 +189,11 @@ pub(crate) fn remove_show_notif(pd: Arc<Show>, sender: Sender<Action>) -> InAppN
|
|||||||
let sender_ = sender.clone();
|
let sender_ = sender.clone();
|
||||||
let pd_ = pd.clone();
|
let pd_ = pd.clone();
|
||||||
let callback = move |revealer: gtk::Revealer| {
|
let callback = move |revealer: gtk::Revealer| {
|
||||||
let res = utils::unignore_show(pd_.id());
|
let res = utils::uningore_show(pd_.id());
|
||||||
debug_assert!(res.is_ok());
|
debug_assert!(res.is_ok());
|
||||||
|
|
||||||
// Spawn a thread so it won't block the ui.
|
// Spawn a thread so it won't block the ui.
|
||||||
rayon::spawn(clone!(@strong pd_, @strong sender_ => move || {
|
rayon::spawn(clone!(pd_, sender_ => move || {
|
||||||
delete_show(&pd_)
|
delete_show(&pd_)
|
||||||
.map_err(|err| error!("Error: {}", err))
|
.map_err(|err| error!("Error: {}", err))
|
||||||
.map_err(|_| error!("Failed to delete {}", pd_.title()))
|
.map_err(|_| error!("Failed to delete {}", pd_.title()))
|
||||||
@ -202,7 +207,7 @@ pub(crate) fn remove_show_notif(pd: Arc<Show>, sender: Sender<Action>) -> InAppN
|
|||||||
};
|
};
|
||||||
|
|
||||||
let undo_callback = move || {
|
let undo_callback = move || {
|
||||||
let res = utils::unignore_show(pd.id());
|
let res = utils::uningore_show(pd.id());
|
||||||
debug_assert!(res.is_ok());
|
debug_assert!(res.is_ok());
|
||||||
sender
|
sender
|
||||||
.send(Action::RefreshShowsView)
|
.send(Action::RefreshShowsView)
|
||||||
|
|||||||
@ -17,7 +17,6 @@
|
|||||||
//
|
//
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
use glib::clone;
|
|
||||||
use gtk::{self, prelude::*, Adjustment, Align, SelectionMode};
|
use gtk::{self, prelude::*, Adjustment, Align, SelectionMode};
|
||||||
|
|
||||||
use crossbeam_channel::Sender;
|
use crossbeam_channel::Sender;
|
||||||
@ -84,14 +83,16 @@ impl ShowsView {
|
|||||||
fn populate_flowbox(shows: &Rc<ShowsView>, vadj: Option<Adjustment>) -> Result<(), Error> {
|
fn populate_flowbox(shows: &Rc<ShowsView>, vadj: Option<Adjustment>) -> Result<(), Error> {
|
||||||
let ignore = get_ignored_shows()?;
|
let ignore = get_ignored_shows()?;
|
||||||
let podcasts = dbqueries::get_podcasts_filter(&ignore)?;
|
let podcasts = dbqueries::get_podcasts_filter(&ignore)?;
|
||||||
|
let show_weak = Rc::downgrade(&shows);
|
||||||
let flowbox_weak = shows.flowbox.downgrade();
|
let flowbox_weak = shows.flowbox.downgrade();
|
||||||
|
|
||||||
let constructor = move |parent| ShowsChild::new(&parent).child;
|
let constructor = move |parent| ShowsChild::new(&parent).child;
|
||||||
let callback = clone!(@weak shows => move || {
|
let callback = move || {
|
||||||
if vadj.is_some() {
|
match (show_weak.upgrade(), &vadj) {
|
||||||
shows.view.set_adjustments(None, vadj.as_ref())
|
(Some(ref shows), Some(ref v)) => shows.view.set_adjutments(None, Some(v)),
|
||||||
}
|
_ => (),
|
||||||
});
|
};
|
||||||
|
};
|
||||||
|
|
||||||
lazy_load(podcasts, flowbox_weak, constructor, callback);
|
lazy_load(podcasts, flowbox_weak, constructor, callback);
|
||||||
Ok(())
|
Ok(())
|
||||||
@ -99,8 +100,7 @@ fn populate_flowbox(shows: &Rc<ShowsView>, vadj: Option<Adjustment>) -> Result<(
|
|||||||
|
|
||||||
fn on_child_activate(child: >k::FlowBoxChild, sender: &Sender<Action>) -> Result<(), Error> {
|
fn on_child_activate(child: >k::FlowBoxChild, sender: &Sender<Action>) -> Result<(), Error> {
|
||||||
// This is such an ugly hack...
|
// This is such an ugly hack...
|
||||||
let id = child
|
let id = WidgetExt::get_name(child)
|
||||||
.get_widget_name()
|
|
||||||
.ok_or_else(|| format_err!("Failed to get \"episodes\" child from the stack."))?
|
.ok_or_else(|| format_err!("Failed to get \"episodes\" child from the stack."))?
|
||||||
.parse::<i32>()?;
|
.parse::<i32>()?;
|
||||||
let pd = Arc::new(dbqueries::get_podcast_from_id(id)?);
|
let pd = Arc::new(dbqueries::get_podcast_from_id(id)?);
|
||||||
@ -148,7 +148,7 @@ impl ShowsChild {
|
|||||||
|
|
||||||
fn init(&self, pd: &Show) {
|
fn init(&self, pd: &Show) {
|
||||||
self.child.set_tooltip_text(Some(pd.title()));
|
self.child.set_tooltip_text(Some(pd.title()));
|
||||||
self.child.set_widget_name(&pd.id().to_string());
|
WidgetExt::set_name(&self.child, &pd.id().to_string());
|
||||||
|
|
||||||
self.set_cover(pd.id())
|
self.set_cover(pd.id())
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,7 +18,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
use glib;
|
use glib;
|
||||||
use glib::clone;
|
|
||||||
use glib::Variant;
|
use glib::Variant;
|
||||||
|
|
||||||
use gio::{self, prelude::*, ActionMapExt, SettingsExt};
|
use gio::{self, prelude::*, ActionMapExt, SettingsExt};
|
||||||
@ -37,7 +36,7 @@ use crate::widgets::about_dialog;
|
|||||||
use crate::widgets::appnotif::InAppNotification;
|
use crate::widgets::appnotif::InAppNotification;
|
||||||
use crate::widgets::player;
|
use crate::widgets::player;
|
||||||
|
|
||||||
use std::cell::{Cell, RefCell};
|
use std::cell::RefCell;
|
||||||
use std::ops::Deref;
|
use std::ops::Deref;
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
|
|
||||||
@ -48,7 +47,7 @@ use crate::i18n::i18n;
|
|||||||
fn action<T, F>(thing: &T, name: &str, action: F)
|
fn action<T, F>(thing: &T, name: &str, action: F)
|
||||||
where
|
where
|
||||||
T: ActionMapExt,
|
T: ActionMapExt,
|
||||||
F: Fn(&gio::SimpleAction, Option<&Variant>) + 'static,
|
for<'r, 's> F: Fn(&'r gio::SimpleAction, Option<&Variant>) + 'static,
|
||||||
{
|
{
|
||||||
// Create a stateless, parameterless action
|
// Create a stateless, parameterless action
|
||||||
let act = gio::SimpleAction::new(name, None);
|
let act = gio::SimpleAction::new(name, None);
|
||||||
@ -66,7 +65,6 @@ pub struct MainWindow {
|
|||||||
pub(crate) content: Rc<Content>,
|
pub(crate) content: Rc<Content>,
|
||||||
pub(crate) headerbar: Rc<Header>,
|
pub(crate) headerbar: Rc<Header>,
|
||||||
pub(crate) player: player::PlayerWrapper,
|
pub(crate) player: player::PlayerWrapper,
|
||||||
pub(crate) updating: Cell<bool>,
|
|
||||||
pub(crate) updater: RefCell<Option<InAppNotification>>,
|
pub(crate) updater: RefCell<Option<InAppNotification>>,
|
||||||
pub(crate) sender: Sender<Action>,
|
pub(crate) sender: Sender<Action>,
|
||||||
pub(crate) receiver: Receiver<Action>,
|
pub(crate) receiver: Receiver<Action>,
|
||||||
@ -84,17 +82,27 @@ impl MainWindow {
|
|||||||
window.get_style_context().add_class("devel");
|
window.get_style_context().add_class("devel");
|
||||||
}
|
}
|
||||||
|
|
||||||
window.connect_delete_event(
|
let weak_s = settings.downgrade();
|
||||||
clone!(@strong settings, @weak app => @default-return Inhibit(false), move |window, _| {
|
let weak_app = app.downgrade();
|
||||||
info!("Saving window position");
|
window.connect_delete_event(move |window, _| {
|
||||||
WindowGeometry::from_window(&window).write(&settings);
|
let app = match weak_app.upgrade() {
|
||||||
|
Some(a) => a,
|
||||||
|
None => return Inhibit(false),
|
||||||
|
};
|
||||||
|
|
||||||
info!("Application is exiting");
|
let settings = match weak_s.upgrade() {
|
||||||
let app = app.upcast::<gio::Application>();
|
Some(s) => s,
|
||||||
app.quit();
|
None => return Inhibit(false),
|
||||||
Inhibit(false)
|
};
|
||||||
}),
|
|
||||||
);
|
info!("Saving window position");
|
||||||
|
WindowGeometry::from_window(&window).write(&settings);
|
||||||
|
|
||||||
|
info!("Application is exiting");
|
||||||
|
let app = app.clone().upcast::<gio::Application>();
|
||||||
|
app.quit();
|
||||||
|
Inhibit(false)
|
||||||
|
});
|
||||||
|
|
||||||
// Create a content instance
|
// Create a content instance
|
||||||
let content = Content::new(&sender).expect("Content initialization failed.");
|
let content = Content::new(&sender).expect("Content initialization failed.");
|
||||||
@ -114,9 +122,9 @@ impl MainWindow {
|
|||||||
|
|
||||||
let player = player::PlayerWrapper::new(&sender);
|
let player = player::PlayerWrapper::new(&sender);
|
||||||
// Add the player to the main Box
|
// Add the player to the main Box
|
||||||
wrap.add(&player.container);
|
wrap.add(&player.action_bar);
|
||||||
|
|
||||||
wrap.add(&header.bottom_switcher);
|
let updater = RefCell::new(None);
|
||||||
|
|
||||||
window.add(&wrap);
|
window.add(&wrap);
|
||||||
|
|
||||||
@ -126,19 +134,20 @@ impl MainWindow {
|
|||||||
// Update the feeds right after the Window is initialized.
|
// Update the feeds right after the Window is initialized.
|
||||||
if settings.get_boolean("refresh-on-startup") {
|
if settings.get_boolean("refresh-on-startup") {
|
||||||
info!("Refresh on startup.");
|
info!("Refresh on startup.");
|
||||||
utils::schedule_refresh(None, sender.clone());
|
let s: Option<Vec<_>> = None;
|
||||||
|
utils::refresh(s, sender.clone());
|
||||||
}
|
}
|
||||||
|
|
||||||
let refresh_interval = settings::get_refresh_interval(&settings).num_seconds() as u32;
|
let refresh_interval = settings::get_refresh_interval(&settings).num_seconds() as u32;
|
||||||
info!("Auto-refresh every {:?} seconds.", refresh_interval);
|
info!("Auto-refresh every {:?} seconds.", refresh_interval);
|
||||||
|
|
||||||
gtk::timeout_add_seconds(
|
let r_sender = sender.clone();
|
||||||
refresh_interval,
|
gtk::timeout_add_seconds(refresh_interval, move || {
|
||||||
clone!(@strong sender => move || {
|
let s: Option<Vec<_>> = None;
|
||||||
utils::schedule_refresh(None, sender.clone());
|
utils::refresh(s, r_sender.clone());
|
||||||
glib::Continue(true)
|
|
||||||
}),
|
glib::Continue(true)
|
||||||
);
|
});
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
app: app.clone(),
|
app: app.clone(),
|
||||||
@ -147,8 +156,7 @@ impl MainWindow {
|
|||||||
headerbar: header,
|
headerbar: header,
|
||||||
content,
|
content,
|
||||||
player,
|
player,
|
||||||
updating: Cell::new(false),
|
updater,
|
||||||
updater: RefCell::new(None),
|
|
||||||
sender,
|
sender,
|
||||||
receiver,
|
receiver,
|
||||||
}
|
}
|
||||||
@ -160,48 +168,46 @@ impl MainWindow {
|
|||||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
#[cfg_attr(rustfmt, rustfmt_skip)]
|
||||||
pub fn setup_gactions(&self) {
|
pub fn setup_gactions(&self) {
|
||||||
let sender = &self.sender;
|
let sender = &self.sender;
|
||||||
|
let weak_win = self.window.downgrade();
|
||||||
|
|
||||||
// Create the `refresh` action.
|
// Create the `refresh` action.
|
||||||
//
|
//
|
||||||
// This will trigger a refresh of all the shows in the database.
|
// This will trigger a refresh of all the shows in the database.
|
||||||
action(&self.window, "refresh",
|
action(&self.window, "refresh", clone!(sender => move |_, _| {
|
||||||
clone!(@strong sender => move |_, _| {
|
gtk::idle_add(clone!(sender => move || {
|
||||||
gtk::idle_add(
|
let s: Option<Vec<_>> = None;
|
||||||
clone!(@strong sender => move || {
|
utils::refresh(s, sender.clone());
|
||||||
utils::schedule_refresh(None, sender.clone());
|
glib::Continue(false)
|
||||||
glib::Continue(false)
|
|
||||||
}));
|
}));
|
||||||
}));
|
}));
|
||||||
self.app.set_accels_for_action("win.refresh", &["<primary>r"]);
|
self.app.set_accels_for_action("win.refresh", &["<primary>r"]);
|
||||||
|
|
||||||
// Create the `OPML` import action
|
// Create the `OPML` import action
|
||||||
action(&self.window, "import",
|
action(&self.window, "import", clone!(sender, weak_win => move |_, _| {
|
||||||
clone!(@strong sender, @weak self.window as window => move |_, _| {
|
weak_win.upgrade().map(|win| utils::on_import_clicked(&win, &sender));
|
||||||
utils::on_import_clicked(&window, &sender);
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
action(&self.window, "export",
|
action(&self.window, "export", clone!(sender, weak_win => move |_, _| {
|
||||||
clone!(@strong sender, @weak self.window as window => move |_, _| {
|
weak_win.upgrade().map(|win| utils::on_export_clicked(&win, &sender));
|
||||||
utils::on_export_clicked(&window, &sender);
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Create the action that shows a `gtk::AboutDialog`
|
// Create the action that shows a `gtk::AboutDialog`
|
||||||
action(&self.window, "about",
|
action(&self.window, "about", clone!(weak_win => move |_, _| {
|
||||||
clone!(@weak self.window as win => move |_, _| {
|
weak_win.upgrade().map(|win| about_dialog(&win));
|
||||||
about_dialog(&win);
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Create the quit action
|
// Create the quit action
|
||||||
action(&self.window, "quit",
|
let weak_instance = self.app.downgrade();
|
||||||
clone!(@weak self.app as app => move |_, _| {
|
action(&self.window, "quit", move |_, _| {
|
||||||
app.quit();
|
weak_instance.upgrade().map(|app| app.quit());
|
||||||
}));
|
});
|
||||||
self.app.set_accels_for_action("win.quit", &["<primary>q"]);
|
self.app.set_accels_for_action("win.quit", &["<primary>q"]);
|
||||||
|
|
||||||
// Create the menu actions
|
// Create the menu action
|
||||||
action(&self.window, "menu",
|
let header = Rc::downgrade(&self.headerbar);
|
||||||
clone!(@weak self.headerbar as headerbar => move |_, _| {
|
action(&self.window, "menu", move |_, _| {
|
||||||
headerbar.open_menu();
|
header.upgrade().map(|h| h.open_menu());
|
||||||
}));
|
});
|
||||||
// Bind the hamburger menu button to `F10`
|
// Bind the hamburger menu button to `F10`
|
||||||
self.app.set_accels_for_action("win.menu", &["F10"]);
|
self.app.set_accels_for_action("win.menu", &["F10"]);
|
||||||
}
|
}
|
||||||
|
|||||||
0
scripts/compile-gschema.py
Executable file → Normal file
0
scripts/compile-gschema.py
Executable file → Normal file
@ -2,18 +2,17 @@
|
|||||||
|
|
||||||
set -o errexit
|
set -o errexit
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
set -x
|
|
||||||
|
|
||||||
# $1 Passed by meson and should be the builddir
|
|
||||||
export CARGO_TARGET_DIR="$1/target/"
|
export CARGO_TARGET_DIR="$1/target/"
|
||||||
export CARGO_HOME="$CARGO_TARGET_DIR/cargo-home"
|
|
||||||
|
|
||||||
# If this is run inside a flatpak envrironment, append the export the rustc
|
# If this is run inside a flatpak envrironment, append the export the rustc
|
||||||
# sdk-extension binaries to the path
|
# sdk-extension binaries to the path
|
||||||
if [ -f "/.flatpak-info" ]
|
if [ -n "/.flatpak-info" ]
|
||||||
then
|
then
|
||||||
export PATH="$PATH:/usr/lib/sdk/rust-stable/bin"
|
export PATH="$PATH:/usr/lib/sdk/rust-stable/bin"
|
||||||
|
export CARGO_TARGET_DIR="$BUILDDIR/target/"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cargo fetch --locked
|
export CARGO_HOME="$CARGO_TARGET_DIR/cargo-home"
|
||||||
cargo test --all-features --offline -- --test-threads=1 --nocapture
|
|
||||||
|
cargo test -j 1 -- --test-threads=1 --nocapture
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user