summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 09:29:46 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 09:29:46 +0000
commit43b857ba815ecf82cd9ac8b90d49937fa4a8a71a (patch)
tree9bf6d9490ce23a686cb9d7e69ae4c3360e4bbfa6
parentReleasing progress-linux version 2:20.4+dfsg-1~progress7.99u1. (diff)
downloadkodi-43b857ba815ecf82cd9ac8b90d49937fa4a8a71a.tar.xz
kodi-43b857ba815ecf82cd9ac8b90d49937fa4a8a71a.zip
Merging upstream version 2:20.5+dfsg.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
-rw-r--r--media/splash.jpgbin282930 -> 282911 bytes
-rw-r--r--repo-resources-embedded/resource.language.af_za/addon.xml2
-rw-r--r--repo-resources-embedded/resource.language.af_za/resources/strings.po460
-rw-r--r--repo-resources-embedded/resource.language.bs_ba/addon.xml2
-rw-r--r--repo-resources-embedded/resource.language.bs_ba/resources/strings.po72
-rw-r--r--repo-resources-embedded/resource.language.de_de/addon.xml2
-rw-r--r--repo-resources-embedded/resource.language.de_de/resources/strings.po6
-rw-r--r--repo-resources-embedded/resource.language.es_mx/addon.xml2
-rw-r--r--repo-resources-embedded/resource.language.es_mx/resources/strings.po34
-rw-r--r--repo-resources-embedded/resource.language.hr_hr/addon.xml2
-rw-r--r--repo-resources-embedded/resource.language.hr_hr/resources/strings.po14
-rw-r--r--repo-resources-embedded/resource.language.nl_nl/addon.xml2
-rw-r--r--repo-resources-embedded/resource.language.nl_nl/resources/strings.po48
-rw-r--r--repo-resources-embedded/resource.language.sr_rs@latin/addon.xml2
-rw-r--r--repo-resources-embedded/resource.language.sr_rs@latin/resources/strings.po24
-rw-r--r--repo-resources-embedded/resource.language.sv_se/addon.xml2
-rw-r--r--repo-resources-embedded/resource.language.sv_se/resources/strings.po18
-rw-r--r--repo-resources-embedded/resource.language.uk_ua/addon.xml2
-rw-r--r--repo-resources-embedded/resource.language.uk_ua/resources/strings.po8
-rw-r--r--repo-resources-embedded/resource.language.vi_vn/addon.xml2
-rw-r--r--repo-resources-embedded/resource.language.vi_vn/resources/strings.po6
-rw-r--r--tools/Linux/kodi.metainfo.xml.in5
-rw-r--r--version.txt6
-rw-r--r--xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.cpp7
-rw-r--r--xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.h1
-rw-r--r--xbmc/games/controllers/CMakeLists.txt8
-rw-r--r--xbmc/games/controllers/DefaultController.cpp34
-rw-r--r--xbmc/games/controllers/DefaultController.h50
-rw-r--r--xbmc/games/controllers/windows/GUIConfigurationWizard.cpp4
-rw-r--r--xbmc/input/joysticks/DriverPrimitive.cpp70
-rw-r--r--xbmc/input/joysticks/DriverPrimitive.h7
-rw-r--r--xbmc/input/joysticks/JoystickEasterEgg.cpp21
-rw-r--r--xbmc/input/joysticks/generic/ButtonMapping.cpp41
-rw-r--r--xbmc/music/tags/TagLibVFSStream.cpp45
-rw-r--r--xbmc/music/tags/TagLibVFSStream.h19
-rw-r--r--xbmc/music/tags/TagLoaderTagLib.cpp58
-rw-r--r--xbmc/peripherals/Peripherals.cpp2
-rw-r--r--xbmc/peripherals/addons/AddonButtonMap.cpp28
-rw-r--r--xbmc/peripherals/addons/AddonButtonMap.h5
-rw-r--r--xbmc/peripherals/addons/AddonButtonMapping.cpp2
-rw-r--r--xbmc/peripherals/addons/AddonInputHandling.cpp167
-rw-r--r--xbmc/peripherals/addons/AddonInputHandling.h24
-rw-r--r--xbmc/peripherals/bus/PeripheralBus.h17
-rw-r--r--xbmc/peripherals/devices/Peripheral.cpp67
-rw-r--r--xbmc/peripherals/devices/PeripheralJoystick.cpp3
-rw-r--r--xbmc/settings/AdvancedSettings.cpp1
-rw-r--r--xbmc/settings/AdvancedSettings.h1
-rw-r--r--xbmc/utils/EGLUtils.cpp3
48 files changed, 609 insertions, 797 deletions
diff --git a/media/splash.jpg b/media/splash.jpg
index 021b086..b3e00a6 100644
--- a/media/splash.jpg
+++ b/media/splash.jpg
Binary files differ
diff --git a/repo-resources-embedded/resource.language.af_za/addon.xml b/repo-resources-embedded/resource.language.af_za/addon.xml
index c0b2af0..5783764 100644
--- a/repo-resources-embedded/resource.language.af_za/addon.xml
+++ b/repo-resources-embedded/resource.language.af_za/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon
id="resource.language.af_za"
- version="10.0.47"
+ version="10.0.48"
name="Afrikaans"
provider-name="Team Kodi">
<requires>
diff --git a/repo-resources-embedded/resource.language.af_za/resources/strings.po b/repo-resources-embedded/resource.language.af_za/resources/strings.po
index 402ab76..9d7db14 100644
--- a/repo-resources-embedded/resource.language.af_za/resources/strings.po
+++ b/repo-resources-embedded/resource.language.af_za/resources/strings.po
@@ -4,15 +4,15 @@ msgstr ""
"Project-Id-Version: KODI Main\n"
"Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n"
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"PO-Revision-Date: 2023-01-30 23:09+0000\n"
+"PO-Revision-Date: 2024-01-23 10:13+0000\n"
"Last-Translator: Christian Gade <gade@kodi.tv>\n"
-"Language-Team: Afrikaans (South Africa) <https://kodi.weblate.cloud/projects/kodi-core/kodi-main/af_za/>\n"
+"Language-Team: Afrikaans (South Africa) <https://kodi.weblate.cloud/projects/kodi-core/kodi-main-nexus/af_za/>\n"
"Language: af_za\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.15.2\n"
+"X-Generator: Weblate 5.3\n"
msgctxt "#0"
msgid "Programs"
@@ -1186,7 +1186,7 @@ msgstr "Gebruikers koppelvlak taal"
#. Setting in international settings
msgctxt "#310"
msgid "Virtual keyboard layouts"
-msgstr ""
+msgstr "Virtuele sleutelbord uitlegte"
#. Keyboard layout name e.g. "English QWERTY"
msgctxt "#311"
@@ -1603,7 +1603,7 @@ msgstr "Humiditeit"
msgctxt "#407"
msgid "Hardware keyboard layouts"
-msgstr ""
+msgstr "Hardeware sleutelbord uitlegte"
msgctxt "#409"
msgid "Defaults"
@@ -1714,7 +1714,7 @@ msgstr "Geen optiese skyf aandrywer opgespoor"
#. Message body of a dialog that pops up when a user tries to play a video that is located on an optical disc (Blu-ray, DVD) but the current KODI device doesn't have the according drive
msgctxt "#436"
msgid "This video is stored on an optical disc (e.g. DVD, Blu-ray) and cannot be played as your device does not have an appropriate drive."
-msgstr ""
+msgstr "Hierdie video is op 'n optiese skyf (bv. DVD, Blu-ray) gestoor en kan nie gespeel word nie omdat jou toestel nie 'n toepaslike dryf het nie."
msgctxt "#437"
msgid "Removable disk"
@@ -2649,7 +2649,7 @@ msgstr "Hierdie pad is al vantevore deursoek"
msgctxt "#703"
msgid "Can't clean up library while running background tasks"
-msgstr ""
+msgstr "Kan nie biblioteek skoon maak terwyl agtergrond take verrig nie"
msgctxt "#705"
msgid "Network"
@@ -3415,7 +3415,7 @@ msgstr "SOCKS5 met afgele DNS oplossing"
msgctxt "#1186"
msgid "HTTPS"
-msgstr ""
+msgstr "HTTPS"
msgctxt "#1200"
msgid "SMB client"
@@ -3423,7 +3423,7 @@ msgstr "SMB kliënt"
msgctxt "#1201"
msgid "NFS Client"
-msgstr ""
+msgstr "NFS Kliënt"
msgctxt "#1202"
msgid "Workgroup"
@@ -3599,7 +3599,7 @@ msgstr "Volume beheer stappe"
#. Weather token
msgctxt "#1374"
msgid "Breezy"
-msgstr ""
+msgstr "Brieserig"
#. Weather token
msgctxt "#1375"
@@ -4014,11 +4014,11 @@ msgstr "Gaan die log na vir meer inligting."
# empty strings from id 2105 to 2202
msgctxt "#2203"
msgid "Use DTS Core"
-msgstr ""
+msgstr "Gebruik DTS Core"
msgctxt "#2204"
msgid "Select this option if you want to passthrough DTS-HD formats as DTS, otherwise, DTS-HD formats will be played via PCM"
-msgstr ""
+msgstr "Selekteer hierdie opsie as jy DTS-HD formate wil deurgee, anders sal DTS-HD formate via PCM gespeel word"
msgctxt "#10000"
msgid "Home"
@@ -4060,12 +4060,12 @@ msgstr "Speel volgende"
#. Header label for add-on configuration removal dialog
msgctxt "#10009"
msgid "Confirm add-on configuration removal"
-msgstr ""
+msgstr "Bevestig verwydering van byvoegsel konfigurasie"
#. Header label for add-on configuration removal selection dialog
msgctxt "#10010"
msgid "Select add-on configuration to remove"
-msgstr ""
+msgstr "Selekteer byvoegsel konfigurasie om te verwyder"
msgctxt "#10011"
msgid "Settings - Videos - Screen calibration"
@@ -4074,22 +4074,22 @@ msgstr "Verstellings - Videos - Skerm kalibrasie"
#. Header label for add-on configuration selection dialog
msgctxt "#10012"
msgid "Add-on configurations and settings"
-msgstr ""
+msgstr "Byvoegsel konfigurasies en verstellings"
#. Item label used in add-on configuration selection dialog
msgctxt "#10013"
msgid "Edit add-on settings"
-msgstr ""
+msgstr "Redigeer byvoegsel verstellings"
#. Item label used in add-on configuration selection dialog
msgctxt "#10014"
msgid "Add add-on configuration"
-msgstr ""
+msgstr "Voeg byvoegsel konfigurasie by"
#. Item label used in add-on configuration selection dialog
msgctxt "#10015"
msgid "Remove add-on configuration"
-msgstr ""
+msgstr "Verwyder byvoegsel konfigurasie"
msgctxt "#10016"
msgid "Settings - System"
@@ -4098,7 +4098,7 @@ msgstr "Verstellings - Stelsel"
#. Settings group label
msgctxt "#10017"
msgid "Add-on configuration"
-msgstr ""
+msgstr "Byvoegsel konfigurasie"
msgctxt "#10018"
msgid "Settings - Service"
@@ -4107,12 +4107,12 @@ msgstr "Verstellings - Diens"
#. Item label for add-on configuration removal dialog
msgctxt "#10019"
msgid "Do you want to remove the add-on configuration \"{0:s}\"?"
-msgstr ""
+msgstr "Wil jy die byvoegsel konfigurasie \"{0:s}\" verwyder?"
#. Item label used in add-on setup selection dialog
msgctxt "#10020"
msgid "Edit \"{0:s}\" [{1:s}]"
-msgstr ""
+msgstr "Redigeer \"{0:s}\" [{1:s}]"
msgctxt "#10021"
msgid "Settings - TV"
@@ -4699,12 +4699,12 @@ msgstr "Hervat vanaf {0:s}"
#. Label of the show password button in the keyboard dialog
msgctxt "#12308"
msgid "Show password"
-msgstr ""
+msgstr "Wys wagwoord"
#. Label of the hide password button in the keyboard dialog
msgctxt "#12309"
msgid "Hide password"
-msgstr ""
+msgstr "Versteek wagwoord"
msgctxt "#12310"
msgid "0"
@@ -5421,7 +5421,7 @@ msgstr "Nie gekonnekteer. Gaan netwerk verstellings na."
#. Label of the button used to disconnect a game controller from the emulated game port
msgctxt "#13298"
msgid "Disconnected"
-msgstr ""
+msgstr "Ontkoppel"
msgctxt "#13299"
msgid "Target temperature"
@@ -5654,7 +5654,7 @@ msgstr "Stel stem in staat"
#. label for resume context menu item for video folders (like a TV show or a single season of a TV show)
msgctxt "#13362"
msgid "Continue watching"
-msgstr ""
+msgstr "Kyk voortsit"
msgctxt "#13375"
msgid "Enable device"
@@ -6165,7 +6165,7 @@ msgstr "Apple Remote"
msgctxt "#13601"
msgid "Apple TV"
-msgstr ""
+msgstr "Apple TV"
msgctxt "#13602"
msgid "Allow start of Kodi using the remote"
@@ -7064,37 +7064,37 @@ msgstr "Speel in partytjie modus"
#. Label for actions associated with favourites
msgctxt "#15217"
msgid "Action"
-msgstr ""
+msgstr "Aksie"
#. Label for an action associated with a favourite.
msgctxt "#15218"
msgid "Play media"
-msgstr ""
+msgstr "Speel media"
#. Label for an action associated with a favourite
msgctxt "#15219"
msgid "Show picture"
-msgstr ""
+msgstr "Wys prent"
#. Label for an action associated with a favourite. Placeholder will be filled with the name of the window the favourite's content will be displayed in.
msgctxt "#15220"
msgid "Show content in \"{}\""
-msgstr ""
+msgstr "Wys inhoud in \"{}\""
#. Label for an action associated with a favourite
msgctxt "#15221"
msgid "Execute script"
-msgstr ""
+msgstr "Voer skrip uit"
#. Label for an action associated with a favourite
msgctxt "#15222"
msgid "Execute Android app"
-msgstr ""
+msgstr "Voer Android toepassing uit"
#. Label for an action associated with a favourite
msgctxt "#15223"
msgid "Execute add-on"
-msgstr ""
+msgstr "Voer byvoegsel uit"
#. Label for an action associated with a favourite
msgctxt "#15224"
@@ -7133,12 +7133,12 @@ msgstr "Pad:"
#. Game settings category name
msgctxt "#15312"
msgid "Achievements"
-msgstr ""
+msgstr "Prestasies"
#. Group label for Achievements category in game settings
msgctxt "#15313"
msgid "Login to RetroAchievements"
-msgstr ""
+msgstr "Teken in by RetroAchievements"
#. Label for button which creates a new savestate in the in-game savestate manager
msgctxt "#15314"
@@ -7148,12 +7148,12 @@ msgstr "Stoor"
#. Caption for "Save" button in the in-game savestate manager
msgctxt "#15315"
msgid "Save progress to a new save file"
-msgstr ""
+msgstr "Stoor vordering na 'n nuwe bewaar lêer"
#. Label for savestates created automatically by "Autosave" function
msgctxt "#15316"
msgid "Autosave"
-msgstr ""
+msgstr "Outostoor"
msgctxt "#16000"
msgid "General"
@@ -7751,12 +7751,12 @@ msgstr "Tydhouers"
#. Label for button to refresh the channel logos
msgctxt "#19041"
msgid "Refresh channel logos"
-msgstr ""
+msgstr "Verfris kanaal logo's"
#. label for PVR backend number of channel groups in system information's PVR section
msgctxt "#19042"
msgid "Channel Groups"
-msgstr ""
+msgstr "Kanaal Groepe"
#. pvr settings "recording" category label
msgctxt "#19043"
@@ -7899,7 +7899,7 @@ msgstr "Opdateer interval"
#. Dialog warning text for invalid timer setting
msgctxt "#19072"
msgid "In order to add/update a timer the end date and time must be greater than the start date and time."
-msgstr ""
+msgstr "Om 'n tydhouer by te voeg /opdateer moet die eind datum en tyd groter wees as die begin datum en tyd."
#. pvr settings "delay channel switch" setting label
msgctxt "#19073"
@@ -8455,17 +8455,17 @@ msgstr "Maak data skoon"
#. message box text for pvr data reset confirmation
msgctxt "#19186"
msgid "All selected data will be cleared. Some information cannot be restored from the clients afterwards. Proceed anyway?"
-msgstr ""
+msgstr "Alle geselekteerde data sal skoon gemaak word. Sommige inligting kan nie na die tyd herstel word vanaf die kliënte nie. Gaan elk geval voort?"
#. progress dialog text shown while purging pvr data
msgctxt "#19187"
msgid "Clearing data."
-msgstr ""
+msgstr "Maak data skoon."
#. message box text for epg data reset confirmation
msgctxt "#19188"
msgid "All guide data will be cleared. Are you sure?"
-msgstr ""
+msgstr "Alle gids data sal skoon gemaak word. Is jy seker?"
#. message box text stating that the PVR backend forbids to record a given epg event.
msgctxt "#19189"
@@ -8713,7 +8713,7 @@ msgstr "Laai opnames vanaf kliënte"
#. label for PVR client creation progress control
msgctxt "#19239"
msgid "Creating PVR clients"
-msgstr ""
+msgstr "Skep PVR kliënte"
#. label for pvr settings client priorities control and client priorities dialog heading.
msgctxt "#19240"
@@ -8877,7 +8877,7 @@ msgstr "Geen PVR byvoegsels kon gevind word nie"
#. label for 'pvr configuration incomplete' information dialog text
msgctxt "#19272"
msgid "To use PVR you need to install, enable and configure a PVR add-on. Please visit http://kodi.wiki/view/PVR to learn more."
-msgstr ""
+msgstr "Om PVR te gebruik het jy nodig om 'n PVR byvoegsel te installeer, in staat te stel en te konfigureer. Besoek asseblief http://kodi.wiki/view/PVR om meer te leer."
#. Settings -> Interface -> Other -> Startup window value
msgctxt "#19273"
@@ -9187,72 +9187,72 @@ msgstr "Het oorgeskakel na kanaal vir outo-toegemaakte PVR herinnering vir kanaa
#. label for PVR backend number of channel providers in system information's PVR section
msgctxt "#19334"
msgid "Providers"
-msgstr ""
+msgstr "Verskaffers"
#. label for special PVR search window list item
msgctxt "#19335"
msgid "New search..."
-msgstr ""
+msgstr "Nuwe soektog..."
#. label for special PVR search window list item
msgctxt "#19336"
msgid "Edit search..."
-msgstr ""
+msgstr "Redigeer soektog..."
#. label for special PVR search window list item
msgctxt "#19337"
msgid "Saved searches"
-msgstr ""
+msgstr "Gestoorde soektogte"
#. delete saved search confirmation message box text
msgctxt "#19338"
msgid "Delete this saved search?"
-msgstr ""
+msgstr "Vee hierdie gestoorde soektog uit?"
#. PVR guide search dialog label
msgctxt "#19339"
msgid "Ignore finished broadcasts"
-msgstr ""
+msgstr "Ignoreer klaargemaakte uitsendings"
#. PVR guide search dialog label
msgctxt "#19340"
msgid "Ignore future broadcasts"
-msgstr ""
+msgstr "Ignoreer toekomstige uitsendings"
#. label to ask user to save an EPG search
msgctxt "#19341"
msgid "Save the current search?"
-msgstr ""
+msgstr "Stoor die huidige soektog?"
#. "search not saved" label, used in PVR search window breadcrumb
msgctxt "#19342"
msgid "[not saved]"
-msgstr ""
+msgstr "[nie gestoor nie]"
#. "search saved" label, used in PVR search window breadcrumb
msgctxt "#19343"
msgid "[saved]"
-msgstr ""
+msgstr "[gestoor]"
#. text for yes no dialog shown when user selects a future programme in the guide window and default select action is 'smart select'
msgctxt "#19344"
msgid "Do you want to set a reminder for the selected programme or to switch to the current programme?"
-msgstr ""
+msgstr "Wil jy 'n herinnering stel vir die geselekteerde program of na die huidige program oorskakel?"
#. settings label to open add-ons manager window with available PVR client add-ons
msgctxt "#19345"
msgid "PVR client add-ons"
-msgstr ""
+msgstr "PVR kliënt byvoegsels"
#. help text for setting to open add-ons manager window with available PVR client add-ons
msgctxt "#19346"
msgid "Display and manage available PVR client add-ons."
-msgstr ""
+msgstr "Vertoon en bestuur beskikbare PVR kliënt byvoegsels."
#. info message box text stating that none of the available pvr clients does provide client-specific settings
msgctxt "#19347"
msgid "None of the active PVR clients provide client-specific settings."
-msgstr ""
+msgstr "Geen van die aktiewe PVR kliënte verskaf kliënt-spesifieke verstellings nie."
#. label for 'by provider' sort method
msgctxt "#19348"
@@ -9262,7 +9262,7 @@ msgstr "Verskaffer"
#. label for 'by user preference' sort method
msgctxt "#19349"
msgid "User preference"
-msgstr ""
+msgstr "Gebruiker voorkeur"
#. label for epg genre value
msgctxt "#19499"
@@ -9472,7 +9472,7 @@ msgstr "Folk / Tradisionele musiek"
#. label for "music/ballet/dance" epg subgenre value
msgctxt "#19584"
msgid "Jazz"
-msgstr ""
+msgstr "Jazz"
#. label for "music/ballet/dance" epg subgenre value
msgctxt "#19585"
@@ -10685,12 +10685,12 @@ msgstr "Kalibrasie herstel"
#. Window screen calibration: ask to reset calibration settings
msgctxt "#20326"
msgid "Do you want reset the calibration to their defaults for \"{0:s}\" resolution?"
-msgstr ""
+msgstr "Wil jy die kalibrasie herstel na die verstek waardes vir \"{0:s}\" resolusie?"
#. Window screen calibration: the current calibration value
msgctxt "#20327"
msgid "Current value: {}"
-msgstr ""
+msgstr "Huidige waarde: {}"
msgctxt "#20328"
msgid "Browse for destination"
@@ -11286,12 +11286,12 @@ msgstr "Vertoon alle kunstenaars vir musiek videos"
msgctxt "#20473"
msgid "Premiered"
-msgstr ""
+msgstr "Gepremière"
#. Used in smart playlists to select items based on the HDR type (HDR10, HLG, Dolbyvision)
msgctxt "#20474"
msgid "HDR type"
-msgstr ""
+msgstr "HDR tipe"
msgctxt "#21330"
msgid "Show hidden files and directories"
@@ -11352,7 +11352,7 @@ msgstr "Gebruik video merkers"
msgctxt "#21344"
msgid "Enable to use embedded tags in mp4 or mkv files for library metadata. Will prevent scrapers from operating correctly."
-msgstr ""
+msgstr "Stel in staat om ingebedde etikette in mp4 of mkv lêers vir biblioteek metadata te gebruik. Sal voorkom dat skrapers korrek opereer."
#. Used in AutoPlayNextItem dialogs for not categorized listItem directories
msgctxt "#21345"
@@ -11362,12 +11362,12 @@ msgstr "Ongekategoriseer"
#. Used to give heading list entry for an file extension description, e.g. to show as 'Extension: ".mp3"'
msgctxt "#21346"
msgid "Extension: \"{0:s}\""
-msgstr ""
+msgstr "Uitbreiding: \"{0:s}\""
#. Used to give heading list entry for an mimetype description, e.g. to show as 'MIME type: "audio/mpeg3"'
msgctxt "#21347"
msgid "MIME type: \"{0:s}\""
-msgstr ""
+msgstr "MIME tipe: \"{0:s}\""
msgctxt "#21358"
msgid "Enable UPnP support"
@@ -11411,7 +11411,7 @@ msgstr "Fliek & alternatiewe onderskrif gids"
msgctxt "#21368"
msgid "Override subtitles fonts"
-msgstr ""
+msgstr "Oorskryf onderskrif skrifte"
msgctxt "#21369"
msgid "Enable mouse and touch screen support"
@@ -11778,7 +11778,7 @@ msgstr "gemeng"
#. Subtitle position on screen setting list
msgctxt "#21460"
msgid "Position on screen"
-msgstr ""
+msgstr "Posisie op skerm"
#. Item list value of setting with label #21460 "Subtitle position on screen"
msgctxt "#21461"
@@ -11793,7 +11793,7 @@ msgstr "Onderkant van video"
#. Item list value of setting with label #21460 "Subtitle position on screen"
msgctxt "#21463"
msgid "Bottom of screen"
-msgstr ""
+msgstr "Onderkant van skerm"
#. Item list value of setting with label #21460 "Subtitle position on screen"
msgctxt "#21464"
@@ -11803,7 +11803,7 @@ msgstr "Bokant van video"
#. Item list value of setting with label #21460 "Subtitle position on screen"
msgctxt "#21465"
msgid "Top of screen"
-msgstr ""
+msgstr "Bokant van skerm"
#. Description of setting with label #21416 "Select first unwatched TV show season/episode"
msgctxt "#21466"
@@ -11892,12 +11892,12 @@ msgstr "Besigtig"
#. Button label to show list of supported types, e.g. supported file extensions
msgctxt "#21484"
msgid "Show support"
-msgstr ""
+msgstr "Wys ondersteunde"
#. Dialog header label to show list of supported types, e.g. supported file extensions
msgctxt "#21485"
msgid "Supported file extensions and media types"
-msgstr ""
+msgstr "Ondersteunde lêer uitbreidings en media tipes"
msgctxt "#21602"
msgid "(External)"
@@ -13059,11 +13059,11 @@ msgstr "Stel in staat om die Siri afstandbeheer die normale Apple tvOS gedrag te
msgctxt "#24154"
msgid "Consider Siri remote in idle state after N seconds"
-msgstr ""
+msgstr "Beskou Siri afstandbeheer in ledige toestand na N sekondes"
msgctxt "#24155"
msgid "Time to wait before considering the Siri remote in idle state"
-msgstr ""
+msgstr "Tyd om te wag voor die Siri afstandbeheer in ledige toestand beskou word"
msgctxt "#24156"
msgid "30 Seconds"
@@ -13083,45 +13083,45 @@ msgstr "120 Sekondes"
msgctxt "#24160"
msgid "Ignore first tap/swipe/pan of the Siri remote after a period of inactivity"
-msgstr ""
+msgstr "Ignoreer eerste tik/vee/rol van die Siri afstandbeheer na 'n periode van onaktiwiteit"
msgctxt "#24161"
msgid "This prevents you from accidental tap/swipe/pan action when you grab the remote in your hand"
-msgstr ""
+msgstr "Hierdie verhoed 'n per ongeluk tik/vee/rol aksie wanneer jy die afstandbeheer in jou hand gryp"
msgctxt "#24162"
msgid "Use Kodi virtual keyboard"
-msgstr ""
+msgstr "Gebruik Kodi virtuele sleutelbord"
msgctxt "#24163"
msgid "The higher the value, the more sensitive the pan gesture"
-msgstr ""
+msgstr "Hoe hoër die waarde, hoe sensitiewer die pan gebaar"
# empty string with id 24163
#. Header text for yes/no dialog about enable of broken add-on
msgctxt "#24164"
msgid "Add-on \"{0:s}\" broken"
-msgstr ""
+msgstr "Byvoegsel \"{0:s}\" is gebreek"
#. Yes/no dialog text with add-on broken string value and to ask for use
msgctxt "#24165"
msgid "Add-on marked as broken with following note:[CR][B][I]{0:s}[/I][/B][CR][CR]Do you want to enable?"
-msgstr ""
+msgstr "Byvoegsel gemerk as gebreek met volgende nota:[CR][B][I]{0:s}[/I][/B][CR][CR]Wil jy in staat stel?"
#. Header text for yes/no dialog about enable of deprecated add-on
msgctxt "#24166"
msgid "Add-on \"{0:s}\" deprecated"
-msgstr ""
+msgstr "Byvoegsel \"{0:s}\" verouderd"
#. Yes/no dialog text with add-on deprecated string value and to ask for use
msgctxt "#24167"
msgid "Add-on marked as deprecated with following note:[CR][B][I]{0:s}[/I][/B][CR][CR]Do you want to enable?"
-msgstr ""
+msgstr "Byvoegsel gemerk as verouderd met volgende nota:[CR][B][I]{0:s}[/I][/B][CR][CR]Wil jy in staat stel?"
#. Notification event to show addon marked as deprecated.
msgctxt "#24168"
msgid "Deprecated: {0:s}"
-msgstr ""
+msgstr "Afgekeur: {0:s}"
#. Lifecycle state name, for normal addons (no special). Used also on skin to compare and identify related state.
msgctxt "#24169"
@@ -13131,7 +13131,7 @@ msgstr "Normaal"
#. Lifecycle state name, for deprecated addons. Used also on skin to compare and identify related state.
msgctxt "#24170"
msgid "Deprecated"
-msgstr ""
+msgstr "Afgekeur"
#. Lifecycle state name, for broken and not usable addons. Used also on skin to compare and identify related state.
msgctxt "#24171"
@@ -13144,25 +13144,25 @@ msgstr "Gebreek"
#. {3:s} reserved for an empty string or the " (optional)" optional string. see #24184
msgctxt "#24180"
msgid "Minimum: {0:s}{3:s}"
-msgstr ""
+msgstr "Minimum: {0:s}{3:s}"
#. The minimum version, plus the version going to be installed
#. {3:s} reserved for an empty string or the " (optional)" optional string. see #24184
msgctxt "#24181"
msgid "Minimum: {0:s} => Install: {2:s}{3:s}"
-msgstr ""
+msgstr "Minimum: {0:s} => Installeer: {2:s}{3:s}"
#. The minimum version, plus the currently installed version
#. {3:s} reserved for an empty string or the " (optional)" optional string. see #24184
msgctxt "#24182"
msgid "Minimum: {0:s} / Installed: {1:s}{3:s}"
-msgstr ""
+msgstr "Minimum: {0:s} / Geïnstalleer: {1:s}{3:s}"
#. The minimum version, the currently installed, plus the updated version we're going to install
#. {3:s} reserved for an empty string or the " (optional)" optional string. see #24184
msgctxt "#24183"
msgid "Minimum: {0:s} / Installed: {1:s} => Update to: {2:s}{3:s}"
-msgstr ""
+msgstr "Minimum: {0:s} / Geïnstalleer: {1:s} => Opdateer na: {2:s}{3:s}"
#. used in #24180 - #24183 as {3:s}
msgctxt "#24184"
@@ -13173,7 +13173,7 @@ msgstr " (opsioneel)"
#. {3:s} reserved for an empty string or the " (optional)" optional string. see #24184
msgctxt "#24185"
msgid "Minimum: {0:s} / Not available{3:s}"
-msgstr ""
+msgstr "Minimum: {0:s} / Nie beskikbaar{3:s}"
#. Used as error message in add-on browser when add-on repository data could not be downloaded
msgctxt "#24991"
@@ -14031,7 +14031,7 @@ msgstr "Afgeleë kommunikasie bediener"
msgctxt "#33104"
msgid "You have previously enabled the web interface without setting up a password. The web server has been disabled until you either explicitly allow this or set up authentication. Please review your settings."
-msgstr ""
+msgstr "Jy het voorheen die web koppelvlak in staat gestel sonder om 'n wagwoord op te stel. Die web bediener is nie in staat gestel totdat jy of dit eksplisiet toelaat of waarmerking opstel. Gaan asb. jou verstellings na."
msgctxt "#33200"
msgid "Detected new connection"
@@ -14071,15 +14071,15 @@ msgstr "Windows media oudio 2 (FFmpeg wmav2)"
msgctxt "#34008"
msgid "When you need to enter some text, Kodi virtual keyboard will show up instead of the built-in tvOS keyboard"
-msgstr ""
+msgstr "Wanneer jy nodig het om teks in te voer, sal Kodi virtuele sleutelbord verskyn in plaas van die ingeboude tvOS sleutelbord"
msgctxt "#34009"
msgid "Siri remote pan gesture horizontal sensitivity"
-msgstr ""
+msgstr "Siri afstandbeheer rol gebaar horisontale sensitiwiteit"
msgctxt "#34010"
msgid "Siri remote pan gesture vertical sensitivity"
-msgstr ""
+msgstr "Siri afstandbeheer rol gebaar vertikale sensitiwiteit"
msgctxt "#34100"
msgid "Number of channels"
@@ -14216,7 +14216,7 @@ msgstr "Kan nie 'n vorige item om te speel kry"
#. Manual HDR toggle (ACTION_HDR_TOGGLE) - HDR On/Off toast caption
msgctxt "#34220"
msgid "HDR status"
-msgstr ""
+msgstr "HDR status"
#. Manual HDR toggle (ACTION_HDR_TOGGLE) - HDR Off toast message
msgctxt "#34221"
@@ -14231,7 +14231,7 @@ msgstr "Aan"
# empty string with id 34223
msgctxt "#34224"
msgid "Tone mapping method"
-msgstr ""
+msgstr "Skakering karteer metode"
msgctxt "#34300"
msgid "Failed to start Zeroconf"
@@ -14572,12 +14572,12 @@ msgstr "Beweeg {0:s} links ({1:d})"
msgctxt "#35100"
msgid "Enable controller support"
-msgstr ""
+msgstr "Stel beheerder ondersteuning in staat"
# empty string with id 35101
msgctxt "#35102"
msgid "Disable controllers when this device is present"
-msgstr ""
+msgstr "Deaktiveer beheerders wanneer hierdie toestel teenwoordig is"
#. Label for mouse buttons. Used in the controller mapping dialog.
msgctxt "#35103"
@@ -14617,27 +14617,27 @@ msgstr "Nommerblok"
#. Label for the button that opens the port setup dialog
msgctxt "#35110"
msgid "Ports"
-msgstr ""
+msgstr "Poorte"
#. Title of the window for setting up controller ports used by the game
msgctxt "#35111"
msgid "Port Setup"
-msgstr ""
+msgstr "Poort Opstelling"
#. Label of a port with a numeric identifier. {0:s} is the port ID, e.g. "1" for "Port 1"
msgctxt "#35112"
msgid "Port {0:s}"
-msgstr ""
+msgstr "Poort {0:s}"
#. Title of the dialog for selecting a game controller
msgctxt "#35113"
msgid "Select a Controller"
-msgstr ""
+msgstr "Kies 'n Beheerder"
#. Title of the error dialog when changing a controller port fails
msgctxt "#35114"
msgid "Failed to change controller"
-msgstr ""
+msgstr "Gefaal om beheerder te verander"
#. Name of keyboard category in the settings category window
msgctxt "#35150"
@@ -14761,7 +14761,7 @@ msgstr "Speletjiespel"
# empty string with id 35202
msgctxt "#35203"
msgid "Enable rewind (if supported)"
-msgstr ""
+msgstr "Stel terugdraai in staat (indien ondersteun)"
msgctxt "#35204"
msgid "Enable real-time rewinding during game play, if supported. Press rewind or manually seek backwards using the seek bar."
@@ -14928,7 +14928,7 @@ msgstr "In hierdie vrystelling kan slegs beheerders gebruik word om speletjies t
#. Button to open the savestate manager from the game OSD
msgctxt "#35249"
msgid "Save / Load"
-msgstr ""
+msgstr "Stoor / Laai"
msgctxt "#35250"
msgid "Add games..."
@@ -14944,7 +14944,7 @@ msgstr "Redigeer speletjie bron"
msgctxt "#35253"
msgid "Enable autosave (if supported)"
-msgstr ""
+msgstr "Stel outo stoor in staat (indien ondersteun)"
msgctxt "#35254"
msgid "Save the game automatically during game play, if supported. Resume playing where you left off."
@@ -14953,7 +14953,7 @@ msgstr "Stoor die speletjie outomaties gedurende spel, indien ondersteun. Hervat
#. Label for showing which emulator the game was saved with
msgctxt "#35255"
msgid "Saved with:"
-msgstr ""
+msgstr "Gestoor met:"
#. Error message when a game client fails to install when a game is being launched
msgctxt "#35256"
@@ -14978,7 +14978,7 @@ msgstr "Gestoor"
#. Title of the dialog to select a savestate for the current game
msgctxt "#35260"
msgid "Select savestate"
-msgstr ""
+msgstr "Selekteer stoortoestand"
#. Button for creating a new save state from the select savestate dialog
msgctxt "#35261"
@@ -14988,49 +14988,49 @@ msgstr "Nuut"
#. Help text for RetroAchievements username input setting
msgctxt "#35262"
msgid "Enter your RetroAchievements account username"
-msgstr ""
+msgstr "Tik jou RetroAchievements rekening gebruikersnaam in"
#. Help text for RetroAchievements password input setting
msgctxt "#35263"
msgid "Enter your RetroAchievements account password"
-msgstr ""
+msgstr "Tik jou RetroAchievements rekening wagwoord in"
#. Label for notification events regarding RetroAchievements login
msgctxt "#35264"
msgid "RetroAchievements"
-msgstr ""
+msgstr "RetroAchievements"
#. Description for notification event regarding unsuccessful RetroAchievements login
msgctxt "#35265"
msgid "Incorrect User/Password!"
-msgstr ""
+msgstr "Verkeerde Gebruiker/Wagwoord"
#. Description for notification event regarding unsuccessful RetroAchievements login
msgctxt "#35266"
msgid "Failed to contact server"
-msgstr ""
+msgstr "Gefaal om bediener te kontak"
#. Description for notification event regarding unsuccessful RetroAchievements login
msgctxt "#35267"
msgid "Invalid response from server"
-msgstr ""
+msgstr "Ongeldige antwoord vanaf bediener"
#. Setting to show if the user is logged in to RetroAchievements
#. Settings -> Games -> Achievements -> Logged in
msgctxt "#35268"
msgid "Logged in"
-msgstr ""
+msgstr "Ingeteken"
#. Help text for the setting that shows if the user is logged in to RetroAchievements
#. Settings -> Games -> Achievements -> Logged in
msgctxt "#35269"
msgid "Toggle this setting to log in or out of RetroAchievements."
-msgstr ""
+msgstr "Wissel hierdie verstelling om in of uit RetroAchievements te teken."
#. Description for notification event regarding unsuccessful RetroAchievements login
msgctxt "#35270"
msgid "Your account is not verified. Please check your email to complete your sign up."
-msgstr ""
+msgstr "Jou rekening is nie geverifieer nie. Gaan asseblief jou epos na om jou inteken te voltooi."
#. connection state "host unreachable"
msgctxt "#35505"
@@ -15112,7 +15112,7 @@ msgstr "Kon nie die CEC passtuk inisialiseer nie. Gaan asseblief jou verstelling
#. CEC adapter setting to set the type of device that libCEC reports to the TV (Recording, Playback or Tuner Device)
msgctxt "#36013"
msgid "CEC client device mode"
-msgstr ""
+msgstr "CEC kliënt toestel modus"
msgctxt "#36015"
msgid "HDMI port number"
@@ -15265,29 +15265,29 @@ msgstr "Met begin"
#. Item list value of setting with label #36013 "CEC client device mode"
msgctxt "#36051"
msgid "Recording Device"
-msgstr ""
+msgstr "Opneem Toestel"
#. Item list value of setting with label #36013 "CEC client device mode"
msgctxt "#36052"
msgid "Playback Device"
-msgstr ""
+msgstr "Terugspeel Toestel"
#. Item list value of setting with label #36013 "CEC client device mode"
msgctxt "#36053"
msgid "Tuner Device"
-msgstr ""
+msgstr "Instemmer Toestel"
# empty strings from id 36054 to 36096
#. Label of setting "System / Display / GUI peak luminance in HDR PQ mode"
msgctxt "#36097"
msgid "GUI peak luminance in HDR PQ mode"
-msgstr ""
+msgstr "GUI piek helderheid in HDR PQ modus"
# empty strings from id 36051 to 36097
#. Label of setting "System / Display / Use 10 bit for SDR"
msgctxt "#36098"
msgid "Use 10 bit for SDR"
-msgstr ""
+msgstr "Gebruik 10 bis vir SDR"
msgctxt "#36099"
msgid "Dithering"
@@ -15652,7 +15652,7 @@ msgstr "Kies die zoem vlak wat 4:3 videos op wye skerms vertoon word."
#. Description of setting with label #13430 "Allow hardware acceleration - PRIME"
msgctxt "#36172"
msgid "Enable PRIME decoding of video files"
-msgstr ""
+msgstr "Stel PRIME dekodering van video lêers in staat"
#. Description of setting with label #14109 "Short date format"
msgctxt "#36173"
@@ -15716,7 +15716,7 @@ msgstr "Hierdie kategorie bevat die verstellings vir hoe onderskrifte hanteer wo
#. Description of setting with label #14089 "Font"
msgctxt "#36185"
msgid "Set the font type to be used for subtitles."
-msgstr ""
+msgstr "Stel die skrif tipe om vir onderskrifte te gebruik."
#. Description of setting with label #289 "Size"
msgctxt "#36186"
@@ -15741,7 +15741,7 @@ msgstr "Stel die skrif karakter stel om vir onderskrifte te gebruilk."
#. Description of setting with label #21368 "Override subtitles fonts"
msgctxt "#36190"
msgid "Override subtitles fonts in subtitle formats such as ASS / SSA."
-msgstr ""
+msgstr "Oorskryf onderskrif skrifte in onderskrif formate soos ASS / SSA."
#. Description of setting with label #21366 "Custom subtitle folder"
msgctxt "#36191"
@@ -15751,7 +15751,7 @@ msgstr "Stel 'n pasgemaakte gids vir jou onderskrifte. Hierdie kan 'n lêer gede
#. Description of setting with label #21460 "Subtitle location on screen"
msgctxt "#36192"
msgid "Location of subtitles on the screen. [Bottom of video] / [Top of video] When possible the subtitles will be positioned within the video area (depends on video encoding). Please note that some forced positions in the subtitles cannot be changed."
-msgstr ""
+msgstr "Posisie van onderskrifte op die skerm. [Onderkant van video] / [Bokant van video] Wanneer moontlik sal die onderskrifte binne die video area geposisioneer word (hang van video enkodering af). Let asseblief op dat sommige geforseerde posisies in die onderskrifte nie verander kan word nie."
#. Description of settings category with label #14087 "DVDs"
msgctxt "#36193"
@@ -15807,11 +15807,11 @@ msgstr "Voer kanaal groepe van die PVR agterkant in (as ondersteun). Sal gebruik
msgctxt "#36205"
msgid "Sort the channels by channel number from the backend, but use local numbering for channels."
-msgstr ""
+msgstr "Sorteer die kanale volgens kanaal nommer vanaf die agtergrondprogram, maar gebruik lokale nommering vir kanale."
msgctxt "#36206"
msgid "Use the channel numbering from the backend."
-msgstr ""
+msgstr "Gebruik die kanaal nommering vanaf die agtergrondprogram."
msgctxt "#36207"
msgid "Open the channel manager, which allows modifying the channel order, channel name, icon, etc."
@@ -15823,7 +15823,7 @@ msgstr "Gee die agterkant instruksie om vir kanale te soek (as ondersteun)."
msgctxt "#36209"
msgid "Clear the databases for PVR data like channels, groups, reminders and guide. Please note that not all data can be restored from the backend afterwards."
-msgstr ""
+msgstr "Maak die databasisse skoon vir PVR data soos kanale, groepe, herinneringe en gids. Let asseblief op dat nie alle data na die tyd herstel kan word vanaf die agterkant nie."
msgctxt "#36210"
msgid "Open the client priorities dialog which allows modifying the priority for enabled PVR clients according to your personal preferences, for instance to order channels client by client. Higher value means higher priority."
@@ -15831,7 +15831,7 @@ msgstr "Maak die kliënt prioriteite dialoog oop, wat die verandering van die pr
msgctxt "#36211"
msgid "This category contains the settings for PVR channels and channel groups."
-msgstr ""
+msgstr "Hierdie kategorie bevat die verstellings vir PVR kanale en kanaal groepe."
msgctxt "#36212"
msgid "Display programming information when changing channels, such as the current TV show."
@@ -15897,7 +15897,7 @@ msgstr "Hierdie kategorie bevat die PVR terugspeel en kanaal skakel verstellings
msgctxt "#36227"
msgid "Switch to full screen display when starting playback of channels."
-msgstr ""
+msgstr "Skakel na volskerm vertoon wanneer terugspeel van kanale begin word."
#. Description of setting with label #745 "Background Colour"
msgctxt "#36228"
@@ -15923,7 +15923,7 @@ msgstr "Wanneer kanaal op of af druk, word die werklike kanaal verandering vertr
msgctxt "#36233"
msgid "This category contains settings for recordings."
-msgstr ""
+msgstr "Hierdie kategorie bevat verstellings vir opnames."
msgctxt "#36234"
msgid "Duration of instant recordings when pressing the record button. This value will be taken into account if \"Instant recording action\" is set to \"Record for a fixed period of time\""
@@ -16107,7 +16107,7 @@ msgstr "Kies die visualisering wat vertoon gaan word terwyl na musiek luister."
#. Description of setting with label #39125 "Enable tag reading in file view"
msgctxt "#36274"
msgid "When browsing music files in file view read the tags of those not in the music library as you go. This can make large directories slow to display, especially over a network."
-msgstr ""
+msgstr "Wanneer deur musiek lêers blaai in lêer aansig, lees die etikette van die wat nie in die musiek biblioteek is nie soos jy gaan. Hierdie kan groot gidse stadig maak om te vertoon, veral oor 'n netwerk."
#. Description of setting with label #13307 "Track naming template" for musicfiles.trackformat
msgctxt "#36275"
@@ -16157,7 +16157,7 @@ msgstr "Outoloop CDs wanneer in dryf sit."
#. Description of setting with label #227 "Load audio CD information from online service"
msgctxt "#36284"
msgid "Read the information belonging to an audio CD, like song title and artist, from the Internet database gnudb.org."
-msgstr ""
+msgstr "Lees die oudio CD inligting, soos liedjie titel en kunstenaar, vanaf die Internet databasis gnudb.org."
#. Description of setting label #20000 "Saved music folder"
msgctxt "#36285"
@@ -16212,19 +16212,19 @@ msgstr "Wanneer musiek items sorteer volgens kunstenaar, gebruik sorteer naam bv
#. Description of setting with label #752 "Opacity"
msgctxt "#36295"
msgid "Set the the subtitle opacity."
-msgstr ""
+msgstr "Stel die subtitel ondeursigtigheid."
msgctxt "#36296"
msgid "This category contains settings for reminders."
-msgstr ""
+msgstr "Hierdie kategorie bevat verstellings vir herinneringe."
msgctxt "#36297"
msgid "Choose a time in seconds after which PVR reminder popups will be automatically closed."
-msgstr ""
+msgstr "Kies 'n tyd in sekondes waarna PVR herinnering opspringe outomaties toegemaak sal word."
msgctxt "#36298"
msgid "If enabled, a recording for the programme to remind will be scheduled when auto-closing the reminder popup, if supported by the PVR add-on and backend."
-msgstr ""
+msgstr "As in staat gestel, sal 'n opname vir die program om te herinner geskeduleer word wanneer die herinnering popup outo-toemaak, as ondersteun word deur die PVR byvoegsel en agterkant."
#. Description of setting with label #13436 "Use display HDR capabilities"
msgctxt "#36299"
@@ -16234,11 +16234,11 @@ msgstr ""
#. Description of setting with label #20226 "Movie set information folder"
msgctxt "#36300"
msgid "Select the folder where movie set information (images) are saved locally."
-msgstr ""
+msgstr "Kies die vouer waar fliek stel inligting (beelde) lokaal gestoor word."
msgctxt "#36301"
msgid "No 'Movie set information folder' is configured to store movie set images so they will not be exported. Do you want to proceed?"
-msgstr ""
+msgstr "Geen 'Fliek stel inligting vouer' is opgestel om fliek stel beelde te stoor nie, so hulle sal nie uitgevoer word nie. Wil jy voortgaan?"
msgctxt "#36302"
msgid "No info available yet."
@@ -16260,7 +16260,7 @@ msgstr "Hierdie kategorie bevat die verstellings vir hoe prent lêer lyste hante
msgctxt "#36306"
msgid "If not using backend channel numbers then start all groups channel numbers from 1."
-msgstr ""
+msgstr "As nie agterkant kanaal nommers gebruik nie, begin alle groep kanaal nommers vanaf 1."
#. Description of setting with label #13360 "Automatically generate thumbnails"
msgctxt "#36307"
@@ -16270,7 +16270,7 @@ msgstr "Genereer outomaties prent duimnaelsketse wanneer prent gids binne gaan."
#. Description of setting with label #20472 "Show all performers for music videos"
msgctxt "#36308"
msgid "When enabled, shows all performers in the artist list for music videos, not just the main artist"
-msgstr ""
+msgstr "Wanneer in staat gestel, vertoon al die kunstenaars in die kunstenaar lys vir musiek videos, nie net die hoof kunstenaar nie"
#. Description of setting with label #22022 "Show video files in listings"
msgctxt "#36309"
@@ -16370,7 +16370,7 @@ msgstr "Hierdie kategorie bevat die verstellings vir hoe die web bediener diens
#. Description of setting with label #263 "Allow remote control via HTTP"
msgctxt "#36328"
msgid "Enable remote users to control this application through the built-in web server. Never expose the web server port to the Internet."
-msgstr ""
+msgstr "Stel afgeleë gebruikers in staat om hierdie toepassing te beheer deur die ingeboude web bediener. Moet nooit die web bediener poort aan die internet blootstel nie."
#. Description of setting with label #730 "Port"
msgctxt "#36329"
@@ -16380,12 +16380,12 @@ msgstr "Definieer die web bediener poort."
#. Description of setting with label #1048 "Username"
msgctxt "#36330"
msgid "Define the web server username. Must be set when authentication is enabled."
-msgstr ""
+msgstr "Definieer die web bediener gebruikersnaam. Moet opgestel wees wanneer waarmerking in staat gestel is."
#. Description of setting with label #1048 "Password"
msgctxt "#36331"
msgid "Define the web server password. Must be set when authentication is enabled."
-msgstr ""
+msgstr "Definieer die web bediener wagwoord. Moet opgestel wees wanneer waarmerking in staat gestel is."
#. Description of setting with label #199 "Web interface"
msgctxt "#36332"
@@ -16400,7 +16400,7 @@ msgstr "Hierdie kategorie bevat die verstellings vir hoe die afstandbeheer diens
#. Description of setting with label #791 "Allow remote control from programs on this system"
msgctxt "#36334"
msgid "Allow programs on this device to control this application via the JSON-RPC over WebSocket, JSON-RPC over TCP, or EventServer protocol, without authentication."
-msgstr ""
+msgstr "Laat programme op hierdie toestel toe om hierdie toepassing te beheer via die JSON-RPC oor WebSocket, JSON-RPC oor TCP, of EventServer protokol sonder waarmerking."
#. Description of setting with label #792 "Port"
msgctxt "#36335"
@@ -16510,7 +16510,7 @@ msgstr "In 'n multi-skerm konfigurasie sal die skerms wat nie hierdie program ve
#. Description of settings category with label #1201 "NFS Client"
msgctxt "#36356"
msgid "This category contains the settings for how the NFS client is handled."
-msgstr ""
+msgstr "Hierdie kategorie bevat die verstellings vir hoe die NFS kliënt hanteer word."
#. Description of setting with label #214 "Video calibration..."
msgctxt "#36357"
@@ -16886,7 +16886,7 @@ msgstr "Wanneer in staat gestel, word VAAPI teken metode verkies en die CPU het
msgctxt "#36434"
msgid "If enabled, switch to the channel with the programme to remind when auto-closing the reminder popup."
-msgstr ""
+msgstr "Indien in staat gestel is, skakel na die kanaal met die program om te herinner wanneer die herinnering popup outo toemaak."
# empty string with id 36435
#. Description for setting #407: "Hardware keyboard layouts"
@@ -16894,17 +16894,17 @@ msgstr ""
#. Select the layout of a physically attached keyboard
msgctxt "#36436"
msgid "Select hardware keyboard layout."
-msgstr ""
+msgstr "Kies hardeware sleutelbord uitleg."
#. Option for setting "System -> Add-ons -> Update official add-ons from"
msgctxt "#36437"
msgid "Official repositories only (default)"
-msgstr ""
+msgstr "Slegs offisiële stoorplekke (verstek)"
#. Option for setting "System -> Add-ons -> Update official add-ons from"
msgctxt "#36438"
msgid "Any repositories"
-msgstr ""
+msgstr "Enige stoorplekke"
#. Description of setting "System -> Audio output -> Volume control steps" with label #1302
msgctxt "#36442"
@@ -16914,17 +16914,17 @@ msgstr "Stel die hoeveelheid volume beheer stappe."
#. Description of setting with label #14126 "Whitelist"
msgctxt "#36443"
msgid "Whitelisted modes give the user the control to choose which display modes are allowed or not allowed to be used"
-msgstr ""
+msgstr "Gewitlyste modusse gee die gebruiker die beheer om te kies watter vertoon modusse toegelaat word om gebruik te word of nie"
#. Description of setting with label #14127 "Whitelist"
msgctxt "#36444"
msgid "Select this option to allow using 3:2 pulldown refresh rates (playing 23.976 FPS video on a 59.94 Hz monitor or playing 24 FPS video on a 60 Hz monitor). You may want to use this option if your monitor doesn't have a 23.976 Hz or 24 Hz mode."
-msgstr ""
+msgstr "Kies hierdie opsie om gebruik van 3:2 aftrek verfris tempos (speel 23.976 FPS video op 'n 59.94 Hz monitor of speel 24 FPS video op 'n 60 Hz monitor) toe te laat. Jy mag hierdie opsie wil gebruik as jou monitor nie 'n 23.976 Hz of 24 Hz modus het nie."
#. Description of setting with label #14128 "Whitelist"
msgctxt "#36445"
msgid "Select this option to allow using double refresh rates (playing 29.97 FPS video on a 59.94 Hz monitor or playing 30 FPS video on a 60 Hz monitor). You may want to use this option if your monitor doesn't have a 29.97 Hz or 30 Hz mode."
-msgstr ""
+msgstr "Kies hierdie opsie om gebruik van dubbel verfris tempos (speel 29.97 FPS video op 'n 59.94 Hz monitor of speel 30 FPS video op 'n 60 Hz monitor) toe te laat. Jy mag hierdie opsie wil gebruik as jou monitor nie 'n 29.97 Hz of 30 Hz modus het nie."
#. Description of settings with label #14112 "Enable event logging"
msgctxt "#36460"
@@ -17108,7 +17108,7 @@ msgstr "Stel die visuele diepte van onderskrifte vir stereoskopiese 3D videos. H
#. Description of setting with label #36097 "System / Display / GUI peak luminance in HDR PQ mode"
msgctxt "#36547"
msgid "Sets the peak luminance level for GUI elements while the display is in HDR PQ mode. This affects all OSD, subtitles and graphics that are SDR in origin."
-msgstr ""
+msgstr "Stel die piek helderheid vlak vir GUI elemente terwyl die vertoon in HDR PQ modus is. Hierdie affekteer alle OSD, onderskrifte en grafika wat SDR in oorsprong is."
#. Description of setting with label #37021 "Set GUI resolution limit"
msgctxt "#36548"
@@ -17158,7 +17158,7 @@ msgstr "Skakering kartering parameter"
#. label of a setting, tone mapping method
msgctxt "#36557"
msgid "ACES Filmic"
-msgstr ""
+msgstr "ACES Filmic"
#. label of a setting, tone mapping method
msgctxt "#36558"
@@ -17249,7 +17249,7 @@ msgstr "Spesifiseer die resolusie vir die 3D opsoek tabel. Gebruik 'n laer resol
#. Description of setting "System / Display / Use 10 bit for SDR" with label #36098
msgctxt "#36578"
msgid "Improves video quality by using 10-bit video surfaces for Standard Dynamic Range (SDR) video.[CR][Auto detect] Enables 10 bit for SDR only if the connected display supports HDR.[CR][Always] Enables 10 bit for SDR even if the connected display doesn't support HDR.[CR][Never] Do not use 10 bit for SDR.[CR]HDR passthrough mode always uses 10-bit regardless of this setting."
-msgstr ""
+msgstr "Verbeter video kwaliteit deur 10-bis video oppervlakke vir Standard Dynamic Range (SDR) video te gebruik. [CR][Outo speur] Stel 10 bis vir SDR in staat net as die gekonnekteerde vertoon HDR ondersteun.[CR][Altyd] Stel 10 bis vir SDR in staat al ondersteun die gekonnekteerde vertoon nie HDR.[CR][Nooit] Gebruik nie 10 bis vir SDR.[CR]HDR deurgee modus gebruik altyd 10-bis, ongeag van hierdie verstelling."
#. primaries labels
msgctxt "#36579"
@@ -17500,52 +17500,52 @@ msgstr "Forseer swak SMBv1 sekuriteit vir versoenbaarheid met die USB deel funks
#. Text in confirm dialog when enabling setting "Services -> Control -> Allow remote control via HTTP"
msgctxt "#36632"
msgid "Anyone who has access to the web interface will be able to completely control this application and, therefore, this device, so it should never be exposed on the Internet. A password should be set below. Proceed?"
-msgstr ""
+msgstr "Enige iemand wat toegang tot die web koppelvlak het sal hierdie toepassing heeltemal kan beheer, en dus ook hierdie toestel. So dit behoort nooit aan die internet blootgestel te word nie. 'n Wagwoord behoort onder gestel te word. Gaan voort?"
#. Text in confirm dialog when enabling setting "Services -> Control -> Allow remote control from applications on other systems"
msgctxt "#36633"
msgid "These services offer neither authentication nor encryption. Anyone who can connect to them will be able to completely control this application and, therefore, this device, so they should never be exposed to the Internet. Proceed?"
-msgstr ""
+msgstr "Hierdie dienste bied nie waarmerking of enkripsie nie. Enige iemand wat toegang tot die web koppelvlak het sal hierdie toepassing heeltemal kan beheer, en dus ook hierdie toestel. So dit behoort nooit aan die internet blootgestel te word nie. Gaan voort?"
#. Text in confirm dialog when disabling setting "Services -> Control -> Require authentication"
msgctxt "#36634"
msgid "Anyone who has access to the web interface will be able to completely control this application and, therefore, this device, so it should be secured by a password. Are you sure you want to disable authentication?"
-msgstr ""
+msgstr "Enige iemand wat toegang tot die web koppelvlak het sal hierdie toepassing heeltemal kan beheer, en dus ook hierdie toestel. So dit behoort met 'n wagwoord beveilig te word. Is jy seker jy wil waarmerking deaktiveer?"
#. Text in error dialog when trying to enter an invalid web server configuration
msgctxt "#36635"
msgid "If web server authentication is enabled, a password must be entered as well."
-msgstr ""
+msgstr "Indien web bediener waarmerking in staat gestel is moet 'n wagwoord ook ingetik word."
#. Text in error dialog when trying to enter an invalid web server configuration by enabling authentication without a password set
msgctxt "#36636"
msgid "You must first enter a password before web server authentication can be enabled."
-msgstr ""
+msgstr "Jy moet eers 'n wagwoord intik voor web bediener waarmerking in staat gestel kan word."
#. Menuitem at "Settings -> System -> Add-ons"
msgctxt "#36638"
msgid "Remove all orphaned add-ons"
-msgstr ""
+msgstr "Verwyder alle wees byvoegsels"
#. Description of setting with label #36638 "Remove all orphaned dependencies"
msgctxt "#36639"
msgid "Remove all modules and support libraries that have been automatically installed and are in an orphaned state."
-msgstr ""
+msgstr "Verwyder alle modules en ondersteunings biblioteke wat outomaties installeer is en in 'n wees toestand is."
#. Dialog caption
msgctxt "#36640"
msgid "Orphaned add-ons"
-msgstr ""
+msgstr "Wees byvoegsels"
#. Dialog text if orphaned add-ons were found and removed
msgctxt "#36641"
msgid "The following orphaned add-ons were removed from your system: {0:s}."
-msgstr ""
+msgstr "Die volgende wees byvoegsels is verwyder vanaf jou stelsel: {0:s}."
#. Dialog text if no more orphaned add-ons left on the system
msgctxt "#36642"
msgid "No orphaned add-ons to remove."
-msgstr ""
+msgstr "Geen wees byvoegsels om te verwyder nie."
# empty strings from id 36643 to 36898
#. Description of setting with label #729 "Enable SSL"
@@ -17715,7 +17715,7 @@ msgstr "Toeganklikheid"
#. Description of category #287 Subtitles
msgctxt "#37033"
msgid "This category contains the settings for subtitles"
-msgstr ""
+msgstr "Hierdie kategorie bevat die verstellings vir onderskrifte"
#. Setting #37034 Accessibility
msgctxt "#37034"
@@ -17783,32 +17783,32 @@ msgstr "1080"
msgctxt "#37047"
msgid "WS-Discovery"
-msgstr ""
+msgstr "WS-Discovery"
#. Setting #37048 Enable WS-Discovery Service"
msgctxt "#37048"
msgid "Enable WS-Discovery Service"
-msgstr ""
+msgstr "Stel WS-Discovery Diens in staat"
#. Description of setting #37048 Enable WS-Discovery Service"
msgctxt "#37049"
msgid "Enable service to search for SMB services using the WS-Discovery protocol"
-msgstr ""
+msgstr "Stel diens in staat om vir SMB dienste te soek deur gebruik van die WS-Discovery protokol"
#. Label for component level debug logging setting
msgctxt "#37050"
msgid "Verbose logging for the [B]WS-Discovery[/B] component"
-msgstr ""
+msgstr "Breedvoerige loghouding vir die [B]WS-Discovery[/B] komponent"
#. Setting #37051 NFS Protocol Version"
msgctxt "#37051"
msgid "NFS Protocol Version"
-msgstr ""
+msgstr "NFS Protokol Weergawe"
#. Description of setting #37051 NFS Protocol Version"
msgctxt "#37052"
msgid "NFS protocol version to use when establishing NFS connections"
-msgstr ""
+msgstr "NFS protokol weergawe om te gebruik wanneer NFS konneksies gevestig word"
#. Setting #38011 "Show All Items entry"
msgctxt "#38011"
@@ -18023,7 +18023,7 @@ msgstr "Wil jy inligting vir hierdie item nou verfris?"
msgctxt "#38074"
msgid "Boxsets"
-msgstr ""
+msgstr "Boxsets"
msgctxt "#38075"
msgid "* All discs"
@@ -18058,12 +18058,12 @@ msgstr "Uitgee status"
#. Displayed in a toast notification when music items are added to a playlist
msgctxt "#38082"
msgid "Added to end of playlist"
-msgstr ""
+msgstr "By einde van speellys bygevoeg"
#. Displayed in a toast notification when music items are added to a playlist to play next
msgctxt "#38083"
msgid "Added to playlist to play next"
-msgstr ""
+msgstr "By speellys bygevoeg om volgende te speel"
#. Description of section #14200 "Player""
msgctxt "#38100"
@@ -18098,7 +18098,7 @@ msgstr "Hierdie kategorie bevat die verstellings vir die terugspeel van prente v
#. Description of category #14213 "Language"
msgctxt "#38106"
msgid "This category contains the settings for audio / subtitles language and accessibility"
-msgstr ""
+msgstr "Hierdie kategorie bevat die verstellings vir oudio / onderskrif taal en toeganklikheid"
#. Description of category #14210 "Videos"
msgctxt "#38107"
@@ -18339,7 +18339,7 @@ msgstr "Kan nie xml lêer lees nie"
#. Description of category "Library" with label #14202
msgctxt "#39004"
msgid "This category provides access to the windows for source management and library management facilities"
-msgstr ""
+msgstr "Hierdie kategorie voorsien toegang tot die vensters vir bron bestuur en biblioteek bestuur fasiliteite"
#. Description of setting "Videos... with label #14242
msgctxt "#39005"
@@ -18445,12 +18445,12 @@ msgstr "Sorteernaam"
#. Text for yes/no dialog when silently uninstalling an add-on
msgctxt "#39028"
msgid "Add-on: {0:s}[CR]Origin: {1:s}[CR]Version: {2:s}[CR]- will be uninstalled and replaced. Would you like to proceed?"
-msgstr ""
+msgstr "Byvoegsel: {0:s}[CR]Oorsprong: {1:s}[CR]Weergawe: {2:s}[CR]- sal deïnstalleer en vervang word. Wil jy voort gaan?"
#. Text for yes/no dialog to indicate that an add-on was manually installed
msgctxt "#39029"
msgid "Manually installed"
-msgstr ""
+msgstr "Handmatig geïnstalleer"
#. Media source, a filter and smart playlist rule option
msgctxt "#39030"
@@ -18558,7 +18558,7 @@ msgstr "Laas gewysig"
msgctxt "#39120"
msgid "Skip filename matching for external audio tracks"
-msgstr ""
+msgstr "Slaan lêer passing oor vir eksterne oudio bane"
#. Label for section of settings controling what is shown on the library windows
msgctxt "#39121"
@@ -18582,7 +18582,7 @@ msgstr "Stel etiket lees in lêer aansig in staat"
# empty string with id 39126
msgctxt "#39127"
msgid "Use all local image files as artwork"
-msgstr ""
+msgstr "Gebruik alle lokale beeld lêers as kunswerke"
#. Description of setting with label #39127 "Use all local image files as artwork"
msgctxt "#39128"
@@ -18591,7 +18591,7 @@ msgstr ""
msgctxt "#39129"
msgid "Use all remote artwork fetched by scrapers"
-msgstr ""
+msgstr "Gebruik alle afgeleë kunswerke gehaal deur skrapers"
#. Description of setting with label #39129 "Use all remote artwork fetched by scrapers"
msgctxt "#39130"
@@ -18600,7 +18600,7 @@ msgstr ""
msgctxt "#39131"
msgid "Artist art types whitelist"
-msgstr ""
+msgstr "Kunstenaar kuns tipes witlys"
#. Description of setting with label #39131 "Artist art types whitelist"
msgctxt "#39132"
@@ -18609,12 +18609,12 @@ msgstr ""
msgctxt "#39133"
msgid "Album art types whitelist"
-msgstr ""
+msgstr "Album kuns tipes witlys"
#. Description of setting with label #39133 "Album art types whitelist"
msgctxt "#39134"
msgid "Limit the album artwork fetched locally or applied from scraper remote art results to just those art types in the whitelist"
-msgstr ""
+msgstr "Beperk die album kunswerk wat lokaal gehaal of toegepas word vanaf skraper afgeleë kuns resultate tot net die kuns tipes in die witlys"
msgctxt "#39135"
msgid "Thumbnail image files"
@@ -18651,39 +18651,39 @@ msgstr "Pasgemaak"
msgctxt "#39143"
msgid "Movie art types whitelist"
-msgstr ""
+msgstr "Fliek kuns tipes witlys"
#. Description of setting with label #39150 "Movie art types whitelist"
msgctxt "#39144"
msgid "Limit the movie and movie set artwork fetched locally or applied from scraper remote art results to just those art types in the whitelist"
-msgstr ""
+msgstr "Beperk die fliek en fliek stel kunswerk wat lokaal gehaal of toegepas word vanaf skraper afgeleë kuns resultate tot net die kuns tipes in die witlys"
msgctxt "#39145"
msgid "TV show art types whitelist"
-msgstr ""
+msgstr "TV vertoning kuns tipes witlys"
#. Description of setting with label #39152 "TV show art types whitelist"
msgctxt "#39146"
msgid "Limit the TV show and season artwork fetched locally or applied from scraper remote art results to just those art types in the whitelist"
-msgstr ""
+msgstr "Beperk die TV vertoning en seisoen kunswerk wat lokaal gehaal of toegepas word vanaf skraper afgeleë kuns resultate tot net die kuns tipes in die witlys"
msgctxt "#39147"
msgid "Episode art types whitelist"
-msgstr ""
+msgstr "Episode kuns tipe witlys"
#. Description of setting with label #39154 "Episode art types whitelist"
msgctxt "#39148"
msgid "Limit the episode artwork fetched locally or applied from scraper remote art results to just those art types in the whitelist"
-msgstr ""
+msgstr "Beperk die episode kunswerk wat lokaal gehaal of toegepas word vanaf skraper afgeleë kuns resultate tot net die kuns tipes in die witlys"
msgctxt "#39149"
msgid "Music video art types whitelist"
-msgstr ""
+msgstr "Musiek video kuns tipes witlys"
#. Description of setting with label #39156 "Music video art types whitelist"
msgctxt "#39150"
msgid "Limit the music video artwork fetched locally or applied from scraper remote art results to just those art types in the whitelist"
-msgstr ""
+msgstr "Beperk die musiek video kunswerk wat lokaal gehaal of toegepas word vanaf skraper afgeleë kuns resultate tot net die kuns tipes in die witlys"
#. Display Hardware scaling filter setting toggle
msgctxt "#39151"
@@ -18702,7 +18702,7 @@ msgstr "Venster stelsel:"
#. Override subtitles styles setting list
msgctxt "#39154"
msgid "Override subtitles styles"
-msgstr ""
+msgstr "Oorskryf onderskrif style"
#. Description of setting with label #39154 "Override subtitles styles"
msgctxt "#39155"
@@ -18712,7 +18712,7 @@ msgstr ""
#. Item list value of setting with label #39154 "Override subtitles styles"
msgctxt "#39156"
msgid "Positions"
-msgstr ""
+msgstr "Posisies"
#. Item list value of setting with label #39154 "Override subtitles styles"
msgctxt "#39157"
@@ -18722,87 +18722,87 @@ msgstr "Style"
#. Item list value of setting with label #39154 "Override subtitles styles"
msgctxt "#39158"
msgid "Styles and positions"
-msgstr ""
+msgstr "Style en posisies"
#. Subtitle border size setting toggle
msgctxt "#39159"
msgid "Border size"
-msgstr ""
+msgstr "Grens grootte"
#. Subtitle border colour setting
msgctxt "#39160"
msgid "Border colour"
-msgstr ""
+msgstr "Grens kleur"
#. CC Subtitles text alignment setting list
msgctxt "#39161"
msgid "Text alignment"
-msgstr ""
+msgstr "Teks belyning"
#. Item list value of setting with label #39161 "Text alignment"
msgctxt "#39162"
msgid "Left"
-msgstr ""
+msgstr "Links"
#. Item list value of setting with label #39161 "Text alignment"
msgctxt "#39163"
msgid "Center"
-msgstr ""
+msgstr "Middel"
#. Item list value of setting with label #39161 "Text alignment"
msgctxt "#39164"
msgid "Right"
-msgstr ""
+msgstr "Regs"
#. Type of background for displaying the subtitles
msgctxt "#39165"
msgid "Background type"
-msgstr ""
+msgstr "Agtergrond tipe"
#. Item list value of setting with label #39166 "Background type"
msgctxt "#39166"
msgid "Shadow"
-msgstr ""
+msgstr "Skaduwee"
#. Item list value of setting with label #39166 "Background type"
msgctxt "#39167"
msgid "Box"
-msgstr ""
+msgstr "Boks"
#. Item list value of setting with label #39166 "Background type"
msgctxt "#39168"
msgid "Square box"
-msgstr ""
+msgstr "Vierkantige boks"
#. Description of setting with label #39166 "Background type"
msgctxt "#39169"
msgid "Type of background to apply to subtitles."
-msgstr ""
+msgstr "Tipe agtergrond om op onderskrifte toe te pas."
#. Subtitle shadow size setting
msgctxt "#39170"
msgid "Shadow size"
-msgstr ""
+msgstr "Skaduwee grootte"
#. Subtitle shadow colour setting
msgctxt "#39171"
msgid "Shadow colour"
-msgstr ""
+msgstr "Skaduwee kleur"
#. Subtitle shadow opacity setting
msgctxt "#39172"
msgid "Shadow opacity"
-msgstr ""
+msgstr "Skaduwee ondeursigtigheid"
#. Subtitle blur setting
msgctxt "#39173"
msgid "Blur"
-msgstr ""
+msgstr "Vervaag"
#. SystemInfo string for the display's supported HDR types
msgctxt "#39174"
msgid "Display supported HDR types"
-msgstr ""
+msgstr "Vertoon ondersteunde HDR tipes"
#. Progress text on splash screen, to build the font cache
msgctxt "#39175"
@@ -18812,72 +18812,72 @@ msgstr ""
#. Helper text for gui sound volume setting
msgctxt "#39176"
msgid "Relative volume for gui sounds"
-msgstr ""
+msgstr "Relatiewe volume vir gui klanke"
#. Dialog caption related to the speech to text process
msgctxt "#39177"
msgid "Speech to text"
-msgstr ""
+msgstr "Spraak tot teks"
#. Dialog text to notify that the speech service is not available
msgctxt "#39178"
msgid "Speech recognition service not available"
-msgstr ""
+msgstr "Spraak herkenning diens nie beskikbaar nie"
#. Dialog text to notify that microphone is listening
msgctxt "#39179"
msgid "Listening..."
-msgstr ""
+msgstr "Luister..."
#. Dialog text to notify that there has been no matching recognition result
msgctxt "#39180"
msgid "No recognition result matched"
-msgstr ""
+msgstr "Geen herkenning resultaat het gepas nie"
#. Dialog text to notify that there has been a speech recognition error
msgctxt "#39181"
msgid "Speech recognition error"
-msgstr ""
+msgstr "Spraak herkenning fout"
#. Subtitle vertical margin setting
msgctxt "#39182"
msgid "Vertical margin"
-msgstr ""
+msgstr "Vertikale marge"
#. Help text for setting "Vertical margin" of label #39182
msgctxt "#39183"
msgid "Allows you to add a margin in top and bottom aligned text. Changing this setting will affect also subtitle position set with the Video calibration."
-msgstr ""
+msgstr "Laat jou toe om 'n marge by te voeg in bokant en onderkant belynde teks. Verandering van hierdie verstelling sal ook die onderskrif posisie wat met die Video kalibrasie gestel is affekteer."
#. Window screen calibration: the current subtitle calibration value with vertical margin
msgctxt "#39184"
msgid "Current value: {0:d} (with vertical margin: {1:d})"
-msgstr ""
+msgstr "Huidige waarde: {0:d} (met vertikale marge: {1:d})"
#. Dialog text to notify that there are insufficient permissions for speech recognition
msgctxt "#39185"
msgid "Insufficient permissions for speech recognition"
-msgstr ""
+msgstr "Onvoldoende toestemmings vir spraak herkenning"
#. Title of group menu subtitles
msgctxt "#39186"
msgid "Styles for text based subtitles"
-msgstr ""
+msgstr "Style vir teks gebaseerde onderskrifte"
#. Title of group menu subtitles
msgctxt "#39187"
msgid "Closed caption subtitles"
-msgstr ""
+msgstr "Geslote onderskrifte"
#. Item list value of setting with label #39166 "Background type"
msgctxt "#39188"
msgid "No background"
-msgstr ""
+msgstr "Geen agtergrond"
#. Window screen calibration: calibration by using the subtitle bar
msgctxt "#39189"
msgid "Available only with manual subtitle position"
-msgstr ""
+msgstr "Slegs beskikbaar met die handmatige onderskrif posisie"
#~ msgctxt "#35203"
#~ msgid "Enable rewind if supported"
diff --git a/repo-resources-embedded/resource.language.bs_ba/addon.xml b/repo-resources-embedded/resource.language.bs_ba/addon.xml
index 57c337b..bb7f9a7 100644
--- a/repo-resources-embedded/resource.language.bs_ba/addon.xml
+++ b/repo-resources-embedded/resource.language.bs_ba/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon
id="resource.language.bs_ba"
- version="10.0.41"
+ version="10.0.42"
name="Bosnian"
provider-name="Team Kodi">
<requires>
diff --git a/repo-resources-embedded/resource.language.bs_ba/resources/strings.po b/repo-resources-embedded/resource.language.bs_ba/resources/strings.po
index 8c8ddea..b919403 100644
--- a/repo-resources-embedded/resource.language.bs_ba/resources/strings.po
+++ b/repo-resources-embedded/resource.language.bs_ba/resources/strings.po
@@ -4,15 +4,15 @@ msgstr ""
"Project-Id-Version: KODI Main\n"
"Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n"
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"PO-Revision-Date: 2023-01-30 23:09+0000\n"
+"PO-Revision-Date: 2024-01-23 10:13+0000\n"
"Last-Translator: Christian Gade <gade@kodi.tv>\n"
-"Language-Team: Bosnian (Bosnia and Herzegovina) <https://kodi.weblate.cloud/projects/kodi-core/kodi-main/bs_ba/>\n"
+"Language-Team: Bosnian (Bosnia and Herzegovina) <https://kodi.weblate.cloud/projects/kodi-core/kodi-main-nexus/bs_ba/>\n"
"Language: bs_ba\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.15.2\n"
+"X-Generator: Weblate 5.3\n"
msgctxt "#0"
msgid "Programs"
@@ -986,7 +986,7 @@ msgstr "Izlazne skripte"
msgctxt "#263"
msgid "Allow remote control via HTTP"
-msgstr ""
+msgstr "Dozvolite daljinsko upravljanje putem HTTP-a"
#. Label for a context menu entry / button to start/schedule a recording
msgctxt "#264"
@@ -1070,7 +1070,7 @@ msgstr "Molimo, proverite XML datoteke"
msgctxt "#282"
msgid "Found {0:d} items"
-msgstr ""
+msgstr "Pronađeno {0:d} stavki"
msgctxt "#283"
msgid "Search results"
@@ -1136,7 +1136,7 @@ msgstr "Obilježivači"
msgctxt "#299"
msgid "Bookmark {0:d}"
-msgstr ""
+msgstr "Obilješka {0:d}"
msgctxt "#300"
msgid "MP1 capable receiver"
@@ -1172,27 +1172,27 @@ msgstr "Nestandardni"
#. Will prefer the stream marked as "default" if available.
msgctxt "#307"
msgid "Media default"
-msgstr ""
+msgstr "Zadani medijski jezik"
#. Select option for the setting "Preferred audio language".
#. Will prefer the stream marked as "original" if available.
msgctxt "#308"
msgid "Original language"
-msgstr ""
+msgstr "Originalni jezik"
msgctxt "#309"
msgid "User interface language"
-msgstr ""
+msgstr "Jezik korisničkog sučelja"
#. Setting in international settings
msgctxt "#310"
msgid "Virtual keyboard layouts"
-msgstr ""
+msgstr "Virtualni rasporedi tastature"
#. Keyboard layout name e.g. "English QWERTY"
msgctxt "#311"
msgid "{0:s} {1:s}"
-msgstr ""
+msgstr "{0:s} {1:s}"
msgctxt "#312"
msgid "(0=auto)"
@@ -1237,11 +1237,11 @@ msgstr "Greška čišćenja izvođača"
msgctxt "#322"
msgid "Cleaning genres, roles etc...."
-msgstr ""
+msgstr "Čišćenje žanrova, uloga itd..."
msgctxt "#323"
msgid "Error cleaning genres, roles etc."
-msgstr ""
+msgstr "Greška pri čišćenju žanrova, uloga itd."
msgctxt "#324"
msgid "Cleaning paths..."
@@ -1297,7 +1297,7 @@ msgstr "Konverzija brzine sličica"
msgctxt "#337"
msgid "Output configuration"
-msgstr ""
+msgstr "Podešavanje izlaza"
msgctxt "#338"
msgid "Fixed"
@@ -1305,7 +1305,7 @@ msgstr "Brzo"
msgctxt "#339"
msgid "Optimized"
-msgstr ""
+msgstr "Optimizirano"
msgctxt "#340"
msgid "Various artists"
@@ -1333,7 +1333,7 @@ msgstr "Godina"
msgctxt "#346"
msgid "Maintain original volume on downmix"
-msgstr ""
+msgstr "Održavajte originalnu glasnoću zvuka pri zvučnom miješanju"
msgctxt "#347"
msgid "DTS-HD capable receiver"
@@ -1341,7 +1341,7 @@ msgstr "DTS-HD sposoban reciver"
msgctxt "#348"
msgid "Allow passthrough"
-msgstr ""
+msgstr "Dozvolite prolazni prijenos"
msgctxt "#349"
msgid "TrueHD capable receiver"
@@ -1370,7 +1370,7 @@ msgstr "Matrix tragovi"
#. Label of a setting to configure the idle time until the screensaver kicks in
msgctxt "#355"
msgid "Wait time"
-msgstr ""
+msgstr "Vrijeme čekanja"
msgctxt "#356"
msgid "Screensaver mode"
@@ -1604,7 +1604,7 @@ msgstr "Vlažnost"
msgctxt "#407"
msgid "Hardware keyboard layouts"
-msgstr ""
+msgstr "Hardverski rasporedi tastature"
msgctxt "#409"
msgid "Defaults"
@@ -1648,15 +1648,15 @@ msgstr "Maks."
msgctxt "#420"
msgid "Best match"
-msgstr ""
+msgstr "Najbolje podudarajuće"
msgctxt "#421"
msgid "Keep audio device alive"
-msgstr ""
+msgstr "Održavajte zvučni uređaj aktivnim"
msgctxt "#422"
msgid "Delete album information"
-msgstr ""
+msgstr "Izbrišite informacije o albumu"
msgctxt "#423"
msgid "Delete CD information"
@@ -1680,7 +1680,7 @@ msgstr "Disk"
msgctxt "#428"
msgid "Insert correct CD / DVD"
-msgstr ""
+msgstr "Umetnite ispravan CD / DVD"
msgctxt "#429"
msgid "Please insert the following disc:"
@@ -1700,12 +1700,12 @@ msgstr "Ukloni film iz biblioteke"
msgctxt "#433"
msgid "Would you really like to remove '{0:s}' from library?"
-msgstr ""
+msgstr "Zar stvarno želite ukloniti '{0:s}' iz biblioteke?"
#. From <wind dir.> at <speed> <unit>
msgctxt "#434"
msgid "From {0:s} at {1:d} {2:s}"
-msgstr ""
+msgstr "Od {0:s} za {1:d} {2:s}"
#. Headline of a dialog that pops up when a user tries to play a video that is located on an optical disc (Blu-ray, DVD) but the current KODI device doesn't have the according drive
msgctxt "#435"
@@ -1715,7 +1715,7 @@ msgstr "Optički drajv nije pronađen"
#. Message body of a dialog that pops up when a user tries to play a video that is located on an optical disc (Blu-ray, DVD) but the current KODI device doesn't have the according drive
msgctxt "#436"
msgid "This video is stored on an optical disc (e.g. DVD, Blu-ray) and cannot be played as your device does not have an appropriate drive."
-msgstr ""
+msgstr "Ovaj video je pohranjen na optičkom disku (npr. DVD, Blu-ray) i ne može se reproducirati jer vaš uređaj nema odgovarajući pogon."
msgctxt "#437"
msgid "Removable disk"
@@ -1731,7 +1731,7 @@ msgstr "Keš"
msgctxt "#440"
msgid "Hard disk"
-msgstr ""
+msgstr "Hard disketa"
msgctxt "#441"
msgid "UDF"
@@ -1763,7 +1763,7 @@ msgstr "Automatska reprod. medija"
msgctxt "#448"
msgid "Dolby Digital Plus (E-AC3) capable receiver"
-msgstr ""
+msgstr "Prijemnik koji podržava Dolby Digital Plus (E-AC3)."
msgctxt "#449"
msgid "Enabled"
@@ -1803,7 +1803,7 @@ msgstr "Promjeni prikaz"
msgctxt "#458"
msgid "Limit sampling rate (kHz)"
-msgstr ""
+msgstr "Granična brzina uzorkovanja (kHz)"
msgctxt "#459"
msgid "Subs"
@@ -1907,7 +1907,7 @@ msgstr "Ponovi fasciklu"
msgctxt "#489"
msgid "Play next song automatically"
-msgstr ""
+msgstr "Automatski pustite sljedeću pjesmu"
msgctxt "#491"
msgid "- Use big icons"
@@ -1919,7 +1919,7 @@ msgstr "Promjeni veličinu za VobSubs"
msgctxt "#493"
msgid "Advanced options (experts only!)"
-msgstr ""
+msgstr "Napredne opcije (samo stručnjaci!)"
msgctxt "#494"
msgid "Overall audio headroom"
@@ -1927,7 +1927,7 @@ msgstr "Sveobuhvatan zvučni slobodan prostor"
msgctxt "#495"
msgid "Upscale videos to GUI resolution"
-msgstr ""
+msgstr "Nadovećajte video zapise do GUI rezolucije"
msgctxt "#496"
msgid "Calibration"
@@ -1968,12 +1968,12 @@ msgstr "Prazno"
#. label for library update progress bar when scanning media files
msgctxt "#505"
msgid "Loading media information from files..."
-msgstr ""
+msgstr "Učitavanje medijskih informacija iz datoteka..."
#. label for library update progress bar when checking for new or changed media files
msgctxt "#506"
msgid "Checking media files..."
-msgstr ""
+msgstr "Provjera medijskih datoteka..."
msgctxt "#507"
msgid "Sort by: Usage"
@@ -5402,7 +5402,7 @@ msgstr "Povezano, ali DNS nije dostupan."
msgctxt "#13275"
msgid "Hard disk"
-msgstr ""
+msgstr "Hard disketa"
msgctxt "#13276"
msgid "DVD-ROM"
@@ -9731,7 +9731,7 @@ msgstr ""
#. label for "special characteristics" epg subgenre value
msgctxt "#19661"
msgid "Original language"
-msgstr ""
+msgstr "Originalni jezik"
#. label for "special characteristics" epg subgenre value
msgctxt "#19662"
diff --git a/repo-resources-embedded/resource.language.de_de/addon.xml b/repo-resources-embedded/resource.language.de_de/addon.xml
index 15c0a00..2c235a0 100644
--- a/repo-resources-embedded/resource.language.de_de/addon.xml
+++ b/repo-resources-embedded/resource.language.de_de/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon
id="resource.language.de_de"
- version="10.0.75"
+ version="10.0.76"
name="German"
provider-name="Team Kodi">
<requires>
diff --git a/repo-resources-embedded/resource.language.de_de/resources/strings.po b/repo-resources-embedded/resource.language.de_de/resources/strings.po
index 667e6a2..5bf983c 100644
--- a/repo-resources-embedded/resource.language.de_de/resources/strings.po
+++ b/repo-resources-embedded/resource.language.de_de/resources/strings.po
@@ -4,7 +4,7 @@ msgstr ""
"Project-Id-Version: KODI Main\n"
"Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n"
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"PO-Revision-Date: 2023-11-09 11:07+0000\n"
+"PO-Revision-Date: 2024-01-29 14:13+0000\n"
"Last-Translator: Kai Sommerfeld <ksooo@users.noreply.kodi.weblate.cloud>\n"
"Language-Team: German <https://kodi.weblate.cloud/projects/kodi-core/kodi-main-nexus/de_de/>\n"
"Language: de_de\n"
@@ -12,7 +12,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 5.1\n"
+"X-Generator: Weblate 5.3\n"
msgctxt "#0"
msgid "Programs"
@@ -14144,7 +14144,7 @@ msgstr "Unhörbares Signal ausgeben"
#. Description of setting with label #34112 "Send low volume noise"
msgctxt "#34113"
msgid "To keep certain AVRs powered we send an inaudible random noise signal. You can disable this setting if you are using headphone or analog output."
-msgstr "Ein unhörbares Signal senden, um bestimmte AV-Receiver am selbständigen Ausschalten zu hindern. Diese Einstellung kann abgeschaltet werden, wenn Kophhörer oder ein analoger Tonausgang verwendet werden."
+msgstr "Ein unhörbares Signal senden, um bestimmte AV-Receiver am selbständigen Ausschalten zu hindern. Diese Einstellung kann abgeschaltet werden, wenn Kopfhörer oder ein analoger Tonausgang verwendet werden."
msgctxt "#34120"
msgid "Play GUI sounds"
diff --git a/repo-resources-embedded/resource.language.es_mx/addon.xml b/repo-resources-embedded/resource.language.es_mx/addon.xml
index 6dda77e..f730c78 100644
--- a/repo-resources-embedded/resource.language.es_mx/addon.xml
+++ b/repo-resources-embedded/resource.language.es_mx/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon
id="resource.language.es_mx"
- version="10.0.54"
+ version="10.0.55"
name="Spanish (Mexico)"
provider-name="Team Kodi">
<requires>
diff --git a/repo-resources-embedded/resource.language.es_mx/resources/strings.po b/repo-resources-embedded/resource.language.es_mx/resources/strings.po
index f65924c..1d838e7 100644
--- a/repo-resources-embedded/resource.language.es_mx/resources/strings.po
+++ b/repo-resources-embedded/resource.language.es_mx/resources/strings.po
@@ -4,7 +4,7 @@ msgstr ""
"Project-Id-Version: KODI Main\n"
"Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n"
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"PO-Revision-Date: 2023-10-29 12:06+0000\n"
+"PO-Revision-Date: 2024-01-16 02:57+0000\n"
"Last-Translator: Christian Gade <gade@kodi.tv>\n"
"Language-Team: Spanish (Mexico) <https://kodi.weblate.cloud/projects/kodi-core/kodi-main-nexus/es_mx/>\n"
"Language: es_mx\n"
@@ -12,7 +12,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 5.1\n"
+"X-Generator: Weblate 5.3\n"
msgctxt "#0"
msgid "Programs"
@@ -4105,12 +4105,12 @@ msgstr "Configuración - Servicios"
#. Item label for add-on configuration removal dialog
msgctxt "#10019"
msgid "Do you want to remove the add-on configuration \"{0:s}\"?"
-msgstr ""
+msgstr "¿Quieres eliminar la configuración del complemento \"{0:s}\"?"
#. Item label used in add-on setup selection dialog
msgctxt "#10020"
msgid "Edit \"{0:s}\" [{1:s}]"
-msgstr ""
+msgstr "Editar \"{0:s}\" [{1:s}]"
msgctxt "#10021"
msgid "Settings - TV"
@@ -15274,7 +15274,7 @@ msgstr "Dispositivo de sintonización"
#. Label of setting "System / Display / GUI peak luminance in HDR PQ mode"
msgctxt "#36097"
msgid "GUI peak luminance in HDR PQ mode"
-msgstr ""
+msgstr "Luminiscencia máxima de la interfaz en el modo HDR PQ"
# empty strings from id 36051 to 36097
#. Label of setting "System / Display / Use 10 bit for SDR"
@@ -15709,7 +15709,7 @@ msgstr "Esta categoría contiene configuración de cómo se manejan los subtítu
#. Description of setting with label #14089 "Font"
msgctxt "#36185"
msgid "Set the font type to be used for subtitles."
-msgstr ""
+msgstr "Establece la tipografía para los subtítulos."
#. Description of setting with label #289 "Size"
msgctxt "#36186"
@@ -15744,7 +15744,7 @@ msgstr "Selecciona un directorio personalizado para tus subtítulos. Puede ser u
#. Description of setting with label #21460 "Subtitle location on screen"
msgctxt "#36192"
msgid "Location of subtitles on the screen. [Bottom of video] / [Top of video] When possible the subtitles will be positioned within the video area (depends on video encoding). Please note that some forced positions in the subtitles cannot be changed."
-msgstr ""
+msgstr "Ubicación de los subtítulos en la pantalla. [Debajo del video] / [Encima del video] Cuando sea posible los subtítulos se posicionarán en el área del video (depende de la codificación de video). Nótese que algunas posiciones forzadas en los subtítulos no pueden ser cambiadas."
#. Description of settings category with label #14087 "DVDs"
msgctxt "#36193"
@@ -15824,7 +15824,7 @@ msgstr "Abre el diálogo de prioridad de clientes que permite modificar la prior
msgctxt "#36211"
msgid "This category contains the settings for PVR channels and channel groups."
-msgstr ""
+msgstr "Esta categoría contiene la configuración de los canales PVR y grupos de canales."
msgctxt "#36212"
msgid "Display programming information when changing channels, such as the current TV show."
@@ -16503,7 +16503,7 @@ msgstr "En una configuración de pantalla múltiple, las pantallas que no muestr
#. Description of settings category with label #1201 "NFS Client"
msgctxt "#36356"
msgid "This category contains the settings for how the NFS client is handled."
-msgstr ""
+msgstr "Esta categoría contiene la configuración del cliente NFS."
#. Description of setting with label #214 "Video calibration..."
msgctxt "#36357"
@@ -17708,7 +17708,7 @@ msgstr "Accesibilidad"
#. Description of category #287 Subtitles
msgctxt "#37033"
msgid "This category contains the settings for subtitles"
-msgstr ""
+msgstr "Esta categoría contiene la configuración de los subtítulos"
#. Setting #37034 Accessibility
msgctxt "#37034"
@@ -17796,12 +17796,12 @@ msgstr "Registro de depuración para el componente [B]WS-Discovery[/B]"
#. Setting #37051 NFS Protocol Version"
msgctxt "#37051"
msgid "NFS Protocol Version"
-msgstr ""
+msgstr "Versión de protocolo NFS"
#. Description of setting #37051 NFS Protocol Version"
msgctxt "#37052"
msgid "NFS protocol version to use when establishing NFS connections"
-msgstr ""
+msgstr "Versión del protocolo NFS a utilizara al establecer nuevas conexiones NFS"
#. Setting #38011 "Show All Items entry"
msgctxt "#38011"
@@ -18051,12 +18051,12 @@ msgstr "Estado de publicación"
#. Displayed in a toast notification when music items are added to a playlist
msgctxt "#38082"
msgid "Added to end of playlist"
-msgstr ""
+msgstr "Agregado al final de la lista de reproducción"
#. Displayed in a toast notification when music items are added to a playlist to play next
msgctxt "#38083"
msgid "Added to playlist to play next"
-msgstr ""
+msgstr "Agregado a la lista de reproducción para reproducir a continuación"
#. Description of section #14200 "Player""
msgctxt "#38100"
@@ -18853,7 +18853,7 @@ msgstr ""
#. Title of group menu subtitles
msgctxt "#39186"
msgid "Styles for text based subtitles"
-msgstr ""
+msgstr "Estilos para subtítulos de texto"
#. Title of group menu subtitles
msgctxt "#39187"
@@ -18863,12 +18863,12 @@ msgstr ""
#. Item list value of setting with label #39166 "Background type"
msgctxt "#39188"
msgid "No background"
-msgstr ""
+msgstr "Sin fondo"
#. Window screen calibration: calibration by using the subtitle bar
msgctxt "#39189"
msgid "Available only with manual subtitle position"
-msgstr ""
+msgstr "Disponible solo en la posición manual de los subtítulos"
#~ msgctxt "#35203"
#~ msgid "Enable rewind if supported"
diff --git a/repo-resources-embedded/resource.language.hr_hr/addon.xml b/repo-resources-embedded/resource.language.hr_hr/addon.xml
index 010d77c..55861d1 100644
--- a/repo-resources-embedded/resource.language.hr_hr/addon.xml
+++ b/repo-resources-embedded/resource.language.hr_hr/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon
id="resource.language.hr_hr"
- version="10.0.57"
+ version="10.0.58"
name="Croatian"
provider-name="Team Kodi">
<requires>
diff --git a/repo-resources-embedded/resource.language.hr_hr/resources/strings.po b/repo-resources-embedded/resource.language.hr_hr/resources/strings.po
index df0b636..9c5ce17 100644
--- a/repo-resources-embedded/resource.language.hr_hr/resources/strings.po
+++ b/repo-resources-embedded/resource.language.hr_hr/resources/strings.po
@@ -4,7 +4,7 @@ msgstr ""
"Project-Id-Version: KODI Main\n"
"Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n"
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"PO-Revision-Date: 2023-10-29 12:06+0000\n"
+"PO-Revision-Date: 2024-01-23 10:13+0000\n"
"Last-Translator: Christian Gade <gade@kodi.tv>\n"
"Language-Team: Croatian <https://kodi.weblate.cloud/projects/kodi-core/kodi-main-nexus/hr_hr/>\n"
"Language: hr_hr\n"
@@ -12,7 +12,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 5.1\n"
+"X-Generator: Weblate 5.3\n"
msgctxt "#0"
msgid "Programs"
@@ -7149,12 +7149,12 @@ msgstr "Spremi"
#. Caption for "Save" button in the in-game savestate manager
msgctxt "#15315"
msgid "Save progress to a new save file"
-msgstr ""
+msgstr "Spremite napredak u novu datoteku za spremanje"
#. Label for savestates created automatically by "Autosave" function
msgctxt "#15316"
msgid "Autosave"
-msgstr ""
+msgstr "Automatsko spremanje"
msgctxt "#16000"
msgid "General"
@@ -14763,7 +14763,7 @@ msgstr "Igranje"
# empty string with id 35202
msgctxt "#35203"
msgid "Enable rewind (if supported)"
-msgstr ""
+msgstr "Omogućite premotavanje unatrag (ako je podržano)"
msgctxt "#35204"
msgid "Enable real-time rewinding during game play, if supported. Press rewind or manually seek backwards using the seek bar."
@@ -14946,7 +14946,7 @@ msgstr "Uredi izvor igre"
msgctxt "#35253"
msgid "Enable autosave (if supported)"
-msgstr ""
+msgstr "Omogućite automatsko spremanje (ako je podržano)"
msgctxt "#35254"
msgid "Save the game automatically during game play, if supported. Resume playing where you left off."
@@ -14955,7 +14955,7 @@ msgstr "Spremi igru automatski tijekom igranja, ako je podržano. Nastavite igra
#. Label for showing which emulator the game was saved with
msgctxt "#35255"
msgid "Saved with:"
-msgstr ""
+msgstr "Spremljeno pomoću:"
#. Error message when a game client fails to install when a game is being launched
msgctxt "#35256"
diff --git a/repo-resources-embedded/resource.language.nl_nl/addon.xml b/repo-resources-embedded/resource.language.nl_nl/addon.xml
index 43835eb..3bfc35d 100644
--- a/repo-resources-embedded/resource.language.nl_nl/addon.xml
+++ b/repo-resources-embedded/resource.language.nl_nl/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon
id="resource.language.nl_nl"
- version="10.0.62"
+ version="10.0.63"
name="Dutch"
provider-name="Team Kodi">
<requires>
diff --git a/repo-resources-embedded/resource.language.nl_nl/resources/strings.po b/repo-resources-embedded/resource.language.nl_nl/resources/strings.po
index 74ff335..29c5620 100644
--- a/repo-resources-embedded/resource.language.nl_nl/resources/strings.po
+++ b/repo-resources-embedded/resource.language.nl_nl/resources/strings.po
@@ -4,7 +4,7 @@ msgstr ""
"Project-Id-Version: KODI Main\n"
"Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n"
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"PO-Revision-Date: 2023-03-12 14:31+0000\n"
+"PO-Revision-Date: 2024-01-23 10:13+0000\n"
"Last-Translator: Christian Gade <gade@kodi.tv>\n"
"Language-Team: Dutch <https://kodi.weblate.cloud/projects/kodi-core/kodi-main-nexus/nl_nl/>\n"
"Language: nl_nl\n"
@@ -12,7 +12,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.15.2\n"
+"X-Generator: Weblate 5.3\n"
msgctxt "#0"
msgid "Programs"
@@ -9242,17 +9242,17 @@ msgstr "Wilt u een herinnering instellen voor het gekozen programma of wilt u ov
#. settings label to open add-ons manager window with available PVR client add-ons
msgctxt "#19345"
msgid "PVR client add-ons"
-msgstr ""
+msgstr "PVR cliënt add-ons"
#. help text for setting to open add-ons manager window with available PVR client add-ons
msgctxt "#19346"
msgid "Display and manage available PVR client add-ons."
-msgstr ""
+msgstr "Beschikbare PVR client toevoegingen weergeven en beheren."
#. info message box text stating that none of the available pvr clients does provide client-specific settings
msgctxt "#19347"
msgid "None of the active PVR clients provide client-specific settings."
-msgstr ""
+msgstr "Geen van de actieve PVR-clients biedt client-specifieke instellingen."
#. label for 'by provider' sort method
msgctxt "#19348"
@@ -9262,7 +9262,7 @@ msgstr "Provider"
#. label for 'by user preference' sort method
msgctxt "#19349"
msgid "User preference"
-msgstr ""
+msgstr "Gebruikersvoorkeur"
#. label for epg genre value
msgctxt "#19499"
@@ -13095,7 +13095,7 @@ msgstr "Gebruik virtueel toetsenbord van Kodi"
msgctxt "#24163"
msgid "The higher the value, the more sensitive the pan gesture"
-msgstr ""
+msgstr "Hoe hoger de waarde, hoe gevoeliger het pangebaar"
# empty string with id 24163
#. Header text for yes/no dialog about enable of broken add-on
@@ -14756,7 +14756,7 @@ msgstr "Gameplay"
# empty string with id 35202
msgctxt "#35203"
msgid "Enable rewind (if supported)"
-msgstr ""
+msgstr "Terugspoelen inschakelen (indien ondersteund)"
msgctxt "#35204"
msgid "Enable real-time rewinding during game play, if supported. Press rewind or manually seek backwards using the seek bar."
@@ -14923,7 +14923,7 @@ msgstr "In deze release kunnen controllers alleen gebruikt worden om spelletjes
#. Button to open the savestate manager from the game OSD
msgctxt "#35249"
msgid "Save / Load"
-msgstr ""
+msgstr "Opslaan / Laden"
msgctxt "#35250"
msgid "Add games..."
@@ -14939,7 +14939,7 @@ msgstr "Game bron bewerken"
msgctxt "#35253"
msgid "Enable autosave (if supported)"
-msgstr ""
+msgstr "Automatisch opslaan inschakelen (indien ondersteund)"
msgctxt "#35254"
msgid "Save the game automatically during game play, if supported. Resume playing where you left off."
@@ -14948,7 +14948,7 @@ msgstr "Sla het spel automatisch op tijdens het spelen indien ondersteund. Ga ve
#. Label for showing which emulator the game was saved with
msgctxt "#35255"
msgid "Saved with:"
-msgstr ""
+msgstr "Opgeslagen met:"
#. Error message when a game client fails to install when a game is being launched
msgctxt "#35256"
@@ -15107,7 +15107,7 @@ msgstr "De CEC-adapter kon niet geïnitialiseerd worden. Controleer je instellin
#. CEC adapter setting to set the type of device that libCEC reports to the TV (Recording, Playback or Tuner Device)
msgctxt "#36013"
msgid "CEC client device mode"
-msgstr ""
+msgstr "CEC-clientapparaatmodus"
msgctxt "#36015"
msgid "HDMI port number"
@@ -15260,23 +15260,23 @@ msgstr "Bij starten"
#. Item list value of setting with label #36013 "CEC client device mode"
msgctxt "#36051"
msgid "Recording Device"
-msgstr ""
+msgstr "Opnameapparaat"
#. Item list value of setting with label #36013 "CEC client device mode"
msgctxt "#36052"
msgid "Playback Device"
-msgstr ""
+msgstr "Afspeelapparaat"
#. Item list value of setting with label #36013 "CEC client device mode"
msgctxt "#36053"
msgid "Tuner Device"
-msgstr ""
+msgstr "Tunerapparaat"
# empty strings from id 36054 to 36096
#. Label of setting "System / Display / GUI peak luminance in HDR PQ mode"
msgctxt "#36097"
msgid "GUI peak luminance in HDR PQ mode"
-msgstr ""
+msgstr "GUI piekluminantie in HDR PQ-modus"
# empty strings from id 36051 to 36097
#. Label of setting "System / Display / Use 10 bit for SDR"
@@ -15746,7 +15746,7 @@ msgstr "Instellen van een andere folder voor ondertiteling. Dit mag een netwerkl
#. Description of setting with label #21460 "Subtitle location on screen"
msgctxt "#36192"
msgid "Location of subtitles on the screen. [Bottom of video] / [Top of video] When possible the subtitles will be positioned within the video area (depends on video encoding). Please note that some forced positions in the subtitles cannot be changed."
-msgstr ""
+msgstr "Locatie van ondertitels op het scherm. [Onderkant van video] / [Bovenkant van video] Indien mogelijk worden de ondertitels binnen het videogebied geplaatst (afhankelijk van de videocodering). Houd er rekening mee dat sommige geforceerde posities in de ondertitels niet kunnen worden gewijzigd."
#. Description of settings category with label #14087 "DVDs"
msgctxt "#36193"
@@ -15826,7 +15826,7 @@ msgstr "Open het klantprioriteitenvenster waarmee u de prioriteit voor ingeschak
msgctxt "#36211"
msgid "This category contains the settings for PVR channels and channel groups."
-msgstr ""
+msgstr "Deze categorie bevat de instellingen voor PVR-kanalen en kanaalgroepen."
msgctxt "#36212"
msgid "Display programming information when changing channels, such as the current TV show."
@@ -16505,7 +16505,7 @@ msgstr "In een meervoudige schermconfiguratie worden de schermen die deze applic
#. Description of settings category with label #1201 "NFS Client"
msgctxt "#36356"
msgid "This category contains the settings for how the NFS client is handled."
-msgstr ""
+msgstr "Deze categorie bevat de instellingen voor hoe de NFS client wordt afgehandeld."
#. Description of setting with label #214 "Video calibration..."
msgctxt "#36357"
@@ -17103,7 +17103,7 @@ msgstr "Stelt de visuele diepte van ondertiteling in voor stereoscopische 3D vid
#. Description of setting with label #36097 "System / Display / GUI peak luminance in HDR PQ mode"
msgctxt "#36547"
msgid "Sets the peak luminance level for GUI elements while the display is in HDR PQ mode. This affects all OSD, subtitles and graphics that are SDR in origin."
-msgstr ""
+msgstr "Stelt het piekluminantieniveau in voor GUI-elementen terwijl het scherm in HDR PQ-modus staat. Dit beïnvloedt alle OSD, ondertitels en afbeeldingen die SDR van oorsprong zijn."
#. Description of setting with label #37021 "Set GUI resolution limit"
msgctxt "#36548"
@@ -17798,12 +17798,12 @@ msgstr "Uitgebreide protocollering voor de [B]WS-Discovery[/B] component"
#. Setting #37051 NFS Protocol Version"
msgctxt "#37051"
msgid "NFS Protocol Version"
-msgstr ""
+msgstr "NFS-protocolversie"
#. Description of setting #37051 NFS Protocol Version"
msgctxt "#37052"
msgid "NFS protocol version to use when establishing NFS connections"
-msgstr ""
+msgstr "NFS protocol versie om te gebruiken bij het maken van NFS verbindingen"
#. Setting #38011 "Show All Items entry"
msgctxt "#38011"
@@ -18053,12 +18053,12 @@ msgstr "Releasestatus:"
#. Displayed in a toast notification when music items are added to a playlist
msgctxt "#38082"
msgid "Added to end of playlist"
-msgstr ""
+msgstr "Toegevoegd aan het einde van de afspeellijst"
#. Displayed in a toast notification when music items are added to a playlist to play next
msgctxt "#38083"
msgid "Added to playlist to play next"
-msgstr ""
+msgstr "Toegevoegd aan afspeellijst om als volgende af te spelen"
#. Description of section #14200 "Player""
msgctxt "#38100"
diff --git a/repo-resources-embedded/resource.language.sr_rs@latin/addon.xml b/repo-resources-embedded/resource.language.sr_rs@latin/addon.xml
index 54c1edc..a7b888d 100644
--- a/repo-resources-embedded/resource.language.sr_rs@latin/addon.xml
+++ b/repo-resources-embedded/resource.language.sr_rs@latin/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon
id="resource.language.sr_rs@latin"
- version="10.0.43"
+ version="10.0.44"
name="Serbian"
provider-name="Team Kodi">
<requires>
diff --git a/repo-resources-embedded/resource.language.sr_rs@latin/resources/strings.po b/repo-resources-embedded/resource.language.sr_rs@latin/resources/strings.po
index ed7a03d..b771a17 100644
--- a/repo-resources-embedded/resource.language.sr_rs@latin/resources/strings.po
+++ b/repo-resources-embedded/resource.language.sr_rs@latin/resources/strings.po
@@ -4,15 +4,15 @@ msgstr ""
"Project-Id-Version: KODI Main\n"
"Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n"
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"PO-Revision-Date: 2023-01-30 23:09+0000\n"
+"PO-Revision-Date: 2024-01-16 02:57+0000\n"
"Last-Translator: Christian Gade <gade@kodi.tv>\n"
-"Language-Team: Serbian (latin) <https://kodi.weblate.cloud/projects/kodi-core/kodi-main/sr_Latn/>\n"
+"Language-Team: Serbian (latin) <https://kodi.weblate.cloud/projects/kodi-core/kodi-main-nexus/sr_Latn/>\n"
"Language: sr_rs@latin\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.15.2\n"
+"X-Generator: Weblate 5.3\n"
msgctxt "#0"
msgid "Programs"
@@ -1069,7 +1069,7 @@ msgstr "Molimo, proverite XML datoteke"
msgctxt "#282"
msgid "Found {0:d} items"
-msgstr ""
+msgstr "Pronađeno {0:d} stavki"
msgctxt "#283"
msgid "Search results"
@@ -1135,7 +1135,7 @@ msgstr "Obeleživači"
msgctxt "#299"
msgid "Bookmark {0:d}"
-msgstr ""
+msgstr "Obeleživač {0:d}"
msgctxt "#300"
msgid "MP1 capable receiver"
@@ -1236,11 +1236,11 @@ msgstr "Greška čišćenja izvođača"
msgctxt "#322"
msgid "Cleaning genres, roles etc...."
-msgstr ""
+msgstr "Čišćenje žanrova, uloga itd..."
msgctxt "#323"
msgid "Error cleaning genres, roles etc."
-msgstr ""
+msgstr "Greška pri čišćenju žanrova, uloga itd."
msgctxt "#324"
msgid "Cleaning paths..."
@@ -1603,7 +1603,7 @@ msgstr "Vlažnost"
msgctxt "#407"
msgid "Hardware keyboard layouts"
-msgstr ""
+msgstr "Hardverski rasporedi tastature"
msgctxt "#409"
msgid "Defaults"
@@ -1699,12 +1699,12 @@ msgstr "Ukloni film iz biblioteke"
msgctxt "#433"
msgid "Would you really like to remove '{0:s}' from library?"
-msgstr ""
+msgstr "Da li stvarno želite da uklonite '{0:s}' iz biblioteke?"
#. From <wind dir.> at <speed> <unit>
msgctxt "#434"
msgid "From {0:s} at {1:d} {2:s}"
-msgstr ""
+msgstr "Od {0:s} na {1:d} {2:s}"
#. Headline of a dialog that pops up when a user tries to play a video that is located on an optical disc (Blu-ray, DVD) but the current KODI device doesn't have the according drive
msgctxt "#435"
@@ -1714,7 +1714,7 @@ msgstr "Optički disk nije otkriven"
#. Message body of a dialog that pops up when a user tries to play a video that is located on an optical disc (Blu-ray, DVD) but the current KODI device doesn't have the according drive
msgctxt "#436"
msgid "This video is stored on an optical disc (e.g. DVD, Blu-ray) and cannot be played as your device does not have an appropriate drive."
-msgstr ""
+msgstr "Ovaj video zapis se čuva na optičkom disku (npr. DVD, Blu-ray) i ne može se reprodukovati jer vaš uređaj nema odgovarajuću disk jedinicu."
msgctxt "#437"
msgid "Removable disk"
@@ -1972,7 +1972,7 @@ msgstr "Učitavanje podataka medija iz datoteka..."
#. label for library update progress bar when checking for new or changed media files
msgctxt "#506"
msgid "Checking media files..."
-msgstr ""
+msgstr "Provera medijskih datoteka..."
msgctxt "#507"
msgid "Sort by: Usage"
diff --git a/repo-resources-embedded/resource.language.sv_se/addon.xml b/repo-resources-embedded/resource.language.sv_se/addon.xml
index a414bb5..608c0fa 100644
--- a/repo-resources-embedded/resource.language.sv_se/addon.xml
+++ b/repo-resources-embedded/resource.language.sv_se/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon
id="resource.language.sv_se"
- version="10.0.68"
+ version="10.0.69"
name="Swedish"
provider-name="Team Kodi">
<requires>
diff --git a/repo-resources-embedded/resource.language.sv_se/resources/strings.po b/repo-resources-embedded/resource.language.sv_se/resources/strings.po
index 055bde5..bc98cf9 100644
--- a/repo-resources-embedded/resource.language.sv_se/resources/strings.po
+++ b/repo-resources-embedded/resource.language.sv_se/resources/strings.po
@@ -4,7 +4,7 @@ msgstr ""
"Project-Id-Version: KODI Main\n"
"Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n"
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"PO-Revision-Date: 2023-10-29 12:06+0000\n"
+"PO-Revision-Date: 2024-01-16 02:57+0000\n"
"Last-Translator: Christian Gade <gade@kodi.tv>\n"
"Language-Team: Swedish <https://kodi.weblate.cloud/projects/kodi-core/kodi-main-nexus/sv_se/>\n"
"Language: sv_se\n"
@@ -12,7 +12,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 5.1\n"
+"X-Generator: Weblate 5.3\n"
msgctxt "#0"
msgid "Programs"
@@ -14756,7 +14756,7 @@ msgstr "Spelupplevelse"
# empty string with id 35202
msgctxt "#35203"
msgid "Enable rewind (if supported)"
-msgstr ""
+msgstr "Aktivera återspolning (om detta stöds)"
msgctxt "#35204"
msgid "Enable real-time rewinding during game play, if supported. Press rewind or manually seek backwards using the seek bar."
@@ -14923,7 +14923,7 @@ msgstr "I denna utgåva kan endast spelkontroller användas för att spela spel.
#. Button to open the savestate manager from the game OSD
msgctxt "#35249"
msgid "Save / Load"
-msgstr ""
+msgstr "Spara /Ladda"
msgctxt "#35250"
msgid "Add games..."
@@ -14939,7 +14939,7 @@ msgstr "Redigera spelkälla"
msgctxt "#35253"
msgid "Enable autosave (if supported)"
-msgstr ""
+msgstr "Tillämpa autospara, om möjligt"
msgctxt "#35254"
msgid "Save the game automatically during game play, if supported. Resume playing where you left off."
@@ -14948,7 +14948,7 @@ msgstr "Spara spelet automatiskt under spelandet, om det stöds. Fortsätt spela
#. Label for showing which emulator the game was saved with
msgctxt "#35255"
msgid "Saved with:"
-msgstr ""
+msgstr "Spara med:"
#. Error message when a game client fails to install when a game is being launched
msgctxt "#35256"
@@ -14983,12 +14983,12 @@ msgstr "Ny"
#. Help text for RetroAchievements username input setting
msgctxt "#35262"
msgid "Enter your RetroAchievements account username"
-msgstr ""
+msgstr "Ange användarnamn för ditt RetroAchievements-konto"
#. Help text for RetroAchievements password input setting
msgctxt "#35263"
msgid "Enter your RetroAchievements account password"
-msgstr ""
+msgstr "Ange lösenord för ditt RetroAchievements-konto"
#. Label for notification events regarding RetroAchievements login
msgctxt "#35264"
@@ -15711,7 +15711,7 @@ msgstr "Denna kategori innehåller inställningar för hur undertexter hanteras.
#. Description of setting with label #14089 "Font"
msgctxt "#36185"
msgid "Set the font type to be used for subtitles."
-msgstr ""
+msgstr "Ställ in vilket typsnitt som ska användas för undertexter."
#. Description of setting with label #289 "Size"
msgctxt "#36186"
diff --git a/repo-resources-embedded/resource.language.uk_ua/addon.xml b/repo-resources-embedded/resource.language.uk_ua/addon.xml
index f5088b6..5267164 100644
--- a/repo-resources-embedded/resource.language.uk_ua/addon.xml
+++ b/repo-resources-embedded/resource.language.uk_ua/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon
id="resource.language.uk_ua"
- version="10.0.54"
+ version="10.0.55"
name="Ukrainian"
provider-name="Team Kodi">
<requires>
diff --git a/repo-resources-embedded/resource.language.uk_ua/resources/strings.po b/repo-resources-embedded/resource.language.uk_ua/resources/strings.po
index 131b9fe..003c211 100644
--- a/repo-resources-embedded/resource.language.uk_ua/resources/strings.po
+++ b/repo-resources-embedded/resource.language.uk_ua/resources/strings.po
@@ -4,7 +4,7 @@ msgstr ""
"Project-Id-Version: KODI Main\n"
"Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n"
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"PO-Revision-Date: 2023-10-29 12:06+0000\n"
+"PO-Revision-Date: 2024-01-16 02:57+0000\n"
"Last-Translator: Christian Gade <gade@kodi.tv>\n"
"Language-Team: Ukrainian <https://kodi.weblate.cloud/projects/kodi-core/kodi-main-nexus/uk_ua/>\n"
"Language: uk_ua\n"
@@ -12,7 +12,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 5.1\n"
+"X-Generator: Weblate 5.3\n"
msgctxt "#0"
msgid "Programs"
@@ -18747,7 +18747,7 @@ msgstr ""
#. Subtitle border colour setting
msgctxt "#39160"
msgid "Border colour"
-msgstr ""
+msgstr "Колір рамки субтитрів"
#. CC Subtitles text alignment setting list
msgctxt "#39161"
@@ -18812,7 +18812,7 @@ msgstr ""
#. Subtitle blur setting
msgctxt "#39173"
msgid "Blur"
-msgstr ""
+msgstr "Блюр"
#. SystemInfo string for the display's supported HDR types
msgctxt "#39174"
diff --git a/repo-resources-embedded/resource.language.vi_vn/addon.xml b/repo-resources-embedded/resource.language.vi_vn/addon.xml
index e29694e..f73b6c5 100644
--- a/repo-resources-embedded/resource.language.vi_vn/addon.xml
+++ b/repo-resources-embedded/resource.language.vi_vn/addon.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon
id="resource.language.vi_vn"
- version="10.0.52"
+ version="10.0.53"
name="Vietnamese"
provider-name="Team Kodi">
<requires>
diff --git a/repo-resources-embedded/resource.language.vi_vn/resources/strings.po b/repo-resources-embedded/resource.language.vi_vn/resources/strings.po
index 4db2aaa..bde3897 100644
--- a/repo-resources-embedded/resource.language.vi_vn/resources/strings.po
+++ b/repo-resources-embedded/resource.language.vi_vn/resources/strings.po
@@ -4,7 +4,7 @@ msgstr ""
"Project-Id-Version: KODI Main\n"
"Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n"
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"PO-Revision-Date: 2023-11-21 12:11+0000\n"
+"PO-Revision-Date: 2024-01-23 10:13+0000\n"
"Last-Translator: Christian Gade <gade@kodi.tv>\n"
"Language-Team: Vietnamese <https://kodi.weblate.cloud/projects/kodi-core/kodi-main-nexus/vi_vn/>\n"
"Language: vi_vn\n"
@@ -12,7 +12,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 5.1\n"
+"X-Generator: Weblate 5.3\n"
msgctxt "#0"
msgid "Programs"
@@ -8471,7 +8471,7 @@ msgstr "Đang làm sạch dữ liệu."
#. message box text for epg data reset confirmation
msgctxt "#19188"
msgid "All guide data will be cleared. Are you sure?"
-msgstr "Tất cả dữ liệu hướng dẫn sẽ bị xóa. Bạn có chắc không?"
+msgstr "Tất cả dữ liệu hướng dẫn sẽ bị xóa. Bạn có chắc không?"
#. message box text stating that the PVR backend forbids to record a given epg event.
msgctxt "#19189"
diff --git a/tools/Linux/kodi.metainfo.xml.in b/tools/Linux/kodi.metainfo.xml.in
index 998c631..efce2ad 100644
--- a/tools/Linux/kodi.metainfo.xml.in
+++ b/tools/Linux/kodi.metainfo.xml.in
@@ -78,6 +78,7 @@
</screenshot>
</screenshots>
<releases>
+ <release date="2024-03-02" version="20.5-Nexus" type="stable"><url>https://kodi.tv/article/kodi-20-5-nexus-release/</url></release>
<release date="2024-02-10" version="20.4-Nexus" type="stable"><url>https://kodi.tv/article/kodi-20-4-nexus-release/</url></release>
<release date="2024-01-09" version="20.3-Nexus" type="stable"><url>https://kodi.tv/article/kodi-20-3-nexus-release/</url></release>
<release date="2023-06-29" version="20.2-Nexus" type="stable"><url>https://kodi.tv/article/kodi-20-2-nexus-release/</url></release>
@@ -134,4 +135,8 @@
<control>gamepad</control>
<control>tablet</control>
</recommends>
+ <branding>
+ <color type="primary" scheme_preference="light">#E8F8FF</color>
+ <color type="primary" scheme_preference="dark">#082838</color>
+ </branding>
</component>
diff --git a/version.txt b/version.txt
index 232a539..01d4f6a 100644
--- a/version.txt
+++ b/version.txt
@@ -3,10 +3,10 @@ COMPANY_NAME XBMC Foundation
COPYRIGHT_YEARS 2005-2021
WEBSITE http://kodi.tv
VERSION_MAJOR 20
-VERSION_MINOR 4
+VERSION_MINOR 5
VERSION_TAG
-VERSION_CODE 20.4.0
-ADDON_API 20.4.0
+VERSION_CODE 20.5.0
+ADDON_API 20.5.0
ADDON_REPOS repository.xbmc.org|https://mirrors.kodi.tv
APP_PACKAGE org.xbmc.kodi
PACKAGE_IDENTITY XBMCFoundation.Kodi
diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.cpp
index a7fb55c..247ad52 100644
--- a/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.cpp
+++ b/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.cpp
@@ -11,7 +11,9 @@
#include "ServiceBroker.h"
#include "cores/AudioEngine/AESinkFactory.h"
#include "cores/AudioEngine/Utils/AEUtil.h"
+#include "settings/AdvancedSettings.h"
#include "settings/Settings.h"
+#include "settings/SettingsComponent.h"
#include "utils/StringUtils.h"
#include "utils/TimeUtils.h"
#include "utils/log.h"
@@ -421,6 +423,9 @@ bool CAESinkAUDIOTRACK::Initialize(AEAudioFormat &format, std::string &device)
}
}
+ m_superviseAudioDelay =
+ CServiceBroker::GetSettingsComponent()->GetAdvancedSettings()->m_superviseAudioDelay;
+
int atChannelMask = AEChannelMapToAUDIOTRACKChannelMask(m_format.m_channelLayout);
m_format.m_channelLayout = AUDIOTRACKChannelMaskToAEChannelMap(atChannelMask);
if (m_encoding == CJNIAudioFormat::ENCODING_IEC61937)
@@ -848,7 +853,7 @@ unsigned int CAESinkAUDIOTRACK::AddPackets(uint8_t **data, unsigned int frames,
const double max_stuck_delay_ms = m_audiotrackbuffer_sec_orig * 2000.0;
const double stime_ms = 1000.0 * frames / m_format.m_sampleRate;
- if (m_stuckCounter * stime_ms > max_stuck_delay_ms)
+ if (m_superviseAudioDelay && (m_stuckCounter * stime_ms > max_stuck_delay_ms))
{
CLog::Log(LOGERROR, "Sink got stuck with {:f} ms - ask AE for reopening", max_stuck_delay_ms);
usleep(max_stuck_delay_ms * 1000);
diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.h b/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.h
index 6e9ec76..c1d7360 100644
--- a/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.h
+++ b/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.h
@@ -96,6 +96,7 @@ private:
double m_hw_delay = 0.0;
CJNIAudioTimestamp m_timestamp;
XbmcThreads::EndTime<> m_stampTimer;
+ bool m_superviseAudioDelay = false;
std::vector<float> m_floatbuf;
std::vector<int16_t> m_shortbuf;
diff --git a/xbmc/games/controllers/CMakeLists.txt b/xbmc/games/controllers/CMakeLists.txt
index b54f5c0..b00e1ca 100644
--- a/xbmc/games/controllers/CMakeLists.txt
+++ b/xbmc/games/controllers/CMakeLists.txt
@@ -1,9 +1,7 @@
set(SOURCES Controller.cpp
ControllerLayout.cpp
ControllerManager.cpp
- ControllerTranslator.cpp
- DefaultController.cpp
-)
+ ControllerTranslator.cpp)
set(HEADERS Controller.h
ControllerDefinitions.h
@@ -11,8 +9,6 @@ set(HEADERS Controller.h
ControllerLayout.h
ControllerManager.h
ControllerTranslator.h
- ControllerTypes.h
- DefaultController.h
-)
+ ControllerTypes.h)
core_add_library(games_controller)
diff --git a/xbmc/games/controllers/DefaultController.cpp b/xbmc/games/controllers/DefaultController.cpp
deleted file mode 100644
index 58bb464..0000000
--- a/xbmc/games/controllers/DefaultController.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2024 Team Kodi
- * This file is part of Kodi - https://kodi.tv
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- * See LICENSES/README.md for more information.
- */
-
-#include "DefaultController.h"
-
-using namespace KODI;
-using namespace GAME;
-
-const char* CDefaultController::FEATURE_A = "a";
-const char* CDefaultController::FEATURE_B = "b";
-const char* CDefaultController::FEATURE_X = "x";
-const char* CDefaultController::FEATURE_Y = "y";
-const char* CDefaultController::FEATURE_START = "start";
-const char* CDefaultController::FEATURE_BACK = "back";
-const char* CDefaultController::FEATURE_GUIDE = "guide";
-const char* CDefaultController::FEATURE_UP = "up";
-const char* CDefaultController::FEATURE_RIGHT = "right";
-const char* CDefaultController::FEATURE_DOWN = "down";
-const char* CDefaultController::FEATURE_LEFT = "left";
-const char* CDefaultController::FEATURE_LEFT_THUMB = "leftthumb";
-const char* CDefaultController::FEATURE_RIGHT_THUMB = "rightthumb";
-const char* CDefaultController::FEATURE_LEFT_BUMPER = "leftbumper";
-const char* CDefaultController::FEATURE_RIGHT_BUMPER = "rightbumper";
-const char* CDefaultController::FEATURE_LEFT_TRIGGER = "lefttrigger";
-const char* CDefaultController::FEATURE_RIGHT_TRIGGER = "righttrigger";
-const char* CDefaultController::FEATURE_LEFT_STICK = "leftstick";
-const char* CDefaultController::FEATURE_RIGHT_STICK = "rightstick";
-const char* CDefaultController::FEATURE_LEFT_MOTOR = "leftmotor";
-const char* CDefaultController::FEATURE_RIGHT_MOTOR = "rightmotor";
diff --git a/xbmc/games/controllers/DefaultController.h b/xbmc/games/controllers/DefaultController.h
deleted file mode 100644
index f82ce49..0000000
--- a/xbmc/games/controllers/DefaultController.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2024 Team Kodi
- * This file is part of Kodi - https://kodi.tv
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- * See LICENSES/README.md for more information.
- */
-
-#pragma once
-
-namespace KODI
-{
-namespace GAME
-{
-class CDefaultController
-{
-public:
- // Face buttons
- static const char* FEATURE_A;
- static const char* FEATURE_B;
- static const char* FEATURE_X;
- static const char* FEATURE_Y;
- static const char* FEATURE_START;
- static const char* FEATURE_BACK;
- static const char* FEATURE_GUIDE;
- static const char* FEATURE_UP;
- static const char* FEATURE_RIGHT;
- static const char* FEATURE_DOWN;
- static const char* FEATURE_LEFT;
- static const char* FEATURE_LEFT_THUMB;
- static const char* FEATURE_RIGHT_THUMB;
-
- // Shoulder buttons
- static const char* FEATURE_LEFT_BUMPER;
- static const char* FEATURE_RIGHT_BUMPER;
-
- // Triggers
- static const char* FEATURE_LEFT_TRIGGER;
- static const char* FEATURE_RIGHT_TRIGGER;
-
- // Analog sticks
- static const char* FEATURE_LEFT_STICK;
- static const char* FEATURE_RIGHT_STICK;
-
- // Haptics
- static const char* FEATURE_LEFT_MOTOR;
- static const char* FEATURE_RIGHT_MOTOR;
-};
-} // namespace GAME
-} // namespace KODI
diff --git a/xbmc/games/controllers/windows/GUIConfigurationWizard.cpp b/xbmc/games/controllers/windows/GUIConfigurationWizard.cpp
index c2ac2f5..ff5f8d8 100644
--- a/xbmc/games/controllers/windows/GUIConfigurationWizard.cpp
+++ b/xbmc/games/controllers/windows/GUIConfigurationWizard.cpp
@@ -290,8 +290,8 @@ bool CGUIConfigurationWizard::MapPrimitive(JOYSTICK::IButtonMap* buttonMap,
}
else
{
- CLog::Log(LOGDEBUG, "{}: mapping feature \"{}\" for device {} to \"{}\"",
- m_strControllerId, feature.Name(), buttonMap->Location(), primitive.ToString());
+ CLog::Log(LOGDEBUG, "{}: mapping feature \"{}\" for device {}", m_strControllerId,
+ feature.Name(), buttonMap->Location());
switch (feature.Type())
{
diff --git a/xbmc/input/joysticks/DriverPrimitive.cpp b/xbmc/input/joysticks/DriverPrimitive.cpp
index 166e926..9540dfd 100644
--- a/xbmc/input/joysticks/DriverPrimitive.cpp
+++ b/xbmc/input/joysticks/DriverPrimitive.cpp
@@ -8,9 +8,6 @@
#include "DriverPrimitive.h"
-#include "games/controllers/ControllerTranslator.h"
-#include "utils/StringUtils.h"
-
#include <utility>
using namespace KODI;
@@ -202,70 +199,3 @@ bool CDriverPrimitive::IsValid(void) const
return false;
}
-
-std::string CDriverPrimitive::ToString() const
-{
- switch (m_type)
- {
- case PRIMITIVE_TYPE::BUTTON:
- return StringUtils::Format("button {}", m_driverIndex);
- case PRIMITIVE_TYPE::MOTOR:
- return StringUtils::Format("motor {}", m_driverIndex);
- case PRIMITIVE_TYPE::MOUSE_BUTTON:
- return StringUtils::Format("mouse button {}", m_driverIndex);
- case PRIMITIVE_TYPE::HAT:
- {
- switch (m_hatDirection)
- {
- case HAT_DIRECTION::UP:
- return StringUtils::Format("hat {} up", m_driverIndex);
- case HAT_DIRECTION::DOWN:
- return StringUtils::Format("hat {} down", m_driverIndex);
- case HAT_DIRECTION::RIGHT:
- return StringUtils::Format("hat {} right", m_driverIndex);
- case HAT_DIRECTION::LEFT:
- return StringUtils::Format("hat {} left", m_driverIndex);
- default:
- break;
- }
- break;
- }
- case PRIMITIVE_TYPE::SEMIAXIS:
- {
- switch (m_semiAxisDirection)
- {
- case SEMIAXIS_DIRECTION::POSITIVE:
- return StringUtils::Format("semiaxis +{}", m_driverIndex);
- case SEMIAXIS_DIRECTION::NEGATIVE:
- return StringUtils::Format("semiaxis -{}", m_driverIndex);
- default:
- break;
- }
- break;
- }
- case PRIMITIVE_TYPE::KEY:
- return StringUtils::Format("key {}",
- GAME::CControllerTranslator::TranslateKeycode(m_keycode));
- case PRIMITIVE_TYPE::RELATIVE_POINTER:
- {
- switch (m_pointerDirection)
- {
- case RELATIVE_POINTER_DIRECTION::UP:
- return StringUtils::Format("pointer {} up", m_driverIndex);
- case RELATIVE_POINTER_DIRECTION::DOWN:
- return StringUtils::Format("pointer {} down", m_driverIndex);
- case RELATIVE_POINTER_DIRECTION::RIGHT:
- return StringUtils::Format("pointer {} right", m_driverIndex);
- case RELATIVE_POINTER_DIRECTION::LEFT:
- return StringUtils::Format("pointer {} left", m_driverIndex);
- default:
- break;
- }
- break;
- }
- default:
- break;
- }
-
- return "";
-}
diff --git a/xbmc/input/joysticks/DriverPrimitive.h b/xbmc/input/joysticks/DriverPrimitive.h
index 11d391b..abe3724 100644
--- a/xbmc/input/joysticks/DriverPrimitive.h
+++ b/xbmc/input/joysticks/DriverPrimitive.h
@@ -179,13 +179,6 @@ public:
*/
bool IsValid(void) const;
- /*!
- * \brief Convert primitive to a string suitable for logging
- *
- * \return The primitive as described by a short string, or empty if invalid
- */
- std::string ToString() const;
-
private:
PRIMITIVE_TYPE m_type = PRIMITIVE_TYPE::UNKNOWN;
unsigned int m_driverIndex = 0;
diff --git a/xbmc/input/joysticks/JoystickEasterEgg.cpp b/xbmc/input/joysticks/JoystickEasterEgg.cpp
index b0259a6..0c63e66 100644
--- a/xbmc/input/joysticks/JoystickEasterEgg.cpp
+++ b/xbmc/input/joysticks/JoystickEasterEgg.cpp
@@ -12,7 +12,6 @@
#include "games/GameServices.h"
#include "games/GameSettings.h"
#include "games/controllers/ControllerIDs.h"
-#include "games/controllers/DefaultController.h"
#include "guilib/GUIAudioManager.h"
#include "guilib/WindowIDs.h"
@@ -23,16 +22,16 @@ const std::map<std::string, std::vector<FeatureName>> CJoystickEasterEgg::m_sequ
{
DEFAULT_CONTROLLER_ID,
{
- GAME::CDefaultController::FEATURE_UP,
- GAME::CDefaultController::FEATURE_UP,
- GAME::CDefaultController::FEATURE_DOWN,
- GAME::CDefaultController::FEATURE_DOWN,
- GAME::CDefaultController::FEATURE_LEFT,
- GAME::CDefaultController::FEATURE_RIGHT,
- GAME::CDefaultController::FEATURE_LEFT,
- GAME::CDefaultController::FEATURE_RIGHT,
- GAME::CDefaultController::FEATURE_B,
- GAME::CDefaultController::FEATURE_A,
+ "up",
+ "up",
+ "down",
+ "down",
+ "left",
+ "right",
+ "left",
+ "right",
+ "b",
+ "a",
},
},
{
diff --git a/xbmc/input/joysticks/generic/ButtonMapping.cpp b/xbmc/input/joysticks/generic/ButtonMapping.cpp
index 665a233..af6bf86 100644
--- a/xbmc/input/joysticks/generic/ButtonMapping.cpp
+++ b/xbmc/input/joysticks/generic/ButtonMapping.cpp
@@ -454,34 +454,31 @@ bool CButtonMapping::MapPrimitive(const CDriverPrimitive& primitive)
{
bool bHandled = false;
- if (m_buttonMap->IsIgnored(primitive))
+ auto now = std::chrono::steady_clock::now();
+
+ bool bTimeoutElapsed = true;
+
+ if (m_buttonMapper->NeedsCooldown())
+ bTimeoutElapsed = (now >= m_lastAction + std::chrono::milliseconds(MAPPING_COOLDOWN_MS));
+
+ if (bTimeoutElapsed)
+ {
+ bHandled = m_buttonMapper->MapPrimitive(m_buttonMap, m_keymap, primitive);
+
+ if (bHandled)
+ m_lastAction = std::chrono::steady_clock::now();
+ }
+ else if (m_buttonMap->IsIgnored(primitive))
{
bHandled = true;
}
else
{
- auto now = std::chrono::steady_clock::now();
-
- bool bTimeoutElapsed = true;
-
- if (m_buttonMapper->NeedsCooldown())
- bTimeoutElapsed = (now >= m_lastAction + std::chrono::milliseconds(MAPPING_COOLDOWN_MS));
+ auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(now - m_lastAction);
- if (bTimeoutElapsed)
- {
- bHandled = m_buttonMapper->MapPrimitive(m_buttonMap, m_keymap, primitive);
-
- if (bHandled)
- m_lastAction = std::chrono::steady_clock::now();
- }
- else
- {
- auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(now - m_lastAction);
-
- CLog::Log(LOGDEBUG, "Button mapping: rapid input after {}ms dropped for profile \"{}\"",
- duration.count(), m_buttonMapper->ControllerID());
- bHandled = true;
- }
+ CLog::Log(LOGDEBUG, "Button mapping: rapid input after {}ms dropped for profile \"{}\"",
+ duration.count(), m_buttonMapper->ControllerID());
+ bHandled = true;
}
return bHandled;
diff --git a/xbmc/music/tags/TagLibVFSStream.cpp b/xbmc/music/tags/TagLibVFSStream.cpp
index 1d2b454..c5f9c24 100644
--- a/xbmc/music/tags/TagLibVFSStream.cpp
+++ b/xbmc/music/tags/TagLibVFSStream.cpp
@@ -11,6 +11,7 @@
#include <limits.h>
+#include <taglib/taglib.h>
#include <taglib/tiostream.h>
using namespace XFILE;
@@ -57,9 +58,17 @@ FileName TagLibVFSStream::name() const
/*!
* Reads a block of size \a length at the current get pointer.
*/
+#if (TAGLIB_MAJOR_VERSION >= 2)
+ByteVector TagLibVFSStream::readBlock(unsigned long length)
+#else
ByteVector TagLibVFSStream::readBlock(TagLib::ulong length)
+#endif
{
+#if (TAGLIB_MAJOR_VERSION >= 2)
+ ByteVector byteVector(static_cast<unsigned int>(length));
+#else
ByteVector byteVector(static_cast<TagLib::uint>(length));
+#endif
ssize_t read = m_file.Read(byteVector.data(), length);
if (read > 0)
byteVector.resize(read);
@@ -90,7 +99,11 @@ void TagLibVFSStream::writeBlock(const ByteVector &data)
* \note This method is slow since it requires rewriting all of the file
* after the insertion point.
*/
+#if (TAGLIB_MAJOR_VERSION >= 2)
+void TagLibVFSStream::insert(const ByteVector& data, TagLib::offset_t start, size_t replace)
+#else
void TagLibVFSStream::insert(const ByteVector &data, TagLib::ulong start, TagLib::ulong replace)
+#endif
{
if (data.size() == replace)
{
@@ -114,7 +127,11 @@ void TagLibVFSStream::insert(const ByteVector &data, TagLib::ulong start, TagLib
// First, make sure that we're working with a buffer that is longer than
// the *difference* in the tag sizes. We want to avoid overwriting parts
// that aren't yet in memory, so this is necessary.
+#if (TAGLIB_MAJOR_VERSION >= 2)
+ unsigned long bufferLength = bufferSize();
+#else
TagLib::ulong bufferLength = bufferSize();
+#endif
while (data.size() - replace > bufferLength)
bufferLength += bufferSize();
@@ -123,7 +140,11 @@ void TagLibVFSStream::insert(const ByteVector &data, TagLib::ulong start, TagLib
long readPosition = start + replace;
long writePosition = start;
ByteVector buffer;
+#if (TAGLIB_MAJOR_VERSION >= 2)
+ ByteVector aboutToOverwrite(static_cast<unsigned int>(bufferLength));
+#else
ByteVector aboutToOverwrite(static_cast<TagLib::uint>(bufferLength));
+#endif
// This is basically a special case of the loop below. Here we're just
// doing the same steps as below, but since we aren't using the same buffer
@@ -158,7 +179,11 @@ void TagLibVFSStream::insert(const ByteVector &data, TagLib::ulong start, TagLib
// Check to see if we just read the last block. We need to call clear()
// if we did so that the last write succeeds.
+#if (TAGLIB_MAJOR_VERSION >= 2)
+ if (static_cast<unsigned long>(bytesRead) < bufferLength)
+#else
if (TagLib::ulong(bytesRead) < bufferLength)
+#endif
clear();
// Seek to the write position and write our buffer. Increment the
@@ -180,16 +205,32 @@ void TagLibVFSStream::insert(const ByteVector &data, TagLib::ulong start, TagLib
* \note This method is slow since it involves rewriting all of the file
* after the removed portion.
*/
+#if (TAGLIB_MAJOR_VERSION >= 2)
+void TagLibVFSStream::removeBlock(TagLib::offset_t start, size_t length)
+#else
void TagLibVFSStream::removeBlock(TagLib::ulong start, TagLib::ulong length)
+#endif
{
+#if (TAGLIB_MAJOR_VERSION >= 2)
+ unsigned long bufferLength = bufferSize();
+#else
TagLib::ulong bufferLength = bufferSize();
+#endif
long readPosition = start + length;
long writePosition = start;
+#if (TAGLIB_MAJOR_VERSION >= 2)
+ ByteVector buffer(static_cast<unsigned int>(bufferLength));
+#else
ByteVector buffer(static_cast<TagLib::uint>(bufferLength));
+#endif
+#if (TAGLIB_MAJOR_VERSION >= 2)
+ unsigned long bytesRead = 1;
+#else
TagLib::ulong bytesRead = 1;
+#endif
while(bytesRead != 0)
{
@@ -198,7 +239,11 @@ void TagLibVFSStream::removeBlock(TagLib::ulong start, TagLib::ulong length)
if (read < 0)
return;// explicit error
+#if (TAGLIB_MAJOR_VERSION >= 2)
+ bytesRead = static_cast<unsigned long>(read);
+#else
bytesRead = static_cast<TagLib::ulong>(read);
+#endif
readPosition += bytesRead;
// Check to see if we just read the last block. We need to call clear()
diff --git a/xbmc/music/tags/TagLibVFSStream.h b/xbmc/music/tags/TagLibVFSStream.h
index d567055..2302c04 100644
--- a/xbmc/music/tags/TagLibVFSStream.h
+++ b/xbmc/music/tags/TagLibVFSStream.h
@@ -10,6 +10,7 @@
#include "filesystem/File.h"
+#include <taglib/taglib.h>
#include <taglib/tiostream.h>
namespace MUSIC_INFO
@@ -36,7 +37,11 @@ namespace MUSIC_INFO
/*!
* Reads a block of size \a length at the current get pointer.
*/
+#if (TAGLIB_MAJOR_VERSION >= 2)
+ TagLib::ByteVector readBlock(unsigned long length) override;
+#else
TagLib::ByteVector readBlock(TagLib::ulong length) override;
+#endif
/*!
* Attempts to write the block \a data at the current get pointer. If the
@@ -56,7 +61,13 @@ namespace MUSIC_INFO
* \note This method is slow since it requires rewriting all of the file
* after the insertion point.
*/
+#if (TAGLIB_MAJOR_VERSION >= 2)
+ void insert(const TagLib::ByteVector& data,
+ TagLib::offset_t start = 0,
+ size_t replace = 0) override;
+#else
void insert(const TagLib::ByteVector &data, TagLib::ulong start = 0, TagLib::ulong replace = 0) override;
+#endif
/*!
* Removes a block of the file starting a \a start and continuing for
@@ -65,7 +76,11 @@ namespace MUSIC_INFO
* \note This method is slow since it involves rewriting all of the file
* after the removed portion.
*/
+#if (TAGLIB_MAJOR_VERSION >= 2)
+ void removeBlock(TagLib::offset_t start = 0, size_t length = 0) override;
+#else
void removeBlock(TagLib::ulong start = 0, TagLib::ulong length = 0) override;
+#endif
/*!
* Returns true if the file is read only (or if the file can not be opened).
@@ -110,7 +125,11 @@ namespace MUSIC_INFO
/*!
* Returns the buffer size that is used for internal buffering.
*/
+#if (TAGLIB_MAJOR_VERSION >= 2)
+ static unsigned int bufferSize() { return 1024; }
+#else
static TagLib::uint bufferSize() { return 1024; }
+#endif
private:
std::string m_strFileName;
diff --git a/xbmc/music/tags/TagLoaderTagLib.cpp b/xbmc/music/tags/TagLoaderTagLib.cpp
index 6eb591a..f4f6760 100644
--- a/xbmc/music/tags/TagLoaderTagLib.cpp
+++ b/xbmc/music/tags/TagLoaderTagLib.cpp
@@ -472,7 +472,11 @@ bool CTagLoaderTagLib::ParseTag(ID3v2::Tag *id3v2, EmbeddedArt *art, MUSIC_INFO:
if (picture)
{
std::string mime = picture->mimeType().to8Bit(true);
+#if (TAGLIB_MAJOR_VERSION >= 2)
+ unsigned int size = picture->picture().size();
+#else
TagLib::uint size = picture->picture().size();
+#endif
tag.SetCoverArtInfo(size, mime);
if (art)
art->Set(reinterpret_cast<const uint8_t*>(picture->picture().data()), size, mime);
@@ -500,19 +504,19 @@ bool CTagLoaderTagLib::ParseTag(APE::Tag *ape, EmbeddedArt *art, CMusicInfoTag&
for (APE::ItemListMap::ConstIterator it = itemListMap.begin(); it != itemListMap.end(); ++it)
{
if (it->first == "ARTIST")
- SetArtist(tag, StringListToVectorString(it->second.toStringList()));
+ SetArtist(tag, StringListToVectorString(it->second.values()));
else if (it->first == "ARTISTSORT")
- SetArtistSort(tag, StringListToVectorString(it->second.toStringList()));
+ SetArtistSort(tag, StringListToVectorString(it->second.values()));
else if (it->first == "ARTISTS")
- SetArtistHints(tag, StringListToVectorString(it->second.toStringList()));
+ SetArtistHints(tag, StringListToVectorString(it->second.values()));
else if (it->first == "ALBUMARTIST" || it->first == "ALBUM ARTIST")
- SetAlbumArtist(tag, StringListToVectorString(it->second.toStringList()));
+ SetAlbumArtist(tag, StringListToVectorString(it->second.values()));
else if (it->first == "ALBUMARTISTSORT")
- SetAlbumArtistSort(tag, StringListToVectorString(it->second.toStringList()));
+ SetAlbumArtistSort(tag, StringListToVectorString(it->second.values()));
else if (it->first == "ALBUMARTISTS" || it->first == "ALBUM ARTISTS")
- SetAlbumArtistHints(tag, StringListToVectorString(it->second.toStringList()));
+ SetAlbumArtistHints(tag, StringListToVectorString(it->second.values()));
else if (it->first == "COMPOSERSORT")
- SetComposerSort(tag, StringListToVectorString(it->second.toStringList()));
+ SetComposerSort(tag, StringListToVectorString(it->second.values()));
else if (it->first == "ALBUM")
tag.SetAlbum(it->second.toString().to8Bit(true));
else if (it->first == "TITLE")
@@ -528,7 +532,7 @@ bool CTagLoaderTagLib::ParseTag(APE::Tag *ape, EmbeddedArt *art, CMusicInfoTag&
else if (it->first == "ORIGINALYEAR")
tag.SetOriginalDate(it->second.toString().to8Bit(true));
else if (it->first == "GENRE")
- SetGenre(tag, StringListToVectorString(it->second.toStringList()));
+ SetGenre(tag, StringListToVectorString(it->second.values()));
else if (it->first == "MOOD")
tag.SetMood(it->second.toString().to8Bit(true));
else if (it->first == "COMMENT")
@@ -538,32 +542,32 @@ bool CTagLoaderTagLib::ParseTag(APE::Tag *ape, EmbeddedArt *art, CMusicInfoTag&
else if (it->first == "ENCODEDBY")
{}
else if (it->first == "COMPOSER")
- AddArtistRole(tag, "Composer", StringListToVectorString(it->second.toStringList()));
+ AddArtistRole(tag, "Composer", StringListToVectorString(it->second.values()));
else if (it->first == "CONDUCTOR")
- AddArtistRole(tag, "Conductor", StringListToVectorString(it->second.toStringList()));
+ AddArtistRole(tag, "Conductor", StringListToVectorString(it->second.values()));
else if (it->first == "BAND")
- AddArtistRole(tag, "Band", StringListToVectorString(it->second.toStringList()));
+ AddArtistRole(tag, "Band", StringListToVectorString(it->second.values()));
else if (it->first == "ENSEMBLE")
- AddArtistRole(tag, "Ensemble", StringListToVectorString(it->second.toStringList()));
+ AddArtistRole(tag, "Ensemble", StringListToVectorString(it->second.values()));
else if (it->first == "LYRICIST")
- AddArtistRole(tag, "Lyricist", StringListToVectorString(it->second.toStringList()));
+ AddArtistRole(tag, "Lyricist", StringListToVectorString(it->second.values()));
else if (it->first == "WRITER")
- AddArtistRole(tag, "Writer", StringListToVectorString(it->second.toStringList()));
+ AddArtistRole(tag, "Writer", StringListToVectorString(it->second.values()));
else if ((it->first == "MIXARTIST") || (it->first == "REMIXER"))
- AddArtistRole(tag, "Remixer", StringListToVectorString(it->second.toStringList()));
+ AddArtistRole(tag, "Remixer", StringListToVectorString(it->second.values()));
else if (it->first == "ARRANGER")
- AddArtistRole(tag, "Arranger", StringListToVectorString(it->second.toStringList()));
+ AddArtistRole(tag, "Arranger", StringListToVectorString(it->second.values()));
else if (it->first == "ENGINEER")
- AddArtistRole(tag, "Engineer", StringListToVectorString(it->second.toStringList()));
+ AddArtistRole(tag, "Engineer", StringListToVectorString(it->second.values()));
else if (it->first == "PRODUCER")
- AddArtistRole(tag, "Producer", StringListToVectorString(it->second.toStringList()));
+ AddArtistRole(tag, "Producer", StringListToVectorString(it->second.values()));
else if (it->first == "DJMIXER")
- AddArtistRole(tag, "DJMixer", StringListToVectorString(it->second.toStringList()));
+ AddArtistRole(tag, "DJMixer", StringListToVectorString(it->second.values()));
else if (it->first == "MIXER")
- AddArtistRole(tag, "Mixer", StringListToVectorString(it->second.toStringList()));
+ AddArtistRole(tag, "Mixer", StringListToVectorString(it->second.values()));
else if (it->first == "PERFORMER")
// Picard uses PERFORMER tag as musician credits list formatted "name (instrument)"
- AddArtistInstrument(tag, StringListToVectorString(it->second.toStringList()));
+ AddArtistInstrument(tag, StringListToVectorString(it->second.values()));
else if (it->first == "LABEL")
tag.SetRecordLabel(it->second.toString().to8Bit(true));
else if (it->first == "COMPILATION")
@@ -579,11 +583,11 @@ bool CTagLoaderTagLib::ParseTag(APE::Tag *ape, EmbeddedArt *art, CMusicInfoTag&
else if (it->first == "REPLAYGAIN_ALBUM_PEAK")
replayGainInfo.ParsePeak(ReplayGain::ALBUM, it->second.toString().toCString(true));
else if (it->first == "MUSICBRAINZ_ARTISTID")
- tag.SetMusicBrainzArtistID(SplitMBID(StringListToVectorString(it->second.toStringList())));
+ tag.SetMusicBrainzArtistID(SplitMBID(StringListToVectorString(it->second.values())));
else if (it->first == "MUSICBRAINZ_ALBUMARTISTID")
- tag.SetMusicBrainzAlbumArtistID(SplitMBID(StringListToVectorString(it->second.toStringList())));
+ tag.SetMusicBrainzAlbumArtistID(SplitMBID(StringListToVectorString(it->second.values())));
else if (it->first == "MUSICBRAINZ_ALBUMARTIST")
- SetAlbumArtist(tag, StringListToVectorString(it->second.toStringList()));
+ SetAlbumArtist(tag, StringListToVectorString(it->second.values()));
else if (it->first == "MUSICBRAINZ_ALBUMID")
tag.SetMusicBrainzAlbumID(it->second.toString().to8Bit(true));
else if (it->first == "MUSICBRAINZ_RELEASEGROUPID")
@@ -591,7 +595,7 @@ bool CTagLoaderTagLib::ParseTag(APE::Tag *ape, EmbeddedArt *art, CMusicInfoTag&
else if (it->first == "MUSICBRAINZ_TRACKID")
tag.SetMusicBrainzTrackID(it->second.toString().to8Bit(true));
else if (it->first == "MUSICBRAINZ_ALBUMTYPE")
- SetReleaseType(tag, StringListToVectorString(it->second.toStringList()));
+ SetReleaseType(tag, StringListToVectorString(it->second.values()));
else if (it->first == "BPM")
tag.SetBPM(it->second.toString().toInt());
else if (it->first == "MUSICBRAINZ_ALBUMSTATUS")
@@ -789,7 +793,11 @@ bool CTagLoaderTagLib::ParseTag(Ogg::XiphComment *xiph, EmbeddedArt *art, CMusic
std::string mime = pictures[i].mimeType().toCString();
if (mime.compare(0, 6, "image/") != 0)
continue;
+#if (TAGLIB_MAJOR_VERSION >= 2)
+ unsigned int size = pictures[i].data().size();
+#else
TagLib::uint size = pictures[i].data().size();
+#endif
tag.SetCoverArtInfo(size, mime);
if (art)
art->Set(reinterpret_cast<const uint8_t*>(pictures[i].data().data()), size, mime);
diff --git a/xbmc/peripherals/Peripherals.cpp b/xbmc/peripherals/Peripherals.cpp
index c178158..3dc5ca6 100644
--- a/xbmc/peripherals/Peripherals.cpp
+++ b/xbmc/peripherals/Peripherals.cpp
@@ -915,7 +915,7 @@ void CPeripherals::ResetButtonMaps(const std::string& controllerId)
PeripheralAddonPtr addon;
if (addonBus->GetAddonWithButtonMap(peripheral.get(), addon))
{
- CAddonButtonMap buttonMap(peripheral.get(), addon, controllerId, *this);
+ CAddonButtonMap buttonMap(peripheral.get(), addon, controllerId);
buttonMap.Reset();
}
}
diff --git a/xbmc/peripherals/addons/AddonButtonMap.cpp b/xbmc/peripherals/addons/AddonButtonMap.cpp
index 0d76ec9..f2c894c 100644
--- a/xbmc/peripherals/addons/AddonButtonMap.cpp
+++ b/xbmc/peripherals/addons/AddonButtonMap.cpp
@@ -10,7 +10,6 @@
#include "PeripheralAddonTranslator.h"
#include "input/joysticks/JoystickUtils.h"
-#include "peripherals/Peripherals.h"
#include "peripherals/devices/Peripheral.h"
#include "utils/log.h"
@@ -25,9 +24,8 @@ using namespace PERIPHERALS;
CAddonButtonMap::CAddonButtonMap(CPeripheral* device,
const std::weak_ptr<CPeripheralAddon>& addon,
- const std::string& strControllerId,
- CPeripherals& manager)
- : m_device(device), m_addon(addon), m_strControllerId(strControllerId), m_manager(manager)
+ const std::string& strControllerId)
+ : m_device(device), m_addon(addon), m_strControllerId(strControllerId)
{
auto peripheralAddon = m_addon.lock();
assert(peripheralAddon != nullptr);
@@ -60,28 +58,6 @@ bool CAddonButtonMap::Load(void)
bSuccess |= addon->GetIgnoredPrimitives(m_device, ignoredPrimitives);
}
- if (features.empty())
- {
- // Check if we can initialize a buttonmap from the peripheral bus
- PeripheralBusPtr peripheralBus = m_manager.GetBusByType(m_device->GetBusType());
- if (peripheralBus)
- {
- CLog::Log(LOGDEBUG,
- "Buttonmap not found for {}, attempting to initialize from peripheral bus",
- m_device->Location());
- if (peripheralBus->InitializeButtonMap(*m_device, *this))
- {
- bSuccess = true;
-
- if (auto addon = m_addon.lock())
- {
- addon->GetFeatures(m_device, m_strControllerId, features);
- addon->GetIgnoredPrimitives(m_device, ignoredPrimitives);
- }
- }
- }
- }
-
// GetFeatures() was changed to always return false if no features were
// retrieved. Check here, just in case its contract is changed or violated in
// the future.
diff --git a/xbmc/peripherals/addons/AddonButtonMap.h b/xbmc/peripherals/addons/AddonButtonMap.h
index cade54b..b6a629f 100644
--- a/xbmc/peripherals/addons/AddonButtonMap.h
+++ b/xbmc/peripherals/addons/AddonButtonMap.h
@@ -18,15 +18,13 @@
namespace PERIPHERALS
{
class CPeripheral;
-class CPeripherals;
class CAddonButtonMap : public KODI::JOYSTICK::IButtonMap
{
public:
CAddonButtonMap(CPeripheral* device,
const std::weak_ptr<CPeripheralAddon>& addon,
- const std::string& strControllerId,
- CPeripherals& manager);
+ const std::string& strControllerId);
~CAddonButtonMap(void) override;
@@ -132,7 +130,6 @@ private:
CPeripheral* const m_device;
const std::weak_ptr<CPeripheralAddon> m_addon;
const std::string m_strControllerId;
- CPeripherals& m_manager;
// Button map state
std::string m_controllerAppearance;
diff --git a/xbmc/peripherals/addons/AddonButtonMapping.cpp b/xbmc/peripherals/addons/AddonButtonMapping.cpp
index abf981f..af838aa 100644
--- a/xbmc/peripherals/addons/AddonButtonMapping.cpp
+++ b/xbmc/peripherals/addons/AddonButtonMapping.cpp
@@ -31,7 +31,7 @@ CAddonButtonMapping::CAddonButtonMapping(CPeripherals& manager,
else
{
const std::string controllerId = mapper->ControllerID();
- m_buttonMap = std::make_unique<CAddonButtonMap>(peripheral, addon, controllerId, manager);
+ m_buttonMap.reset(new CAddonButtonMap(peripheral, addon, controllerId));
if (m_buttonMap->Load())
{
IKeymap* keymap = peripheral->GetKeymap(controllerId);
diff --git a/xbmc/peripherals/addons/AddonInputHandling.cpp b/xbmc/peripherals/addons/AddonInputHandling.cpp
index 7490b96..644c33e 100644
--- a/xbmc/peripherals/addons/AddonInputHandling.cpp
+++ b/xbmc/peripherals/addons/AddonInputHandling.cpp
@@ -16,8 +16,8 @@
#include "input/keyboard/interfaces/IKeyboardInputHandler.h"
#include "input/mouse/generic/MouseInputHandling.h"
#include "input/mouse/interfaces/IMouseInputHandler.h"
+#include "peripherals/Peripherals.h"
#include "peripherals/addons/AddonButtonMap.h"
-#include "peripherals/devices/Peripheral.h"
#include "utils/log.h"
using namespace KODI;
@@ -26,106 +26,105 @@ using namespace PERIPHERALS;
CAddonInputHandling::CAddonInputHandling(CPeripherals& manager,
CPeripheral* peripheral,
- std::shared_ptr<CPeripheralAddon> addon,
IInputHandler* handler,
IDriverReceiver* receiver)
- : m_manager(manager),
- m_peripheral(peripheral),
- m_addon(std::move(addon)),
- m_joystickInputHandler(handler),
- m_joystickDriverReceiver(receiver)
{
+ PeripheralAddonPtr addon = manager.GetAddonWithButtonMap(peripheral);
+
+ if (!addon)
+ {
+ CLog::Log(LOGDEBUG, "Failed to locate add-on for \"{}\"", peripheral->DeviceName());
+ }
+ else
+ {
+ m_buttonMap.reset(new CAddonButtonMap(peripheral, addon, handler->ControllerID()));
+ if (m_buttonMap->Load())
+ {
+ m_driverHandler.reset(new CInputHandling(handler, m_buttonMap.get()));
+
+ if (receiver)
+ {
+ m_inputReceiver.reset(new CDriverReceiving(receiver, m_buttonMap.get()));
+
+ // Interfaces are connected here because they share button map as a common resource
+ handler->SetInputReceiver(m_inputReceiver.get());
+ }
+ }
+ else
+ {
+ m_buttonMap.reset();
+ }
+ }
}
CAddonInputHandling::CAddonInputHandling(CPeripherals& manager,
CPeripheral* peripheral,
- std::shared_ptr<CPeripheralAddon> addon,
KEYBOARD::IKeyboardInputHandler* handler)
- : m_manager(manager),
- m_peripheral(peripheral),
- m_addon(std::move(addon)),
- m_keyboardInputHandler(handler)
{
+ PeripheralAddonPtr addon = manager.GetAddonWithButtonMap(peripheral);
+
+ if (!addon)
+ {
+ CLog::Log(LOGDEBUG, "Failed to locate add-on for \"{}\"", peripheral->DeviceName());
+ }
+ else
+ {
+ m_buttonMap.reset(new CAddonButtonMap(peripheral, addon, handler->ControllerID()));
+ if (m_buttonMap->Load())
+ {
+ m_keyboardHandler.reset(new KEYBOARD::CKeyboardInputHandling(handler, m_buttonMap.get()));
+ }
+ else
+ {
+ m_buttonMap.reset();
+ }
+ }
}
CAddonInputHandling::CAddonInputHandling(CPeripherals& manager,
CPeripheral* peripheral,
- std::shared_ptr<CPeripheralAddon> addon,
MOUSE::IMouseInputHandler* handler)
- : m_manager(manager),
- m_peripheral(peripheral),
- m_addon(std::move(addon)),
- m_mouseInputHandler(handler)
{
-}
+ PeripheralAddonPtr addon = manager.GetAddonWithButtonMap(peripheral);
-CAddonInputHandling::~CAddonInputHandling(void)
-{
- m_joystickDriverHandler.reset();
- m_joystickInputReceiver.reset();
- m_keyboardDriverHandler.reset();
- m_mouseDriverHandler.reset();
- m_buttonMap.reset();
-}
-
-bool CAddonInputHandling::Load()
-{
- std::string controllerId;
- if (m_joystickInputHandler != nullptr)
- controllerId = m_joystickInputHandler->ControllerID();
- else if (m_keyboardInputHandler != nullptr)
- controllerId = m_keyboardInputHandler->ControllerID();
- else if (m_mouseInputHandler != nullptr)
- controllerId = m_mouseInputHandler->ControllerID();
-
- if (!controllerId.empty())
- m_buttonMap = std::make_unique<CAddonButtonMap>(m_peripheral, m_addon, controllerId, m_manager);
-
- if (m_buttonMap && m_buttonMap->Load())
+ if (!addon)
{
- if (m_joystickInputHandler != nullptr)
- {
- m_joystickDriverHandler =
- std::make_unique<CInputHandling>(m_joystickInputHandler, m_buttonMap.get());
- if (m_joystickDriverReceiver != nullptr)
- {
- m_joystickInputReceiver =
- std::make_unique<CDriverReceiving>(m_joystickDriverReceiver, m_buttonMap.get());
-
- // Interfaces are connected here because they share button map as a common resource
- m_joystickInputHandler->SetInputReceiver(m_joystickInputReceiver.get());
- }
- return true;
- }
- else if (m_keyboardInputHandler != nullptr)
+ CLog::Log(LOGDEBUG, "Failed to locate add-on for \"{}\"", peripheral->DeviceName());
+ }
+ else
+ {
+ m_buttonMap.reset(new CAddonButtonMap(peripheral, addon, handler->ControllerID()));
+ if (m_buttonMap->Load())
{
- m_keyboardDriverHandler = std::make_unique<KEYBOARD::CKeyboardInputHandling>(
- m_keyboardInputHandler, m_buttonMap.get());
- return true;
+ m_mouseHandler.reset(new MOUSE::CMouseInputHandling(handler, m_buttonMap.get()));
}
- else if (m_mouseInputHandler != nullptr)
+ else
{
- m_mouseDriverHandler =
- std::make_unique<MOUSE::CMouseInputHandling>(m_mouseInputHandler, m_buttonMap.get());
- return true;
+ m_buttonMap.reset();
}
}
+}
- return false;
+CAddonInputHandling::~CAddonInputHandling(void)
+{
+ m_driverHandler.reset();
+ m_inputReceiver.reset();
+ m_keyboardHandler.reset();
+ m_buttonMap.reset();
}
bool CAddonInputHandling::OnButtonMotion(unsigned int buttonIndex, bool bPressed)
{
- if (m_joystickDriverHandler)
- return m_joystickDriverHandler->OnButtonMotion(buttonIndex, bPressed);
+ if (m_driverHandler)
+ return m_driverHandler->OnButtonMotion(buttonIndex, bPressed);
return false;
}
bool CAddonInputHandling::OnHatMotion(unsigned int hatIndex, HAT_STATE state)
{
- if (m_joystickDriverHandler)
- return m_joystickDriverHandler->OnHatMotion(hatIndex, state);
+ if (m_driverHandler)
+ return m_driverHandler->OnHatMotion(hatIndex, state);
return false;
}
@@ -135,58 +134,58 @@ bool CAddonInputHandling::OnAxisMotion(unsigned int axisIndex,
int center,
unsigned int range)
{
- if (m_joystickDriverHandler)
- return m_joystickDriverHandler->OnAxisMotion(axisIndex, position, center, range);
+ if (m_driverHandler)
+ return m_driverHandler->OnAxisMotion(axisIndex, position, center, range);
return false;
}
void CAddonInputHandling::OnInputFrame(void)
{
- if (m_joystickDriverHandler)
- m_joystickDriverHandler->OnInputFrame();
+ if (m_driverHandler)
+ m_driverHandler->OnInputFrame();
}
bool CAddonInputHandling::OnKeyPress(const CKey& key)
{
- if (m_keyboardDriverHandler)
- return m_keyboardDriverHandler->OnKeyPress(key);
+ if (m_keyboardHandler)
+ return m_keyboardHandler->OnKeyPress(key);
return false;
}
void CAddonInputHandling::OnKeyRelease(const CKey& key)
{
- if (m_keyboardDriverHandler)
- m_keyboardDriverHandler->OnKeyRelease(key);
+ if (m_keyboardHandler)
+ m_keyboardHandler->OnKeyRelease(key);
}
bool CAddonInputHandling::OnPosition(int x, int y)
{
- if (m_mouseDriverHandler)
- return m_mouseDriverHandler->OnPosition(x, y);
+ if (m_mouseHandler)
+ return m_mouseHandler->OnPosition(x, y);
return false;
}
bool CAddonInputHandling::OnButtonPress(MOUSE::BUTTON_ID button)
{
- if (m_mouseDriverHandler)
- return m_mouseDriverHandler->OnButtonPress(button);
+ if (m_mouseHandler)
+ return m_mouseHandler->OnButtonPress(button);
return false;
}
void CAddonInputHandling::OnButtonRelease(MOUSE::BUTTON_ID button)
{
- if (m_mouseDriverHandler)
- m_mouseDriverHandler->OnButtonRelease(button);
+ if (m_mouseHandler)
+ m_mouseHandler->OnButtonRelease(button);
}
bool CAddonInputHandling::SetRumbleState(const JOYSTICK::FeatureName& feature, float magnitude)
{
- if (m_joystickInputReceiver)
- return m_joystickInputReceiver->SetRumbleState(feature, magnitude);
+ if (m_inputReceiver)
+ return m_inputReceiver->SetRumbleState(feature, magnitude);
return false;
}
diff --git a/xbmc/peripherals/addons/AddonInputHandling.h b/xbmc/peripherals/addons/AddonInputHandling.h
index 295e6d4..2a59162 100644
--- a/xbmc/peripherals/addons/AddonInputHandling.h
+++ b/xbmc/peripherals/addons/AddonInputHandling.h
@@ -39,7 +39,6 @@ namespace PERIPHERALS
{
class CPeripheral;
class CPeripherals;
-class CPeripheralAddon;
class CAddonInputHandling : public KODI::JOYSTICK::IDriverHandler,
public KODI::JOYSTICK::IInputReceiver,
@@ -49,24 +48,19 @@ class CAddonInputHandling : public KODI::JOYSTICK::IDriverHandler,
public:
CAddonInputHandling(CPeripherals& manager,
CPeripheral* peripheral,
- std::shared_ptr<CPeripheralAddon> addon,
KODI::JOYSTICK::IInputHandler* handler,
KODI::JOYSTICK::IDriverReceiver* receiver);
CAddonInputHandling(CPeripherals& manager,
CPeripheral* peripheral,
- std::shared_ptr<CPeripheralAddon> addon,
KODI::KEYBOARD::IKeyboardInputHandler* handler);
CAddonInputHandling(CPeripherals& manager,
CPeripheral* peripheral,
- std::shared_ptr<CPeripheralAddon> addon,
KODI::MOUSE::IMouseInputHandler* handler);
~CAddonInputHandling(void) override;
- bool Load();
-
// implementation of IDriverHandler
bool OnButtonMotion(unsigned int buttonIndex, bool bPressed) override;
bool OnHatMotion(unsigned int hatIndex, KODI::JOYSTICK::HAT_STATE state) override;
@@ -89,20 +83,10 @@ public:
bool SetRumbleState(const KODI::JOYSTICK::FeatureName& feature, float magnitude) override;
private:
- // Construction parameters
- CPeripherals& m_manager;
- CPeripheral* const m_peripheral;
- const std::shared_ptr<CPeripheralAddon> m_addon;
- KODI::JOYSTICK::IInputHandler* const m_joystickInputHandler{nullptr};
- KODI::JOYSTICK::IDriverReceiver* const m_joystickDriverReceiver{nullptr};
- KODI::KEYBOARD::IKeyboardInputHandler* m_keyboardInputHandler{nullptr};
- KODI::MOUSE::IMouseInputHandler* const m_mouseInputHandler{nullptr};
-
- // Input parameters
- std::unique_ptr<KODI::JOYSTICK::IDriverHandler> m_joystickDriverHandler;
- std::unique_ptr<KODI::JOYSTICK::IInputReceiver> m_joystickInputReceiver;
- std::unique_ptr<KODI::KEYBOARD::IKeyboardDriverHandler> m_keyboardDriverHandler;
- std::unique_ptr<KODI::MOUSE::IMouseDriverHandler> m_mouseDriverHandler;
+ std::unique_ptr<KODI::JOYSTICK::IDriverHandler> m_driverHandler;
+ std::unique_ptr<KODI::JOYSTICK::IInputReceiver> m_inputReceiver;
+ std::unique_ptr<KODI::KEYBOARD::IKeyboardDriverHandler> m_keyboardHandler;
+ std::unique_ptr<KODI::MOUSE::IMouseDriverHandler> m_mouseHandler;
std::unique_ptr<KODI::JOYSTICK::IButtonMap> m_buttonMap;
};
} // namespace PERIPHERALS
diff --git a/xbmc/peripherals/bus/PeripheralBus.h b/xbmc/peripherals/bus/PeripheralBus.h
index 6b67a7f..c23abff 100644
--- a/xbmc/peripherals/bus/PeripheralBus.h
+++ b/xbmc/peripherals/bus/PeripheralBus.h
@@ -17,14 +17,6 @@
class CFileItemList;
-namespace KODI
-{
-namespace JOYSTICK
-{
-class IButtonMap;
-} // namespace JOYSTICK
-} // namespace KODI
-
namespace PERIPHERALS
{
class CPeripheral;
@@ -66,15 +58,6 @@ public:
virtual bool InitializeProperties(CPeripheral& peripheral);
/*!
- * \brief Initialize a joystick buttonmap, if possible
- */
- virtual bool InitializeButtonMap(const CPeripheral& peripheral,
- KODI::JOYSTICK::IButtonMap& buttonMap) const
- {
- return false;
- }
-
- /*!
* @brief Get the instance of the peripheral at the given location.
* @param strLocation The location.
* @return The peripheral or NULL if it wasn't found.
diff --git a/xbmc/peripherals/devices/Peripheral.cpp b/xbmc/peripherals/devices/Peripheral.cpp
index 6c3f779..2c656a3 100644
--- a/xbmc/peripherals/devices/Peripheral.cpp
+++ b/xbmc/peripherals/devices/Peripheral.cpp
@@ -588,21 +588,10 @@ void CPeripheral::RegisterInputHandler(IInputHandler* handler, bool bPromiscuous
auto it = m_inputHandlers.find(handler);
if (it == m_inputHandlers.end())
{
- PeripheralAddonPtr addon = m_manager.GetAddonWithButtonMap(this);
- if (addon)
- {
- std::unique_ptr<CAddonInputHandling> addonInput = std::make_unique<CAddonInputHandling>(
- m_manager, this, std::move(addon), handler, GetDriverReceiver());
- if (addonInput->Load())
- {
- RegisterJoystickDriverHandler(addonInput.get(), bPromiscuous);
- m_inputHandlers[handler] = std::move(addonInput);
- }
- }
- else
- {
- CLog::Log(LOGDEBUG, "Failed to locate add-on for \"{}\"", m_strLocation);
- }
+ CAddonInputHandling* addonInput =
+ new CAddonInputHandling(m_manager, this, handler, GetDriverReceiver());
+ RegisterJoystickDriverHandler(addonInput, bPromiscuous);
+ m_inputHandlers[handler].reset(addonInput);
}
}
@@ -624,26 +613,10 @@ void CPeripheral::RegisterKeyboardHandler(KEYBOARD::IKeyboardInputHandler* handl
auto it = m_keyboardHandlers.find(handler);
if (it == m_keyboardHandlers.end())
{
- std::unique_ptr<KODI::KEYBOARD::IKeyboardDriverHandler> keyboardDriverHandler;
-
- PeripheralAddonPtr addon = m_manager.GetAddonWithButtonMap(this);
- if (addon)
- {
- std::unique_ptr<CAddonInputHandling> addonInput =
- std::make_unique<CAddonInputHandling>(m_manager, this, std::move(addon), handler);
- if (addonInput->Load())
- keyboardDriverHandler = std::move(addonInput);
- }
- else
- {
- CLog::Log(LOGDEBUG, "Failed to locate add-on for \"{}\"", m_strLocation);
- }
-
- if (keyboardDriverHandler)
- {
- RegisterKeyboardDriverHandler(keyboardDriverHandler.get(), bPromiscuous);
- m_keyboardHandlers[handler] = std::move(keyboardDriverHandler);
- }
+ std::unique_ptr<CAddonInputHandling> addonInput(
+ new CAddonInputHandling(m_manager, this, handler));
+ RegisterKeyboardDriverHandler(addonInput.get(), bPromiscuous);
+ m_keyboardHandlers[handler] = std::move(addonInput);
}
}
@@ -662,26 +635,10 @@ void CPeripheral::RegisterMouseHandler(MOUSE::IMouseInputHandler* handler, bool
auto it = m_mouseHandlers.find(handler);
if (it == m_mouseHandlers.end())
{
- std::unique_ptr<KODI::MOUSE::IMouseDriverHandler> mouseDriverHandler;
-
- PeripheralAddonPtr addon = m_manager.GetAddonWithButtonMap(this);
- if (addon)
- {
- std::unique_ptr<CAddonInputHandling> addonInput =
- std::make_unique<CAddonInputHandling>(m_manager, this, std::move(addon), handler);
- if (addonInput->Load())
- mouseDriverHandler = std::move(addonInput);
- }
- else
- {
- CLog::Log(LOGDEBUG, "Failed to locate add-on for \"{}\"", m_strLocation);
- }
-
- if (mouseDriverHandler)
- {
- RegisterMouseDriverHandler(mouseDriverHandler.get(), bPromiscuous);
- m_mouseHandlers[handler] = std::move(mouseDriverHandler);
- }
+ std::unique_ptr<CAddonInputHandling> addonInput(
+ new CAddonInputHandling(m_manager, this, handler));
+ RegisterMouseDriverHandler(addonInput.get(), bPromiscuous);
+ m_mouseHandlers[handler] = std::move(addonInput);
}
}
diff --git a/xbmc/peripherals/devices/PeripheralJoystick.cpp b/xbmc/peripherals/devices/PeripheralJoystick.cpp
index bccad91..e2087a7 100644
--- a/xbmc/peripherals/devices/PeripheralJoystick.cpp
+++ b/xbmc/peripherals/devices/PeripheralJoystick.cpp
@@ -98,8 +98,7 @@ bool CPeripheralJoystick::InitialiseFeature(const PeripheralFeature feature)
if (bSuccess)
{
- m_buttonMap =
- std::make_unique<CAddonButtonMap>(this, addon, DEFAULT_CONTROLLER_ID, m_manager);
+ m_buttonMap = std::make_unique<CAddonButtonMap>(this, addon, DEFAULT_CONTROLLER_ID);
if (m_buttonMap->Load())
{
InitializeDeadzoneFiltering(*m_buttonMap);
diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp
index 4fd93d0..12c8a9e 100644
--- a/xbmc/settings/AdvancedSettings.cpp
+++ b/xbmc/settings/AdvancedSettings.cpp
@@ -594,6 +594,7 @@ void CAdvancedSettings::ParseSettingsFile(const std::string &file)
XMLUtils::GetFloat(pElement, "limiterrelease", m_limiterRelease, 0.001f, 100.0f);
XMLUtils::GetUInt(pElement, "maxpassthroughoffsyncduration", m_maxPassthroughOffSyncDuration,
10, 100);
+ XMLUtils::GetBoolean(pElement, "superviseaudiodelay", m_superviseAudioDelay);
}
pElement = pRootElement->FirstChildElement("x11");
diff --git a/xbmc/settings/AdvancedSettings.h b/xbmc/settings/AdvancedSettings.h
index 4ba4e7e..0e5c4fc 100644
--- a/xbmc/settings/AdvancedSettings.h
+++ b/xbmc/settings/AdvancedSettings.h
@@ -160,6 +160,7 @@ class CAdvancedSettings : public ISettingCallback, public ISettingsHandler
float m_videoIgnorePercentAtEnd;
float m_audioApplyDrc;
unsigned int m_maxPassthroughOffSyncDuration = 10; // when 10 ms off adjust
+ bool m_superviseAudioDelay = false; // Android only to correct broken audio firmwares
int m_videoVDPAUScaling;
float m_videoNonLinStretchRatio;
diff --git a/xbmc/utils/EGLUtils.cpp b/xbmc/utils/EGLUtils.cpp
index 7c5e709..85f889d 100644
--- a/xbmc/utils/EGLUtils.cpp
+++ b/xbmc/utils/EGLUtils.cpp
@@ -115,7 +115,8 @@ void EglErrorCallback(EGLenum error,
typeStr = eglType->second;
}
- CLog::Log(LOGDEBUG, "EGL Debugging:\nError: {}\nCommand: {}\nType: {}\nMessage: {}", errorStr, command, typeStr, message);
+ CLog::Log(LOGDEBUG, "EGL Debugging:\nError: {}\nCommand: {}\nType: {}\nMessage: {}", errorStr,
+ command, typeStr, message ? message : "");
}
std::set<std::string> CEGLUtils::GetClientExtensions()