1
0
Fork 0
mirror of https://github.com/HenkKalkwater/harbour-sailfin.git synced 2024-12-22 22:15:17 +00:00

sailfin: Improve layout on landscape and tablet screens

I've dropped the whole `<constant> * Theme.pixelRatio`-approach[^1]
for determining when the UI should split into two columns, because
the values seemed quite arbitrary and I was entering random numbers.
I'm now doing it on multiples of `Theme.itemSizeHuge`, which is easier
to reason about.

This also fixes occasions where items in a grid would leave a bit of
space to the right in the CollectionPage.

Backdrop images in VideoPage and MusicAlbumPage now have a maximum
height of half of the screen, to avoid filling the entire screen in
landscape mode. Perhaps it doesn't always look good, but it makes the
layout more usable.

Images on the SeasonPage and MusicAlbumPage (in landscape) are now
aligned to the right, to avoid blocking the Page back indicator.
This commit is contained in:
Chris Josten 2024-01-17 15:28:57 +01:00
parent 5328e63e2c
commit edcd3a93af
15 changed files with 999 additions and 635 deletions

View file

@ -1,6 +1,6 @@
/* /*
Sailfin: a Jellyfin client written using Qt Sailfin: a Jellyfin client written using Qt
Copyright (C) 2020 Chris Josten Copyright (C) 2020-2024 Chris Josten
This library is free software; you can redistribute it and/or This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public modify it under the terms of the GNU Lesser General Public
@ -59,7 +59,8 @@ QtObject {
} }
} }
readonly property real libraryDelegatePosterHeight: libraryDelegateHeight * 1.5 // 1.6667 readonly property real libraryDelegatePosterRatio: 1.5
readonly property real libraryDelegatePosterHeight: libraryDelegateHeight * libraryDelegatePosterRatio
readonly property real libraryProgressHeight: Theme.paddingMedium readonly property real libraryProgressHeight: Theme.paddingMedium

View file

@ -1,6 +1,6 @@
/* /*
Sailfin: a Jellyfin client written using Qt Sailfin: a Jellyfin client written using Qt
Copyright (C) 2020 Chris Josten Copyright (C) 2020-2024 Chris Josten
This library is free software; you can redistribute it and/or This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public modify it under the terms of the GNU Lesser General Public
@ -52,7 +52,7 @@ function propsToQuery(options) {
for (var prop in options) { for (var prop in options) {
if (options.hasOwnProperty(prop)) { if (options.hasOwnProperty(prop)) {
var value = options[prop]; var value = options[prop];
if (prop === "maxWidth" || prop === "maxHeight") { if (prop === "maxWidth" || prop === "maxHeight" || prop === "width" || prop === "height") {
value = Math.floor(options[prop]); value = Math.floor(options[prop]);
} }
query += "&" + prop + "=" + value; query += "&" + prop + "=" + value;

View file

@ -1,6 +1,6 @@
/* /*
Sailfin: a Jellyfin client written using Qt Sailfin: a Jellyfin client written using Qt
Copyright (C) 2020 Chris Josten Copyright (C) 2020-2024 Chris Josten
This library is free software; you can redistribute it and/or This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public modify it under the terms of the GNU Lesser General Public
@ -26,12 +26,13 @@ Column {
property real playProgress: 0.0 property real playProgress: 0.0
property bool favourited: false property bool favourited: false
property alias imageBlurhash: playImage.blurhash property alias imageBlurhash: playImage.blurhash
property real maxHeight: parent.width / imageAspectRatio
signal playPressed(bool resume) signal playPressed(bool resume)
spacing: Theme.paddingLarge spacing: Theme.paddingLarge
BackgroundItem { BackgroundItem {
width: parent.width width: parent.width
height: width / imageAspectRatio height: Math.min(maxHeight, width / imageAspectRatio)
RemoteImage { RemoteImage {
id: playImage id: playImage
anchors.fill: parent anchors.fill: parent

View file

@ -1,6 +1,6 @@
/* /*
Sailfin: a Jellyfin client written using Qt Sailfin: a Jellyfin client written using Qt
Copyright (C) 2021 Chris Josten Copyright (C) 2021-2024 Chris Josten
This library is free software; you can redistribute it and/or This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public modify it under the terms of the GNU Lesser General Public
@ -18,7 +18,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/ */
import QtQuick 2.6 import QtQuick 2.6
import QtMultimedia 5.6
import Sailfish.Silica 1.0 import Sailfish.Silica 1.0
import nl.netsoj.chris.Jellyfin 1.0 as J import nl.netsoj.chris.Jellyfin 1.0 as J
@ -231,9 +230,9 @@ PanelBackground {
rightMargin: Theme.paddingMedium rightMargin: Theme.paddingMedium
verticalCenter: parent.verticalCenter verticalCenter: parent.verticalCenter
} }
icon.source: manager.playbackState === MediaPlayer.PlayingState icon.source: manager.playbackState === J.PlayerState.Playing
? "image://theme/icon-m-pause" : "image://theme/icon-m-play" ? "image://theme/icon-m-pause" : "image://theme/icon-m-play"
onClicked: manager.playbackState === MediaPlayer.PlayingState onClicked: manager.playbackState === J.PlayerState.Playing
? manager.pause() ? manager.pause()
: manager.play() : manager.play()
} }

View file

