Merge branch 'wip/piotrdrag/review-strings' into 'master'

podcasts-gtk: Review ALL the strings!

See merge request World/podcasts!53
This commit is contained in:
Jordan Petridis 2018-08-10 05:58:11 +00:00
commit 92dfbce45a
22 changed files with 67 additions and 67 deletions

View File

@ -48,7 +48,7 @@
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">If you think this is an Error, Plese consider opening a bug report.</property>
<property name="label" translatable="yes">If you think this is an error, please consider opening a bug report.</property>
<style>
<class name="dim-label"/>
</style>

View File

@ -175,7 +175,7 @@ Tobias Bernard
<object class="GtkLabel" id="total_size">
<property name="can_focus">False</property>
<property name="no_show_all">True</property>
<property name="label" translatable="yes">Calculating episode size...</property>
<property name="label" translatable="yes">Calculating episode size</property>
<property name="single_line_mode">True</property>
<property name="track_visited_links">False</property>
<style>

View File

@ -4,7 +4,7 @@
<menu id="menu">
<section>
<item>
<attribute name="label" translatable="yes">_Check for new episodes</attribute>
<attribute name="label" translatable="yes">_Check for New Episodes</attribute>
<attribute name="action">win.refresh</attribute>
<attribute name="accel">&lt;primary&gt;r</attribute>
</item>
@ -39,4 +39,4 @@
</item>
</section>
</menu>
</interface>
</interface>

View File

@ -88,7 +88,7 @@
<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="tooltip_text" translatable="yes">Fast forward 10 seconds</property>
<property name="image">fast_forward</property>
<property name="always_show_image">True</property>
</object>
@ -254,7 +254,7 @@
<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="tooltip_text" translatable="yes">Change the playback speed</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="margin_left">6</property>
@ -269,7 +269,7 @@
<object class="GtkLabel" id="rate_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">1.00x</property>
<property name="label" translatable="yes">1.00×</property>
</object>
<packing>
<property name="expand">False</property>
@ -313,7 +313,7 @@
<property name="spacing">3</property>
<child>
<object class="GtkRadioButton" id="rate_1_50">
<property name="label" translatable="yes">1.50x</property>
<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>
@ -331,7 +331,7 @@
</child>
<child>
<object class="GtkRadioButton" id="rate_1_25">
<property name="label" translatable="yes">1.25x</property>
<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>
@ -349,7 +349,7 @@
</child>
<child>
<object class="GtkRadioButton" id="normal_rate">
<property name="label" translatable="yes">1.00x</property>
<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>

View File

@ -264,7 +264,7 @@
<object class="GtkHeaderBar">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="title">Preferences</property>
<property name="title" translatable="yes">Preferences</property>
<property name="show_close_button">True</property>
<child>
<placeholder/>

View File

@ -4,7 +4,7 @@
<menu id="menu">
<section>
<item>
<attribute name="label" translatable="yes">_Mark all episodes as played</attribute>
<attribute name="label" translatable="yes">_Mark All Episodes as Played</attribute>
<!-- <attribute name="action">win.refresh</attribute> -->
</item>
<item>
@ -17,4 +17,4 @@
</item>
</section>
</menu>
</interface>
</interface>

View File

@ -33,7 +33,7 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="text" translatable="yes">Mark all as played</property>
<property name="text" translatable="yes">Mark All as Played</property>
</object>
<packing>
<property name="expand">False</property>

View File

@ -116,8 +116,8 @@ Tobias Bernard
<property name="can_focus">False</property>
<property name="halign">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="label" translatable="yes">This is embarrassing!
Sorry, we could not find a description for this show.</property>
<property name="use_markup">True</property>
<property name="justify">center</property>
<property name="wrap">True</property>

View File

