diff --git a/sailfish/qml/Constants.qml b/sailfish/qml/Constants.qml
index b4e3e71..3fc424e 100644
--- a/sailfish/qml/Constants.qml
+++ b/sailfish/qml/Constants.qml
@@ -1,6 +1,6 @@
/*
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
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
diff --git a/sailfish/qml/Utils.js b/sailfish/qml/Utils.js
index 5716697..3617720 100644
--- a/sailfish/qml/Utils.js
+++ b/sailfish/qml/Utils.js
@@ -1,6 +1,6 @@
/*
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
modify it under the terms of the GNU Lesser General Public
@@ -52,7 +52,7 @@ function propsToQuery(options) {
for (var prop in options) {
if (options.hasOwnProperty(prop)) {
var value = options[prop];
- if (prop === "maxWidth" || prop === "maxHeight") {
+ if (prop === "maxWidth" || prop === "maxHeight" || prop === "width" || prop === "height") {
value = Math.floor(options[prop]);
}
query += "&" + prop + "=" + value;
diff --git a/sailfish/qml/components/PlayToolbar.qml b/sailfish/qml/components/PlayToolbar.qml
index c605d79..b721432 100644
--- a/sailfish/qml/components/PlayToolbar.qml
+++ b/sailfish/qml/components/PlayToolbar.qml
@@ -1,6 +1,6 @@
/*
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
modify it under the terms of the GNU Lesser General Public
@@ -26,12 +26,13 @@ Column {
property real playProgress: 0.0
property bool favourited: false
property alias imageBlurhash: playImage.blurhash
+ property real maxHeight: parent.width / imageAspectRatio
signal playPressed(bool resume)
spacing: Theme.paddingLarge
BackgroundItem {
width: parent.width
- height: width / imageAspectRatio
+ height: Math.min(maxHeight, width / imageAspectRatio)
RemoteImage {
id: playImage
anchors.fill: parent
diff --git a/sailfish/qml/components/PlaybackBar.qml b/sailfish/qml/components/PlaybackBar.qml
index beb1b80..26048f1 100644
--- a/sailfish/qml/components/PlaybackBar.qml
+++ b/sailfish/qml/components/PlaybackBar.qml
@@ -1,6 +1,6 @@
/*
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
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 QtMultimedia 5.6
import Sailfish.Silica 1.0
import nl.netsoj.chris.Jellyfin 1.0 as J
@@ -231,9 +230,9 @@ PanelBackground {
rightMargin: Theme.paddingMedium
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"
- onClicked: manager.playbackState === MediaPlayer.PlayingState
+ onClicked: manager.playbackState === J.PlayerState.Playing
? manager.pause()
: manager.play()
}
diff --git a/sailfish/qml/pages/ConnectingPage.qml b/sailfish/qml/pages/ConnectingPage.qml
index 8cec2ce..299506f 100644
--- a/sailfish/qml/pages/ConnectingPage.qml
+++ b/sailfish/qml/pages/ConnectingPage.qml
@@ -2,6 +2,8 @@ import QtQuick 2.0
import Sailfish.Silica 1.0
Page {
+ allowedOrientations: Orientation.All
+
PageBusyIndicator {
running: true
}
diff --git a/sailfish/qml/pages/itemdetails/BaseDetailPage.qml b/sailfish/qml/pages/itemdetails/BaseDetailPage.qml
index 223aa90..b1cdeec 100644
--- a/sailfish/qml/pages/itemdetails/BaseDetailPage.qml
+++ b/sailfish/qml/pages/itemdetails/BaseDetailPage.qml
@@ -1,6 +1,6 @@
/*
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
modify it under the terms of the GNU Lesser General Public
@@ -40,6 +40,9 @@ Page {
property string _chosenBackdropImage: ""
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() {
/*var rand = 0;
if (itemData.backdropImageTags.length > 0) {
diff --git a/sailfish/qml/pages/itemdetails/CollectionPage.qml b/sailfish/qml/pages/itemdetails/CollectionPage.qml
index ce2c436..afb9104 100644
--- a/sailfish/qml/pages/itemdetails/CollectionPage.qml
+++ b/sailfish/qml/pages/itemdetails/CollectionPage.qml
@@ -63,9 +63,9 @@ BaseDetailPage {
id: gridView
anchors.fill: parent
model: collectionModel
- cellWidth: Constants.libraryDelegateWidth
- cellHeight: Utils.usePortraitCover(itemData.collectionType) ? Constants.libraryDelegatePosterHeight
- : Constants.libraryDelegateHeight
+ cellWidth: gridCellSize
+ cellHeight: Utils.usePortraitCover(itemData.collectionType) ? gridCellSize * Constants.libraryDelegatePosterRatio
+ : gridCellSize
visible: itemData.status !== J.LoaderBase.Error
header: PageHeader {
diff --git a/sailfish/qml/pages/itemdetails/MusicAlbumPage.qml b/sailfish/qml/pages/itemdetails/MusicAlbumPage.qml
index 5c72d1f..322b9a1 100644
--- a/sailfish/qml/pages/itemdetails/MusicAlbumPage.qml
+++ b/sailfish/qml/pages/itemdetails/MusicAlbumPage.qml
@@ -1,6 +1,6 @@
/*
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
modify it under the terms of the GNU Lesser General Public
@@ -29,10 +29,8 @@ import "../.."
BaseDetailPage {
id: albumPageRoot
readonly property int _songIndexWidth: 100
- width: 800 * Theme.pixelRatio
-
property bool _collectionModelLoaded: false
- readonly property bool _twoColumns: albumPageRoot.width / Theme.pixelRatio >= 800
+ readonly property bool _twoColumns: gridColumnCount > 4
readonly property string _description: {
if (itemData.type === "MusicAlbum") {
//: Short description of the album: %1 -> album artist, %2 -> amount of songs, %3 -> duration, %4 -> release year
@@ -63,17 +61,7 @@ BaseDetailPage {
RowLayout {
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 {
id: list
Layout.fillHeight: true
@@ -101,6 +89,17 @@ BaseDetailPage {
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) {
diff --git a/sailfish/qml/pages/itemdetails/MusicArtistPage.qml b/sailfish/qml/pages/itemdetails/MusicArtistPage.qml
index 414628d..48ce3e1 100644
--- a/sailfish/qml/pages/itemdetails/MusicArtistPage.qml
+++ b/sailfish/qml/pages/itemdetails/MusicArtistPage.qml
@@ -1,6 +1,6 @@
/*
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
modify it under the terms of the GNU Lesser General Public
@@ -107,7 +107,7 @@ BaseDetailPage {
left: parent.left
right: parent.right
}
- height: width / 16 * 9
+ height: Math.min(albumPage.height / 2, width / 16 * 9)
fillMode: Image.PreserveAspectCrop
source: Utils.itemBackdropUrl(apiClient.baseUrl, itemData, 0, {"maxWidth": parent.width})
blurhash: itemData.imageBlurHashes["Backdrop"][itemData.backdropImageTags[0]]
@@ -219,15 +219,14 @@ BaseDetailPage {
"pageTitle": qsTr("Discography of %1").arg(itemData.name)
})
}
+
GridLayout {
- width: parent.width
- columns: 3
+ anchors.left: parent.left
+ width: Math.min(appearsOnModel.count() * gridCellSize, gridColumnCount * gridCellSize)
+ columns: gridColumnCount
columnSpacing: 0
rowSpacing: 0
- anchors {
- left: parent.left
- right: parent.right
- }
+
Repeater {
id: albumRepeater
model: albumsModel
@@ -237,8 +236,8 @@ BaseDetailPage {
poster: Utils.itemModelImageUrl(appWindow.apiClient.baseUrl, model.jellyfinId, model.imageTags["Primary"], "Primary", {"height": height})
blurhash: model.imageBlurHashes["Primary"][model.imageTags["Primary"]]
title: model.name
- Layout.preferredWidth: Constants.libraryDelegateWidth * _multiplier
- Layout.preferredHeight: Constants.libraryDelegateHeight * _multiplier
+ Layout.preferredWidth: gridCellSize * _multiplier
+ Layout.preferredHeight: gridCellSize * _multiplier
Layout.rowSpan: _multiplier
Layout.columnSpan: _multiplier
onClicked: appWindow.navigateToItem(model.jellyfinId, model.mediaType, model.type, model.isFolder)
@@ -256,14 +255,13 @@ BaseDetailPage {
})
}
GridLayout {
- width: parent.width
- columns: 3
+ anchors.left: parent.left
+ width: Math.min(appearsOnModel.count() * gridCellSize, gridColumnCount * gridCellSize)
+
+ columns: gridColumnCount
columnSpacing: 0
rowSpacing: 0
- anchors {
- left: parent.left
- right: parent.right
- }
+
Repeater {
id: appearsOnRepeater
model: appearsOnModel
@@ -274,8 +272,9 @@ BaseDetailPage {
blurhash: model.imageBlurHashes["Primary"][model.imageTags["Primary"]]
title: model.name
Layout.alignment: Qt.AlignLeft | Qt.AlignTop
- Layout.preferredWidth: Constants.libraryDelegateWidth * _multiplier
- Layout.preferredHeight: Constants.libraryDelegateHeight * _multiplier
+ Layout.preferredWidth: gridCellSize * _multiplier
+ Layout.maximumWidth: gridCellSize * _multiplier
+ Layout.preferredHeight: gridCellSize * _multiplier
Layout.fillWidth: false
Layout.fillHeight: false
onClicked: appWindow.navigateToItem(model.jellyfinId, model.mediaType, model.type, model.isFolder)
diff --git a/sailfish/qml/pages/itemdetails/SeasonPage.qml b/sailfish/qml/pages/itemdetails/SeasonPage.qml
index cf1e604..1134b64 100644
--- a/sailfish/qml/pages/itemdetails/SeasonPage.qml
+++ b/sailfish/qml/pages/itemdetails/SeasonPage.qml
@@ -1,6 +1,6 @@
/*
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
modify it under the terms of the GNU Lesser General Public
@@ -58,7 +58,7 @@ BaseDetailPage {
id: episodeImage
anchors {
top: parent.top
- left: parent.left
+ right: parent.right
bottom: parent.bottom
}
width: Constants.libraryDelegateWidth
@@ -116,11 +116,11 @@ BaseDetailPage {
Label {
id: episodeTitle
anchors {
- left: episodeImage.right
- leftMargin: Theme.paddingLarge
+ right: episodeImage.left
+ rightMargin: Theme.paddingLarge
top: parent.top
- right: parent.right
- rightMargin: Theme.horizontalPageMargin
+ left: parent.left
+ leftMargin: Theme.horizontalPageMargin
}
text: model.name
truncationMode: TruncationMode.Fade
@@ -130,10 +130,10 @@ BaseDetailPage {
Label {
id: episodeOverview
anchors {
- left: episodeImage.right
- leftMargin: Theme.paddingLarge
- right: parent.right
- rightMargin: Theme.horizontalPageMargin
+ right: episodeImage.left
+ rightMargin: Theme.paddingLarge
+ left: parent.left
+ leftMargin: Theme.horizontalPageMargin
top: episodeTitle.bottom
bottom: parent.bottom
}
diff --git a/sailfish/qml/pages/itemdetails/VideoPage.qml b/sailfish/qml/pages/itemdetails/VideoPage.qml
index ae5bf66..dc9a244 100644
--- a/sailfish/qml/pages/itemdetails/VideoPage.qml
+++ b/sailfish/qml/pages/itemdetails/VideoPage.qml
@@ -63,6 +63,7 @@ BaseDetailPage {
imageSource: detailPage.imageSource
imageAspectRatio: Constants.horizontalVideoAspectRatio
imageBlurhash: detailPage.imageBlurhash
+ maxHeight: detailPage.height / 2
Binding on favourited {
when: _userdataReady
value: itemData.userData.favorite
diff --git a/sailfish/qml/pages/setup/LoginDialog.qml b/sailfish/qml/pages/setup/LoginDialog.qml
index 31dac6a..e0643be 100644
--- a/sailfish/qml/pages/setup/LoginDialog.qml
+++ b/sailfish/qml/pages/setup/LoginDialog.qml
@@ -42,6 +42,7 @@ Dialog {
acceptDestination: Page {
+ allowedOrientations: Orientation.All
BusyLabel {
text: qsTr("Logging in as %1").arg(username.text)
running: true
diff --git a/sailfish/translations/harbour-sailfin-de.ts b/sailfish/translations/harbour-sailfin-de.ts
index ff4ad46..b23996f 100644
--- a/sailfish/translations/harbour-sailfin-de.ts
+++ b/sailfish/translations/harbour-sailfin-de.ts
@@ -4,30 +4,36 @@
AboutPage
+
-
-
-
-
-
-
-
-
+
+ SectionHeader
+
+
+
+
+
+
+
+
+
+ AddServerConnectingPage
+
@@ -35,30 +41,37 @@
AddServerPage
+
+
+
+
+
+
+
@@ -66,10 +79,12 @@
BaseDetailPage
+
+
@@ -77,106 +92,121 @@
CollectionPage
+
-
- Menu item for selecting the sort order of a collection
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Sort order
-
-
-
-
- Sort order
-
-
-
-
-
-
-
+ Pulley menu item: navigate to application settings page
+ Pulley menu item: shows controllable device page
+
+
+
+
+ Menu item for selecting the sort order of a collection
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sort order
+
+
+
+
+
+ Sort order
+
+
+
+
+
+
+ ControllableDevicesPage
+ Page title: page for remote controlling other Jellyfin apps
+ List of devices item title in the form of <app name> — <device name>
-
- CoverPage
-
-
- Mein Cover
-
-DebugPage
+
+
+
+
+
+
+
@@ -184,18 +214,22 @@
EpisodePage
+
+
+
+
@@ -203,40 +237,30 @@
FilmPage
+
+
-
- FirstPage
-
-
- Zur Seite 2
-
-
-
- UI-Vorlage
-
-
-
- Hallo Matrosen
-
-LegalPage
+
+
+
@@ -244,34 +268,41 @@
LoginDialog
+
+
+ Dialog action
+ Section header for entering username and password
+ Label placeholder for username field
+ Label placeholder for password field
+ Message shown on login, configured by the server owner. Some form of a MOTD
@@ -280,56 +311,67 @@
MainPage
+ Pulley menu item: navigate to application settings page
+
+
+ Pulley menu item: shows controllable device page
+
+
+
+ Pulley menu item: reload items on page
+
+
+
+
-
-
- Pulley menu item: shows controllable device page
-
- MusicAlbumPage
+ Short description of the album: %1 -> album artist, %2 -> amount of songs, %3 -> duration, %4 -> release year
+ Unknown album release year
+
+
@@ -337,23 +379,28 @@
MusicArtistPage
+
+
+ Page title for the page with an overview of all albums, eps and singles by a specific artist
+
+ Page title for the page with an overview of all albums a specific artist appears on
@@ -362,56 +409,69 @@
MusicLibraryPage
+
+
+ Pulley menu item: navigate to application settings page
+
+
+
+
+
+ Pulley menu item: shows controllable device page
+
+
+
+ Header on music library: Recently added music albums
+ Page title for the list of all albums within the music library
+
+ Page title for the list of all albums within the music library
+
+ Page title for the list of all playlists within the music library
+
+ Header for music artists
----------
Page title for the list of all artists within the music library
-
-
- Pulley menu item: navigate to application settings page
-
-
-
-
- Pulley menu item: shows controllable device page
-
- PlayQueue
+ Now playing page queue section header
+ Now playing page playlist section header
+
@@ -419,36 +479,43 @@ Page title for the list of all artists within the music library
PlaybackBar
-
-
-
-
-
-
-
-
-
- Pulley menu item: stops playback of music
-
-
-
+ Shown in a bright font when no media is playing in the bottom bar and now playing screen
+ Shown when no media is being played, but the app is controlling another Jellyfin client %1 is the name of said client
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pulley menu item: stops playback of music
+
+ PosterCover
+
@@ -456,6 +523,7 @@ Page title for the list of all artists within the music library
QObject
+ Application display name
@@ -464,6 +532,20 @@ Page title for the list of all artists within the music library
QuickConnectDialog
+
+
+ Accept button on dialog for submitting a Quick Connect code
+
+
+
+
+
+ Instructions on page that tells the user a bit about how Quick Connect works
+
+
+
+
+ Label for textfield for entering the Quick Connect codeyy
----------
@@ -471,16 +553,7 @@ Placeholder text for textfield for entering the Quick Connect codeyy
-
- Accept button on dialog for submitting a Quick Connect code
-
-
-
-
- Instructions on page that tells the user a bit about how Quick Connect works
-
-
-
+ Error message shown below the textfield when it is not connected
@@ -489,25 +562,16 @@ Placeholder text for textfield for entering the Quick Connect codeyy
SeasonPage
+ No overview/summary text of an episode available
-
- SecondPage
-
-
- Unterseite
-
-
-
- Element
-
-SeriesPage
+ Seasons of a (TV) show
@@ -516,70 +580,84 @@ Placeholder text for textfield for entering the Quick Connect codeyy
SettingsPage
+ Header of Settings page
+
-
-
-
-
-
-
-
-
-
- Other settings menu item
-
-
-
-
- Settings list item for settings related to streaming
-
-
-
-
- Debug information settings menu itemy
-
-
-
-
- About Sailfin settings menu itemy
-
-
-
+ This is a name used by Jellyfin and seems to be untranslated in other languages
+
+
+
+
+
+
+
+
+
+
+
+
+ Other settings menu item
+
+
+
+ Combo box label for selecting where the application should start
+ Combo box description for selecting where the application should start
+
+
+
+
+ Settings list item for settings related to streaming
+
+
+
+
+
+ Debug information settings menu itemy
+
+
+
+
+
+ About Sailfin settings menu itemy
+
+ SongDelegate
+ Context menu item for navigating to the artist of the selected track
+ Context menu item for navigating to one of the artists of the selected track (opens submenu)
@@ -588,22 +666,27 @@ Placeholder text for textfield for entering the Quick Connect codeyy
StreamingPage
+
+
+
+
+
@@ -611,28 +694,33 @@ Placeholder text for textfield for entering the Quick Connect codeyy
UnsupportedPage
-
-
-
-
-
-
-
-
+ Pulley menu item: navigate to application settings page
+ Pulley menu item: shows controllable device page
+
+
+
+
+
+
+
+
+
+ UserGridDelegate
+
@@ -640,41 +728,49 @@ This is still an alpha version :)
VideoError
+ Just to be complete if the application shows a video playback error when there's no error.
+ Video playback error: out of resources
+ Video playback error: unsupported format/codec
+ Video playback error: network error
+ Video playback error: access denied
+ Video playback error: the media cannot be played because the media service could not be instantiated.
+ Button to retry loading a video after a failure
+
@@ -682,6 +778,7 @@ This is still an alpha version :)
VideoPage
+
@@ -689,18 +786,22 @@ This is still an alpha version :)
VideoTrackSelector
+
+
+
+ Value in ComboBox to disable subtitles
@@ -709,6 +810,7 @@ This is still an alpha version :)
harbour-sailfin
+ The application name for the notification
diff --git a/sailfish/translations/harbour-sailfin-ru.ts b/sailfish/translations/harbour-sailfin-ru.ts
index fecb903..b23996f 100644
--- a/sailfish/translations/harbour-sailfin-ru.ts
+++ b/sailfish/translations/harbour-sailfin-ru.ts
@@ -1,147 +1,173 @@
-
+AboutPage
+
- О программе Sailfin
-
-
-
- Открыть внешним приложением
-
-
-
- Лицензия LGPL 2.1
-
-
-
+
+ SectionHeader
+
+
+
+
+
+
+
+
+
+ AddServerConnectingPage
+
- Соединяемся с %1
+ AddServerPage
+
- Соединиться
+
+
- Соединиться с Jellyfin
+
+
- Сервер
+
+
- Sailfin попробует найти серверы Jellyfin в локальной сети автоматически
+
+
- ввести адрес вручную
+
+
- Адрес сервера
+
+
- Напр. https://demo.jellyfin.org
+ BaseDetailPage
+
- Попробовать снова
+
+
- Произошла ошибка
+ CollectionPage
+
- Загрузка
-
-
-
- Menu item for selecting the sort order of a collection
- Сортировка
-
-
-
- Пустая коллекция
-
-
-
- Добавьте что-то в эту коллекцию!
-
-
-
- Название
-
-
-
- Количество проигрываний
-
-
-
- Дата добавления
-
-
-
- Sort order
- По возрастанию
-
-
-
- Sort order
- По убыванию
-
-
-
+ Pulley menu item: navigate to application settings page
- Настройки
+
+ Pulley menu item: shows controllable device page
+
+
+
+
+ Menu item for selecting the sort order of a collection
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sort order
+
+
+
+
+
+ Sort order
+
+
+
+
+
+
+ ControllableDevicesPage
+ Page title: page for remote controlling other Jellyfin apps
+ List of devices item title in the form of <app name> — <device name>
@@ -150,30 +176,37 @@
DebugPage
+
- Отладочная информация
+
+
- Показывать отладочную информацию
+
+
+
+
+
+
@@ -181,266 +214,308 @@
EpisodePage
+
- Серия %1–%2 | %3
+
+
- Серия %1 | %2
+
+
- Описание
+
+
- Нет описания
+ FilmPage
+
- Вышел: %1 — Длительность: %2
+
+
- Описание
+ LegalPage
+
-
+
+
-
+
+
LoginDialog
+
- Входим как %1
+
+
+
+
+
+
+ Dialog action
- Войти
+
+ Section header for entering username and password
- Учетные данные
+
+ Label placeholder for username field
- Имя пользователя
+
+ Label placeholder for password field
- Пароль
+
+ Message shown on login, configured by the server owner. Some form of a MOTD
- Сообщение при входе
-
-
-
- Неверное имя пользователя или пароль
+ MainPage
-
- Продолжить просмотр
-
-
-
- Продолжения
-
-
-
- Ошибка сети
-
-
-
- Потяните вниз чтобы попробовать снова
-
-
+ Pulley menu item: navigate to application settings page
- Настройки
-
-
-
- Pulley menu item: reload items on page
- Обновить
+
+ Pulley menu item: shows controllable device page
+
+
+
+ Pulley menu item: reload items on page
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MusicAlbumPage
+ Short description of the album: %1 -> album artist, %2 -> amount of songs, %3 -> duration, %4 -> release year
- %1
-%2 песен | %3 | %4
+
+ Unknown album release year
- Неизвестный год
+
+
- Плейлист
-%1 песни | %2
+
+
- Диск %1
+ MusicArtistPage
+
- %1 песен | %2 альбомов
+
+
- Дискография
+
+ Page title for the page with an overview of all albums, eps and singles by a specific artist
- Дискография %1
+
+
- Появляется на
+
+ Page title for the page with an overview of all albums a specific artist appears on
- %1 появляется на
+ MusicLibraryPage
+
+
+ Pulley menu item: navigate to application settings page
+
+
+
+
+
+ Pulley menu item: shows controllable device page
+
+
+
+ Header on music library: Recently added music albums
- Добавлены недавно
+
+ Page title for the list of all albums within the music library
- Самые новые песни
+
+
+ Page title for the list of all albums within the music library
- Альбомы
+
+
+ Page title for the list of all playlists within the music library
- Плейлисты
+
+
+ Header for music artists
----------
Page title for the list of all artists within the music library
- Исполнители
-
-
-
- Pulley menu item: navigate to application settings page
- Настройки
-
-
-
- Pulley menu item: shows controllable device pagePlayQueue
+ Now playing page queue section header
- Очередь
+
+ Now playing page playlist section header
- Плейлист
+
+
- Неизвестная секция: %1
+ PlaybackBar
-
- Ничего не выбрано
-
-
-
- Начните что-то проигрывать!
-
-
-
- Нет звука
-
-
-
- Перемешивание ещё не работает
-
-
-
- Pulley menu item: stops playback of music
- Стоп
-
-
+ Shown in a bright font when no media is playing in the bottom bar and now playing screen
+ Shown when no media is being played, but the app is controlling another Jellyfin client %1 is the name of said client
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pulley menu item: stops playback of music
+
+ PosterCover
+
@@ -448,6 +523,7 @@ Page title for the list of all artists within the music library
QObject
+ Application display name
@@ -456,6 +532,20 @@ Page title for the list of all artists within the music library
QuickConnectDialog
+
+
+ Accept button on dialog for submitting a Quick Connect code
+
+
+
+
+
+ Instructions on page that tells the user a bit about how Quick Connect works
+
+
+
+
+ Label for textfield for entering the Quick Connect codeyy
----------
@@ -463,16 +553,7 @@ Placeholder text for textfield for entering the Quick Connect codeyy
-
- Accept button on dialog for submitting a Quick Connect code
-
-
-
-
- Instructions on page that tells the user a bit about how Quick Connect works
-
-
-
+ Error message shown below the textfield when it is not connected
@@ -481,181 +562,215 @@ Placeholder text for textfield for entering the Quick Connect codeyy
SeasonPage
+ No overview/summary text of an episode available
- Нет описания
+ SeriesPage
+ Seasons of a (TV) show
- Сезоны
+ SettingsPage
-
- Other settings menu item
- Другие
-
-
-
- About Sailfin settings menu itemy
- О программе Sailfin
-
-
-
- Сессия
-
-
-
- Выйти
-
-
-
- Выходим
-
-
-
- Debug information settings menu itemy
- Отладочная информация
-
-
+ Header of Settings page
- Настройки
+
-
- Settings list item for settings related to streaming
- Настройки стриминга
+
+
+
+ This is a name used by Jellyfin and seems to be untranslated in other languages
+
+
+
+
+
+
+
+
+
+
+
+
+ Other settings menu item
+
+
+
+ Combo box label for selecting where the application should start
+ Combo box description for selecting where the application should start
+
+
+
+
+ Settings list item for settings related to streaming
+
+
+
+
+
+ Debug information settings menu itemy
+
+
+
+
+
+ About Sailfin settings menu itemy
+
+ SongDelegate
+ Context menu item for navigating to the artist of the selected track
- Перейти к %1
+
+ Context menu item for navigating to one of the artists of the selected track (opens submenu)
- Перейти к исполнителям
+ StreamingPage
+
- Настройки стриминга
+
+
- Разрешить транскодинг
+
+
- Если включено, Sailfin может попросить сервер Jellyfin перекодировать медиафайл в более подходящий формат для устройства. Рекомендуется оставить это включенным, если ваш сервер не слишком слабый.
+
+
- %1 мегабит/сек
+
+
- Максимальный битрейт стриминга
+ UnsupportedPage
-
- Тип файла (%1) не поддерживается
-
-
-
+
+
+ Pulley menu item: navigate to application settings page
-
- Pulley menu item: navigate to application settings page
- Настройки
-
-
+ Pulley menu item: shows controllable device page
+
+
+
+
+
+
+
+
+
+ UserGridDelegate
+
- Другая учетная запись
+ VideoError
-
- Video playback error: out of resources
-
-
-
-
- Video playback error: unsupported format/codec
-
-
-
-
- Video playback error: network error
- Ошибка сети
-
-
-
- Video playback error: access denied
-
-
-
-
- Video playback error: the media cannot be played because the media service could not be instantiated.
-
-
-
-
- Button to retry loading a video after a failure
- Попробовать снова
-
-
+ Just to be complete if the application shows a video playback error when there's no error.
+
+
+ Video playback error: out of resources
+
+
+
+
+
+ Video playback error: unsupported format/codec
+
+
+
+
+
+ Video playback error: network error
+
+
+
+
+
+ Video playback error: access denied
+
+
+
+
+
+ Video playback error: the media cannot be played because the media service could not be instantiated.
+
+
+
+
+
+ Button to retry loading a video after a failure
+
+
+
+
@@ -663,33 +778,39 @@ This is still an alpha version :)
VideoPage
+
- Длительность: %2
+ VideoTrackSelector
+
+
+
+
+
+
- Аудиодорожка
+
+
- Дорожка субтитров
+
+ Value in ComboBox to disable subtitles
- Выключено
-
-
-
- Видеодорожка
+ harbour-sailfin
+ The application name for the notification
diff --git a/sailfish/translations/harbour-sailfin.ts b/sailfish/translations/harbour-sailfin.ts
index be39f8f..b23996f 100644
--- a/sailfish/translations/harbour-sailfin.ts
+++ b/sailfish/translations/harbour-sailfin.ts
@@ -4,30 +4,36 @@
AboutPage
+
- About Sailfin
-
-
-
-
-
-
-
+
+ SectionHeader
+
+
+
+
+
+
+
+
+
+ AddServerConnectingPage
+
@@ -35,30 +41,37 @@
AddServerPage
+
+
+
+
+
+
+
@@ -66,10 +79,12 @@
BaseDetailPage
+
+
@@ -77,67 +92,82 @@
CollectionPage
+
-
- Menu item for selecting the sort order of a collection
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Sort order
-
-
-
-
- Sort order
-
-
-
-
-
-
-
+ Pulley menu item: navigate to application settings page
+ Pulley menu item: shows controllable device page
+
+
+
+
+ Menu item for selecting the sort order of a collection
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sort order
+
+
+
+
+
+ Sort order
+
+
+
+
+
+
+ ControllableDevicesPage
+ Page title: page for remote controlling other Jellyfin apps
+ List of devices item title in the form of <app name> — <device name>
@@ -146,30 +176,37 @@
DebugPage
+
+
+
+
+
+
+
@@ -177,18 +214,22 @@
EpisodePage
+
+
+
+
@@ -196,10 +237,12 @@
FilmPage
+
+
@@ -207,107 +250,128 @@
LegalPage
+
-
+
+
-
+
+
LoginDialog
+
+
+
+
+
+
+ Dialog action
+ Section header for entering username and password
+ Label placeholder for username field
+ Label placeholder for password field
+ Message shown on login, configured by the server owner. Some form of a MOTD
-
-
-
- MainPage
-
-
-
-
-
-
-
-
+ Pulley menu item: navigate to application settings page
-
+
+
+ Pulley menu item: shows controllable device page
+ Pulley menu item: reload items on page
-
+
+
-
- Pulley menu item: shows controllable device page
+
+
+
+
+
+
+
+
+
+
+
+
MusicAlbumPage
+ Short description of the album: %1 -> album artist, %2 -> amount of songs, %3 -> duration, %4 -> release year
+ Unknown album release year
+
+
@@ -315,23 +379,28 @@
MusicArtistPage
+
+
+ Page title for the page with an overview of all albums, eps and singles by a specific artist
+
+ Page title for the page with an overview of all albums a specific artist appears on
@@ -340,56 +409,69 @@
MusicLibraryPage
+
+
+ Pulley menu item: navigate to application settings page
+
+
+
+
+
+ Pulley menu item: shows controllable device page
+
+
+
+ Header on music library: Recently added music albums
+ Page title for the list of all albums within the music library
+
+ Page title for the list of all albums within the music library
+
+ Page title for the list of all playlists within the music library
+
+ Header for music artists
----------
Page title for the list of all artists within the music library
-
-
- Pulley menu item: navigate to application settings page
-
-
-
-
- Pulley menu item: shows controllable device page
-
- PlayQueue
+ Now playing page queue section header
+ Now playing page playlist section header
+
@@ -397,36 +479,43 @@ Page title for the list of all artists within the music library
PlaybackBar
-
-
-
-
-
-
-
-
-
- Pulley menu item: stops playback of music
-
-
-
+ Shown in a bright font when no media is playing in the bottom bar and now playing screen
+ Shown when no media is being played, but the app is controlling another Jellyfin client %1 is the name of said client
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pulley menu item: stops playback of music
+
+ PosterCover
+
@@ -434,6 +523,7 @@ Page title for the list of all artists within the music library
QObject
+ Application display name
@@ -442,6 +532,20 @@ Page title for the list of all artists within the music library
QuickConnectDialog
+
+
+ Accept button on dialog for submitting a Quick Connect code
+
+
+
+
+
+ Instructions on page that tells the user a bit about how Quick Connect works
+
+
+
+
+ Label for textfield for entering the Quick Connect codeyy
----------
@@ -449,16 +553,7 @@ Placeholder text for textfield for entering the Quick Connect codeyy
-
- Accept button on dialog for submitting a Quick Connect code
-
-
-
-
- Instructions on page that tells the user a bit about how Quick Connect works
-
-
-
+ Error message shown below the textfield when it is not connected
@@ -467,6 +562,7 @@ Placeholder text for textfield for entering the Quick Connect codeyy
SeasonPage
+ No overview/summary text of an episode available
@@ -475,6 +571,7 @@ Placeholder text for textfield for entering the Quick Connect codeyy
SeriesPage
+ Seasons of a (TV) show
@@ -483,70 +580,84 @@ Placeholder text for textfield for entering the Quick Connect codeyy
SettingsPage
+ Header of Settings page
-
- Other settings menu item
-
-
-
-
- About Sailfin settings menu itemy
- About Sailfin
-
-
+
-
-
-
-
-
-
-
-
-
- Settings list item for settings related to streaming
-
-
-
-
- Debug information settings menu itemy
-
-
-
+ This is a name used by Jellyfin and seems to be untranslated in other languages
+
+
+
+
+
+
+
+
+
+
+
+
+ Other settings menu item
+
+
+
+ Combo box label for selecting where the application should start
+ Combo box description for selecting where the application should start
+
+
+
+
+ Settings list item for settings related to streaming
+
+
+
+
+
+ Debug information settings menu itemy
+
+
+
+
+
+ About Sailfin settings menu itemy
+
+ SongDelegate
+ Context menu item for navigating to the artist of the selected track
+ Context menu item for navigating to one of the artists of the selected track (opens submenu)
@@ -555,22 +666,27 @@ Placeholder text for textfield for entering the Quick Connect codeyy
StreamingPage
+
+
+
+
+
@@ -578,28 +694,33 @@ Placeholder text for textfield for entering the Quick Connect codeyy
UnsupportedPage
-
-
-
-
-
-
-
-
+ Pulley menu item: navigate to application settings page
+ Pulley menu item: shows controllable device page
+
+
+
+
+
+
+
+
+
+ UserGridDelegate
+
@@ -607,41 +728,49 @@ This is still an alpha version :)
VideoError
-
- Video playback error: out of resources
-
-
-
-
- Video playback error: unsupported format/codec
-
-
-
-
- Video playback error: network error
-
-
-
-
- Video playback error: access denied
-
-
-
-
- Video playback error: the media cannot be played because the media service could not be instantiated.
-
-
-
-
- Button to retry loading a video after a failure
-
-
-
+ Just to be complete if the application shows a video playback error when there's no error.
+
+
+ Video playback error: out of resources
+
+
+
+
+
+ Video playback error: unsupported format/codec
+
+
+
+
+
+ Video playback error: network error
+
+
+
+
+
+ Video playback error: access denied
+
+
+
+
+
+ Video playback error: the media cannot be played because the media service could not be instantiated.
+
+
+
+
+
+ Button to retry loading a video after a failure
+
+
+
+
@@ -649,6 +778,7 @@ This is still an alpha version :)
VideoPage
+
@@ -656,26 +786,31 @@ This is still an alpha version :)
VideoTrackSelector
+
+
+
+
+
+
+
+ Value in ComboBox to disable subtitles
-
-
-
- harbour-sailfin
+ The application name for the notification