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

Merge pull request #40 from handydevcom/Fix_localization_and_add_Russian_localization

Fix translation settings in CMake; add Russian translation.
This commit is contained in:
Chris Josten 2024-01-01 15:21:35 +01:00 committed by GitHub
commit d7910faed5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 1421 additions and 26 deletions

View file

@ -11,7 +11,7 @@ ExternalProject_Add(BlurhashQt
CMAKE_ARGS -DBUILD_SHARED_LIBS:BOOL=ON -DENABLE_EXPORT=OFF -DQML_PLUGIN_PATH=${PROJECT_BINARY_DIR}/plugins/) CMAKE_ARGS -DBUILD_SHARED_LIBS:BOOL=ON -DENABLE_EXPORT=OFF -DQML_PLUGIN_PATH=${PROJECT_BINARY_DIR}/plugins/)
find_package(Qt5 COMPONENTS Gui Qml Quick) find_package(Qt5 COMPONENTS Gui Qml Quick LinguistTools)
find_package(SailfishApp 1.0 REQUIRED) find_package(SailfishApp 1.0 REQUIRED)
set(harbour-sailfin_SOURCES set(harbour-sailfin_SOURCES
@ -68,6 +68,22 @@ set(sailfin_QML_SOURCES
qml/pages/setup/LoginDialog.qml qml/pages/setup/LoginDialog.qml
qml/qmldir) qml/qmldir)
set(TRANSLATION_SOURCE_FILES
${harbour-sailfin_SOURCES}
${sailfin_QML_SOURCES}
)
set(TRANSLATION_TS_FILES
translations/harbour-sailfin.ts
translations/harbour-sailfin-de.ts
translations/harbour-sailfin-ru.ts
)
qt5_create_translation(TRANSLATION_QM_FILES
${TRANSLATION_SOURCE_FILES}
${TRANSLATION_TS_FILES})
add_custom_target(translations ALL DEPENDS ${TRANSLATION_QM_FILES})
add_executable(harbour-sailfin ${harbour-sailfin_SOURCES} ${sailfin_QML_SOURCES}) add_executable(harbour-sailfin ${harbour-sailfin_SOURCES} ${sailfin_QML_SOURCES})
target_link_libraries(harbour-sailfin PRIVATE Qt5::Gui Qt5::Qml Qt5::Quick SailfishApp::SailfishApp target_link_libraries(harbour-sailfin PRIVATE Qt5::Gui Qt5::Qml Qt5::Quick SailfishApp::SailfishApp
# Note: this may break when the compiler changes. -rdynamic and -pie seem to be needed for the # Note: this may break when the compiler changes. -rdynamic and -pie seem to be needed for the
@ -84,9 +100,8 @@ install(DIRECTORY ${PROJECT_BINARY_DIR}/plugins/
install(DIRECTORY qml install(DIRECTORY qml
DESTINATION share/harbour-sailfin DESTINATION share/harbour-sailfin
) )
install(DIRECTORY translations install(FILES ${TRANSLATION_QM_FILES}
DESTINATION share/harbour-sailfin DESTINATION share/harbour-sailfin/translations
FILES_MATCHING PATTERN "*.qm"
) )
install(FILES harbour-sailfin.desktop install(FILES harbour-sailfin.desktop
DESTINATION share/applications DESTINATION share/applications

View file

@ -1,37 +1,614 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS> <!DOCTYPE TS>
<TS version="2.0"> <TS version="2.1">
<context>
<name>AboutPage</name>
<message>
<source>About Sailfin</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. 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>
</message>
<message>
<source>Open externally</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LGPL 2.1 License</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>AddServerConnectingPage</name>
<message>
<source>Connecting to %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>AddServerPage</name>
<message>
<source>Connect</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Connect to Jellyfin</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Server</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sailfin will try to search for Jellyfin servers on your local network automatically</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>enter address manually</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Server address</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>e.g. https://demo.jellyfin.org</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>BaseDetailPage</name>
<message>
<source>Retry</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An error has occured</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CollectionPage</name>
<message>
<source>Loading</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sort by</source>
<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>
</context>
<context> <context>
<name>CoverPage</name> <name>CoverPage</name>
<message> <message>
<source>My Cover</source> <source>My Cover</source>
<translation>Mein Cover</translation> <translation type="vanished">Mein Cover</translation>
</message>
</context>
<context>
<name>DebugPage</name>
<message>
<source>Debug information</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Show debug information</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Websocket</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Connection state</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unconnected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1 (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Device profile</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EpisodePage</name>
<message>
<source>Episode %1%2 | %3</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Episode %1 | %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Overview</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No overview available</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FilmPage</name>
<message>
<source>Released: %1 Run time: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Overview</source>
<translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context> <context>
<name>FirstPage</name> <name>FirstPage</name>
<message> <message>
<source>Show Page 2</source> <source>Show Page 2</source>
<translation>Zur Seite 2</translation> <translation type="vanished">Zur Seite 2</translation>
</message> </message>
<message> <message>
<source>UI Template</source> <source>UI Template</source>
<translation>UI-Vorlage</translation> <translation type="vanished">UI-Vorlage</translation>
</message> </message>
<message> <message>
<source>Hello Sailors</source> <source>Hello Sailors</source>
<translation>Hallo Matrosen</translation> <translation type="vanished">Hallo Matrosen</translation>
</message>
</context>
<context>
<name>LegalPage</name>
<message>
<source>Legal</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sailfin contains code taken from other projects. Without them, Sailfin would not be possible!</source>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LoginDialog</name>
<message>
<source>Logging in as %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Invalid username or password</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Login</source>
<extracomment>Dialog action</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Credentials</source>
<extracomment>Section header for entering username and password</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Username</source>
<extracomment>Label placeholder for username field</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Password</source>
<extracomment>Label placeholder for password field</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Login message</source>
<extracomment>Message shown on login, configured by the server owner. Some form of a MOTD</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainPage</name>
<message>
<source>Settings</source>
<extracomment>Pulley menu item: navigate to application settings page</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Reload</source>
<extracomment>Pulley menu item: reload items on page</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Resume watching</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Next up</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Network error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pull down to retry again</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MusicAlbumPage</name>
<message>
<source>%1
%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>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unknown year</source>
<extracomment>Unknown album release year</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Playlist
%1 songs | %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Disc %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MusicArtistPage</name>
<message>
<source>%1 songs | %2 albums</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Discography</source>
<translation type="unfinished"></translation>
</message>
<message>
<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>
<translation type="unfinished"></translation>
</message>
<message>
<source>Appears on</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1 appears on</source>
<extracomment>Page title for the page with an overview of all albums a specific artist appears on</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MusicLibraryPage</name>
<message>
<source>Recently added</source>
<extracomment>Header on music library: Recently added music albums</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Latest media</source>
<extracomment>Page title for the list of all albums within the music library</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Albums</source>
<extracomment>Page title for the list of all albums within the music library</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Playlists</source>
<extracomment>Page title for the list of all playlists within the music library</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Artists</source>
<extracomment>Header for music artists
----------
Page title for the list of all artists within the music library</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PlayQueue</name>
<message>
<source>Queue</source>
<extracomment>Now playing page queue section header</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Playlist</source>
<extracomment>Now playing page playlist section header</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unknown section: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PlaybackBar</name>
<message>
<source>No media selected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Play some media!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No audio</source>
<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>
</context>
<context>
<name>PosterCover</name>
<message>
<source>%1/%2</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<source>Sailfin</source>
<extracomment>Application display name</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SeasonPage</name>
<message>
<source>No overview available</source>
<extracomment>No overview/summary text of an episode available</extracomment>
<translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context> <context>
<name>SecondPage</name> <name>SecondPage</name>
<message> <message>
<source>Nested Page</source> <source>Nested Page</source>
<translation>Unterseite</translation> <translation type="vanished">Unterseite</translation>
</message> </message>
<message> <message>
<source>Item</source> <source>Item</source>
<translation>Element</translation> <translation type="vanished">Element</translation>
</message>
</context>
<context>
<name>SeriesPage</name>
<message>
<source>Seasons</source>
<extracomment>Seasons of a (TV) show</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsPage</name>
<message>
<source>Settings</source>
<extracomment>Header of Settings page</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Session</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Log out</source>
<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>
</context>
<context>
<name>SongDelegate</name>
<message>
<source>Go to %1</source>
<extracomment>Context menu item for navigating to the artist of the selected track</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Go to artists</source>
<extracomment>Context menu item for navigating to one of the artists of the selected track (opens submenu)</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>StreamingPage</name>
<message>
<source>Streaming settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Allow transcoding</source>
<translation type="unfinished"></translation>
</message>
<message>
<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>
</message>
<message>
<source>%1 mbps</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Maximum streaming bitrate</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UnsupportedPage</name>
<message>
<source>Item type (%1) unsupported</source>
<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>
</context>
<context>
<name>UserGridDelegate</name>
<message>
<source>Other account</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>VideoError</name>
<message>
<source>No error</source>
<extracomment>Just to be complete if the application shows a video playback error when there&apos;s no error.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Resource allocation error</source>
<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>Hide</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>VideoPage</name>
<message>
<source>Run time: %2</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>VideoTrackSelector</name>
<message>
<source>Video track</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Audio track</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Subtitle track</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Off</source>
<extracomment>Value in ComboBox to disable subtitles</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>harbour-sailfin</name>
<message>
<source>Sailfin</source>
<extracomment>The application name for the notification</extracomment>
<translation type="unfinished"></translation>
</message> </message>
</context> </context>
</TS> </TS>

View file

@ -0,0 +1,583 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ru_RU" sourcelanguage="en">
<context>
<name>AboutPage</name>
<message>
<source>About Sailfin</source>
<translation>О программе Sailfin</translation>
</message>
<message>
<source>Open externally</source>
<translation>Открыть внешним приложением</translation>
</message>
<message>
<source></source>
<translation>Лицензия LGPL 2.1</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. 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>
</message>
</context>
<context>
<name>AddServerConnectingPage</name>
<message>
<source>Connecting to %1</source>
<translation>Соединяемся с %1</translation>
</message>
</context>
<context>
<name>AddServerPage</name>
<message>
<source>Connect</source>
<translation>Соединиться</translation>
</message>
<message>
<source>Connect to Jellyfin</source>
<translation>Соединиться с Jellyfin</translation>
</message>
<message>
<source>Server</source>
<translation>Сервер</translation>
</message>
<message>
<source>Sailfin will try to search for Jellyfin servers on your local network automatically</source>
<translation>Sailfin попробует найти серверы Jellyfin в локальной сети автоматически</translation>
</message>
<message>
<source>enter address manually</source>
<translation>ввести адрес вручную</translation>
</message>
<message>
<source>Server address</source>
<translation>Адрес сервера</translation>
</message>
<message>
<source>e.g. https://demo.jellyfin.org</source>
<translation>Напр. https://demo.jellyfin.org</translation>
</message>
</context>
<context>
<name>BaseDetailPage</name>
<message>
<source>Retry</source>
<translation>Попробовать снова</translation>
</message>
<message>
<source>An error has occured</source>
<translation>Произошла ошибка</translation>
</message>
</context>
<context>
<name>CollectionPage</name>
<message>
<source>Loading</source>
<translation>Загрузка</translation>
</message>
<message>
<source>Sort by</source>
<extracomment>Menu item for selecting the sort order of a collection</extracomment>
<translation>Сортировка</translation>
</message>
<message>
<source>Empty collection</source>
<translation>Пустая коллекция</translation>
</message>
<message>
<source>Add some items to this collection!</source>
<translation>Добавьте что-то в эту коллекцию!</translation>
</message>
<message>
<source>Name</source>
<translation>Название</translation>
</message>
<message>
<source>Play count</source>
<translation>Количество проигрываний</translation>
</message>
<message>
<source>Date added</source>
<translation>Дата добавления</translation>
</message>
<message>
<source>Ascending</source>
<extracomment>Sort order</extracomment>
<translation>По возрастанию</translation>
</message>
<message>
<source>Descending</source>
<extracomment>Sort order</extracomment>
<translation>По убыванию</translation>
</message>
<message>
<source>Sailfin</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DebugPage</name>
<message>
<source>Debug information</source>
<translation>Отладочная информация</translation>
</message>
<message>
<source>Show debug information</source>
<translation>Показывать отладочную информацию</translation>
</message>
<message>
<source>Websocket</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Connection state</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unconnected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1 (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Device profile</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EpisodePage</name>
<message>
<source>Episode %1%2 | %3</source>
<translation>Серия %1%2 | %3</translation>
</message>
<message>
<source>Episode %1 | %2</source>
<translation>Серия %1 | %2</translation>
</message>
<message>
<source>Overview</source>
<translation>Описание</translation>
</message>
<message>
<source>No overview available</source>
<translation>Нет описания</translation>
</message>
</context>
<context>
<name>FilmPage</name>
<message>
<source>Released: %1 Run time: %2</source>
<translation>Вышел: %1 Длительность: %2</translation>
</message>
<message>
<source>Overview</source>
<translation>Описание</translation>
</message>
</context>
<context>
<name>LegalPage</name>
<message>
<source>Legal</source>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sailfin contains code taken from other projects. Without them, Sailfin would not be possible!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LoginDialog</name>
<message>
<source>Logging in as %1</source>
<translation>Входим как %1</translation>
</message>
<message>
<source>Login</source>
<extracomment>Dialog action</extracomment>
<translation>Войти</translation>
</message>
<message>
<source>Credentials</source>
<extracomment>Section header for entering username and password</extracomment>
<translation>Учетные данные</translation>
</message>
<message>
<source>Username</source>
<extracomment>Label placeholder for username field</extracomment>
<translation>Имя пользователя</translation>
</message>
<message>
<source>Password</source>
<extracomment>Label placeholder for password field</extracomment>
<translation>Пароль</translation>
</message>
<message>
<source>Login message</source>
<extracomment>Message shown on login, configured by the server owner. Some form of a MOTD</extracomment>
<translation>Сообщение при входе</translation>
</message>
<message>
<source>Invalid username or password</source>
<translation>Неверное имя пользователя или пароль</translation>
</message>
</context>
<context>
<name>MainPage</name>
<message>
<source>Resume watching</source>
<translation>Продолжить просмотр</translation>
</message>
<message>
<source>Next up</source>
<translation>Продолжения</translation>
</message>
<message>
<source>Network error</source>
<translation>Ошибка сети</translation>
</message>
<message>
<source>Pull down to retry again</source>
<translation>Потяните вниз чтобы попробовать снова</translation>
</message>
<message>
<source>Settings</source>
<extracomment>Pulley menu item: navigate to application settings page</extracomment>
<translation>Настройки</translation>
</message>
<message>
<source>Reload</source>
<extracomment>Pulley menu item: reload items on page</extracomment>
<translation>Обновить</translation>
</message>
</context>
<context>
<name>MusicAlbumPage</name>
<message>
<source>%1
%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>
<translation>%1
%2 песен | %3 | %4</translation>
</message>
<message>
<source>Unknown year</source>
<extracomment>Unknown album release year</extracomment>
<translation>Неизвестный год</translation>
</message>
<message>
<source>Playlist
%1 songs | %2</source>
<translation>Плейлист
%1 песни | %2</translation>
</message>
<message>
<source>Disc %1</source>
<translation>Диск %1</translation>
</message>
</context>
<context>
<name>MusicArtistPage</name>
<message>
<source>%1 songs | %2 albums</source>
<translation>%1 песен | %2 альбомов</translation>
</message>
<message>
<source>Discography</source>
<translation>Дискография</translation>
</message>
<message>
<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>
<translation>Дискография %1</translation>
</message>
<message>
<source>Appears on</source>
<translation>Появляется на</translation>
</message>
<message>
<source>%1 appears on</source>
<extracomment>Page title for the page with an overview of all albums a specific artist appears on</extracomment>
<translation>%1 появляется на</translation>
</message>
</context>
<context>
<name>MusicLibraryPage</name>
<message>
<source>Recently added</source>
<extracomment>Header on music library: Recently added music albums</extracomment>
<translation>Добавлены недавно</translation>
</message>
<message>
<source>Latest media</source>
<extracomment>Page title for the list of all albums within the music library</extracomment>
<translation>Самые новые песни</translation>
</message>
<message>
<source>Albums</source>
<extracomment>Page title for the list of all albums within the music library</extracomment>
<translation>Альбомы</translation>
</message>
<message>
<source>Playlists</source>
<extracomment>Page title for the list of all playlists within the music library</extracomment>
<translation>Плейлисты</translation>
</message>
<message>
<source>Artists</source>
<extracomment>Header for music artists
----------
Page title for the list of all artists within the music library</extracomment>
<translation>Исполнители</translation>
</message>
</context>
<context>
<name>PlayQueue</name>
<message>
<source>Queue</source>
<extracomment>Now playing page queue section header</extracomment>
<translation>Очередь</translation>
</message>
<message>
<source>Playlist</source>
<extracomment>Now playing page playlist section header</extracomment>
<translation>Плейлист</translation>
</message>
<message>
<source>Unknown section: %1</source>
<translation>Неизвестная секция: %1</translation>
</message>
</context>
<context>
<name>PlaybackBar</name>
<message>
<source>No media selected</source>
<translation>Ничего не выбрано</translation>
</message>
<message>
<source>Play some media!</source>
<translation>Начните что-то проигрывать!</translation>
</message>
<message>
<source>No audio</source>
<translation>Нет звука</translation>
</message>
<message>
<source>Shuffle not yet implemented</source>
<translation>Перемешивание ещё не работает</translation>
</message>
<message>
<source>Stop</source>
<extracomment>Pulley menu item: stops playback of music</extracomment>
<translation>Стоп</translation>
</message>
</context>
<context>
<name>PosterCover</name>
<message>
<source>%1/%2</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<source>Sailfin</source>
<extracomment>Application display name</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SeasonPage</name>
<message>
<source>No overview available</source>
<extracomment>No overview/summary text of an episode available</extracomment>
<translation>Нет описания</translation>
</message>
</context>
<context>
<name>SeriesPage</name>
<message>
<source>Seasons</source>
<extracomment>Seasons of a (TV) show</extracomment>
<translation>Сезоны</translation>
</message>
</context>
<context>
<name>SettingsPage</name>
<message>
<source>Other</source>
<extracomment>Other settings menu item</extracomment>
<translation>Другие</translation>
</message>
<message>
<source>About Sailfin</source>
<extracomment>About Sailfin settings menu itemy</extracomment>
<translation>О программе Sailfin</translation>
</message>
<message>
<source>Session</source>
<translation>Сессия</translation>
</message>
<message>
<source>Log out</source>
<translation>Выйти</translation>
</message>
<message>
<source>Logging out</source>
<translation>Выходим</translation>
</message>
<message>
<source>Debug information</source>
<extracomment>Debug information settings menu itemy</extracomment>
<translation>Отладочная информация</translation>
</message>
<message>
<source>Settings</source>
<extracomment>Header of Settings page</extracomment>
<translation>Настройки</translation>
</message>
<message>
<source>Streaming settings</source>
<extracomment>Settings list item for settings related to streaming</extracomment>
<translation>Настройки стриминга</translation>
</message>
</context>
<context>
<name>SongDelegate</name>
<message>
<source>Go to %1</source>
<extracomment>Context menu item for navigating to the artist of the selected track</extracomment>
<translation>Перейти к %1</translation>
</message>
<message>
<source>Go to artists</source>
<extracomment>Context menu item for navigating to one of the artists of the selected track (opens submenu)</extracomment>
<translation>Перейти к исполнителям</translation>
</message>
</context>
<context>
<name>StreamingPage</name>
<message>
<source>Streaming settings</source>
<translation>Настройки стриминга</translation>
</message>
<message>
<source>Allow transcoding</source>
<translation>Разрешить транскодинг</translation>
</message>
<message>
<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>Если включено, Sailfin может попросить сервер Jellyfin перекодировать медиафайл в более подходящий формат для устройства. Рекомендуется оставить это включенным, если ваш сервер не слишком слабый.</translation>
</message>
<message>
<source>%1 mbps</source>
<translation>%1 мегабит/сек</translation>
</message>
<message>
<source>Maximum streaming bitrate</source>
<translation>Максимальный битрейт стриминга</translation>
</message>
</context>
<context>
<name>UnsupportedPage</name>
<message>
<source>Item type (%1) unsupported</source>
<translation>Тип файла (%1) не поддерживается</translation>
</message>
<message>
<source>Fallback page for %2 not found either
This is still an alpha version :)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UserGridDelegate</name>
<message>
<source>Other account</source>
<translation>Другая учетная запись</translation>
</message>
</context>
<context>
<name>VideoError</name>
<message>
<source>Resource allocation error</source>
<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>
<extracomment>Just to be complete if the application shows a video playback error when there&apos;s no error.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hide</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>VideoPage</name>
<message>
<source>Run time: %2</source>
<translation>Длительность: %2</translation>
</message>
</context>
<context>
<name>VideoTrackSelector</name>
<message>
<source>Audio track</source>
<translation>Аудиодорожка</translation>
</message>
<message>
<source>Subtitle track</source>
<translation>Дорожка субтитров</translation>
</message>
<message>
<source>Off</source>
<extracomment>Value in ComboBox to disable subtitles</extracomment>
<translation>Выключено</translation>
</message>
<message>
<source>Video track</source>
<translation>Видеодорожка</translation>
</message>
</context>
<context>
<name>harbour-sailfin</name>
<message>
<source>Sailfin</source>
<extracomment>The application name for the notification</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View file

@ -5,7 +5,7 @@
<name>AboutPage</name> <name>AboutPage</name>
<message> <message>
<source>About Sailfin</source> <source>About Sailfin</source>
<translation type="unfinished"></translation> <translation>About Sailfin1</translation>
</message> </message>
<message> <message>
<source>Open externally</source> <source>Open externally</source>
@ -16,7 +16,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>&lt;p&gt;&lt;b&gt;Sailfin version %1&lt;/b&gt;&lt;br/&gt;Copyright © Chris Josten 2020&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. 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. 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>
</context> </context>
@ -49,10 +49,6 @@
<source>enter address manually</source> <source>enter address manually</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>%1 - %2</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Server address</source> <source>Server address</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -114,14 +110,42 @@
<extracomment>Sort order</extracomment> <extracomment>Sort order</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context>
<context>
<name>CoverPage</name>
<message> <message>
<source>Sailfin</source> <source>Sailfin</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context>
<name>DebugPage</name>
<message>
<source>Debug information</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Show debug information</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Websocket</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Connection state</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unconnected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1 (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Device profile</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>EpisodePage</name> <name>EpisodePage</name>
<message> <message>
@ -215,6 +239,7 @@
</message> </message>
<message> <message>
<source>Settings</source> <source>Settings</source>
<extracomment>Pulley menu item: navigate to application settings page</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
@ -222,15 +247,146 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>An error has occurred. Please try again.</source> <source>Reload</source>
<extracomment>Pulley menu item: reload items on page</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Retry</source> <source>Pull down to retry again</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MusicAlbumPage</name>
<message>
<source>%1
%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>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Refresh</source> <source>Unknown year</source>
<extracomment>Unknown album release year</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Playlist
%1 songs | %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Disc %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MusicArtistPage</name>
<message>
<source>%1 songs | %2 albums</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Discography</source>
<translation type="unfinished"></translation>
</message>
<message>
<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>
<translation type="unfinished"></translation>
</message>
<message>
<source>Appears on</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1 appears on</source>
<extracomment>Page title for the page with an overview of all albums a specific artist appears on</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MusicLibraryPage</name>
<message>
<source>Recently added</source>
<extracomment>Header on music library: Recently added music albums</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Latest media</source>
<extracomment>Page title for the list of all albums within the music library</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Albums</source>
<extracomment>Page title for the list of all albums within the music library</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Playlists</source>
<extracomment>Page title for the list of all playlists within the music library</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Artists</source>
<extracomment>Header for music artists
----------
Page title for the list of all artists within the music library</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PlayQueue</name>
<message>
<source>Queue</source>
<extracomment>Now playing page queue section header</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Playlist</source>
<extracomment>Now playing page playlist section header</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unknown section: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PlaybackBar</name>
<message>
<source>No media selected</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Play some media!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No audio</source>
<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>
</context>
<context>
<name>PosterCover</name>
<message>
<source>%1/%2</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<source>Sailfin</source>
<extracomment>Application display name</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
@ -259,12 +415,13 @@
</message> </message>
<message> <message>
<source>Other</source> <source>Other</source>
<extracomment>Other settings</extracomment> <extracomment>Other settings menu item</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>About Sailfin</source> <source>About Sailfin</source>
<translation type="unfinished"></translation> <extracomment>About Sailfin settings menu itemy</extracomment>
<translation type="unfinished">About Sailfin1</translation>
</message> </message>
<message> <message>
<source>Session</source> <source>Session</source>
@ -278,6 +435,52 @@
<source>Logging out</source> <source>Logging out</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </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>
</context>
<context>
<name>SongDelegate</name>
<message>
<source>Go to %1</source>
<extracomment>Context menu item for navigating to the artist of the selected track</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Go to artists</source>
<extracomment>Context menu item for navigating to one of the artists of the selected track (opens submenu)</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>StreamingPage</name>
<message>
<source>Streaming settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Allow transcoding</source>
<translation type="unfinished"></translation>
</message>
<message>
<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>
</message>
<message>
<source>%1 mbps</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Maximum streaming bitrate</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>UnsupportedPage</name> <name>UnsupportedPage</name>
@ -286,7 +489,8 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>This is still an alpha version :)</source> <source>Fallback page for %2 not found either
This is still an alpha version :)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
@ -334,6 +538,10 @@
<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>
<source>Hide</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>VideoPage</name> <name>VideoPage</name>
@ -357,5 +565,17 @@
<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>
<name>harbour-sailfin</name>
<message>
<source>Sailfin</source>
<extracomment>The application name for the notification</extracomment>
<translation type="unfinished"></translation>
</message>
</context> </context>
</TS> </TS>