@ -101,7 +101,7 @@ impl App {
None => return Inhibit(false),
};
info!("Savign window position");
info!("Saving window position");
WindowGeometry::from_window(&window).write(&settings);
info!("Application is exiting");
@ -111,7 +111,7 @@ impl App {
});
// Create a content instance
let content = Content::new(&sender).expect("Content Initialization failed.");
let content = Content::new(&sender).expect("Content initialization failed.");
// Create the headerbar
let header = Header::new(&content, &sender);
@ -274,7 +274,7 @@ impl App {
pop.borrow_mut()
.replace_widget(pd.clone())
.map_err(|err| error!("Failed to update ShowWidget: {}", err))
.map_err(|_| error!("Failed ot update ShowWidget {}", pd.title()))
.map_err(|_| error!("Failed to update ShowWidget {}", pd.title()))
.ok();
}
Action::ShowWidgetAnimated => {
@ -330,7 +330,7 @@ impl App {
textdomain("gnome-podcasts");
let application = gtk::Application::new(APP_ID, gio::ApplicationFlags::empty())
.expect("Application Initialization failed...");
.expect("Application initialization failed...");
let weak_app = application.downgrade();
application.connect_startup(move |_| {

View File

@ -120,7 +120,7 @@ impl AddPopover {
} else {
self.add.set_sensitive(false);
self.result
.set_label(i18n("You are already subscribed to this Show").as_str());
.set_label(i18n("You are already subscribed to this show").as_str());
self.result.show();
}
Ok(())
@ -128,7 +128,7 @@ impl AddPopover {
Err(err) => {
self.add.set_sensitive(false);
if !url.is_empty() {
self.result.set_label(i18n("Invalid url").as_str());
self.result.set_label(i18n("Invalid URL").as_str());
self.result.show();
error!("Error: {}", err);
} else {

View File

@ -11,7 +11,7 @@ use std::sync::{Arc, Mutex, RwLock};
// use std::path::PathBuf;
// This is messy, undocumented and hacky af.
// I am terrible at writting downloaders and download managers.
// I am terrible at writing downloaders and download managers.
#[derive(Debug)]
pub(crate) struct Progress {
@ -81,7 +81,7 @@ pub(crate) fn add(id: i32, directory: String) -> Result<(), Error> {
match ACTIVE_DOWNLOADS.write() {
Ok(mut guard) => guard.insert(id, prog.clone()),
Err(err) => return Err(format_err!("ActiveDonwloads: {}.", err)),
Err(err) => return Err(format_err!("ActiveDownloads: {}.", err)),
};
DLPOOL.spawn(move || {
@ -131,11 +131,11 @@ mod tests {
let url = "https://web.archive.org/web/20180120110727if_/https://rss.acast.com/thetipoff";
// Create and index a source
let source = Source::from_url(url).unwrap();
// Copy it's id
// Copy its id
let sid = source.id();
pipeline::run(vec![source], true).unwrap();
// Get the Podcast
// Get the podcast
let pd = dbqueries::get_podcast_from_source_id(sid).unwrap();
let title = "Coming soon... The Tip Off";
// Get an episode
@ -146,7 +146,7 @@ mod tests {
add(episode.rowid(), download_fold).unwrap();
assert_eq!(ACTIVE_DOWNLOADS.read().unwrap().len(), 1);
// Give it soem time to download the file
// Give it some time to download the file
thread::sleep(time::Duration::from_secs(20));
let final_path = format!("{}/{}.mp3", &fold2, episode.rowid());
@ -162,11 +162,11 @@ mod tests {
"https://web.archive.org/web/20180120104957if_/https://rss.art19.com/steal-the-stars";
// Create and index a source
let source = Source::from_url(url).unwrap();
// Copy it's id
// Copy its id
let sid = source.id();
pipeline::run(vec![source], true).unwrap();
// Get the Podcast
// Get the podcast
let pd = dbqueries::get_podcast_from_source_id(sid).unwrap();
let title = "Introducing Steal the Stars";
// Get an episode

View File

@ -57,11 +57,11 @@ impl HomeStack {
// Copy the vertical scrollbar adjustment from the old view.
self.episodes
.save_alignment()
.map_err(|err| error!("Failed to set episodes_view allignment: {}", err))
.map_err(|err| error!("Failed to set episodes_view alignment: {}", err))
.ok();
self.replace_view()?;
// Determine the actuall state.
// Determine the actual state.
self.determine_state().map_err(From::from)
}
@ -72,7 +72,7 @@ impl HomeStack {
// Remove the old widget and add the new one
// during this the previous view is removed,
// and the visibile child fallsback to empty view.
// and the visible child falls back to empty view.
self.stack.remove(old);
self.stack.add_named(&eps.container, "home");
// Keep the previous state.

View File

@ -75,7 +75,7 @@ impl PopulatedStack {
self.populated
.save_alignment()
.map_err(|err| error!("Failed to set episodes_view allignment: {}", err))
.map_err(|err| error!("Failed to set episodes_view alignment: {}", err))
.ok();
let pop = ShowsView::new(self.sender.clone());
@ -90,7 +90,7 @@ impl PopulatedStack {
pub(crate) fn replace_widget(&mut self, pd: Arc<Show>) -> Result<(), Error> {
let old = self.show.container.clone();
// save the ShowWidget vertical scrollabar alignment
// save the ShowWidget vertical scrollbar alignment
self.show.show_id().map(|id| self.show.save_vadjustment(id));
let new = ShowWidget::new(pd, self.sender.clone());

View File

@ -10,7 +10,7 @@ pub(crate) fn init() -> Result<(), Error> {
let gbytes = Bytes::from_static(res_bytes.as_ref());
let resource = Resource::new_from_data(&gbytes)?;
// Register the resource so It wont be dropped and will continue to live in
// Register the resource so it won't be dropped and will continue to live in
// memory.
resources_register(&resource);

View File

@ -197,7 +197,7 @@ where
// Refresh only specified feeds
pipeline::run(s, false)
.map_err(|err| error!("Error: {}", err))
.map_err(|_| error!("Error While trying to update the database."))
.map_err(|_| error!("Error while trying to update the database."))
.ok();
} else {
// Refresh all the feeds
@ -221,7 +221,7 @@ lazy_static! {
static ref THREADPOOL: rayon::ThreadPool = rayon::ThreadPoolBuilder::new().build().unwrap();
}
// Since gdk_pixbuf::Pixbuf is refference counted and every episode,
// Since gdk_pixbuf::Pixbuf is reference counted and every episode,
// use the cover of the Podcast Feed/Show, We can only create a Pixbuf
// cover per show and pass around the Rc pointer.
//
@ -235,7 +235,7 @@ pub(crate) fn set_image_from_path(
) -> Result<(), Error> {
// Check if there's an active download about this show cover.
// If there is, a callback will be set so this function will be called again.
// If the download succedes, there should be a quick return from the pixbuf cache_image
// If the download succeeds, there should be a quick return from the pixbuf cache_image
// If it fails another download will be scheduled.
if let Ok(guard) = COVER_DL_REGISTRY.read() {
if guard.contains(&show_id) {
@ -249,7 +249,7 @@ pub(crate) fn set_image_from_path(
}
if let Ok(hashmap) = CACHED_PIXBUFS.read() {
// Check if the requested (cover + size) is already in the chache
// Check if the requested (cover + size) is already in the cache
// and if so do an early return after that.
if let Some(guard) = hashmap.get(&(show_id, size)) {
guard
@ -299,7 +299,7 @@ pub(crate) fn set_image_from_path(
// FIXME: the signature should be `fn foo(s: Url) -> Result<Url, Error>`
pub(crate) fn itunes_to_rss(url: &str) -> Result<String, Error> {
let id = itunes_id_from_url(url).ok_or_else(|| format_err!("Failed to find an Itunes ID."))?;
let id = itunes_id_from_url(url).ok_or_else(|| format_err!("Failed to find an iTunes ID."))?;
lookup_id(id)
}
@ -331,7 +331,7 @@ pub(crate) fn on_import_clicked(window: &gtk::ApplicationWindow, sender: &Sender
// TODO: It might be better to use a FileChooserNative widget.
// Create the FileChooser Dialog
let dialog = FileChooserNative::new(
Some(i18n("Select the file from which to you want to Import Shows.").as_str()),
Some(i18n("Select the file from which to you want to import shows.").as_str()),
Some(window),
FileChooserAction::Open,
Some(i18n("_Import").as_str()),
@ -349,24 +349,24 @@ pub(crate) fn on_import_clicked(window: &gtk::ApplicationWindow, sender: &Sender
dialog.add_filter(&filter);
dialog.connect_response(clone!(sender => move |dialog, resp| {
debug!("Dialong Response {}", resp);
debug!("Dialog Response {}", resp);
if resp == ResponseType::Accept.to_glib() {
// TODO: Show an in-app notifictaion if the file can not be accessed
// TODO: Show an in-app notification if the file can not be accessed
if let Some(filename) = dialog.get_filename() {
debug!("File selected: {:?}", filename);
rayon::spawn(clone!(sender => move || {
// Parse the file and import the feeds
if let Ok(sources) = opml::import_from_file(filename) {
// Refresh the succesfully parsed feeds to index them
// Refresh the successfully parsed feeds to index them
refresh(Some(sources), sender)
} else {
let text = i18n("Failed to parse the Imported file");
let text = i18n("Failed to parse the imported file");
sender.send(Action::ErrorNotification(text));
}
}))
} else {
let text = i18n("Selected File could not be accessed.");
let text = i18n("Selected file could not be accessed.");
sender.send(Action::ErrorNotification(text));
}
}

View File

@ -8,7 +8,7 @@ use i18n::i18n;
// https://gitlab.gnome.org/danigm/fractal/blob/503e311e22b9d7540089d735b92af8e8f93560c5/fractal-gtk/src/app.rs#L1883-1912
/// Given a `window` create and attach an `gtk::AboutDialog` to it.
pub(crate) fn about_dialog(window: &gtk::ApplicationWindow) {
// Feel free to add yourself if you contribured.
// Feel free to add yourself if you contributed.
let authors = &[
"Carlos Soriano",
"Constantin Nickel",
@ -28,7 +28,7 @@ pub(crate) fn about_dialog(window: &gtk::ApplicationWindow) {
dialog.set_license_type(gtk::License::Gpl30);
dialog.set_modal(true);
// TODO: make it show it fetches the commit hash from which it was built
// and the version number is kept in sync automaticly
// and the version number is kept in sync automatically
dialog.set_version("0.4.4");
dialog.set_program_name(&i18n("Podcasts"));
// TODO: Need a wiki page first.

View File

@ -86,7 +86,7 @@ impl InAppNotification {
notif
}
// This is a seperate method cause in order to get a nice animation
// This is a separate method cause in order to get a nice animation
// the revealer should be attached to something that displays it.
// Previously we where doing it in the constructor, which had the result
// of the animation being skipped cause there was no parent widget to display it.

View File

@ -78,7 +78,7 @@ impl InfoLabels {
// Set the date label.
self.set_date(episode.epoch());
// Set the duaration label.
// Set the duration label.
self.set_duration(episode.duration());
// Set the total_size label.
@ -118,11 +118,11 @@ impl InfoLabels {
// Set the duration label of the episode widget.
fn set_duration(&self, seconds: Option<i32>) {
// If lenght is provided
// If length is provided
if let Some(s) = seconds {
// Convert seconds to minutes
let minutes = chrono::Duration::seconds(s.into()).num_minutes();
// If the lenght is 1 or more minutes
// If the length is 1 or more minutes
if minutes != 0 {
// Set the label and show them.
self.duration
@ -227,15 +227,15 @@ impl EpisodeWidget {
// When the widget is attached to a parent,
// since it's a rust struct and not a widget the
// compiler drops the refference to it at the end of
// compiler drops the reference to it at the end of
// scope. That's cause we only attach the `self.container`
// to the parent.
//
// So this callback keeps a refference to the Rust Struct
// So this callback keeps a reference to the Rust Struct
// so the compiler won't drop it.
//
// When the widget is detached from it's parent view this
// callback runs freeing the last refference we were holding.
// When the widget is detached from its parent view this
// callback runs freeing the last reference we were holding.
let foo = RefCell::new(Some(widget.clone()));
widget.container.connect_remove(move |_, _| {
foo.borrow_mut().take();
@ -348,7 +348,7 @@ impl EpisodeWidget {
Ok(m.get(&id).cloned())
};
// State: InProggress
// State: InProgress
if let Some(prog) = active_dl()? {
// set a callback that will update the state when the download finishes
let callback = clone!(weak, sender => move || {
@ -442,7 +442,7 @@ impl EpisodeWidget {
if let Ok(ep) = dbqueries::get_episode_widget_from_rowid(id) {
on_download_clicked(&ep, &sender)
.and_then(|_| {
info!("Donwload started succesfully.");
info!("Download started successfully.");
Self::determine_buttons_state(&weak, &ep, &sender)
})
.map_err(|err| error!("Error: {}", err))

View File

@ -116,7 +116,7 @@ impl PlayerTimes {
self.duration.set_text(&format_duration(seconds as u32));
}
/// Update the `gtk::SclaeBar` when the pipeline position is changed.
/// Update the `gtk::Scale` bar when the pipeline position is changed.
pub(crate) fn on_position_updated(&self, position: Position) {
let seconds = position.seconds().map(|v| v as f64).unwrap_or(0.0);
@ -134,7 +134,7 @@ fn format_duration(seconds: u32) -> String {
if seconds >= 3600 {
time.format("%T").to_string()
} else {
time.format("%M:%S").to_string()
time.format("%M%S").to_string()
}
}
@ -301,7 +301,7 @@ impl PlayerWidget {
sender.send(Action::ErrorNotification(s));
}));
// The followign callbacks require `Send` but are handled by the gtk main loop
// The following callbacks require `Send` but are handled by the gtk main loop
let weak = Fragile::new(Rc::downgrade(s));
// Update the duration label and the slider
@ -351,7 +351,7 @@ impl PlayerWidget {
fn on_rate_changed(&self, rate: f64) {
self.set_playback_rate(rate);
self.rate.label.set_text(&format!("{:.2}x", rate));
self.rate.label.set_text(&format!("{:.2}×", rate));
}
fn reveal(&self) {

View File

@ -82,13 +82,13 @@ impl ShowWidget {
utils::set_image_from_path(&self.cover, pd.id(), 256)
}
/// Set the descripton text.
/// Set the description text.
fn set_description(&self, text: &str) {
self.description
.set_markup(html2text::from_read(text.as_bytes(), 70).trim());
}
/// Save the scrollabar vajustment to the cache.
/// Save the scrollbar adjustment to the cache.
pub(crate) fn save_vadjustment(&self, oldid: i32) -> Result<(), Error> {
if let Ok(mut guard) = SHOW_WIDGET_VALIGNMENT.lock() {
let adj = self
@ -109,7 +109,7 @@ impl ShowWidget {
.map_err(|err| format_err!("Failed to lock widget align mutex: {}", err))?;
if let Some((oldid, ref fragile)) = *guard {
// Only copy the old scrollbar if both widget's represent the same podcast.
// Only copy the old scrollbar if both widgets represent the same podcast.
debug!("PID: {}", pd.id());
debug!("OLDID: {}", oldid);
if pd.id() != oldid {

View File

@ -122,7 +122,7 @@ fn dim_titles(episodes: &gtk::ListBox) -> Option<()> {
fn mark_all_watched(pd: &Show, sender: &Sender<Action>) -> Result<(), Error> {
dbqueries::update_none_to_played_now(pd)?;
// Not all widgets migth have been loaded when the mark_all is hit
// Not all widgets might have been loaded when the mark_all is hit
// So we will need to refresh again after it's done.
sender.send(Action::RefreshWidgetIfSame(pd.id()));
sender.send(Action::RefreshEpisodesView);

View File

@ -115,7 +115,7 @@ fn on_child_activate(child: &gtk::FlowBoxChild, sender: &Sender<Action>) -> Resu
// This is such an ugly hack...
let id = WidgetExt::get_name(child)
.ok_or_else(|| format_err!("Faild to get \"episodes\" child from the stack."))?
.ok_or_else(|| format_err!("Failed to get \"episodes\" child from the stack."))?
.parse::<i32>()?;
let pd = Arc::new(dbqueries::get_podcast_from_id(id)?);