Skip to content

Commit 6c1bb47

Browse files
authored
Merge branch 'develop' into WINARM64
2 parents b19d0b7 + 798b038 commit 6c1bb47

22 files changed

Lines changed: 1041 additions & 114 deletions

.github/FUNDING.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
github: PartyDonut
22
buy_me_a_coffee: jopknaapen
3+
patreon: Fladder

.github/workflows/build.yml

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ jobs:
131131
echo "ARTIFACT_SUFFIX=${{ needs.fetch-info.outputs.build_type }}" >> $GITHUB_OUTPUT
132132
133133
- name: Decode Keystore for release
134+
if: needs.fetch-info.outputs.build_type != 'development'
134135
env:
135136
ENCODED_STRING: ${{ secrets.KEYSTORE_BASE_64 }}
136137
RELEASE_KEYSTORE_PASSWORD: ${{ secrets.RELEASE_KEYSTORE_PASSWORD }}
@@ -167,12 +168,25 @@ jobs:
167168
- name: Get dependencies
168169
run: flutter pub get
169170

171+
- name: Build Android APK (PRs)
172+
if: needs.fetch-info.outputs.build_type == 'development'
173+
run: |
174+
flutter build apk --debug --build-number=${{github.run_number}} --flavor production
175+
170176
- name: Build Android APK and AAB
177+
if: needs.fetch-info.outputs.build_type != 'development'
171178
run: |
172179
flutter build apk --release --build-number=${{github.run_number}} --flavor production
173180
flutter build appbundle --release --build-number=${{github.run_number}} --flavor production
174181
182+
- name: Rename APK for PR
183+
if: needs.fetch-info.outputs.build_type == 'development'
184+
run: |
185+
mkdir -p build/app/outputs/android_artifacts
186+
mv build/app/outputs/flutter-apk/app-production-debug.apk "build/app/outputs/android_artifacts/${{ env.ARTIFACT_SUFFIX }}.apk"
187+
175188
- name: Rename APK and AAB
189+
if: needs.fetch-info.outputs.build_type != 'development'
176190
run: |
177191
mkdir -p build/app/outputs/android_artifacts
178192
mv build/app/outputs/flutter-apk/app-production-release.apk "build/app/outputs/android_artifacts/${{ env.ARTIFACT_SUFFIX }}.apk"
@@ -716,16 +730,7 @@ jobs:
716730
Fladder-Linux-${{ steps.version.outputs.version }}.zip
717731
Fladder-Linux-${{ steps.version.outputs.version }}.AppImage
718732
Fladder-Linux-${{ steps.version.outputs.version }}.AppImage.zsync
719-
env:
720-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
721-
722-
- name: Add Flatpak to release
723-
if: needs.fetch-info.outputs.build_type == 'release'
724-
uses: softprops/action-gh-release@v2
725-
with:
726-
tag_name: ${{ github.ref_name }}
727-
files: |
728-
Fladder-Linux-${{ steps.version.outputs.version }}.flatpak
733+
${{ needs.fetch-info.outputs.build_type == 'release' && format('Fladder-Linux-{0}.flatpak', steps.version.outputs.version) || '' }}
729734
env:
730735
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
731736

lib/l10n/app_ar.arb