@ -2,6 +2,8 @@ import QtQuick 2.0
import Sailfish.Silica 1.0 import Sailfish.Silica 1.0
Page { Page {
allowedOrientations: Orientation.All
PageBusyIndicator { PageBusyIndicator {
running: true running: true
} }

View file

@ -1,6 +1,6 @@
/* /*
Sailfin: a Jellyfin client written using Qt Sailfin: a Jellyfin client written using Qt
Copyright (C) 2020 Chris Josten Copyright (C) 2020-2024 Chris Josten
This library is free software; you can redistribute it and/or This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public modify it under the terms of the GNU Lesser General Public
@ -40,6 +40,9 @@ Page {
property string _chosenBackdropImage: "" property string _chosenBackdropImage: ""
readonly property string parentId: itemData.parentId || "" readonly property string parentId: itemData.parentId || ""
readonly property int gridColumnCount: Math.floor(pageRoot.width / Theme.itemSizeHuge)
readonly property int gridCellSize: Math.floor(pageRoot.width / gridColumnCount)
function updateBackdrop() { function updateBackdrop() {
/*var rand = 0; /*var rand = 0;
if (itemData.backdropImageTags.length > 0) { if (itemData.backdropImageTags.length > 0) {

View file

@ -63,9 +63,9 @@ BaseDetailPage {
id: gridView id: gridView
anchors.fill: parent anchors.fill: parent
model: collectionModel model: collectionModel
cellWidth: Constants.libraryDelegateWidth cellWidth: gridCellSize
cellHeight: Utils.usePortraitCover(itemData.collectionType) ? Constants.libraryDelegatePosterHeight cellHeight: Utils.usePortraitCover(itemData.collectionType) ? gridCellSize * Constants.libraryDelegatePosterRatio
: Constants.libraryDelegateHeight : gridCellSize
visible: itemData.status !== J.LoaderBase.Error visible: itemData.status !== J.LoaderBase.Error
header: PageHeader { header: PageHeader {

View file

@ -1,6 +1,6 @@
/* /*
Sailfin: a Jellyfin client written using Qt Sailfin: a Jellyfin client written using Qt
Copyright (C) 2020 Chris Josten Copyright (C) 2020-2024 Chris Josten
This library is free software; you can redistribute it and/or This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public modify it under the terms of the GNU Lesser General Public
@ -29,10 +29,8 @@ import "../.."
BaseDetailPage { BaseDetailPage {
id: albumPageRoot id: albumPageRoot
readonly property int _songIndexWidth: 100 readonly property int _songIndexWidth: 100
width: 800 * Theme.pixelRatio
property bool _collectionModelLoaded: false property bool _collectionModelLoaded: false
readonly property bool _twoColumns: albumPageRoot.width / Theme.pixelRatio >= 800 readonly property bool _twoColumns: gridColumnCount > 4
readonly property string _description: { readonly property string _description: {
if (itemData.type === "MusicAlbum") { if (itemData.type === "MusicAlbum") {
//: Short description of the album: %1 -> album artist, %2 -> amount of songs, %3 -> duration, %4 -> release year //: Short description of the album: %1 -> album artist, %2 -> amount of songs, %3 -> duration, %4 -> release year
@ -63,17 +61,7 @@ BaseDetailPage {
RowLayout { RowLayout {
anchors.fill: parent anchors.fill: parent
Item {height: 1; width: Theme.horizontalPageMargin; visible: wideAlbumCover.visible; }
Loader {
id: wideAlbumCover
visible: _twoColumns
Layout.minimumWidth: 1000 / Theme.pixelRatio
Layout.fillHeight: true
source: visible
? "../../components/music/WideAlbumCover.qml" : ""
onLoaded: bindAlbum(item)
}
Item {height: 1; width: Theme.horizontalPageMargin; visible: wideAlbumCover.visible; }
SilicaListView { SilicaListView {
id: list id: list
Layout.fillHeight: true Layout.fillHeight: true
@ -101,6 +89,17 @@ BaseDetailPage {
VerticalScrollDecorator {} VerticalScrollDecorator {}
} }
Item {height: 1; width: Theme.paddingLarge; visible: wideAlbumCover.visible; }
Loader {
id: wideAlbumCover
visible: _twoColumns
Layout.minimumWidth: gridCellSize * 2
Layout.fillHeight: true
source: visible
? "../../components/music/WideAlbumCover.qml" : ""
onLoaded: bindAlbum(item)
}
Item {height: 1; width: Theme.horizontalPageMargin; visible: wideAlbumCover.visible; }
} }
function bindAlbum(item) { function bindAlbum(item) {

View file

@ -1,6 +1,6 @@
/* /*
Sailfin: a Jellyfin client written using Qt Sailfin: a Jellyfin client written using Qt
Copyright (C) 2022 Chris Josten Copyright (C) 2022-2024 Chris Josten
This library is free software; you can redistribute it and/or This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public modify it under the terms of the GNU Lesser General Public
@ -107,7 +107,7 @@ BaseDetailPage {
left: parent.left left: parent.left
right: parent.right right: parent.right
} }
height: width / 16 * 9 height: Math.min(albumPage.height / 2, width / 16 * 9)
fillMode: Image.PreserveAspectCrop fillMode: Image.PreserveAspectCrop
source: Utils.itemBackdropUrl(apiClient.baseUrl, itemData, 0, {"maxWidth": parent.width}) source: Utils.itemBackdropUrl(apiClient.baseUrl, itemData, 0, {"maxWidth": parent.width})
blurhash: itemData.imageBlurHashes["Backdrop"][itemData.backdropImageTags[0]] blurhash: itemData.imageBlurHashes["Backdrop"][itemData.backdropImageTags[0]]
@ -219,15 +219,14 @@ BaseDetailPage {
"pageTitle": qsTr("Discography of %1").arg(itemData.name) "pageTitle": qsTr("Discography of %1").arg(itemData.name)
}) })
} }
GridLayout { GridLayout {
width: parent.width anchors.left: parent.left
columns: 3 width: Math.min(appearsOnModel.count() * gridCellSize, gridColumnCount * gridCellSize)
columns: gridColumnCount
columnSpacing: 0 columnSpacing: 0
rowSpacing: 0 rowSpacing: 0
anchors {
left: parent.left
right: parent.right
}
Repeater { Repeater {
id: albumRepeater id: albumRepeater
model: albumsModel model: albumsModel
@ -237,8 +236,8 @@ BaseDetailPage {
poster: Utils.itemModelImageUrl(appWindow.apiClient.baseUrl, model.jellyfinId, model.imageTags["Primary"], "Primary", {"height": height}) poster: Utils.itemModelImageUrl(appWindow.apiClient.baseUrl, model.jellyfinId, model.imageTags["Primary"], "Primary", {"height": height})
blurhash: model.imageBlurHashes["Primary"][model.imageTags["Primary"]] blurhash: model.imageBlurHashes["Primary"][model.imageTags["Primary"]]
title: model.name title: model.name
Layout.preferredWidth: Constants.libraryDelegateWidth * _multiplier Layout.preferredWidth: gridCellSize * _multiplier
Layout.preferredHeight: Constants.libraryDelegateHeight * _multiplier Layout.preferredHeight: gridCellSize * _multiplier
Layout.rowSpan: _multiplier Layout.rowSpan: _multiplier
Layout.columnSpan: _multiplier Layout.columnSpan: _multiplier
onClicked: appWindow.navigateToItem(model.jellyfinId, model.mediaType, model.type, model.isFolder) onClicked: appWindow.navigateToItem(model.jellyfinId, model.mediaType, model.type, model.isFolder)
@ -256,14 +255,13 @@ BaseDetailPage {
}) })
} }
GridLayout { GridLayout {
width: parent.width anchors.left: parent.left
columns: 3 width: Math.min(appearsOnModel.count() * gridCellSize, gridColumnCount * gridCellSize)
columns: gridColumnCount
columnSpacing: 0 columnSpacing: 0
rowSpacing: 0 rowSpacing: 0
anchors {
left: parent.left
right: parent.right
}
Repeater { Repeater {
id: appearsOnRepeater id: appearsOnRepeater
model: appearsOnModel model: appearsOnModel
@ -274,8 +272,9 @@ BaseDetailPage {
blurhash: model.imageBlurHashes["Primary"][model.imageTags["Primary"]] blurhash: model.imageBlurHashes["Primary"][model.imageTags["Primary"]]
title: model.name title: model.name
Layout.alignment: Qt.AlignLeft | Qt.AlignTop Layout.alignment: Qt.AlignLeft | Qt.AlignTop
Layout.preferredWidth: Constants.libraryDelegateWidth * _multiplier Layout.preferredWidth: gridCellSize * _multiplier
Layout.preferredHeight: Constants.libraryDelegateHeight * _multiplier Layout.maximumWidth: gridCellSize * _multiplier
Layout.preferredHeight: gridCellSize * _multiplier
Layout.fillWidth: false Layout.fillWidth: false
Layout.fillHeight: false Layout.fillHeight: false
onClicked: appWindow.navigateToItem(model.jellyfinId, model.mediaType, model.type, model.isFolder) onClicked: appWindow.navigateToItem(model.jellyfinId, model.mediaType, model.type, model.isFolder)

View file

@ -1,6 +1,6 @@
/* /*
Sailfin: a Jellyfin client written using Qt Sailfin: a Jellyfin client written using Qt
Copyright (C) 2020 Chris Josten Copyright (C) 2020-2024 Chris Josten
This library is free software; you can redistribute it and/or This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public modify it under the terms of the GNU Lesser General Public
@ -58,7 +58,7 @@ BaseDetailPage {
id: episodeImage id: episodeImage
anchors { anchors {
top: parent.top top: parent.top
left: parent.left right: parent.right
bottom: parent.bottom bottom: parent.bottom
} }
width: Constants.libraryDelegateWidth width: Constants.libraryDelegateWidth
@ -116,11 +116,11 @@ BaseDetailPage {
Label { Label {
id: episodeTitle id: episodeTitle
anchors { anchors {
left: episodeImage.right right: episodeImage.left
leftMargin: Theme.paddingLarge rightMargin: Theme.paddingLarge
top: parent.top top: parent.top
right: parent.right left: parent.left
rightMargin: Theme.horizontalPageMargin leftMargin: Theme.horizontalPageMargin
} }
text: model.name text: model.name
truncationMode: TruncationMode.Fade truncationMode: TruncationMode.Fade
@ -130,10 +130,10 @@ BaseDetailPage {
Label { Label {
id: episodeOverview id: episodeOverview
anchors { anchors {
left: episodeImage.right right: episodeImage.left
leftMargin: Theme.paddingLarge rightMargin: Theme.paddingLarge
right: parent.right left: parent.left
rightMargin: Theme.horizontalPageMargin leftMargin: Theme.horizontalPageMargin
top: episodeTitle.bottom top: episodeTitle.bottom
bottom: parent.bottom bottom: parent.bottom
} }

View file

@ -63,6 +63,7 @@ BaseDetailPage {
imageSource: detailPage.imageSource imageSource: detailPage.imageSource
imageAspectRatio: Constants.horizontalVideoAspectRatio imageAspectRatio: Constants.horizontalVideoAspectRatio
imageBlurhash: detailPage.imageBlurhash imageBlurhash: detailPage.imageBlurhash
maxHeight: detailPage.height / 2
Binding on favourited { Binding on favourited {
when: _userdataReady when: _userdataReady
value: itemData.userData.favorite value: itemData.userData.favorite

View file

@ -42,6 +42,7 @@ Dialog {
acceptDestination: Page { acceptDestination: Page {
allowedOrientations: Orientation.All
BusyLabel { BusyLabel {
text: qsTr("Logging in as %1").arg(username.text) text: qsTr("Logging in as %1").arg(username.text)
running: true running: true

View file

@ -4,30 +4,36 @@
<context> <context>
<name>AboutPage</name> <name>AboutPage</name>
<message> <message>
<location filename="../qml/pages/AboutPage.qml" line="38"/>
<source>About Sailfin</source> <source>About Sailfin</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Open externally</source> <location filename="../qml/pages/AboutPage.qml" line="53"/>
<translation type="unfinished"></translation>
</message>
<message>
<source>LGPL 2.1 License</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&lt;p&gt;&lt;b&gt;Sailfin version %1&lt;/b&gt;&lt;br/&gt;Copyright © Chris Josten 2020%2&lt;/p&gt;&lt;p&gt;Sailfin is Free Software licensed under the &lt;a href=&apos;lgpl&apos;&gt;LGPL-v2.1&lt;/a&gt; or later, at your choice. You can &lt;a href=&quot;github&quot;&gt;view its source code on GitHub&lt;/a&gt;. Parts of the code of Sailfin are from other libraries. &lt;a href=&apos;3rdparty&apos;&gt;View their licenses here&lt;/a&gt;.&lt;/p&gt;</source> <source>&lt;p&gt;&lt;b&gt;Sailfin version %1&lt;/b&gt;&lt;br/&gt;Copyright © Chris Josten 2020%2&lt;/p&gt;&lt;p&gt;Sailfin is Free Software licensed under the &lt;a href=&apos;lgpl&apos;&gt;LGPL-v2.1&lt;/a&gt; or later, at your choice. You can &lt;a href=&quot;github&quot;&gt;view its source code on GitHub&lt;/a&gt;. Parts of the code of Sailfin are from other libraries. &lt;a href=&apos;3rdparty&apos;&gt;View their licenses here&lt;/a&gt;.&lt;/p&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AboutPage.qml" line="79"/>
<source>Contributors</source> <source>Contributors</source>
<extracomment>SectionHeader</extracomment> <extracomment>SectionHeader</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../qml/pages/AboutPage.qml" line="107"/>
<source>Open externally</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AboutPage.qml" line="116"/>
<source>LGPL 2.1 License</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>AddServerConnectingPage</name> <name>AddServerConnectingPage</name>
<message> <message>
<location filename="../qml/pages/setup/AddServerConnectingPage.qml" line="37"/>
<source>Connecting to %1</source> <source>Connecting to %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -35,30 +41,37 @@
<context> <context>
<name>AddServerPage</name> <name>AddServerPage</name>
<message> <message>
<location filename="../qml/pages/setup/AddServerPage.qml" line="50"/>
<source>Connect</source> <source>Connect</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/setup/AddServerPage.qml" line="51"/>
<source>Connect to Jellyfin</source> <source>Connect to Jellyfin</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/setup/AddServerPage.qml" line="61"/>
<source>Server</source> <source>Server</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/setup/AddServerPage.qml" line="62"/>
<source>Sailfin will try to search for Jellyfin servers on your local network automatically</source> <source>Sailfin will try to search for Jellyfin servers on your local network automatically</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/setup/AddServerPage.qml" line="69"/>
<source>enter address manually</source> <source>enter address manually</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/setup/AddServerPage.qml" line="107"/>
<source>Server address</source> <source>Server address</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/setup/AddServerPage.qml" line="108"/>
<source>e.g. https://demo.jellyfin.org</source> <source>e.g. https://demo.jellyfin.org</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -66,10 +79,12 @@
<context> <context>
<name>BaseDetailPage</name> <name>BaseDetailPage</name>
<message> <message>
<location filename="../qml/pages/itemdetails/BaseDetailPage.qml" line="72"/>
<source>Retry</source> <source>Retry</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/BaseDetailPage.qml" line="83"/>
<source>An error has occured</source> <source>An error has occured</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -77,106 +92,121 @@
<context> <context>
<name>CollectionPage</name> <name>CollectionPage</name>
<message> <message>
<location filename="../qml/pages/itemdetails/CollectionPage.qml" line="72"/>
<source>Loading</source> <source>Loading</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Sort by</source> <location filename="../qml/pages/itemdetails/CollectionPage.qml" line="79"/>
<extracomment>Menu item for selecting the sort order of a collection</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Empty collection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add some items to this collection!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Play count</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Date added</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ascending</source>
<extracomment>Sort order</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Descending</source>
<extracomment>Sort order</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sailfin</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Settings</source> <source>Settings</source>
<extracomment>Pulley menu item: navigate to application settings page</extracomment> <extracomment>Pulley menu item: navigate to application settings page</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/CollectionPage.qml" line="84"/>
<source>Remote control</source> <source>Remote control</source>
<extracomment>Pulley menu item: shows controllable device page</extracomment> <extracomment>Pulley menu item: shows controllable device page</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../qml/pages/itemdetails/CollectionPage.qml" line="90"/>
<location filename="../qml/pages/itemdetails/CollectionPage.qml" line="169"/>
<source>Sort by</source>
<extracomment>Menu item for selecting the sort order of a collection</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/itemdetails/CollectionPage.qml" line="144"/>
<source>Empty collection</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/itemdetails/CollectionPage.qml" line="145"/>
<source>Add some items to this collection!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/itemdetails/CollectionPage.qml" line="160"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/itemdetails/CollectionPage.qml" line="161"/>
<source>Play count</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/itemdetails/CollectionPage.qml" line="162"/>
<source>Date added</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/itemdetails/CollectionPage.qml" line="185"/>
<source>Ascending</source>
<extracomment>Sort order</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/itemdetails/CollectionPage.qml" line="190"/>
<source>Descending</source>
<extracomment>Sort order</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/cover/CollectionPage.qml" line="124"/>
<source>Sailfin</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>ControllableDevicesPage</name> <name>ControllableDevicesPage</name>
<message> <message>
<location filename="../qml/pages/ControllableDevicesPage.qml" line="16"/>
<source>Remote control</source> <source>Remote control</source>
<extracomment>Page title: page for remote controlling other Jellyfin apps</extracomment> <extracomment>Page title: page for remote controlling other Jellyfin apps</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/ControllableDevicesPage.qml" line="63"/>
<source>%1 %2</source> <source>%1 %2</source>
<extracomment>List of devices item title in the form of &lt;app name&gt; &lt;device name&gt;</extracomment> <extracomment>List of devices item title in the form of &lt;app name&gt; &lt;device name&gt;</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context>
<name>CoverPage</name>
<message>
<source>My Cover</source>
<translation type="vanished">Mein Cover</translation>
</message>
</context>
<context> <context>
<name>DebugPage</name> <name>DebugPage</name>
<message> <message>
<location filename="../qml/pages/settings/DebugPage.qml" line="47"/>
<source>Debug information</source> <source>Debug information</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/settings/DebugPage.qml" line="51"/>
<source>Show debug information</source> <source>Show debug information</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/settings/DebugPage.qml" line="57"/>
<source>Websocket</source> <source>Websocket</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/settings/DebugPage.qml" line="61"/>
<source>Connection state</source> <source>Connection state</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/settings/DebugPage.qml" line="67"/>
<source>Unconnected</source> <source>Unconnected</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/settings/DebugPage.qml" line="95"/>
<source>%1 (%2)</source> <source>%1 (%2)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/settings/DebugPage.qml" line="100"/>
<source>Device profile</source> <source>Device profile</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -184,18 +214,22 @@
<context> <context>
<name>EpisodePage</name> <name>EpisodePage</name>
<message> <message>
<location filename="../qml/pages/itemdetails/EpisodePage.qml" line="30"/>
<source>Episode %1%2 | %3</source> <source>Episode %1%2 | %3</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/EpisodePage.qml" line="34"/>
<source>Episode %1 | %2</source> <source>Episode %1 | %2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/EpisodePage.qml" line="39"/>
<source>Overview</source> <source>Overview</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/EpisodePage.qml" line="44"/>
<source>No overview available</source> <source>No overview available</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -203,40 +237,30 @@
<context> <context>
<name>FilmPage</name> <name>FilmPage</name>
<message> <message>
<location filename="../qml/pages/itemdetails/FilmPage.qml" line="29"/>
<source>Released: %1 Run time: %2</source> <source>Released: %1 Run time: %2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/FilmPage.qml" line="34"/>
<source>Overview</source> <source>Overview</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context>
<name>FirstPage</name>
<message>
<source>Show Page 2</source>
<translation type="vanished">Zur Seite 2</translation>
</message>
<message>
<source>UI Template</source>
<translation type="vanished">UI-Vorlage</translation>
</message>
<message>
<source>Hello Sailors</source>
<translation type="vanished">Hallo Matrosen</translation>
</message>
</context>
<context> <context>
<name>LegalPage</name> <name>LegalPage</name>
<message> <message>
<location filename="../qml/pages/LegalPage.qml" line="55"/>
<source>Legal</source> <source>Legal</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/LegalPage.qml" line="59"/>
<source>Sailfin contains code taken from other projects. Without them, Sailfin would not be possible!</source> <source>Sailfin contains code taken from other projects. Without them, Sailfin would not be possible!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/LegalPage.qml" line="76"/>
<source>This program contains small snippets of code taken from &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;, which is licensed under the %3 license:</source> <source>This program contains small snippets of code taken from &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;, which is licensed under the %3 license:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -244,34 +268,41 @@
<context> <context>
<name>LoginDialog</name> <name>LoginDialog</name>
<message> <message>
<location filename="../qml/pages/setup/LoginDialog.qml" line="47"/>
<source>Logging in as %1</source> <source>Logging in as %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/setup/LoginDialog.qml" line="65"/>
<source>Invalid username or password</source> <source>Invalid username or password</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/setup/LoginDialog.qml" line="85"/>
<source>Login</source> <source>Login</source>
<extracomment>Dialog action</extracomment> <extracomment>Dialog action</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/setup/LoginDialog.qml" line="129"/>
<source>Credentials</source> <source>Credentials</source>
<extracomment>Section header for entering username and password</extracomment> <extracomment>Section header for entering username and password</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/setup/LoginDialog.qml" line="136"/>
<source>Username</source> <source>Username</source>
<extracomment>Label placeholder for username field</extracomment> <extracomment>Label placeholder for username field</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/setup/LoginDialog.qml" line="154"/>
<source>Password</source> <source>Password</source>
<extracomment>Label placeholder for password field</extracomment> <extracomment>Label placeholder for password field</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/setup/LoginDialog.qml" line="176"/>
<source>Login message</source> <source>Login message</source>
<extracomment>Message shown on login, configured by the server owner. Some form of a MOTD</extracomment> <extracomment>Message shown on login, configured by the server owner. Some form of a MOTD</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -280,56 +311,67 @@
<context> <context>
<name>MainPage</name> <name>MainPage</name>
<message> <message>
<location filename="../qml/pages/MainPage.qml" line="45"/>
<source>Settings</source> <source>Settings</source>
<extracomment>Pulley menu item: navigate to application settings page</extracomment> <extracomment>Pulley menu item: navigate to application settings page</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/MainPage.qml" line="50"/>
<source>Remote control</source>
<extracomment>Pulley menu item: shows controllable device page</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/MainPage.qml" line="55"/>
<source>Reload</source> <source>Reload</source>
<extracomment>Pulley menu item: reload items on page</extracomment> <extracomment>Pulley menu item: reload items on page</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/MainPage.qml" line="88"/>
<source>Resume watching</source> <source>Resume watching</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/MainPage.qml" line="99"/>
<source>Next up</source> <source>Next up</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/MainPage.qml" line="136"/>
<source>Network error</source> <source>Network error</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/MainPage.qml" line="139"/>
<source>Pull down to retry again</source> <source>Pull down to retry again</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Remote control</source>
<extracomment>Pulley menu item: shows controllable device page</extracomment>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>MusicAlbumPage</name> <name>MusicAlbumPage</name>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicAlbumPage.qml" line="37"/>
<source>%1 <source>%1
%2 songs | %3 | %4</source> %2 songs | %3 | %4</source>
<extracomment>Short description of the album: %1 -&gt; album artist, %2 -&gt; amount of songs, %3 -&gt; duration, %4 -&gt; release year</extracomment> <extracomment>Short description of the album: %1 -&gt; album artist, %2 -&gt; amount of songs, %3 -&gt; duration, %4 -&gt; release year</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicAlbumPage.qml" line="42"/>
<source>Unknown year</source> <source>Unknown year</source>
<extracomment>Unknown album release year</extracomment> <extracomment>Unknown album release year</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicAlbumPage.qml" line="44"/>
<source>Playlist <source>Playlist
%1 songs | %2</source> %1 songs | %2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicAlbumPage.qml" line="78"/>
<source>Disc %1</source> <source>Disc %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -337,23 +379,28 @@
<context> <context>
<name>MusicArtistPage</name> <name>MusicArtistPage</name>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicArtistPage.qml" line="144"/>
<source>%1 songs | %2 albums</source> <source>%1 songs | %2 albums</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicArtistPage.qml" line="213"/>
<source>Discography</source> <source>Discography</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicArtistPage.qml" line="219"/>
<source>Discography of %1</source> <source>Discography of %1</source>
<extracomment>Page title for the page with an overview of all albums, eps and singles by a specific artist</extracomment> <extracomment>Page title for the page with an overview of all albums, eps and singles by a specific artist</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicArtistPage.qml" line="248"/>
<source>Appears on</source> <source>Appears on</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicArtistPage.qml" line="254"/>
<source>%1 appears on</source> <source>%1 appears on</source>
<extracomment>Page title for the page with an overview of all albums a specific artist appears on</extracomment> <extracomment>Page title for the page with an overview of all albums a specific artist appears on</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -362,56 +409,69 @@
<context> <context>
<name>MusicLibraryPage</name> <name>MusicLibraryPage</name>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicLibraryPage.qml" line="44"/>
<source>Settings</source>
<extracomment>Pulley menu item: navigate to application settings page</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/itemdetails/MusicLibraryPage.qml" line="49"/>
<source>Remote control</source>
<extracomment>Pulley menu item: shows controllable device page</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/itemdetails/MusicLibraryPage.qml" line="105"/>
<source>Recently added</source> <source>Recently added</source>
<extracomment>Header on music library: Recently added music albums</extracomment> <extracomment>Header on music library: Recently added music albums</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicLibraryPage.qml" line="118"/>
<source>Latest media</source> <source>Latest media</source>
<extracomment>Page title for the list of all albums within the music library</extracomment> <extracomment>Page title for the list of all albums within the music library</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicLibraryPage.qml" line="125"/>
<location filename="../qml/pages/itemdetails/MusicLibraryPage.qml" line="140"/>
<source>Albums</source> <source>Albums</source>
<extracomment>Page title for the list of all albums within the music library</extracomment> <extracomment>Page title for the list of all albums within the music library</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicLibraryPage.qml" line="145"/>
<location filename="../qml/pages/itemdetails/MusicLibraryPage.qml" line="160"/>
<source>Playlists</source> <source>Playlists</source>
<extracomment>Page title for the list of all playlists within the music library</extracomment> <extracomment>Page title for the list of all playlists within the music library</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicLibraryPage.qml" line="166"/>
<location filename="../qml/pages/itemdetails/MusicLibraryPage.qml" line="179"/>
<source>Artists</source> <source>Artists</source>
<extracomment>Header for music artists <extracomment>Header for music artists
---------- ----------
Page title for the list of all artists within the music library</extracomment> Page title for the list of all artists within the music library</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Settings</source>
<extracomment>Pulley menu item: navigate to application settings page</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Remote control</source>
<extracomment>Pulley menu item: shows controllable device page</extracomment>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>PlayQueue</name> <name>PlayQueue</name>
<message> <message>
<location filename="../qml/components/PlayQueue.qml" line="17"/>
<source>Queue</source> <source>Queue</source>
<extracomment>Now playing page queue section header</extracomment> <extracomment>Now playing page queue section header</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/components/PlayQueue.qml" line="20"/>
<source>Playlist</source> <source>Playlist</source>
<extracomment>Now playing page playlist section header</extracomment> <extracomment>Now playing page playlist section header</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/components/PlayQueue.qml" line="22"/>
<source>Unknown section: %1</source> <source>Unknown section: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -419,36 +479,43 @@ Page title for the list of all artists within the music library</extracomment>
<context> <context>
<name>PlaybackBar</name> <name>PlaybackBar</name>
<message> <message>
<source>No audio</source> <location filename="../qml/components/PlaybackBar.qml" line="135"/>
<translation type="unfinished"></translation>
</message>
<message>
<source>Shuffle not yet implemented</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Stop</source>
<extracomment>Pulley menu item: stops playback of music</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Nothing is playing</source> <source>Nothing is playing</source>
<extracomment>Shown in a bright font when no media is playing in the bottom bar and now playing screen</extracomment> <extracomment>Shown in a bright font when no media is playing in the bottom bar and now playing screen</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/components/PlaybackBar.qml" line="149"/>
<source>Connected to %1</source> <source>Connected to %1</source>
<extracomment>Shown when no media is being played, but the app is controlling another Jellyfin client %1 is the name of said client</extracomment> <extracomment>Shown when no media is being played, but the app is controlling another Jellyfin client %1 is the name of said client</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/components/PlaybackBar.qml" line="151"/>
<source>Start playing some media!</source> <source>Start playing some media!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../qml/components/PlaybackBar.qml" line="174"/>
<source>No audio</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/components/PlaybackBar.qml" line="210"/>
<source>Shuffle not yet implemented</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/components/PlaybackBar.qml" line="497"/>
<source>Stop</source>
<extracomment>Pulley menu item: stops playback of music</extracomment>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>PosterCover</name> <name>PosterCover</name>
<message> <message>
<location filename="../qml/cover/PosterCover.qml" line="81"/>
<source>%1/%2</source> <source>%1/%2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -456,6 +523,7 @@ Page title for the list of all artists within the music library</extracomment>
<context> <context>
<name>QObject</name> <name>QObject</name>
<message> <message>
<location filename="../src/harbour-sailfin.cpp" line="53"/>
<source>Sailfin</source> <source>Sailfin</source>
<extracomment>Application display name</extracomment> <extracomment>Application display name</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -464,6 +532,20 @@ Page title for the list of all artists within the music library</extracomment>
<context> <context>
<name>QuickConnectDialog</name> <name>QuickConnectDialog</name>
<message> <message>
<location filename="../qml/pages/QuickConnectDialog.qml" line="36"/>
<source>Allow login</source>
<extracomment>Accept button on dialog for submitting a Quick Connect code</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/QuickConnectDialog.qml" line="50"/>
<source>To log a device in with Quick Connect, select the Quick Connect button and enter the displayed code in the field below.</source>
<extracomment>Instructions on page that tells the user a bit about how Quick Connect works</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/QuickConnectDialog.qml" line="56"/>
<location filename="../qml/pages/QuickConnectDialog.qml" line="59"/>
<source>Quick Connect code</source> <source>Quick Connect code</source>
<extracomment>Label for textfield for entering the Quick Connect codeyy <extracomment>Label for textfield for entering the Quick Connect codeyy
---------- ----------
@ -471,16 +553,7 @@ Placeholder text for textfield for entering the Quick Connect codeyy</extracomme
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Allow login</source> <location filename="../qml/pages/QuickConnectDialog.qml" line="81"/>
<extracomment>Accept button on dialog for submitting a Quick Connect code</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>To log a device in with Quick Connect, select the Quick Connect button and enter the displayed code in the field below.</source>
<extracomment>Instructions on page that tells the user a bit about how Quick Connect works</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>The Quick Connect code was not accepted</source> <source>The Quick Connect code was not accepted</source>
<extracomment>Error message shown below the textfield when it is not connected</extracomment> <extracomment>Error message shown below the textfield when it is not connected</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -489,25 +562,16 @@ Placeholder text for textfield for entering the Quick Connect codeyy</extracomme
<context> <context>
<name>SeasonPage</name> <name>SeasonPage</name>
<message> <message>
<location filename="../qml/pages/itemdetails/SeasonPage.qml" line="143"/>
<source>No overview available</source> <source>No overview available</source>
<extracomment>No overview/summary text of an episode available</extracomment> <extracomment>No overview/summary text of an episode available</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context>
<name>SecondPage</name>
<message>
<source>Nested Page</source>
<translation type="vanished">Unterseite</translation>
</message>
<message>
<source>Item</source>
<translation type="vanished">Element</translation>
</message>
</context>
<context> <context>
<name>SeriesPage</name> <name>SeriesPage</name>
<message> <message>
<location filename="../qml/pages/itemdetails/SeriesPage.qml" line="63"/>
<source>Seasons</source> <source>Seasons</source>
<extracomment>Seasons of a (TV) show</extracomment> <extracomment>Seasons of a (TV) show</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -516,70 +580,84 @@ Placeholder text for textfield for entering the Quick Connect codeyy</extracomme
<context> <context>
<name>SettingsPage</name> <name>SettingsPage</name>
<message> <message>
<location filename="../qml/pages/SettingsPage.qml" line="48"/>
<source>Settings</source> <source>Settings</source>
<extracomment>Header of Settings page</extracomment> <extracomment>Header of Settings page</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/SettingsPage.qml" line="53"/>
<source>Session</source> <source>Session</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Log out</source> <location filename="../qml/pages/SettingsPage.qml" line="112"/>
<translation type="unfinished"></translation>
</message>
<message>
<source>Logging out</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Other</source>
<extracomment>Other settings menu item</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Streaming settings</source>
<extracomment>Settings list item for settings related to streaming</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Debug information</source>
<extracomment>Debug information settings menu itemy</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>About Sailfin</source>
<extracomment>About Sailfin settings menu itemy</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Quick Connect</source> <source>Quick Connect</source>
<extracomment>This is a name used by Jellyfin and seems to be untranslated in other languages</extracomment> <extracomment>This is a name used by Jellyfin and seems to be untranslated in other languages</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/SettingsPage.qml" line="116"/>
<source>Log out</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="117"/>
<source>Logging out</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="123"/>
<source>Other</source>
<extracomment>Other settings menu item</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="136"/>
<source>Start page</source> <source>Start page</source>
<extracomment>Combo box label for selecting where the application should start</extracomment> <extracomment>Combo box label for selecting where the application should start</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/SettingsPage.qml" line="138"/>
<source>Which page should be shown when the application starts?</source> <source>Which page should be shown when the application starts?</source>
<extracomment>Combo box description for selecting where the application should start</extracomment> <extracomment>Combo box description for selecting where the application should start</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/SettingsPage.qml" line="143"/>
<source>All libraries (default)</source> <source>All libraries (default)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="185"/>
<source>Streaming settings</source>
<extracomment>Settings list item for settings related to streaming</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="192"/>
<source>Debug information</source>
<extracomment>Debug information settings menu itemy</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="199"/>
<source>About Sailfin</source>
<extracomment>About Sailfin settings menu itemy</extracomment>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SongDelegate</name> <name>SongDelegate</name>
<message> <message>
<location filename="../qml/components/music/SongDelegate.qml" line="119"/>
<source>Go to %1</source> <source>Go to %1</source>
<extracomment>Context menu item for navigating to the artist of the selected track</extracomment> <extracomment>Context menu item for navigating to the artist of the selected track</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/components/music/SongDelegate.qml" line="122"/>
<source>Go to artists</source> <source>Go to artists</source>
<extracomment>Context menu item for navigating to one of the artists of the selected track (opens submenu)</extracomment> <extracomment>Context menu item for navigating to one of the artists of the selected track (opens submenu)</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -588,22 +666,27 @@ Placeholder text for textfield for entering the Quick Connect codeyy</extracomme
<context> <context>
<name>StreamingPage</name> <name>StreamingPage</name>
<message> <message>
<location filename="../qml/pages/settings/StreamingPage.qml" line="42"/>
<source>Streaming settings</source> <source>Streaming settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/settings/StreamingPage.qml" line="46"/>
<source>Allow transcoding</source> <source>Allow transcoding</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/settings/StreamingPage.qml" line="47"/>
<source>If enabled, Sailfin may request the Jellyfin server to transcode media to a more suitable media format for this device. It is recommended to leave this enabled unless your server is weak.</source> <source>If enabled, Sailfin may request the Jellyfin server to transcode media to a more suitable media format for this device. It is recommended to leave this enabled unless your server is weak.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/settings/StreamingPage.qml" line="58"/>
<source>%1 mbps</source> <source>%1 mbps</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/settings/StreamingPage.qml" line="61"/>
<source>Maximum streaming bitrate</source> <source>Maximum streaming bitrate</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -611,28 +694,33 @@ Placeholder text for textfield for entering the Quick Connect codeyy</extracomme
<context> <context>
<name>UnsupportedPage</name> <name>UnsupportedPage</name>
<message> <message>
<source>Item type (%1) unsupported</source> <location filename="../qml/pages/itemdetails/UnsupportedPage.qml" line="35"/>
<translation type="unfinished"></translation>
</message>
<message>
<source>Fallback page for %2 not found either
This is still an alpha version :)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Settings</source> <source>Settings</source>
<extracomment>Pulley menu item: navigate to application settings page</extracomment> <extracomment>Pulley menu item: navigate to application settings page</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/UnsupportedPage.qml" line="40"/>
<source>Remote control</source> <source>Remote control</source>
<extracomment>Pulley menu item: shows controllable device page</extracomment> <extracomment>Pulley menu item: shows controllable device page</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../qml/pages/itemdetails/UnsupportedPage.qml" line="47"/>
<source>Item type (%1) unsupported</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/itemdetails/UnsupportedPage.qml" line="48"/>
<source>Fallback page for %2 not found either
This is still an alpha version :)</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>UserGridDelegate</name> <name>UserGridDelegate</name>
<message> <message>
<location filename="../qml/components/UserGridDelegate.qml" line="51"/>
<source>Other account</source> <source>Other account</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -640,41 +728,49 @@ This is still an alpha version :)</source>
<context> <context>
<name>VideoError</name> <name>VideoError</name>
<message> <message>
<location filename="../qml/components/videoplayer/VideoError.qml" line="50"/>
<source>No error</source> <source>No error</source>
<extracomment>Just to be complete if the application shows a video playback error when there&apos;s no error.</extracomment> <extracomment>Just to be complete if the application shows a video playback error when there&apos;s no error.</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/components/videoplayer/VideoError.qml" line="54"/>
<source>Resource allocation error</source> <source>Resource allocation error</source>
<extracomment>Video playback error: out of resources</extracomment> <extracomment>Video playback error: out of resources</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/components/videoplayer/VideoError.qml" line="58"/>
<source>Video format unsupported</source> <source>Video format unsupported</source>
<extracomment>Video playback error: unsupported format/codec</extracomment> <extracomment>Video playback error: unsupported format/codec</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/components/videoplayer/VideoError.qml" line="62"/>
<source>Network error</source> <source>Network error</source>
<extracomment>Video playback error: network error</extracomment> <extracomment>Video playback error: network error</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/components/videoplayer/VideoError.qml" line="66"/>
<source>Access denied</source> <source>Access denied</source>
<extracomment>Video playback error: access denied</extracomment> <extracomment>Video playback error: access denied</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/components/videoplayer/VideoError.qml" line="70"/>
<source>Media service missing</source> <source>Media service missing</source>
<extracomment>Video playback error: the media cannot be played because the media service could not be instantiated.</extracomment> <extracomment>Video playback error: the media cannot be played because the media service could not be instantiated.</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/components/videoplayer/VideoError.qml" line="89"/>
<source>Retry</source> <source>Retry</source>
<extracomment>Button to retry loading a video after a failure</extracomment> <extracomment>Button to retry loading a video after a failure</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/components/videoplayer/VideoError.qml" line="94"/>
<source>Hide</source> <source>Hide</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -682,6 +778,7 @@ This is still an alpha version :)</source>
<context> <context>
<name>VideoPage</name> <name>VideoPage</name>
<message> <message>
<location filename="../qml/pages/itemdetails/VideoPage.qml" line="57"/>
<source>Run time: %2</source> <source>Run time: %2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -689,18 +786,22 @@ This is still an alpha version :)</source>
<context> <context>
<name>VideoTrackSelector</name> <name>VideoTrackSelector</name>
<message> <message>
<location filename="../qml/components/VideoTrackSelector.qml" line="47"/>
<source>Video track</source> <source>Video track</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/components/VideoTrackSelector.qml" line="62"/>
<source>Audio track</source> <source>Audio track</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/components/VideoTrackSelector.qml" line="77"/>
<source>Subtitle track</source> <source>Subtitle track</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/components/VideoTrackSelector.qml" line="83"/>
<source>Off</source> <source>Off</source>
<extracomment>Value in ComboBox to disable subtitles</extracomment> <extracomment>Value in ComboBox to disable subtitles</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -709,6 +810,7 @@ This is still an alpha version :)</source>
<context> <context>
<name>harbour-sailfin</name> <name>harbour-sailfin</name>
<message> <message>
<location filename="../qml/harbour-sailfin.qml" line="101"/>
<source>Sailfin</source> <source>Sailfin</source>
<extracomment>The application name for the notification</extracomment> <extracomment>The application name for the notification</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>

File diff suppressed because it is too large Load diff

View file

@ -4,30 +4,36 @@
<context> <context>
<name>AboutPage</name> <name>AboutPage</name>
<message> <message>
<location filename="../qml/pages/AboutPage.qml" line="38"/>
<source>About Sailfin</source> <source>About Sailfin</source>
<translation>About Sailfin</translation>
</message>
<message>
<source>Open externally</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LGPL 2.1 License</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AboutPage.qml" line="53"/>
<source>&lt;p&gt;&lt;b&gt;Sailfin version %1&lt;/b&gt;&lt;br/&gt;Copyright © Chris Josten 2020%2&lt;/p&gt;&lt;p&gt;Sailfin is Free Software licensed under the &lt;a href=&apos;lgpl&apos;&gt;LGPL-v2.1&lt;/a&gt; or later, at your choice. You can &lt;a href=&quot;github&quot;&gt;view its source code on GitHub&lt;/a&gt;. Parts of the code of Sailfin are from other libraries. &lt;a href=&apos;3rdparty&apos;&gt;View their licenses here&lt;/a&gt;.&lt;/p&gt;</source> <source>&lt;p&gt;&lt;b&gt;Sailfin version %1&lt;/b&gt;&lt;br/&gt;Copyright © Chris Josten 2020%2&lt;/p&gt;&lt;p&gt;Sailfin is Free Software licensed under the &lt;a href=&apos;lgpl&apos;&gt;LGPL-v2.1&lt;/a&gt; or later, at your choice. You can &lt;a href=&quot;github&quot;&gt;view its source code on GitHub&lt;/a&gt;. Parts of the code of Sailfin are from other libraries. &lt;a href=&apos;3rdparty&apos;&gt;View their licenses here&lt;/a&gt;.&lt;/p&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/AboutPage.qml" line="79"/>
<source>Contributors</source> <source>Contributors</source>
<extracomment>SectionHeader</extracomment> <extracomment>SectionHeader</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../qml/pages/AboutPage.qml" line="107"/>
<source>Open externally</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/AboutPage.qml" line="116"/>
<source>LGPL 2.1 License</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>AddServerConnectingPage</name> <name>AddServerConnectingPage</name>
<message> <message>
<location filename="../qml/pages/setup/AddServerConnectingPage.qml" line="37"/>
<source>Connecting to %1</source> <source>Connecting to %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -35,30 +41,37 @@
<context> <context>
<name>AddServerPage</name> <name>AddServerPage</name>
<message> <message>
<location filename="../qml/pages/setup/AddServerPage.qml" line="50"/>
<source>Connect</source> <source>Connect</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/setup/AddServerPage.qml" line="51"/>
<source>Connect to Jellyfin</source> <source>Connect to Jellyfin</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/setup/AddServerPage.qml" line="61"/>
<source>Server</source> <source>Server</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/setup/AddServerPage.qml" line="62"/>
<source>Sailfin will try to search for Jellyfin servers on your local network automatically</source> <source>Sailfin will try to search for Jellyfin servers on your local network automatically</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/setup/AddServerPage.qml" line="69"/>
<source>enter address manually</source> <source>enter address manually</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/setup/AddServerPage.qml" line="107"/>
<source>Server address</source> <source>Server address</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/setup/AddServerPage.qml" line="108"/>
<source>e.g. https://demo.jellyfin.org</source> <source>e.g. https://demo.jellyfin.org</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -66,10 +79,12 @@
<context> <context>
<name>BaseDetailPage</name> <name>BaseDetailPage</name>
<message> <message>
<location filename="../qml/pages/itemdetails/BaseDetailPage.qml" line="72"/>
<source>Retry</source> <source>Retry</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/BaseDetailPage.qml" line="83"/>
<source>An error has occured</source> <source>An error has occured</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -77,67 +92,82 @@
<context> <context>
<name>CollectionPage</name> <name>CollectionPage</name>
<message> <message>
<location filename="../qml/pages/itemdetails/CollectionPage.qml" line="72"/>
<source>Loading</source> <source>Loading</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Sort by</source> <location filename="../qml/pages/itemdetails/CollectionPage.qml" line="79"/>
<extracomment>Menu item for selecting the sort order of a collection</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Empty collection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add some items to this collection!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Play count</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Date added</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ascending</source>
<extracomment>Sort order</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Descending</source>
<extracomment>Sort order</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sailfin</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Settings</source> <source>Settings</source>
<extracomment>Pulley menu item: navigate to application settings page</extracomment> <extracomment>Pulley menu item: navigate to application settings page</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/CollectionPage.qml" line="84"/>
<source>Remote control</source> <source>Remote control</source>
<extracomment>Pulley menu item: shows controllable device page</extracomment> <extracomment>Pulley menu item: shows controllable device page</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../qml/pages/itemdetails/CollectionPage.qml" line="90"/>
<location filename="../qml/pages/itemdetails/CollectionPage.qml" line="169"/>
<source>Sort by</source>
<extracomment>Menu item for selecting the sort order of a collection</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/itemdetails/CollectionPage.qml" line="144"/>
<source>Empty collection</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/itemdetails/CollectionPage.qml" line="145"/>
<source>Add some items to this collection!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/itemdetails/CollectionPage.qml" line="160"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/itemdetails/CollectionPage.qml" line="161"/>
<source>Play count</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/itemdetails/CollectionPage.qml" line="162"/>
<source>Date added</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/itemdetails/CollectionPage.qml" line="185"/>
<source>Ascending</source>
<extracomment>Sort order</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/itemdetails/CollectionPage.qml" line="190"/>
<source>Descending</source>
<extracomment>Sort order</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/cover/CollectionPage.qml" line="124"/>
<source>Sailfin</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>ControllableDevicesPage</name> <name>ControllableDevicesPage</name>
<message> <message>
<location filename="../qml/pages/ControllableDevicesPage.qml" line="16"/>
<source>Remote control</source> <source>Remote control</source>
<extracomment>Page title: page for remote controlling other Jellyfin apps</extracomment> <extracomment>Page title: page for remote controlling other Jellyfin apps</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/ControllableDevicesPage.qml" line="63"/>
<source>%1 %2</source> <source>%1 %2</source>
<extracomment>List of devices item title in the form of &lt;app name&gt; &lt;device name&gt;</extracomment> <extracomment>List of devices item title in the form of &lt;app name&gt; &lt;device name&gt;</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -146,30 +176,37 @@
<context> <context>
<name>DebugPage</name> <name>DebugPage</name>
<message> <message>
<location filename="../qml/pages/settings/DebugPage.qml" line="47"/>
<source>Debug information</source> <source>Debug information</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/settings/DebugPage.qml" line="51"/>
<source>Show debug information</source> <source>Show debug information</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/settings/DebugPage.qml" line="57"/>
<source>Websocket</source> <source>Websocket</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/settings/DebugPage.qml" line="61"/>
<source>Connection state</source> <source>Connection state</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/settings/DebugPage.qml" line="67"/>
<source>Unconnected</source> <source>Unconnected</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/settings/DebugPage.qml" line="95"/>
<source>%1 (%2)</source> <source>%1 (%2)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/settings/DebugPage.qml" line="100"/>
<source>Device profile</source> <source>Device profile</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -177,18 +214,22 @@
<context> <context>
<name>EpisodePage</name> <name>EpisodePage</name>
<message> <message>
<location filename="../qml/pages/itemdetails/EpisodePage.qml" line="30"/>
<source>Episode %1%2 | %3</source> <source>Episode %1%2 | %3</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/EpisodePage.qml" line="34"/>
<source>Episode %1 | %2</source> <source>Episode %1 | %2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/EpisodePage.qml" line="39"/>
<source>Overview</source> <source>Overview</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/EpisodePage.qml" line="44"/>
<source>No overview available</source> <source>No overview available</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -196,10 +237,12 @@
<context> <context>
<name>FilmPage</name> <name>FilmPage</name>
<message> <message>
<location filename="../qml/pages/itemdetails/FilmPage.qml" line="29"/>
<source>Released: %1 Run time: %2</source> <source>Released: %1 Run time: %2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/FilmPage.qml" line="34"/>
<source>Overview</source> <source>Overview</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -207,107 +250,128 @@
<context> <context>
<name>LegalPage</name> <name>LegalPage</name>
<message> <message>
<location filename="../qml/pages/LegalPage.qml" line="55"/>
<source>Legal</source> <source>Legal</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>This program contains small snippets of code taken from &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;, which is licensed under the %3 license:</source> <location filename="../qml/pages/LegalPage.qml" line="59"/>
<source>Sailfin contains code taken from other projects. Without them, Sailfin would not be possible!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Sailfin contains code taken from other projects. Without them, Sailfin would not be possible!</source> <location filename="../qml/pages/LegalPage.qml" line="76"/>
<source>This program contains small snippets of code taken from &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt;, which is licensed under the %3 license:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context> <context>
<name>LoginDialog</name> <name>LoginDialog</name>
<message> <message>
<location filename="../qml/pages/setup/LoginDialog.qml" line="47"/>
<source>Logging in as %1</source> <source>Logging in as %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/setup/LoginDialog.qml" line="65"/>
<source>Invalid username or password</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/setup/LoginDialog.qml" line="85"/>
<source>Login</source> <source>Login</source>
<extracomment>Dialog action</extracomment> <extracomment>Dialog action</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/setup/LoginDialog.qml" line="129"/>
<source>Credentials</source> <source>Credentials</source>
<extracomment>Section header for entering username and password</extracomment> <extracomment>Section header for entering username and password</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/setup/LoginDialog.qml" line="136"/>
<source>Username</source> <source>Username</source>
<extracomment>Label placeholder for username field</extracomment> <extracomment>Label placeholder for username field</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/setup/LoginDialog.qml" line="154"/>
<source>Password</source> <source>Password</source>
<extracomment>Label placeholder for password field</extracomment> <extracomment>Label placeholder for password field</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/setup/LoginDialog.qml" line="176"/>
<source>Login message</source> <source>Login message</source>
<extracomment>Message shown on login, configured by the server owner. Some form of a MOTD</extracomment> <extracomment>Message shown on login, configured by the server owner. Some form of a MOTD</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Invalid username or password</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>MainPage</name> <name>MainPage</name>
<message> <message>
<source>Resume watching</source> <location filename="../qml/pages/MainPage.qml" line="45"/>
<translation type="unfinished"></translation>
</message>
<message>
<source>Next up</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Settings</source> <source>Settings</source>
<extracomment>Pulley menu item: navigate to application settings page</extracomment> <extracomment>Pulley menu item: navigate to application settings page</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Network error</source> <location filename="../qml/pages/MainPage.qml" line="50"/>
<source>Remote control</source>
<extracomment>Pulley menu item: shows controllable device page</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/MainPage.qml" line="55"/>
<source>Reload</source> <source>Reload</source>
<extracomment>Pulley menu item: reload items on page</extracomment> <extracomment>Pulley menu item: reload items on page</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Pull down to retry again</source> <location filename="../qml/pages/MainPage.qml" line="88"/>
<source>Resume watching</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Remote control</source> <location filename="../qml/pages/MainPage.qml" line="99"/>
<extracomment>Pulley menu item: shows controllable device page</extracomment> <source>Next up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/MainPage.qml" line="136"/>
<source>Network error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/MainPage.qml" line="139"/>
<source>Pull down to retry again</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context> <context>
<name>MusicAlbumPage</name> <name>MusicAlbumPage</name>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicAlbumPage.qml" line="37"/>
<source>%1 <source>%1
%2 songs | %3 | %4</source> %2 songs | %3 | %4</source>
<extracomment>Short description of the album: %1 -&gt; album artist, %2 -&gt; amount of songs, %3 -&gt; duration, %4 -&gt; release year</extracomment> <extracomment>Short description of the album: %1 -&gt; album artist, %2 -&gt; amount of songs, %3 -&gt; duration, %4 -&gt; release year</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicAlbumPage.qml" line="42"/>
<source>Unknown year</source> <source>Unknown year</source>
<extracomment>Unknown album release year</extracomment> <extracomment>Unknown album release year</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicAlbumPage.qml" line="44"/>
<source>Playlist <source>Playlist
%1 songs | %2</source> %1 songs | %2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicAlbumPage.qml" line="78"/>
<source>Disc %1</source> <source>Disc %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -315,23 +379,28 @@
<context> <context>
<name>MusicArtistPage</name> <name>MusicArtistPage</name>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicArtistPage.qml" line="144"/>
<source>%1 songs | %2 albums</source> <source>%1 songs | %2 albums</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicArtistPage.qml" line="213"/>
<source>Discography</source> <source>Discography</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicArtistPage.qml" line="219"/>
<source>Discography of %1</source> <source>Discography of %1</source>
<extracomment>Page title for the page with an overview of all albums, eps and singles by a specific artist</extracomment> <extracomment>Page title for the page with an overview of all albums, eps and singles by a specific artist</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicArtistPage.qml" line="248"/>
<source>Appears on</source> <source>Appears on</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicArtistPage.qml" line="254"/>
<source>%1 appears on</source> <source>%1 appears on</source>
<extracomment>Page title for the page with an overview of all albums a specific artist appears on</extracomment> <extracomment>Page title for the page with an overview of all albums a specific artist appears on</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -340,56 +409,69 @@
<context> <context>
<name>MusicLibraryPage</name> <name>MusicLibraryPage</name>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicLibraryPage.qml" line="44"/>
<source>Settings</source>
<extracomment>Pulley menu item: navigate to application settings page</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/itemdetails/MusicLibraryPage.qml" line="49"/>
<source>Remote control</source>
<extracomment>Pulley menu item: shows controllable device page</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/itemdetails/MusicLibraryPage.qml" line="105"/>
<source>Recently added</source> <source>Recently added</source>
<extracomment>Header on music library: Recently added music albums</extracomment> <extracomment>Header on music library: Recently added music albums</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicLibraryPage.qml" line="118"/>
<source>Latest media</source> <source>Latest media</source>
<extracomment>Page title for the list of all albums within the music library</extracomment> <extracomment>Page title for the list of all albums within the music library</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicLibraryPage.qml" line="125"/>
<location filename="../qml/pages/itemdetails/MusicLibraryPage.qml" line="140"/>
<source>Albums</source> <source>Albums</source>
<extracomment>Page title for the list of all albums within the music library</extracomment> <extracomment>Page title for the list of all albums within the music library</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicLibraryPage.qml" line="145"/>
<location filename="../qml/pages/itemdetails/MusicLibraryPage.qml" line="160"/>
<source>Playlists</source> <source>Playlists</source>
<extracomment>Page title for the list of all playlists within the music library</extracomment> <extracomment>Page title for the list of all playlists within the music library</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/MusicLibraryPage.qml" line="166"/>
<location filename="../qml/pages/itemdetails/MusicLibraryPage.qml" line="179"/>
<source>Artists</source> <source>Artists</source>
<extracomment>Header for music artists <extracomment>Header for music artists
---------- ----------
Page title for the list of all artists within the music library</extracomment> Page title for the list of all artists within the music library</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Settings</source>
<extracomment>Pulley menu item: navigate to application settings page</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Remote control</source>
<extracomment>Pulley menu item: shows controllable device page</extracomment>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>PlayQueue</name> <name>PlayQueue</name>
<message> <message>
<location filename="../qml/components/PlayQueue.qml" line="17"/>
<source>Queue</source> <source>Queue</source>
<extracomment>Now playing page queue section header</extracomment> <extracomment>Now playing page queue section header</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/components/PlayQueue.qml" line="20"/>
<source>Playlist</source> <source>Playlist</source>
<extracomment>Now playing page playlist section header</extracomment> <extracomment>Now playing page playlist section header</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/components/PlayQueue.qml" line="22"/>
<source>Unknown section: %1</source> <source>Unknown section: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -397,36 +479,43 @@ Page title for the list of all artists within the music library</extracomment>
<context> <context>
<name>PlaybackBar</name> <name>PlaybackBar</name>
<message> <message>
<source>No audio</source> <location filename="../qml/components/PlaybackBar.qml" line="135"/>
<translation type="unfinished"></translation>
</message>
<message>
<source>Shuffle not yet implemented</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Stop</source>
<extracomment>Pulley menu item: stops playback of music</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Nothing is playing</source> <source>Nothing is playing</source>
<extracomment>Shown in a bright font when no media is playing in the bottom bar and now playing screen</extracomment> <extracomment>Shown in a bright font when no media is playing in the bottom bar and now playing screen</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/components/PlaybackBar.qml" line="149"/>
<source>Connected to %1</source> <source>Connected to %1</source>
<extracomment>Shown when no media is being played, but the app is controlling another Jellyfin client %1 is the name of said client</extracomment> <extracomment>Shown when no media is being played, but the app is controlling another Jellyfin client %1 is the name of said client</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/components/PlaybackBar.qml" line="151"/>
<source>Start playing some media!</source> <source>Start playing some media!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../qml/components/PlaybackBar.qml" line="174"/>
<source>No audio</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/components/PlaybackBar.qml" line="210"/>
<source>Shuffle not yet implemented</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/components/PlaybackBar.qml" line="497"/>
<source>Stop</source>
<extracomment>Pulley menu item: stops playback of music</extracomment>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>PosterCover</name> <name>PosterCover</name>
<message> <message>
<location filename="../qml/cover/PosterCover.qml" line="81"/>
<source>%1/%2</source> <source>%1/%2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -434,6 +523,7 @@ Page title for the list of all artists within the music library</extracomment>
<context> <context>
<name>QObject</name> <name>QObject</name>
<message> <message>
<location filename="../src/harbour-sailfin.cpp" line="53"/>
<source>Sailfin</source> <source>Sailfin</source>
<extracomment>Application display name</extracomment> <extracomment>Application display name</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -442,6 +532,20 @@ Page title for the list of all artists within the music library</extracomment>
<context> <context>
<name>QuickConnectDialog</name> <name>QuickConnectDialog</name>
<message> <message>
<location filename="../qml/pages/QuickConnectDialog.qml" line="36"/>
<source>Allow login</source>
<extracomment>Accept button on dialog for submitting a Quick Connect code</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/QuickConnectDialog.qml" line="50"/>
<source>To log a device in with Quick Connect, select the Quick Connect button and enter the displayed code in the field below.</source>
<extracomment>Instructions on page that tells the user a bit about how Quick Connect works</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/QuickConnectDialog.qml" line="56"/>
<location filename="../qml/pages/QuickConnectDialog.qml" line="59"/>
<source>Quick Connect code</source> <source>Quick Connect code</source>
<extracomment>Label for textfield for entering the Quick Connect codeyy <extracomment>Label for textfield for entering the Quick Connect codeyy
---------- ----------
@ -449,16 +553,7 @@ Placeholder text for textfield for entering the Quick Connect codeyy</extracomme
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Allow login</source> <location filename="../qml/pages/QuickConnectDialog.qml" line="81"/>
<extracomment>Accept button on dialog for submitting a Quick Connect code</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>To log a device in with Quick Connect, select the Quick Connect button and enter the displayed code in the field below.</source>
<extracomment>Instructions on page that tells the user a bit about how Quick Connect works</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>The Quick Connect code was not accepted</source> <source>The Quick Connect code was not accepted</source>
<extracomment>Error message shown below the textfield when it is not connected</extracomment> <extracomment>Error message shown below the textfield when it is not connected</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -467,6 +562,7 @@ Placeholder text for textfield for entering the Quick Connect codeyy</extracomme
<context> <context>
<name>SeasonPage</name> <name>SeasonPage</name>
<message> <message>
<location filename="../qml/pages/itemdetails/SeasonPage.qml" line="143"/>
<source>No overview available</source> <source>No overview available</source>
<extracomment>No overview/summary text of an episode available</extracomment> <extracomment>No overview/summary text of an episode available</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -475,6 +571,7 @@ Placeholder text for textfield for entering the Quick Connect codeyy</extracomme
<context> <context>
<name>SeriesPage</name> <name>SeriesPage</name>
<message> <message>
<location filename="../qml/pages/itemdetails/SeriesPage.qml" line="63"/>
<source>Seasons</source> <source>Seasons</source>
<extracomment>Seasons of a (TV) show</extracomment> <extracomment>Seasons of a (TV) show</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -483,70 +580,84 @@ Placeholder text for textfield for entering the Quick Connect codeyy</extracomme
<context> <context>
<name>SettingsPage</name> <name>SettingsPage</name>
<message> <message>
<location filename="../qml/pages/SettingsPage.qml" line="48"/>
<source>Settings</source> <source>Settings</source>
<extracomment>Header of Settings page</extracomment> <extracomment>Header of Settings page</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Other</source> <location filename="../qml/pages/SettingsPage.qml" line="53"/>
<extracomment>Other settings menu item</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>About Sailfin</source>
<extracomment>About Sailfin settings menu itemy</extracomment>
<translation type="unfinished">About Sailfin</translation>
</message>
<message>
<source>Session</source> <source>Session</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Log out</source> <location filename="../qml/pages/SettingsPage.qml" line="112"/>
<translation type="unfinished"></translation>
</message>
<message>
<source>Logging out</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Streaming settings</source>
<extracomment>Settings list item for settings related to streaming</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Debug information</source>
<extracomment>Debug information settings menu itemy</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Quick Connect</source> <source>Quick Connect</source>
<extracomment>This is a name used by Jellyfin and seems to be untranslated in other languages</extracomment> <extracomment>This is a name used by Jellyfin and seems to be untranslated in other languages</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/SettingsPage.qml" line="116"/>
<source>Log out</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="117"/>
<source>Logging out</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="123"/>
<source>Other</source>
<extracomment>Other settings menu item</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="136"/>
<source>Start page</source> <source>Start page</source>
<extracomment>Combo box label for selecting where the application should start</extracomment> <extracomment>Combo box label for selecting where the application should start</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/SettingsPage.qml" line="138"/>
<source>Which page should be shown when the application starts?</source> <source>Which page should be shown when the application starts?</source>
<extracomment>Combo box description for selecting where the application should start</extracomment> <extracomment>Combo box description for selecting where the application should start</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/SettingsPage.qml" line="143"/>
<source>All libraries (default)</source> <source>All libraries (default)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="185"/>
<source>Streaming settings</source>
<extracomment>Settings list item for settings related to streaming</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="192"/>
<source>Debug information</source>
<extracomment>Debug information settings menu itemy</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/SettingsPage.qml" line="199"/>
<source>About Sailfin</source>
<extracomment>About Sailfin settings menu itemy</extracomment>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SongDelegate</name> <name>SongDelegate</name>
<message> <message>
<location filename="../qml/components/music/SongDelegate.qml" line="119"/>
<source>Go to %1</source> <source>Go to %1</source>
<extracomment>Context menu item for navigating to the artist of the selected track</extracomment> <extracomment>Context menu item for navigating to the artist of the selected track</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/components/music/SongDelegate.qml" line="122"/>
<source>Go to artists</source> <source>Go to artists</source>
<extracomment>Context menu item for navigating to one of the artists of the selected track (opens submenu)</extracomment> <extracomment>Context menu item for navigating to one of the artists of the selected track (opens submenu)</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -555,22 +666,27 @@ Placeholder text for textfield for entering the Quick Connect codeyy</extracomme
<context> <context>
<name>StreamingPage</name> <name>StreamingPage</name>
<message> <message>
<location filename="../qml/pages/settings/StreamingPage.qml" line="42"/>
<source>Streaming settings</source> <source>Streaming settings</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/settings/StreamingPage.qml" line="46"/>
<source>Allow transcoding</source> <source>Allow transcoding</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/settings/StreamingPage.qml" line="47"/>
<source>If enabled, Sailfin may request the Jellyfin server to transcode media to a more suitable media format for this device. It is recommended to leave this enabled unless your server is weak.</source> <source>If enabled, Sailfin may request the Jellyfin server to transcode media to a more suitable media format for this device. It is recommended to leave this enabled unless your server is weak.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/settings/StreamingPage.qml" line="58"/>
<source>%1 mbps</source> <source>%1 mbps</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/settings/StreamingPage.qml" line="61"/>
<source>Maximum streaming bitrate</source> <source>Maximum streaming bitrate</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -578,28 +694,33 @@ Placeholder text for textfield for entering the Quick Connect codeyy</extracomme
<context> <context>
<name>UnsupportedPage</name> <name>UnsupportedPage</name>
<message> <message>
<source>Item type (%1) unsupported</source> <location filename="../qml/pages/itemdetails/UnsupportedPage.qml" line="35"/>
<translation type="unfinished"></translation>
</message>
<message>
<source>Fallback page for %2 not found either
This is still an alpha version :)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Settings</source> <source>Settings</source>
<extracomment>Pulley menu item: navigate to application settings page</extracomment> <extracomment>Pulley menu item: navigate to application settings page</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/pages/itemdetails/UnsupportedPage.qml" line="40"/>
<source>Remote control</source> <source>Remote control</source>
<extracomment>Pulley menu item: shows controllable device page</extracomment> <extracomment>Pulley menu item: shows controllable device page</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../qml/pages/itemdetails/UnsupportedPage.qml" line="47"/>
<source>Item type (%1) unsupported</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/pages/itemdetails/UnsupportedPage.qml" line="48"/>
<source>Fallback page for %2 not found either
This is still an alpha version :)</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>UserGridDelegate</name> <name>UserGridDelegate</name>
<message> <message>
<location filename="../qml/components/UserGridDelegate.qml" line="51"/>
<source>Other account</source> <source>Other account</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -607,41 +728,49 @@ This is still an alpha version :)</source>
<context> <context>
<name>VideoError</name> <name>VideoError</name>
<message> <message>
<source>Resource allocation error</source> <location filename="../qml/components/videoplayer/VideoError.qml" line="50"/>
<extracomment>Video playback error: out of resources</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Video format unsupported</source>
<extracomment>Video playback error: unsupported format/codec</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Network error</source>
<extracomment>Video playback error: network error</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Access denied</source>
<extracomment>Video playback error: access denied</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Media service missing</source>
<extracomment>Video playback error: the media cannot be played because the media service could not be instantiated.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Retry</source>
<extracomment>Button to retry loading a video after a failure</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>No error</source> <source>No error</source>
<extracomment>Just to be complete if the application shows a video playback error when there&apos;s no error.</extracomment> <extracomment>Just to be complete if the application shows a video playback error when there&apos;s no error.</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/components/videoplayer/VideoError.qml" line="54"/>
<source>Resource allocation error</source>
<extracomment>Video playback error: out of resources</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/components/videoplayer/VideoError.qml" line="58"/>
<source>Video format unsupported</source>
<extracomment>Video playback error: unsupported format/codec</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/components/videoplayer/VideoError.qml" line="62"/>
<source>Network error</source>
<extracomment>Video playback error: network error</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/components/videoplayer/VideoError.qml" line="66"/>
<source>Access denied</source>
<extracomment>Video playback error: access denied</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/components/videoplayer/VideoError.qml" line="70"/>
<source>Media service missing</source>
<extracomment>Video playback error: the media cannot be played because the media service could not be instantiated.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/components/videoplayer/VideoError.qml" line="89"/>
<source>Retry</source>
<extracomment>Button to retry loading a video after a failure</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/components/videoplayer/VideoError.qml" line="94"/>
<source>Hide</source> <source>Hide</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -649,6 +778,7 @@ This is still an alpha version :)</source>
<context> <context>
<name>VideoPage</name> <name>VideoPage</name>
<message> <message>
<location filename="../qml/pages/itemdetails/VideoPage.qml" line="57"/>
<source>Run time: %2</source> <source>Run time: %2</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -656,26 +786,31 @@ This is still an alpha version :)</source>
<context> <context>
<name>VideoTrackSelector</name> <name>VideoTrackSelector</name>
<message> <message>
<location filename="../qml/components/VideoTrackSelector.qml" line="47"/>
<source>Video track</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/components/VideoTrackSelector.qml" line="62"/>
<source>Audio track</source> <source>Audio track</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/components/VideoTrackSelector.qml" line="77"/>
<source>Subtitle track</source> <source>Subtitle track</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../qml/components/VideoTrackSelector.qml" line="83"/>
<source>Off</source> <source>Off</source>
<extracomment>Value in ComboBox to disable subtitles</extracomment> <extracomment>Value in ComboBox to disable subtitles</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Video track</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>harbour-sailfin</name> <name>harbour-sailfin</name>
<message> <message>
<location filename="../qml/harbour-sailfin.qml" line="101"/>
<source>Sailfin</source> <source>Sailfin</source>
<extracomment>The application name for the notification</extracomment> <extracomment>The application name for the notification</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>