Merge branch 'development' of github.com:jeffvli/feishin into development

This commit is contained in:
Kendall Garner 2024-02-04 10:24:24 -08:00
commit 73c6ddd116
No known key found for this signature in database
GPG key ID: 18D2767419676C87
4 changed files with 48 additions and 27 deletions

View file

@ -1,4 +1,4 @@
import { PostProcessorModule } from 'i18next'; import { PostProcessorModule, TOptions, StringMap } from 'i18next';
import i18n from 'i18next'; import i18n from 'i18next';
import { initReactI18next } from 'react-i18next'; import { initReactI18next } from 'react-i18next';
import en from './locales/en.json'; import en from './locales/en.json';
@ -125,16 +125,18 @@ const titleCasePostProcessor: PostProcessorModule = {
}, },
}; };
const ignoreSentenceCaseLanguages = ['de']
const sentenceCasePostProcessor: PostProcessorModule = { const sentenceCasePostProcessor: PostProcessorModule = {
type: 'postProcessor', type: 'postProcessor',
name: 'sentenceCase', name: 'sentenceCase',
process: (value: string) => { process: (value: string, _key: string, _options: TOptions<StringMap>, translator: any) => {
const sentences = value.split('. '); const sentences = value.split('. ');
return sentences return sentences
.map((sentence) => { .map((sentence) => {
return ( return (
sentence.charAt(0).toLocaleUpperCase() + sentence.slice(1).toLocaleLowerCase() sentence.charAt(0).toLocaleUpperCase() + (!ignoreSentenceCaseLanguages.includes(translator.language) ? sentence.slice(1).toLocaleLowerCase() : sentence.slice(1))
); );
}) })
.join('. '); .join('. ');

View file

@ -8,8 +8,8 @@
"deletePlaylist": "löschen $t(entity.playlist_one)", "deletePlaylist": "löschen $t(entity.playlist_one)",
"deselectAll": "Alle abwählen", "deselectAll": "Alle abwählen",
"goToPage": "Gehe zur Seite", "goToPage": "Gehe zur Seite",
"moveToTop": "Nach Oben", "moveToTop": "Nach oben",
"moveToBottom": "Nach Unten", "moveToBottom": "Nach unten",
"removeFromPlaylist": "Entfernen von $t(entity.playlist_one)", "removeFromPlaylist": "Entfernen von $t(entity.playlist_one)",
"viewPlaylists": "Ansicht $t(entity.playlist_other)", "viewPlaylists": "Ansicht $t(entity.playlist_other)",
"refresh": "$t(common.refresh)", "refresh": "$t(common.refresh)",
@ -23,7 +23,7 @@
"increase": "erhöhen", "increase": "erhöhen",
"rating": "Wertung", "rating": "Wertung",
"bpm": "bpm", "bpm": "bpm",
"refresh": "erneuern", "refresh": "Aktualisieren",
"unknown": "Unbekannt", "unknown": "Unbekannt",
"areYouSure": "Bist Du sicher?", "areYouSure": "Bist Du sicher?",
"edit": "Bearbeiten", "edit": "Bearbeiten",
@ -61,7 +61,8 @@
"delete": "Löschen", "delete": "Löschen",
"cancel": "Abbrechen", "cancel": "Abbrechen",
"forceRestartRequired": "Neustarten um die Änderungen zu übernehmen... Schließe die Benachrichtigung zum Neustarten", "forceRestartRequired": "Neustarten um die Änderungen zu übernehmen... Schließe die Benachrichtigung zum Neustarten",
"setting": "Einstellung", "setting": "Einstellungen",
"setting_other": "Einstellungen",
"version": "Version", "version": "Version",
"title": "Titel", "title": "Titel",
"filter_one": "Filter", "filter_one": "Filter",
@ -84,7 +85,7 @@
"sortOrder": "Reihenfolge", "sortOrder": "Reihenfolge",
"none": "keine", "none": "keine",
"menu": "Menü", "menu": "Menü",
"restartRequired": "Neustart benötigt", "restartRequired": "(Neustart benötigt)",
"previousSong": "vorheriger $t(entity.track_one)", "previousSong": "vorheriger $t(entity.track_one)",
"noResultsFromQuery": "Die Abfrage brachte keine Ergebnisse", "noResultsFromQuery": "Die Abfrage brachte keine Ergebnisse",
"quit": "Verlassen", "quit": "Verlassen",
@ -224,12 +225,12 @@
"artist_other": "Interpreten", "artist_other": "Interpreten",
"folderWithCount_one": "{{count}} Verzeichnis", "folderWithCount_one": "{{count}} Verzeichnis",
"folderWithCount_other": "{{count}} Verzeichnisse", "folderWithCount_other": "{{count}} Verzeichnisse",
"albumArtist_one": "Album Interpret", "albumArtist_one": "Albuminterpret",
"albumArtist_other": "Album Interpreten", "albumArtist_other": "Albuminterpreten",
"track_one": "Track", "track_one": "Track",
"track_other": "Tracks", "track_other": "Tracks",
"albumArtistCount_one": "{{count}} Album Interpret", "albumArtistCount_one": "{{count}} Albuminterpret",
"albumArtistCount_other": "{{count}} Album Interpreten", "albumArtistCount_other": "{{count}} Albuminterpreten",
"albumWithCount_one": "{{count}} Album", "albumWithCount_one": "{{count}} Album",
"albumWithCount_other": "{{count}} Alben", "albumWithCount_other": "{{count}} Alben",
"favorite_one": "Favorit", "favorite_one": "Favorit",
@ -272,12 +273,12 @@
"synchronized": "synchronisiert", "synchronized": "synchronisiert",
"followCurrentLyric": "dem Songtext folgen", "followCurrentLyric": "dem Songtext folgen",
"opacity": "Deckkraft", "opacity": "Deckkraft",
"lyricSize": "Songtext Größe", "lyricSize": "Songtext-Größe",
"showLyricProvider": "Songtext-Anbieter anzeigen", "showLyricProvider": "Songtext-Anbieter anzeigen",
"unsynchronized": "nicht synchronisiert", "unsynchronized": "nicht synchronisiert",
"lyricAlignment": "Songtext Ausrichtung", "lyricAlignment": "Songtext-Ausrichtung",
"useImageAspectRatio": "Bildseitenverhältnis verwenden", "useImageAspectRatio": "Bildseitenverhältnis verwenden",
"lyricGap": "Songtext Lücke" "lyricGap": "Songtext-Lücke"
}, },
"upNext": "als nächstes", "upNext": "als nächstes",
"lyrics": "Songtexte", "lyrics": "Songtexte",
@ -289,7 +290,7 @@
"manageServers": "Server verwalten", "manageServers": "Server verwalten",
"expandSidebar": "Seitenleiste erweitern", "expandSidebar": "Seitenleiste erweitern",
"collapseSidebar": "Seitenleiste einklappen", "collapseSidebar": "Seitenleiste einklappen",
"openBrowserDevtools": "Browser Entwicklungswerkzeuge öffnen", "openBrowserDevtools": "Browser-Entwicklungswerkzeuge öffnen",
"goBack": "Gehe zurück", "goBack": "Gehe zurück",
"goForward": "Gehe vorwärts", "goForward": "Gehe vorwärts",
"settings": "$t(common.setting_other)", "settings": "$t(common.setting_other)",
@ -298,7 +299,7 @@
"home": { "home": {
"mostPlayed": "Meistgespielt", "mostPlayed": "Meistgespielt",
"newlyAdded": "Neu hinzugefügte Veröffentlichungen", "newlyAdded": "Neu hinzugefügte Veröffentlichungen",
"explore": "Entdecken Sie Ihre Bibliothek", "explore": "Entdecke deine Bibliothek",
"recentlyPlayed": "Kürzlich gespielt", "recentlyPlayed": "Kürzlich gespielt",
"title": "$t(common.home)" "title": "$t(common.home)"
}, },
@ -431,7 +432,7 @@
"sidebarCollapsedNavigation_description": "Zeigt die Navigation in der minimierten Seitenleiste an oder verbirgt sie", "sidebarCollapsedNavigation_description": "Zeigt die Navigation in der minimierten Seitenleiste an oder verbirgt sie",
"mpvExecutablePath_help": "eine pro Zeile", "mpvExecutablePath_help": "eine pro Zeile",
"hotkey_volumeUp": "Lauter", "hotkey_volumeUp": "Lauter",
"skipDuration": "Sprung Dauer", "skipDuration": "Sprungdauer",
"showSkipButtons": "Schaltflächen zum Überspringen anzeigen", "showSkipButtons": "Schaltflächen zum Überspringen anzeigen",
"playButtonBehavior_optionPlay": "$t(player.play)", "playButtonBehavior_optionPlay": "$t(player.play)",
"minimumScrobblePercentage": "minimale Scrobble-Dauer (Prozentsatz)", "minimumScrobblePercentage": "minimale Scrobble-Dauer (Prozentsatz)",
@ -495,7 +496,7 @@
"savePlayQueue": "Wiedergabe-Warteschlange speichern", "savePlayQueue": "Wiedergabe-Warteschlange speichern",
"minimumScrobbleSeconds_description": "die Mindestdauer in Sekunden, die das Lied abspielen muss, bevor es gescrobbelt wird", "minimumScrobbleSeconds_description": "die Mindestdauer in Sekunden, die das Lied abspielen muss, bevor es gescrobbelt wird",
"skipPlaylistPage_description": "Gehen Sie beim Navigieren zu einer Wiedergabeliste zur Titelseite der Wiedergabeliste und nicht zur Standardseite", "skipPlaylistPage_description": "Gehen Sie beim Navigieren zu einer Wiedergabeliste zur Titelseite der Wiedergabeliste und nicht zur Standardseite",
"fontType_description": "Die integrierte Schriftart wählt eine der von Feishin bereitgestellten Schriftarten aus. Mit der Systemschriftart können Sie jede von Ihrem Betriebssystem bereitgestellte Schriftart auswählen. Benutzerdefiniert erlaubt es eine eigene Schriftart bereitstellen", "fontType_description": "Die integrierte Schriftart wählt eine der von Feishin bereitgestellten Schriftarten aus. Mit der Systemschriftart können Sie jede von Ihrem Betriebssystem bereitgestellte Schriftart auswählen. Benutzerdefiniert erlaubt es eine eigene Schriftart bereitzustellen",
"playButtonBehavior": "Verhalten der Wiedergabetaste", "playButtonBehavior": "Verhalten der Wiedergabetaste",
"volumeWheelStep": "Lautstärkeregler Stufe", "volumeWheelStep": "Lautstärkeregler Stufe",
"sidebarPlaylistList_description": "Ein- oder Ausblenden der Playlisten-Liste in der Seitenleiste", "sidebarPlaylistList_description": "Ein- oder Ausblenden der Playlisten-Liste in der Seitenleiste",
@ -510,7 +511,7 @@
"sidebarConfiguration_description": "Wählen Sie die Elemente und die Reihenfolge aus, in der sie in der Seitenleiste angezeigt werden", "sidebarConfiguration_description": "Wählen Sie die Elemente und die Reihenfolge aus, in der sie in der Seitenleiste angezeigt werden",
"remotePort": "Port des Fernsteuerungsserver", "remotePort": "Port des Fernsteuerungsserver",
"hotkey_playbackNext": "Nächster Track", "hotkey_playbackNext": "Nächster Track",
"useSystemTheme_description": "der systemdefinierten Hell oder Dunkel Präferenz folgen", "useSystemTheme_description": "der systemdefinierten Hell- oder Dunkelpräferenz folgen",
"playButtonBehavior_optionAddNext": "$t(player.addNext)", "playButtonBehavior_optionAddNext": "$t(player.addNext)",
"lyricFetch_description": "Songtexte aus verschiedenen Internetquellen abrufen", "lyricFetch_description": "Songtexte aus verschiedenen Internetquellen abrufen",
"lyricFetchProvider_description": "Wählen Sie die Anbieter aus, von denen Sie Liedtexte abrufen möchten. Die Reihenfolge der Anbieter ist die Reihenfolge, in der sie abgefragt werden", "lyricFetchProvider_description": "Wählen Sie die Anbieter aus, von denen Sie Liedtexte abrufen möchten. Die Reihenfolge der Anbieter ist die Reihenfolge, in der sie abgefragt werden",

View file

@ -317,9 +317,9 @@ const createWindow = async () => {
} }
}); });
const globalMediaKeysEnabled = store.get('global_media_hotkeys') as boolean; const globalMediaKeysEnabled = store.get('global_media_hotkeys', true) as boolean;
if (globalMediaKeysEnabled !== false) { if (globalMediaKeysEnabled) {
enableMediaKeys(mainWindow); enableMediaKeys(mainWindow);
} }
@ -633,7 +633,7 @@ ipcMain.on(
} }
} }
const globalMediaKeysEnabled = store.get('global_media_hotkeys') as boolean; const globalMediaKeysEnabled = store.get('global_media_hotkeys', true) as boolean;
if (globalMediaKeysEnabled) { if (globalMediaKeysEnabled) {
enableMediaKeys(mainWindow); enableMediaKeys(mainWindow);

View file

@ -251,7 +251,16 @@ const HomeRoute = () => {
property: 'name', property: 'name',
route: { route: {
route: AppRoute.LIBRARY_ALBUMS_DETAIL, route: AppRoute.LIBRARY_ALBUMS_DETAIL,
slugs: [{ idProperty: 'id', slugProperty: 'albumId' }], slugs: [
{
idProperty:
server?.type === ServerType.JELLYFIN &&
carousel.itemType === LibraryItem.SONG
? 'albumId'
: 'id',
slugProperty: 'albumId',
},
],
}, },
}, },
{ {
@ -272,7 +281,16 @@ const HomeRoute = () => {
itemType={carousel.itemType} itemType={carousel.itemType}
route={{ route={{
route: AppRoute.LIBRARY_ALBUMS_DETAIL, route: AppRoute.LIBRARY_ALBUMS_DETAIL,
slugs: [{ idProperty: 'id', slugProperty: 'albumId' }], slugs: [
{
idProperty:
server?.type === ServerType.JELLYFIN &&
carousel.itemType === LibraryItem.SONG
? 'albumId'
: 'id',
slugProperty: 'albumId',
},
],
}} }}
title={{ title={{
label: ( label: (