From bc2c1351b80437f976e876409a2c1e6fdfaa7e76 Mon Sep 17 00:00:00 2001 From: Jakob Meier Date: Sun, 3 Mar 2024 17:42:04 +0100 Subject: [PATCH] add metainfo file to comply with https://docs.flathub.org/blog/quality-moderation/ closes #2 --- data/icu.ccw.Melon.desktop.in | 4 +- data/icu.ccw.Melon.metainfo.xml.in.in | 149 +++++ data/meson.build | 34 ++ meson.build | 1 + po/POTFILES.in | 25 +- po/de.po | 792 ++++++++++++++------------ po/melon.pot | 674 ++++++++++++---------- po/update_potfiles.sh | 37 +- 8 files changed, 1017 insertions(+), 699 deletions(-) create mode 100644 data/icu.ccw.Melon.metainfo.xml.in.in diff --git a/data/icu.ccw.Melon.desktop.in b/data/icu.ccw.Melon.desktop.in index 4e69211..e02d30f 100644 --- a/data/icu.ccw.Melon.desktop.in +++ b/data/icu.ccw.Melon.desktop.in @@ -1,6 +1,6 @@ [Desktop Entry] -Name=@prettyname@ -Comment=@description@ +Name=Melon +Comment=Video player that aims to be mobile friendly. Stream videos on the go from multiple sources. Exec=@bindir@/@projectname@ %U # Translators: Do NOT translate or transliterate this text (this is an icon file name)! Icon=@appid@ diff --git a/data/icu.ccw.Melon.metainfo.xml.in.in b/data/icu.ccw.Melon.metainfo.xml.in.in new file mode 100644 index 0000000..d96ff82 --- /dev/null +++ b/data/icu.ccw.Melon.metainfo.xml.in.in @@ -0,0 +1,149 @@ + + + @app_id@ + + @prettyname@ + @app_id@ + Video player that aims to be mobile friendly. Stream videos on the go from multiple sources. + + + @authorfullname@ + + @authorfullname@ + + @authoremail@ + + + CC0-1.0 + @license@ + + + 360 + always + + + pointing + keyboard + touch + + + +

+ Melon allows you to watch videos, subscribe to channels and bookmark playlists from multiple services. +

+

+ The following services are currently supported: +

+
    +
  • Invidious (to access YouTube)
  • +
  • PeerTube (experimental)
  • +
  • Nebula (account required to watch videos)
  • +
+
+ + @gitrepo@/issues + @website@ + https://translate.codeberg.org/engage/melon/ + @gitrepo@ + + @app_id@.desktop + + + + Default Melon home screen showing: crickets chirping; Subscribe to a channel first, to view uploads + + https://codeberg.org/comcloudway/melon/media/branch/main/screenshots/empty_feed.png + + + + List of available servers: Invidious, Nebula, Peertube; including server description + + https://codeberg.org/comcloudway/melon/media/branch/main/screenshots/server_list.png + + + + Video Screen, with a video player at the top, the video title below, an expandable description, channel information and a bookmark button + + https://codeberg.org/comcloudway/melon/media/branch/main/screenshots/video.png + + + + + +
    +
  • + experimental peertube support +
  • +
  • + new-uploads-feed speedup by fetching videos on 10 threads +
  • +
  • + faster feed rendering by loading thumbnails on separate thread +
  • +
+
+
+ + +

fix what's-new feed duplicate error

+
+
+ + +

+ First stable Version +

+

+ Features: +

+
    +
  • + Import Subscriptions, Playlists and History from Newpipe (.db file + inside the .zip) +
  • +
  • + Browse Server feeds and search for channels, playlists and videos +
  • +
  • + Browse uploads and playlists from channels +
  • +
  • + Bookmark playlists and create new ones +
  • +
  • + Add videos to local playlist +
  • +
  • + Follow channels and view new uploads in a home feed +
  • +
  • + Support for invidious and nebula source +
  • +