Lines changed: 139 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1661,5 +1661,143 @@
16611661
"activeTvChannels": "القنوات التلفزيونية النشطة",
16621662
"enableNewTVLayout": "تفعيل تصميم التلفاز الجديد",
16631663
"enableNewTVLayoutDesc": "عرض لافتات أكبر بأسلوب التلفاز في لوحة التحكم. سيصبح هذا التصميم الافتراضي في إصدار لاحق",
1664-
"backgroundColor": "لون الخلفية"
1664+
"backgroundColor": "لون الخلفية",
1665+
"liveTvManageTunersEpg": "إدارة أجهزة الاستقبال ومزودي دليل البرامج (EPG)",
1666+
"tunerDevices": "أجهزة الاستقبال",
1667+
"epgGuideProviders": "مزودو دليل البرامج (EPG)",
1668+
"noTunerDevicesConfigured": "لم يتم إعداد أي أجهزة استقبال",
1669+
"noEpgProvidersConfigured": "لم يتم إعداد أي مزود لدليل البرامج",
1670+
"addTunerDevice": "إضافة جهاز استقبال",
1671+
"addProvider": "إضافة مزود",
1672+
"tunerHostAddedSuccessfully": "تمت إضافة جهاز الاستقبال بنجاح",
1673+
"failedToAddTunerHost": "فشل في إضافة جهاز الاستقبال: {error}",
1674+
"@failedToAddTunerHost": {
1675+
"placeholders": {
1676+
"error": {
1677+
"type": "String"
1678+
}
1679+
}
1680+
},
1681+
"tunerHostUpdatedSuccessfully": "تم تحديث جهاز الاستقبال بنجاح",
1682+
"failedToUpdateTunerHost": "فشل في تحديث جهاز الاستقبال: {error}",
1683+
"@failedToUpdateTunerHost": {
1684+
"placeholders": {
1685+
"error": {
1686+
"type": "String"
1687+
}
1688+
}
1689+
},
1690+
"deleteTunerHost": "حذف جهاز الاستقبال",
1691+
"deleteTunerHostConfirm": "هل أنت متأكد أنك تريد حذف \"{name}\"؟",
1692+
"@deleteTunerHostConfirm": {
1693+
"placeholders": {
1694+
"name": {
1695+
"type": "String"
1696+
}
1697+
}
1698+
},
1699+
"tunerHostDeletedSuccessfully": "تم حذف جهاز الاستقبال بنجاح",
1700+
"failedToDeleteTunerHost": "فشل في حذف جهاز الاستقبال: {error}",
1701+
"@failedToDeleteTunerHost": {
1702+
"placeholders": {
1703+
"error": {
1704+
"type": "String"
1705+
}
1706+
}
1707+
},
1708+
"epgProviderAddedSuccessfully": "تمت إضافة مزود دليل البرامج بنجاح",
1709+
"failedToAddEpgProvider": "فشل في إضافة مزود دليل البرامج: {error}",
1710+
"@failedToAddEpgProvider": {
1711+
"placeholders": {
1712+
"error": {
1713+
"type": "String"
1714+
}
1715+
}
1716+
},
1717+
"epgProviderUpdatedSuccessfully": "تم تحديث مزود دليل البرامج بنجاح",
1718+
"failedToUpdateEpgProvider": "فشل في تحديث مزود دليل البرامج: {error}",
1719+
"@failedToUpdateEpgProvider": {
1720+
"placeholders": {
1721+
"error": {
1722+
"type": "String"
1723+
}
1724+
}
1725+
},
1726+
"liveTV": "البث التلفزيوني المباشر",
1727+
"deleteEpgProvider": "حذف مزود دليل البرامج (EPG)",
1728+
"deleteEpgProviderConfirm": "هل أنت متأكد أنك تريد حذف هذا المزود؟",
1729+
"epgProviderDeletedSuccessfully": "تم حذف مزود دليل البرامج بنجاح",
1730+
"failedToDeleteEpgProvider": "فشل في حذف مزود دليل البرامج: {error}",
1731+
"@failedToDeleteEpgProvider": {
1732+
"placeholders": {
1733+
"error": {
1734+
"type": "String"
1735+
}
1736+
}
1737+
},
1738+
"editTunerDevice": "تعديل جهاز الاستقبال",
1739+
"friendlyName": "الاسم المعرّف",
1740+
"url": "الرابط (URL)",
1741+
"userAgent": "وكيل المستخدم (User Agent)",
1742+
"userAgentOptional": "وكيل المستخدم (اختياري)",
1743+
"maxConcurrentStreams": "الحد الأقصى للتدفقات المتزامنة",
1744+
"addEpgProvider": "إضافة مزود دليل البرامج",
1745+
"editEpgProvider": "تعديل مزود دليل البرامج",
1746+
"xmltvPathUrl": "مسار/رابط XMLTV",
1747+
"enableAllTuners": "تفعيل لجميع أجهزة الاستقبال",
1748+
"enabledTuners": "الأجهزة المفعّلة",
1749+
"selectTuners": "اختيار أجهزة الاستقبال",
1750+
"moviePrefix": "بادئة الأفلام",
1751+
"movieCategories": "فئات الأفلام",
1752+
"newsCategories": "فئات الأخبار",
1753+
"sportsCategories": "فئات الرياضة",
1754+
"kidsCategories": "فئات الأطفال",
1755+
"fileOrUrl": "ملف أو رابط",
1756+
"tunerIpAddress": "عنوان IP لجهاز الاستقبال",
1757+
"fallbackMaxBitrate": "الحد الأقصى لمعدل البث الاحتياطي (ميجابت/ثانية)",
1758+
"concurrentStreams": "الحد الأقصى للتدفقات المتزامنة",
1759+
"concurrentStreamsHint": "0 = غير محدود",
1760+
"allowFmp4Container": "السماح بحاوية تحويل fMP4",
1761+
"allowStreamSharing": "السماح بمشاركة البث",
1762+
"enableStreamLooping": "تفعيل تكرار البث",
1763+
"ignoreDts": "تجاهل الطوابع الزمنية DTS",
1764+
"readAtNativeFramerate": "القراءة بالمعدل الأصلي للإطارات",
1765+
"importFavoritesOnly": "استيراد القنوات المفضلة فقط",
1766+
"allowHWTranscoding": "السماح بالتحويل باستخدام العتاد",
1767+
"detectDevices": "اكتشاف الأجهزة",
1768+
"discoveredDevices": "الأجهزة المكتشفة",
1769+
"noDevicesFound": "لم يتم العثور على أجهزة",
1770+
"failedToDiscoverDevices": "فشل في اكتشاف الأجهزة: {error}",
1771+
"@failedToDiscoverDevices": {
1772+
"placeholders": {
1773+
"error": {
1774+
"type": "String"
1775+
}
1776+
}
1777+
},
1778+
"path": "المسار",
1779+
"maxConcurrentStreamsLabel": "الحد الأقصى للتدفقات المتزامنة",
1780+
"noCategories": "لا توجد فئات",
1781+
"moviePrefixSubLabel": "إذا تمت إضافة بادئة لعناوين الأفلام، اكتبها هنا ليتمكن الخادم من معالجتها بشكل صحيح.",
1782+
"movieCategoriesSubLabel": "الفئات المخصصة للقنوات التي تطابق بادئة الأفلام",
1783+
"newsCategoriesSubLabel": "الفئات المخصصة للقنوات التي تطابق بادئة الأخبار",
1784+
"sportsCategoriesSubLabel": "الفئات المخصصة للقنوات التي تطابق بادئة الرياضة",
1785+
"kidsCategoriesSubLabel": "الفئات المخصصة للقنوات التي تطابق بادئة الأطفال",
1786+
"notifications": "الإشعارات",
1787+
"showNewItemNotificationTitle": "التحقق من العناصر الجديدة",
1788+
"notificationChannelDescription": "إشعارات للعناصر المضافة حديثاً",
1789+
"notificationNewEpisodes": "تمت إضافة حلقات جديدة",
1790+
"notificationNewItems": "{count, plural, one{{count} عنصر جديد} other{{count} عناصر جديدة}}",
1791+
"@notificationNewItems": {
1792+
"description": "Plural for number of new items in a notification",
1793+
"placeholders": {
1794+
"count": {
1795+
"type": "int"
1796+
}
1797+
}
1798+
},
1799+
"notificationTimerIOSWarning": " نظام iOS يقرر متى/إذا كانت التحديثات ستعمل فعلياً، قد تتأخر الإشعارات أو لا تظهر إطلاقاً.",
1800+
"updateCheckInterval": "فترة التحقق من التحديثات",
1801+
"updateCheckIntervalDesc": "عدد مرات تشغيل المهمة في الخلفية",
1802+
"notificationsIntervalClientReminder": "فترة الإشعارات محددة لجميع المستخدمين."
16651803
}

