diff --git a/addon.xml b/addon.xml
index f9e08d8..7f68378 100644
--- a/addon.xml
+++ b/addon.xml
@@ -10,6 +10,9 @@
+ Add-on für PeerTube
+ PeerTube ist eine kostenlose, dezentralisierte und föderierte Alternative zu anderen Videoplattformen (wie YouTube).
+ Dieses Add-on wird nicht vom PeerTube-Team entwickelt.
Add-on for PeerTube
PeerTube is a free, decentralized and federated alternative to other video platforms (like YouTube).
This add-on is not developed by PeerTube team.
diff --git a/resources/language/resource.language.de_de/strings.po b/resources/language/resource.language.de_de/strings.po
new file mode 100644
index 0000000..bac04e8
--- /dev/null
+++ b/resources/language/resource.language.de_de/strings.po
@@ -0,0 +1,166 @@
+# Kodi Media Center language file
+# Addon Name: Peertube
+# Addon id: plugin.video.peertube
+# Addon Provider: Cyrille B. + Thomas B.
+msgid ""
+msgstr ""
+"Project-Id-Version: Kodi Addons\n"
+"Report-Msgid-Bugs-To: https://framagit.org/StCyr/plugin.video.peertube\n"
+"Last-Translator: QNET17\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: de_DE\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+# Only IDs from 30000 to 30999 can be used by plugins.
+# (from https://kodi.wiki/view/Language_support#String_ID_range)
+
+# -----------------------------------
+# Settings (from 30000 to 30399)
+# -----------------------------------
+
+msgctxt "#30000"
+msgid "Instance URL"
+msgstr "URL der Instanz"
+
+msgctxt "#30001"
+msgid "Number of items to show per page"
+msgstr "Anzahl der Elemente, die pro Seite angezeigt werden sollen"
+
+msgctxt "#30002"
+msgid "Sort videos by"
+msgstr "Videos sortieren nach"
+
+msgctxt "#30003"
+msgid "Preferred video resolution"
+msgstr "Bevorzugte Videoauflösung"
+
+#msgctxt "#30004"
+#msgid "Delete downloaded videos when Kodi exits"
+#msgstr "Heruntergeladene Videos löschen, wenn Kodi beendet wird"
+
+msgctxt "#30005"
+msgid "List only videos with scope"
+msgstr "Nur Videos des Typs anzeigen"
+
+msgctxt "#30006"
+msgid "General"
+msgstr "Allgemein"
+
+msgctxt "#30007"
+msgid "Browsing/Searching"
+msgstr "Blättern/Suchen"
+
+msgctxt "#30008"
+msgid "Video playback"
+msgstr "Video-Wiedergabe"
+
+msgctxt "#30009"
+msgid "local"
+msgstr "lokal"
+
+msgctxt "#30010"
+msgid "all-local (admins only)"
+msgstr "alles-lokal (nur für Administratoren)"
+
+msgctxt "#30011"
+msgid "likes"
+msgstr "Gefällt mir"
+
+msgctxt "#30012"
+msgid "views"
+msgstr "Angesehen"
+
+msgctxt "#30013"
+msgid "Display a notification when the service starts"
+msgstr "Eine Benachrichtigung anzeigen, wenn der Dienst startet"
+
+# -----------------------------------
+# Other strings (from 30400 to 30999)
+# -----------------------------------
+
+msgctxt "#30400"
+msgid "PeerTube service started"
+msgstr "PeerTube-Dienst gestartet"
+
+msgctxt "#30401"
+msgid "Torrents can now be downloaded."
+msgstr "Torrents können jetzt heruntergeladen werden."
+
+msgctxt "#30402"
+msgid "Request error"
+msgstr "Anforderungsfehler"
+
+msgctxt "#30403"
+msgid "No details returned by the server. Check the log for more information."
+msgstr "Keine Details vom Server zurückgegeben. Prüfen Sie das Protokoll auf weitere Informationen."
+
+msgctxt "#30404"
+msgid "{}\n\n----------\nNumber of local videos: {}\nNumber of users: {}"
+msgstr "{}\n\n----------\nAnzahl der lokalen Videos: {}\nAnzahl der Benutzer: {}"
+
+msgctxt "#30405"
+msgid "Next page"
+msgstr "Nächste Seite"
+
+msgctxt "#30406"
+msgid "Browse videos on the selected instance"
+msgstr "Videos auf der ausgewählten Instanz durchsuchen"
+
+msgctxt "#30407"
+msgid "Search videos on the selected instance"
+msgstr "Videos auf der ausgewählten Instanz suchen"
+
+msgctxt "#30408"
+msgid "Select another instance"
+msgstr "Andere Instanz wählen"
+
+msgctxt "#30409"
+msgid "Search videos on {}"
+msgstr "Videos suchen unter {}"
+
+msgctxt "#30410"
+msgid "No videos found"
+msgstr "Keine Videos gefunden"
+
+msgctxt "#30411"
+msgid "No videos found matching the keywords '{}'"
+msgstr "Keine Videos zu den Stichworten gefunden '{}'"
+
+msgctxt "#30412"
+msgid "Error: libtorrent could not be imported"
+msgstr "Fehler: libtorrent konnte nicht importiert werden"
+
+msgctxt "#30413"
+msgid "PeerTube cannot play videos without libtorrent\nPlease follow the instructions at {}"
+msgstr "PeerTube kann keine Videos ohne libtorrent abspielen\nBitte folgen Sie den Anweisungen unter {}"
+
+msgctxt "#30414"
+msgid "Download started"
+msgstr "Download gestartet"
+
+msgctxt "#30415"
+msgid "The video will be played soon."
+msgstr "Das Video wird in kürze abgespielt."
+
+msgctxt "#30416"
+msgid "Download timeout"
+msgstr "Zeitüberschreitung beim Herunterladen"
+
+msgctxt "#30417"
+msgid "Timeout while downloading {}"
+msgstr "Timeout beim Herunterladen {}"
+
+msgctxt "#30418"
+msgid "Instance changed"
+msgstr "Instanz gewechselt"
+
+msgctxt "#30419"
+msgid "{} is now the selected instance."
+msgstr "{} ist nun die ausgewählte Instanz."
+
+msgctxt "#30420"
+msgid "You can still browse and search videos but you will not be able to play them (except live videos).\nPlease follow the instructions at {}"
+msgstr "Sie können weiterhin Videos durchsuchen und suchen, aber Sie können sie nicht abspielen (außer Live-Videos).\nBefolgen Sie bitte die Anweisungen unter {}"
diff --git a/resources/lib/addon.py b/resources/lib/addon.py
index 0ff5a13..bfca624 100644
--- a/resources/lib/addon.py
+++ b/resources/lib/addon.py
@@ -199,9 +199,9 @@ class PeerTubeAddon():
total_pages = (total / self.items_per_page) + 1
next_page_item = kodi.generate_item_info(
- name="{} ({}/{})".format(kodi.get_string(30405),
- next_page,
- total_pages),
+ name=u"{} ({}/{})".format(kodi.get_string(30405),
+ next_page,
+ total_pages),
url=url
)
diff --git a/resources/lib/kodi_utils.py b/resources/lib/kodi_utils.py
index 512bdcb..054d06f 100644
--- a/resources/lib/kodi_utils.py
+++ b/resources/lib/kodi_utils.py
@@ -216,11 +216,19 @@ class KodiUtils:
"""Open a box for the user to input alphanumeric data
:param str title: Title of the box
- :return: Entered data or an empty string
+ :return: Entered data as a unicode string
:rtype: str
"""
- return xbmcgui.Dialog().input(heading=title,
- type=xbmcgui.INPUT_ALPHANUM)
+ entered_string = xbmcgui.Dialog().input(heading=title,
+ type=xbmcgui.INPUT_ALPHANUM)
+
+ # Check the type of the string against the type "bytes" to confirm if
+ # it is a unicode or a byte string ("bytes" is known in both python 2
+ # and 3).
+ if isinstance(entered_string, bytes):
+ return entered_string.decode("utf-8")
+ else:
+ return entered_string
def play(self, url):
"""Play the media behind the URL