+
+
+
+ + @app_id@ + + + intense + intense + intense + intense + intense + intense + intense + moderate + moderate + moderate + intense + intense + intense + intense + intense + mild + intense + + +
diff --git a/data/meson.build b/data/meson.build index ea19b47..34dcf40 100644 --- a/data/meson.build +++ b/data/meson.build @@ -50,3 +50,37 @@ endif dependency('glib-2.0') dependency('gtk4', version: '>=4.12.1') dependency('libadwaita-1', version: '>=1.4.0') + +# +# appdata/metainfo XML file +# +message('Merge translations of appdata XML file') +conf = configuration_data() +conf.set('app_id', app_id) +conf.set('prettyname', prettyname) +conf.set('authorfullname', authorfullname) +conf.set('authoremail', authoremail) +conf.set('license', meson.project_license()) +conf.set('website', website) +conf.set('gitrepo', gitrepo) +appdata_file = i18n.merge_file( + input: configure_file( + input: '@0@.metainfo.xml.in.in'.format(base_id), + output: '@0@.metainfo.xml.in'.format(base_id), + configuration: conf + ), + output: '@0@.metainfo.xml'.format(app_id), + po_dir: '../po', + install: true, + install_dir: join_paths(datadir, 'metainfo') +) + +appstreamcli = find_program('appstreamcli', required: false) +if appstreamcli.found() + test ( + 'Validate appdata/metainfo file', + appstreamcli, + args: ['validate', '--no-net', '--explain', appdata_file], + workdir: meson.current_build_dir() + ) +endif diff --git a/meson.build b/meson.build index 3a5031c..fc7ab1c 100644 --- a/meson.build +++ b/meson.build @@ -16,6 +16,7 @@ domainname = 'ccw' domainext = 'icu' gitrepo = 'https://codeberg.org/' + authornickname + '/' + prettyname +website = gitrepo python = import('python') py_installation = python.find_installation('python3') diff --git a/po/POTFILES.in b/po/POTFILES.in index 3b922b7..35566fe 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,22 +1,23 @@ data/icu.ccw.Melon.desktop.in +data/icu.ccw.Melon.metainfo.xml.in.in +melon/browse/__init__.py +melon/browse/channel.py +melon/browse/playlist.py +melon/browse/search.py +melon/browse/server.py melon/home/history.py melon/home/new.py melon/home/playlists.py melon/home/subs.py -melon/settings/__init__.py +melon/import_providers/newpipe.py +melon/importer.py +melon/player/__init__.py +melon/playlist/__init__.py +melon/playlist/create.py +melon/playlist/pick.py melon/servers/invidious/__init__.py melon/servers/nebula/__init__.py melon/servers/peertube/__init__.py +melon/settings/__init__.py melon/widgets/preferencerow.py -melon/browse/channel.py -melon/browse/playlist.py -melon/browse/__init__.py -melon/browse/search.py -melon/browse/server.py -melon/player/__init__.py -melon/playlist/create.py -melon/playlist/pick.py -melon/playlist/__init__.py -melon/import_providers/newpipe.py melon/window.py -melon/importer.py diff --git a/po/de.po b/po/de.po index 9e51888..3c57d91 100644 --- a/po/de.po +++ b/po/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Melon 0.1.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-03-03 15:39+0100\n" +"POT-Creation-Date: 2024-03-03 17:38+0100\n" "PO-Revision-Date: 2024-03-01 11:23+0000\n" "Last-Translator: Anonymous \n" "Language-Team: German \n" "Language-Team: LANGUAGE \n" @@ -18,14 +18,170 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: ../melon/home/history.py:23 ../melon/home/new.py:28 -#: ../melon/home/playlists.py:21 ../melon/home/subs.py:20 +#: ../data/icu.ccw.Melon.desktop.in:3 +msgid "Melon" +msgstr "" + +#: ../data/icu.ccw.Melon.desktop.in:4 +msgid "" +"Video player that aims to be mobile friendly. Stream videos on the go from " +"multiple sources." +msgstr "" + +#: ../data/icu.ccw.Melon.desktop.in:13 +msgid "viewer;videos;stream;browse;" +msgstr "" + +#: ../data/icu.ccw.Melon.metainfo.xml.in.in:31 +msgid "" +"Melon allows you to watch videos, subscribe to channels and bookmark " +"playlists from multiple services." +msgstr "" + +#: ../data/icu.ccw.Melon.metainfo.xml.in.in:34 +msgid "The following services are currently supported:" +msgstr "" + +#: ../data/icu.ccw.Melon.metainfo.xml.in.in:38 +msgid "Invidious (to access YouTube)" +msgstr "" + +#: ../data/icu.ccw.Melon.metainfo.xml.in.in:39 +msgid "PeerTube (experimental)" +msgstr "" + +#: ../data/icu.ccw.Melon.metainfo.xml.in.in:40 +msgid "Nebula (account required to watch videos)" +msgstr "" + +#: ../data/icu.ccw.Melon.metainfo.xml.in.in:52 +msgid "" +"Default Melon home screen showing: crickets chirping; Subscribe to a channel " +"first, to view uploads" +msgstr "" + +#: ../data/icu.ccw.Melon.metainfo.xml.in.in:58 +msgid "" +"List of available servers: Invidious, Nebula, Peertube; including server " +"description" +msgstr "" + +#: ../data/icu.ccw.Melon.metainfo.xml.in.in:64 +msgid "" +"Video Screen, with a video player at the top, the video title below, an " +"expandable description, channel information and a bookmark button" +msgstr "" + #: ../melon/browse/__init__.py:18 ../melon/browse/search.py:58 #: ../melon/browse/server.py:101 ../melon/browse/server.py:125 -#: ../melon/playlist/__init__.py:44 ../melon/importer.py:61 +#: ../melon/home/history.py:23 ../melon/home/new.py:28 +#: ../melon/home/playlists.py:21 ../melon/home/subs.py:20 +#: ../melon/importer.py:61 ../melon/playlist/__init__.py:44 msgid "*crickets chirping*" msgstr "" +#: ../melon/browse/__init__.py:19 +msgid "There are no available servers" +msgstr "" + +#: ../melon/browse/__init__.py:21 ../melon/browse/search.py:61 +#: ../melon/importer.py:64 +msgid "Enable servers in the settings menu" +msgstr "" + +#: ../melon/browse/__init__.py:29 +msgid "Available Servers" +msgstr "" + +#: ../melon/browse/__init__.py:30 +msgid "You can enable/disable and filter servers in the settings menu" +msgstr "" + +#: ../melon/browse/__init__.py:48 +msgid "Servers" +msgstr "" + +#: ../melon/browse/__init__.py:56 ../melon/browse/search.py:106 +msgid "Global Search" +msgstr "" + +#: ../melon/browse/channel.py:99 +msgid "Subscribe to channel" +msgstr "" + +#: ../melon/browse/channel.py:100 +msgid "Add latest uploads to home feed" +msgstr "" + +#: ../melon/browse/channel.py:127 +msgid "Channel feed" +msgstr "" + +#: ../melon/browse/channel.py:128 +msgid "This channel provides multiple feeds, choose which one to view" +msgstr "" + +#: ../melon/browse/playlist.py:61 ../melon/player/__init__.py:91 +msgid "Bookmark" +msgstr "" + +#: ../melon/browse/playlist.py:62 +msgid "Add Playlist to your local playlist collection" +msgstr "" + +#: ../melon/browse/search.py:44 +msgid "No results" +msgstr "" + +#: ../melon/browse/search.py:46 +#, python-brace-format +msgid "{count} result" +msgid_plural "{count} results" +msgstr[0] "" +msgstr[1] "" + +#: ../melon/browse/search.py:59 +msgid "There are no available servers, a search would yield no results" +msgstr "" + +#: ../melon/browse/search.py:83 ../melon/browse/server.py:43 +msgid "Any" +msgstr "" + +#: ../melon/browse/search.py:85 ../melon/browse/server.py:45 +msgid "Channels" +msgstr "" + +#: ../melon/browse/search.py:88 ../melon/browse/server.py:48 +#: ../melon/home/playlists.py:32 ../melon/home/playlists.py:64 +#: ../melon/servers/nebula/__init__.py:200 +#: ../melon/servers/peertube/__init__.py:205 +msgid "Playlists" +msgstr "" + +#: ../melon/browse/search.py:91 ../melon/browse/server.py:51 +#: ../melon/servers/nebula/__init__.py:194 +#: ../melon/servers/peertube/__init__.py:204 +#: ../melon/servers/peertube/__init__.py:208 +msgid "Videos" +msgstr "" + +#: ../melon/browse/server.py:23 +msgid "Search" +msgstr "" + +#: ../melon/browse/server.py:102 +msgid "Try searching for a term" +msgstr "" + +#: ../melon/browse/server.py:104 +msgid "Try using a different query" +msgstr "" + +#: ../melon/browse/server.py:126 +msgid "This feed is empty" +msgstr "" + #: ../melon/home/history.py:24 msgid "You haven't watched any videos yet" msgstr "" @@ -75,13 +231,6 @@ msgstr "" msgid "Create a new playlist" msgstr "" -#: ../melon/home/playlists.py:32 ../melon/home/playlists.py:64 -#: ../melon/servers/nebula/__init__.py:200 -#: ../melon/servers/peertube/__init__.py:205 ../melon/browse/search.py:88 -#: ../melon/browse/server.py:48 -msgid "Playlists" -msgstr "" - #: ../melon/home/playlists.py:33 msgid "Here are playlists you've bookmarked or created yourself" msgstr "" @@ -102,493 +251,398 @@ msgstr "" msgid "You are subscribed to the following channels" msgstr "" -#: ../melon/settings/__init__.py:18 -msgid "Show Previews when browsing public feeds (incl. search)" +#: ../melon/import_providers/newpipe.py:28 +msgid "Newpipe Database importer" msgstr "" -#: ../melon/settings/__init__.py:19 +#: ../melon/import_providers/newpipe.py:29 msgid "" -"Set to true to show previews when viewing channel contents, public feeds and " -"searching" +"Import the .db file from inside the newpipe .zip export (as invidious " +"content)" msgstr "" -#: ../melon/settings/__init__.py:25 -msgid "Show Previews in local feeds" +#: ../melon/import_providers/newpipe.py:30 +msgid "Select .db file" msgstr "" -#: ../melon/settings/__init__.py:26 -msgid "" -"Set to true to show previews in the new feed, for subscribed channels, and " -"saved playlists" +#: ../melon/import_providers/newpipe.py:45 +msgid "Newpipe Database" msgstr "" -#: ../melon/settings/__init__.py:32 -msgid "Show servers that may contain nsfw content" +#: ../melon/importer.py:17 ../melon/importer.py:35 +msgid "Import" msgstr "" -#: ../melon/settings/__init__.py:33 -msgid "" -"Lists/Delists servers in the browse servers list, if they contain some nsfw " -"content" +#: ../melon/importer.py:36 +msgid "The following import methods have been found" msgstr "" -#: ../melon/settings/__init__.py:38 -msgid "Show servers that only contain nsfw content" +#: ../melon/importer.py:62 +msgid "There are no available importer methods" msgstr "" -#: ../melon/settings/__init__.py:39 -msgid "" -"Lists/Delists servers in the browse servers list, if they contain only/" -"mostly nsfw content" +#: ../melon/player/__init__.py:65 +msgid "Quality" msgstr "" -#: ../melon/settings/__init__.py:45 -msgid "Show servers that require login" +#: ../melon/player/__init__.py:66 +msgid "Video quality" msgstr "" -#: ../melon/settings/__init__.py:46 -msgid "" -"Lists/Delists servers in the browse servers list, if they require login to " -"function" +#: ../melon/player/__init__.py:76 +msgid "Description" msgstr "" -#: ../melon/settings/__init__.py:55 -msgid "Settings" +#: ../melon/player/__init__.py:92 +msgid "Add this video to a playlist" msgstr "" -#: ../melon/settings/__init__.py:68 -msgid "General" +#: ../melon/playlist/__init__.py:39 +msgid "Edit" msgstr "" -#: ../melon/settings/__init__.py:69 -msgid "Global app settings" +#: ../melon/playlist/__init__.py:45 +msgid "You haven't added any videos to this playlist yet" msgstr "" -#: ../melon/settings/__init__.py:93 -msgid "Enable Server" +#: ../melon/playlist/__init__.py:47 +msgid "Start watching" msgstr "" -#: ../melon/settings/__init__.py:94 -msgid "" -"Disabled servers won't show up in the browser or on the local/home screen" +#: ../melon/playlist/__init__.py:77 +msgid "Edit Playlist" msgstr "" -#: ../melon/servers/invidious/__init__.py:27 -msgid "Open source alternative front-end to YouTube" +#: ../melon/playlist/__init__.py:83 +msgid "Playlist details" msgstr "" -#: ../melon/servers/invidious/__init__.py:32 -msgid "Instance" +#: ../melon/playlist/__init__.py:84 +msgid "Change playlist information" msgstr "" -#: ../melon/servers/invidious/__init__.py:33 -msgid "" -"See https://docs.invidious.io/instances/ for a list of available instances" +#: ../melon/playlist/__init__.py:86 ../melon/playlist/create.py:38 +msgid "Playlist name" msgstr "" -#: ../melon/servers/invidious/__init__.py:44 -msgid "Trending" +#: ../melon/playlist/__init__.py:89 ../melon/playlist/create.py:41 +msgid "Playlist description" msgstr "" -#: ../melon/servers/invidious/__init__.py:45 -msgid "Popular" +#: ../melon/playlist/__init__.py:94 +msgid "Save details" msgstr "" -#: ../melon/servers/nebula/__init__.py:19 -msgid "" -"Home of smart, thoughtful videos, podcasts, and classes from your favorite " -"creators" +#: ../melon/playlist/__init__.py:95 +msgid "Change playlist title and description. (Closes the dialog)" msgstr "" -#: ../melon/servers/nebula/__init__.py:24 -msgid "Email Address" +#: ../melon/playlist/__init__.py:105 ../melon/playlist/__init__.py:147 +msgid "Delete Playlist" msgstr "" -#: ../melon/servers/nebula/__init__.py:25 -msgid "Email Address to login to your account" +#: ../melon/playlist/__init__.py:106 +msgid "Delete this playlist and it's content. This can NOT be undone." msgstr "" -#: ../melon/servers/nebula/__init__.py:31 -msgid "Password" +#: ../melon/playlist/__init__.py:117 +msgid "Close" msgstr "" -#: ../melon/servers/nebula/__init__.py:32 -msgid "Password associated with your account" +#: ../melon/playlist/__init__.py:117 +msgid "Close without chaning anything" msgstr "" -#: ../melon/servers/nebula/__init__.py:37 -msgid ".m3u8 Player" +#: ../melon/playlist/__init__.py:150 +msgid "Do you really wan't to delete this playlist?" msgstr "" -#: ../melon/servers/nebula/__init__.py:38 -#, python-format -msgid "valid .m3u8 web-pased player url. %s will be replaced with playlist url" +#: ../melon/playlist/__init__.py:151 +msgid "This cannot be undone" msgstr "" -#: ../melon/servers/nebula/__init__.py:194 -#: ../melon/servers/peertube/__init__.py:204 -#: ../melon/servers/peertube/__init__.py:208 ../melon/browse/search.py:91 -#: ../melon/browse/server.py:51 -msgid "Videos" -msgstr "" - -#: ../melon/servers/peertube/__init__.py:15 -msgid "Decentralized video hosting network, based on free/libre software" -msgstr "" - -#: ../melon/servers/peertube/__init__.py:20 -msgid "Instances" -msgstr "" - -#: ../melon/servers/peertube/__init__.py:21 -msgid "" -"List of peertube instances, from which to fetch content. See https://" -"joinpeertube.org/instances" -msgstr "" - -#: ../melon/servers/peertube/__init__.py:27 -msgid "Show NSFW content" -msgstr "" - -#: ../melon/servers/peertube/__init__.py:28 -msgid "Passes the nsfw filter to the peertube search API" -msgstr "" - -#: ../melon/servers/peertube/__init__.py:33 -msgid "Enable Federation" -msgstr "" - -#: ../melon/servers/peertube/__init__.py:34 -msgid "Returns content from federated instances instead of only local content" -msgstr "" - -#: ../melon/servers/peertube/__init__.py:58 -msgid "Latest" -msgstr "" - -#: ../melon/widgets/preferencerow.py:115 -msgid "Add" -msgstr "" - -#: ../melon/widgets/preferencerow.py:129 -msgid "Move up" -msgstr "" - -#: ../melon/widgets/preferencerow.py:140 -msgid "Move down" -msgstr "" - -#: ../melon/widgets/preferencerow.py:149 -msgid "Remove from list" -msgstr "" - -#: ../melon/widgets/preferencerow.py:162 -msgid "Add Item" -msgstr "" - -#: ../melon/widgets/preferencerow.py:165 -msgid "Create a new list entry" -msgstr "" - -#: ../melon/widgets/preferencerow.py:166 -msgid "Enter the new value here" -msgstr "" - -#: ../melon/widgets/preferencerow.py:169 -msgid "Value" -msgstr "" - -#: ../melon/widgets/preferencerow.py:174 ../melon/widgets/preferencerow.py:217 -#: ../melon/playlist/create.py:48 ../melon/playlist/pick.py:86 -#: ../melon/playlist/__init__.py:155 +#: ../melon/playlist/__init__.py:155 ../melon/playlist/create.py:48 +#: ../melon/playlist/pick.py:86 ../melon/widgets/preferencerow.py:174 +#: ../melon/widgets/preferencerow.py:217 msgid "Cancel" msgstr "" -#: ../melon/widgets/preferencerow.py:175 ../melon/playlist/create.py:49 -msgid "Create" +#: ../melon/playlist/__init__.py:155 +msgid "Do not delete the playlist" msgstr "" -#: ../melon/widgets/preferencerow.py:206 ../melon/widgets/preferencerow.py:218 -#: ../melon/playlist/__init__.py:156 +#: ../melon/playlist/__init__.py:156 ../melon/widgets/preferencerow.py:206 +#: ../melon/widgets/preferencerow.py:218 msgid "Delete" msgstr "" -#: ../melon/widgets/preferencerow.py:209 -msgid "Do you really want to delete this item?" +#: ../melon/playlist/__init__.py:156 +msgid "Delete this playlist" msgstr "" -#: ../melon/widgets/preferencerow.py:210 -msgid "You won't be able to restore it afterwards" +#: ../melon/playlist/create.py:17 ../melon/playlist/create.py:34 +msgid "New Playlist" msgstr "" -#: ../melon/widgets/preferencerow.py:217 -msgid "Do not remove item" +#: ../melon/playlist/create.py:24 ../melon/playlist/pick.py:28 +msgid "Video" msgstr "" -#: ../melon/widgets/preferencerow.py:218 -msgid "Remove item from list" +#: ../melon/playlist/create.py:25 +msgid "The following video will be added to the new playlist" msgstr "" -#: ../melon/browse/channel.py:99 -msgid "Subscribe to channel" +#: ../melon/playlist/create.py:35 +msgid "Enter more playlist information" msgstr "" -#: ../melon/browse/channel.py:100 -msgid "Add latest uploads to home feed" +#: ../melon/playlist/create.py:39 +msgid "Unnamed Playlist" msgstr "" -#: ../melon/browse/channel.py:127 -msgid "Channel feed" +#: ../melon/playlist/create.py:48 ../melon/playlist/pick.py:86 +msgid "Do not create playlist" msgstr "" -#: ../melon/browse/channel.py:128 -msgid "This channel provides multiple feeds, choose which one to view" +#: ../melon/playlist/create.py:49 ../melon/widgets/preferencerow.py:175 +msgid "Create" msgstr "" -#: ../melon/browse/playlist.py:61 ../melon/player/__init__.py:91 -msgid "Bookmark" +#: ../melon/playlist/create.py:49 +msgid "Create playlist" msgstr "" -#: ../melon/browse/playlist.py:62 -msgid "Add Playlist to your local playlist collection" +#: ../melon/playlist/pick.py:23 +msgid "Add to Playlist" msgstr "" -#: ../melon/browse/__init__.py:19 -msgid "There are no available servers" +#: ../melon/playlist/pick.py:29 +msgid "The following video will be added to the playlist" msgstr "" -#: ../melon/browse/__init__.py:21 ../melon/browse/search.py:61 -#: ../melon/importer.py:64 -msgid "Enable servers in the settings menu" +#: ../melon/playlist/pick.py:39 +msgid "Add to playlist" msgstr "" -#: ../melon/browse/__init__.py:29 -msgid "Available Servers" +#: ../melon/playlist/pick.py:40 +msgid "" +"Choose a playlist to add the video to. Note that you can only add videos to " +"local playlists, not external bookmarked ones" msgstr "" -#: ../melon/browse/__init__.py:30 -msgid "You can enable/disable and filter servers in the settings menu" +#: ../melon/playlist/pick.py:42 +msgid "Create new playlist" msgstr "" -#: ../melon/browse/__init__.py:48 -msgid "Servers" +#: ../melon/playlist/pick.py:43 +msgid "Create a new playlist and add the video to it" msgstr "" -#: ../melon/browse/__init__.py:56 ../melon/browse/search.py:106 -msgid "Global Search" +#: ../melon/servers/invidious/__init__.py:27 +msgid "Open source alternative front-end to YouTube" msgstr "" -#: ../melon/browse/search.py:44 -msgid "No results" +#: ../melon/servers/invidious/__init__.py:32 +msgid "Instance" msgstr "" -#: ../melon/browse/search.py:46 -#, python-brace-format -msgid "{count} result" -msgid_plural "{count} results" -msgstr[0] "" -msgstr[1] "" - -#: ../melon/browse/search.py:59 -msgid "There are no available servers, a search would yield no results" +#: ../melon/servers/invidious/__init__.py:33 +msgid "" +"See https://docs.invidious.io/instances/ for a list of available instances" msgstr "" -#: ../melon/browse/search.py:83 ../melon/browse/server.py:43 -msgid "Any" +#: ../melon/servers/invidious/__init__.py:44 +msgid "Trending" msgstr "" -#: ../melon/browse/search.py:85 ../melon/browse/server.py:45 -msgid "Channels" +#: ../melon/servers/invidious/__init__.py:45 +msgid "Popular" msgstr "" -#: ../melon/browse/server.py:23 -msgid "Search" +#: ../melon/servers/nebula/__init__.py:19 +msgid "" +"Home of smart, thoughtful videos, podcasts, and classes from your favorite " +"creators" msgstr "" -#: ../melon/browse/server.py:102 -msgid "Try searching for a term" +#: ../melon/servers/nebula/__init__.py:24 +msgid "Email Address" msgstr "" -#: ../melon/browse/server.py:104 -msgid "Try using a different query" +#: ../melon/servers/nebula/__init__.py:25 +msgid "Email Address to login to your account" msgstr "" -#: ../melon/browse/server.py:126 -msgid "This feed is empty" +#: ../melon/servers/nebula/__init__.py:31 +msgid "Password" msgstr "" -#: ../melon/player/__init__.py:65 -msgid "Quality" +#: ../melon/servers/nebula/__init__.py:32 +msgid "Password associated with your account" msgstr "" -#: ../melon/player/__init__.py:66 -msgid "Video quality" +#: ../melon/servers/nebula/__init__.py:37 +msgid ".m3u8 Player" msgstr "" -#: ../melon/player/__init__.py:76 -msgid "Description" +#: ../melon/servers/nebula/__init__.py:38 +#, python-format +msgid "valid .m3u8 web-pased player url. %s will be replaced with playlist url" msgstr "" -#: ../melon/player/__init__.py:92 -msgid "Add this video to a playlist" +#: ../melon/servers/peertube/__init__.py:15 +msgid "Decentralized video hosting network, based on free/libre software" msgstr "" -#: ../melon/playlist/create.py:17 ../melon/playlist/create.py:34 -msgid "New Playlist" +#: ../melon/servers/peertube/__init__.py:20 +msgid "Instances" msgstr "" -#: ../melon/playlist/create.py:24 ../melon/playlist/pick.py:28 -msgid "Video" +#: ../melon/servers/peertube/__init__.py:21 +msgid "" +"List of peertube instances, from which to fetch content. See https://" +"joinpeertube.org/instances" msgstr "" -#: ../melon/playlist/create.py:25 -msgid "The following video will be added to the new playlist" +#: ../melon/servers/peertube/__init__.py:27 +msgid "Show NSFW content" msgstr "" -#: ../melon/playlist/create.py:35 -msgid "Enter more playlist information" +#: ../melon/servers/peertube/__init__.py:28 +msgid "Passes the nsfw filter to the peertube search API" msgstr "" -#: ../melon/playlist/create.py:38 ../melon/playlist/__init__.py:86 -msgid "Playlist name" +#: ../melon/servers/peertube/__init__.py:33 +msgid "Enable Federation" msgstr "" -#: ../melon/playlist/create.py:39 -msgid "Unnamed Playlist" +#: ../melon/servers/peertube/__init__.py:34 +msgid "Returns content from federated instances instead of only local content" msgstr "" -#: ../melon/playlist/create.py:41 ../melon/playlist/__init__.py:89 -msgid "Playlist description" +#: ../melon/servers/peertube/__init__.py:58 +msgid "Latest" msgstr "" -#: ../melon/playlist/create.py:48 ../melon/playlist/pick.py:86 -msgid "Do not create playlist" +#: ../melon/settings/__init__.py:18 +msgid "Show Previews when browsing public feeds (incl. search)" msgstr "" -#: ../melon/playlist/create.py:49 -msgid "Create playlist" +#: ../melon/settings/__init__.py:19 +msgid "" +"Set to true to show previews when viewing channel contents, public feeds and " +"searching" msgstr "" -#: ../melon/playlist/pick.py:23 -msgid "Add to Playlist" +#: ../melon/settings/__init__.py:25 +msgid "Show Previews in local feeds" msgstr "" -#: ../melon/playlist/pick.py:29 -msgid "The following video will be added to the playlist" +#: ../melon/settings/__init__.py:26 +msgid "" +"Set to true to show previews in the new feed, for subscribed channels, and " +"saved playlists" msgstr "" -#: ../melon/playlist/pick.py:39 -msgid "Add to playlist" +#: ../melon/settings/__init__.py:32 +msgid "Show servers that may contain nsfw content" msgstr "" -#: ../melon/playlist/pick.py:40 +#: ../melon/settings/__init__.py:33 msgid "" -"Choose a playlist to add the video to. Note that you can only add videos to " -"local playlists, not external bookmarked ones" -msgstr "" - -#: ../melon/playlist/pick.py:42 -msgid "Create new playlist" +"Lists/Delists servers in the browse servers list, if they contain some nsfw " +"content" msgstr "" -#: ../melon/playlist/pick.py:43 -msgid "Create a new playlist and add the video to it" +#: ../melon/settings/__init__.py:38 +msgid "Show servers that only contain nsfw content" msgstr "" -#: ../melon/playlist/__init__.py:39 -msgid "Edit" +#: ../melon/settings/__init__.py:39 +msgid "" +"Lists/Delists servers in the browse servers list, if they contain only/" +"mostly nsfw content" msgstr "" -#: ../melon/playlist/__init__.py:45 -msgid "You haven't added any videos to this playlist yet" +#: ../melon/settings/__init__.py:45 +msgid "Show servers that require login" msgstr "" -#: ../melon/playlist/__init__.py:47 -msgid "Start watching" +#: ../melon/settings/__init__.py:46 +msgid "" +"Lists/Delists servers in the browse servers list, if they require login to " +"function" msgstr "" -#: ../melon/playlist/__init__.py:77 -msgid "Edit Playlist" +#: ../melon/settings/__init__.py:55 +msgid "Settings" msgstr "" -#: ../melon/playlist/__init__.py:83 -msgid "Playlist details" +#: ../melon/settings/__init__.py:68 +msgid "General" msgstr "" -#: ../melon/playlist/__init__.py:84 -msgid "Change playlist information" +#: ../melon/settings/__init__.py:69 +msgid "Global app settings" msgstr "" -#: ../melon/playlist/__init__.py:94 -msgid "Save details" +#: ../melon/settings/__init__.py:93 +msgid "Enable Server" msgstr "" -#: ../melon/playlist/__init__.py:95 -msgid "Change playlist title and description. (Closes the dialog)" +#: ../melon/settings/__init__.py:94 +msgid "" +"Disabled servers won't show up in the browser or on the local/home screen" msgstr "" -#: ../melon/playlist/__init__.py:105 ../melon/playlist/__init__.py:147 -msgid "Delete Playlist" +#: ../melon/widgets/preferencerow.py:115 +msgid "Add" msgstr "" -#: ../melon/playlist/__init__.py:106 -msgid "Delete this playlist and it's content. This can NOT be undone." +#: ../melon/widgets/preferencerow.py:129 +msgid "Move up" msgstr "" -#: ../melon/playlist/__init__.py:117 -msgid "Close" +#: ../melon/widgets/preferencerow.py:140 +msgid "Move down" msgstr "" -#: ../melon/playlist/__init__.py:117 -msgid "Close without chaning anything" +#: ../melon/widgets/preferencerow.py:149 +msgid "Remove from list" msgstr "" -#: ../melon/playlist/__init__.py:150 -msgid "Do you really wan't to delete this playlist?" +#: ../melon/widgets/preferencerow.py:162 +msgid "Add Item" msgstr "" -#: ../melon/playlist/__init__.py:151 -msgid "This cannot be undone" +#: ../melon/widgets/preferencerow.py:165 +msgid "Create a new list entry" msgstr "" -#: ../melon/playlist/__init__.py:155 -msgid "Do not delete the playlist" +#: ../melon/widgets/preferencerow.py:166 +msgid "Enter the new value here" msgstr "" -#: ../melon/playlist/__init__.py:156 -msgid "Delete this playlist" +#: ../melon/widgets/preferencerow.py:169 +msgid "Value" msgstr "" -#: ../melon/import_providers/newpipe.py:28 -msgid "Newpipe Database importer" +#: ../melon/widgets/preferencerow.py:209 +msgid "Do you really want to delete this item?" msgstr "" -#: ../melon/import_providers/newpipe.py:29 -msgid "" -"Import the .db file from inside the newpipe .zip export (as invidious " -"content)" +#: ../melon/widgets/preferencerow.py:210 +msgid "You won't be able to restore it afterwards" msgstr "" -#: ../melon/import_providers/newpipe.py:30 -msgid "Select .db file" +#: ../melon/widgets/preferencerow.py:217 +msgid "Do not remove item" msgstr "" -#: ../melon/import_providers/newpipe.py:45 -msgid "Newpipe Database" +#: ../melon/widgets/preferencerow.py:218 +msgid "Remove item from list" msgstr "" #: ../melon/window.py:81 msgid "Stream videos on the go" msgstr "" - -#: ../melon/importer.py:17 ../melon/importer.py:35 -msgid "Import" -msgstr "" - -#: ../melon/importer.py:36 -msgid "The following import methods have been found" -msgstr "" - -#: ../melon/importer.py:62 -msgid "There are no available importer methods" -msgstr "" diff --git a/po/update_potfiles.sh b/po/update_potfiles.sh index b1c968e..34e59ee 100755 --- a/po/update_potfiles.sh +++ b/po/update_potfiles.sh @@ -8,13 +8,38 @@ find ../melon -iname "*.py" | \ --package-name=Melon \ --package-version=$version \ --from-code=UTF-8 \ - --output=melon.pot + --output=melon-python.pot -echo data/icu.ccw.Melon.desktop.in > POTFILES.in -find ../melon -iname "*.py" | \ - xargs -n 1 grep -H "import gettext" | \ - cut -d':' -f1 | \ - cut -d'/' -f2- >> POTFILES.in +find ../data/ -iname "*.desktop.in" | \ + xargs xgettext \ + --package-name=Melon \ + --package-version=$version \ + --from-code=UTF-8 \ + --output=melon-desktop.pot \ + -L Desktop +find ../data/ -iname "*.metainfo.xml.in.in" | \ + xargs xgettext \ + --no-wrap \ + --package-name=Melon \ + --package-version=$version \ + --from-code=UTF-8 --output=melon-metainfo.pot + +msgcat \ + --sort-by-file \ + --use-first \ + --output-file=melon.pot \ + melon-python.pot \ + melon-desktop.pot \ + melon-metainfo.pot + +rm melon-*.pot + +cat melon.pot | \ + grep "^#:" | \ + cut -d: -f2 | \ + cut -d'/' -f2- | \ + sort | \ + uniq > POTFILES.in echo "# Please keep this list alphabetically sorted" > LINGUAS for l in $(find -iname '*.po'); do basename $l .po >> LINGUAS; done -- 2.38.5