lib/l10n/app_de.arb

Lines changed: 171 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1665,5 +1665,175 @@
16651665
"speedBoostRateDesc": "Wiedergabegeschwindigkeit bei aktivierter Beschleunigung",
16661666
"enableDoubleTapSeekTitle": "Doppelt tippen zum spulen/starten/pausieren",
16671667
"enableDoubleTapSeekDesc": "Linke/Rechte Bildschirmhälfte doppelt tippen um zurück/nach vorne zu springen. Zum Abspielen/pausieren doppelt in die Bildschirmmitte tippen",
1668-
"backgroundColor": "Hintergrundfarbe"
1668+
"backgroundColor": "Hintergrundfarbe",
1669+
"liveTV": "Live TV",
1670+
"liveTvManageTunersEpg": "Tuner-Geräte und EPG-Anbieter verwalten",
1671+
"tunerDevices": "Tuner-Geräte",
1672+
"epgGuideProviders": "EPG-Anbieter",
1673+
"noTunerDevicesConfigured": "Keine Tuner-Geräte konfiguriert",
1674+
"noEpgProvidersConfigured": "Keine EPG-Anbieter konfiguriert",
1675+
"addTunerDevice": "Tuner-Gerät hinzufügen",
1676+
"addProvider": "Anbieter hinzufügen",
1677+
"tunerHostAddedSuccessfully": "Tuner Host erfolgreich hinzugefügt",
1678+
"failedToAddTunerHost": "Tuner Host konnte nicht hinzugefügt werden: {error}",
1679+
"@failedToAddTunerHost": {
1680+
"placeholders": {
1681+
"error": {
1682+
"type": "String"
1683+
}
1684+
}
1685+
},
1686+
"tunerHostUpdatedSuccessfully": "Tuner Host erfolgreich aktualisiert",
1687+
"failedToUpdateTunerHost": "Tuner Host konnte nicht aktualisiert werden: {error}",
1688+
"@failedToUpdateTunerHost": {
1689+
"placeholders": {
1690+
"error": {
1691+
"type": "String"
1692+
}
1693+
}
1694+
},
1695+
"deleteTunerHost": "Tuner Host löschen",
1696+
"deleteTunerHostConfirm": "Sind Sie sicher, dass Sie \"{name}\" löschen möchten?",
1697+
"@deleteTunerHostConfirm": {
1698+
"placeholders": {
1699+
"name": {
1700+
"type": "String"
1701+
}
1702+
}
1703+
},
1704+
"tunerHostDeletedSuccessfully": "Tuner Host erfolgreich gelöscht",
1705+
"failedToDeleteTunerHost": "Tuner Host konnte nicht gelöscht werden: {error}",
1706+
"@failedToDeleteTunerHost": {
1707+
"placeholders": {
1708+
"error": {
1709+
"type": "String"
1710+
}
1711+
}
1712+
},
1713+
"epgProviderAddedSuccessfully": "EPG-Anbieter erfolgreich hinzugefügt",
1714+
"failedToAddEpgProvider": "EPG-Anbieter konnte nicht hinzugefügt werden: {error}",
1715+
"@failedToAddEpgProvider": {
1716+
"placeholders": {
1717+
"error": {
1718+
"type": "String"
1719+
}
1720+
}
1721+
},
1722+
"epgProviderUpdatedSuccessfully": "EPG-Anbieter erfolgreich aktualisiert",
1723+
"failedToUpdateEpgProvider": "EPG-Anbieter konnte nicht aktualisiert werden: {error}",
1724+
"@failedToUpdateEpgProvider": {
1725+
"placeholders": {
1726+
"error": {
1727+
"type": "String"
1728+
}
1729+
}
1730+
},
1731+
"deleteEpgProvider": "EPG-Anbieter löschen",
1732+
"deleteEpgProviderConfirm": "Sind Sie sicher, dass Sie diesen Anbieter löschen möchten?",
1733+
"epgProviderDeletedSuccessfully": "EPG-Anbieter erfolgreich gelöscht",
1734+
"failedToDeleteEpgProvider": "EPG-Anbieter konnte nicht gelöscht werden: {error}",
1735+
"@failedToDeleteEpgProvider": {
1736+
"placeholders": {
1737+
"error": {
1738+
"type": "String"
1739+
}
1740+
}
1741+
},
1742+
"editTunerDevice": "Tuner-Gerät bearbeiten",
1743+
"friendlyName": "Anzeigename",
1744+
"url": "URL",
1745+
"userAgent": "User Agent",
1746+
"userAgentOptional": "User Agent (Optional)",
1747+
"maxConcurrentStreams": "Maximale gleichzeitige Streams",
1748+
"addEpgProvider": "EPG-Anbieter hinzufügen",
1749+
"editEpgProvider": "EPG-Anbieter bearbeiten",
1750+
"xmltvPathUrl": "XMLTV Pfad/URL",
1751+
"enableAllTuners": "Für alle Tuner aktivieren",
1752+
"enabledTuners": "Aktivierte Tuner",
1753+
"selectTuners": "Tuner auswählen",
1754+
"moviePrefix": "Filmpräfix",
1755+
"movieCategories": "Filmkategorien",
1756+
"newsCategories": "Nachrichtenkategorien",
1757+
"sportsCategories": "Sportkategorien",
1758+
"kidsCategories": "Kinderkategorien",
1759+
"fileOrUrl": "Datei oder URL",
1760+
"tunerIpAddress": "Tuner IP Adresse",
1761+
"fallbackMaxBitrate": "Höchste Fallback Bitrate (Mbps)",
1762+
"concurrentStreams": "Maximale gleichzeitige Streams",
1763+
"concurrentStreamsHint": "0 = Unbegrenzt",
1764+
"allowFmp4Container": "fMP4 Transkodierungscontainer erlauben",
1765+
"allowStreamSharing": "Stream Sharing erlauben",
1766+
"enableStreamLooping": "Steam Looping erlauben",
1767+
"ignoreDts": "DTS-Zeitstempel ignorieren",
1768+
"readAtNativeFramerate": "In nativer Bildrate abspielen",
1769+
"importFavoritesOnly": "Nur favorisierte Kanäle importieren",
1770+
"allowHWTranscoding": "Hardware-Transcodierung erlauben",
1771+
"detectDevices": "Geräte ermitteln",
1772+
"discoveredDevices": "Entdeckte Geräte",
1773+
"noDevicesFound": "Keine Geräte gefunden",
1774+
"failedToDiscoverDevices": "Es konnten keine Geräte gefunden werden: {error}",
1775+
"@failedToDiscoverDevices": {
1776+
"placeholders": {
1777+
"error": {
1778+
"type": "String"
1779+
}
1780+
}
1781+
},
1782+
"path": "Pfad",
1783+
"maxConcurrentStreamsLabel": "Maximale gleichzeitige Streams",
1784+
"noCategories": "Keine Kategorien",
1785+
"moviePrefixSubLabel": "Wenn ein Präfix auf Filmtitel angewendet wird, geben Sie es hier ein, damit der Server es richtig verarbeiten kann.",
1786+
"movieCategoriesSubLabel": "Kategorien, die Kanälen mit dem Filmpräfix zugewiesen werden sollen",
1787+
"newsCategoriesSubLabel": "Kategorien, die Kanälen mit dem Nachrichtenpräfix zugewiesen werden sollen",
1788+
"sportsCategoriesSubLabel": "Kategorien, die Kanälen mit dem Sportpräfix zugewiesen werden sollen",
1789+
"kidsCategoriesSubLabel": "Kategorien, die Kanälen mit dem Kinderpräfix zugewiesen werden sollen",
1790+
"notifications": "Benachrichtigungen",
1791+
"showNewItemNotificationTitle": "Auf neue Einträge überprüfen",
1792+
"notificationChannelDescription": "Benachrichtigungen für neu hinzugefügte Einträge",
1793+
"notificationNewEpisodes": "Neue Episoden hinzugefügt",
1794+
"notificationNewItems": "{count, plural, one{{count} neuer Eintrag} other{{count} neue Einträge}}",
1795+
"@notificationNewItems": {
1796+
"description": "Plural for number of new items in a notification",
1797+
"placeholders": {
1798+
"count": {
1799+
"type": "int"
1800+
}
1801+
}
1802+
},
1803+
"notificationTimerIOSWarning": " iOS entscheidet wann/ob Updates tatsächlich ausgeführt werden, Benachrichtigungen erscheinen daher möglicherweise nicht oder nur verzögert.",
1804+
"updateCheckInterval": "Intervall zur Suche nach Updates",
1805+
"updateCheckIntervalDesc": "Wie oft die Hintergrundaufgabe läuft",
1806+
"notificationsIntervalClientReminder": "Das Benachrichtigungsintervall gilt für alle Benutzer.",
1807+
"requestMore": "Mehr Anfragen",
1808+
"seerrRequestNotifications": "Benachrichtigungen für Seerr Anfragen",
1809+
"notificationNewRequests": "{count, plural, one{{count} neue Anfrage} other{{count} neue Anfragen}}",
1810+
"@notificationNewRequests": {
1811+
"description": "Plural for number of new Seerr requests in a notification",
1812+
"placeholders": {
1813+
"count": {
1814+
"type": "int"
1815+
}
1816+
}
1817+
},
1818+
"lastUpdateAt": "Letzte Aktualisierung am {date} um {time}",
1819+
"@lastUpdateAt": {
1820+
"description": "lastUpdateAt",
1821+
"placeholders": {
1822+
"time": {
1823+
"type": "DateTime",
1824+
"format": "jm"
1825+
},
1826+
"date": {
1827+
"type": "DateTime",
1828+
"format": "yMd"
1829+
}
1830+
}
1831+
},
1832+
"includeHiddenItems": "Versteckte Bibliotheken einschließen",
1833+
"includeHiddenItemsDesc": "Bibliotheken einschließen, die in der Übersicht ausgeblendet sind",
1834+
"batteryOptimizationDesc": "Batterieoptimierungen können Hintergrundbenachrichtigungen für Fladder verzögern. \nTippe hier, um die Systemeinstellungen zu öffnen und die Optimierungen für Fladder zu deaktivieren, um die Zuverlässigkeit der Benachrichtigungen zu verbessern.",
1835+
"settingsBlurEffectsTitle": "Unschärfe Effekt aktivieren",
1836+
"settingsBlurEffectsDesc": "Aktiviert den Unschärfeeffekte in der Benutzeroberfläche. Das Deaktivieren kann die Leistung auf Geräten mit niedrigerer Leistung verbessern.",
1837+
"profileSettingsOpenAuthAtLaunch": "Authentifizierungsmethode beim App sperren anzeigen",
1838+
"toggleSidebar": "Seitenleiste umschalten"
16691839
}

lib/l10n/app_en.arb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2474,5 +2474,6 @@
24742474
"includeHiddenItemsDesc": "Include libraries hidden from the dashboard",
24752475
"settingsBlurEffectsTitle": "Enable blur effects",
24762476
"settingsBlurEffectsDesc": "Enable blur effects in the UI. Disabling this can improve performance on lower-end devices.",
2477-
"profileSettingsOpenAuthAtLaunch": "Show auth-method on app lock"
2477+
"profileSettingsOpenAuthAtLaunch": "Show auth-method on app lock",
2478+
"toggleSidebar": "Toggle sidebar"
24782479
}

0 commit comments

Comments
 (0)