Merge pull request #3434 from Karlson2k/regexp_rework_02
authorKarlson2k <k2k@narod.ru>
Thu, 17 Oct 2013 09:16:26 +0000 (02:16 -0700)
committerKarlson2k <k2k@narod.ru>
Thu, 17 Oct 2013 09:16:26 +0000 (02:16 -0700)
RegExp rework - part 02

133 files changed:
XBMC.xcodeproj/project.pbxproj
addons/metadata.album.universal/addon.xml
addons/metadata.album.universal/albumuniversal.xml
addons/metadata.album.universal/changelog.txt
addons/metadata.album.universal/resources/settings.xml
addons/metadata.artists.universal/addon.xml
addons/metadata.artists.universal/artistuniversal.xml
addons/metadata.artists.universal/changelog.txt
addons/metadata.artists.universal/resources/settings.xml
addons/metadata.common.allmusic.com/addon.xml
addons/metadata.common.allmusic.com/allmusic.xml
addons/metadata.common.hdtrailers.net/addon.xml
addons/metadata.common.hdtrailers.net/hdtrailers.xml
addons/metadata.common.htbackdrops.com/addon.xml
addons/metadata.common.htbackdrops.com/htbackdrops.xml
addons/metadata.common.imdb.com/addon.xml
addons/metadata.common.imdb.com/changelog.txt
addons/metadata.common.imdb.com/imdb.xml
addons/metadata.common.musicbrainz.org/addon.xml
addons/metadata.common.musicbrainz.org/musicbrainz.xml
addons/metadata.common.theaudiodb.com/addon.xml
addons/metadata.common.theaudiodb.com/tadb.xml
addons/metadata.common.themoviedb.org/addon.xml
addons/metadata.common.themoviedb.org/tmdb.xml
addons/script.module.simplejson/addon.xml [deleted file]
addons/script.module.simplejson/lib/LICENSE.txt [deleted file]
addons/script.module.simplejson/lib/simplejson/__init__.py [deleted file]
addons/script.module.simplejson/lib/simplejson/decoder.py [deleted file]
addons/script.module.simplejson/lib/simplejson/encoder.py [deleted file]
addons/script.module.simplejson/lib/simplejson/scanner.py [deleted file]
addons/script.module.simplejson/lib/simplejson/tool.py [deleted file]
addons/service.xbmc.versioncheck/README.md
addons/service.xbmc.versioncheck/addon.xml
addons/service.xbmc.versioncheck/changelog.txt
addons/service.xbmc.versioncheck/icon.png
addons/service.xbmc.versioncheck/lib/__init__.py [new file with mode: 0644]
addons/service.xbmc.versioncheck/lib/aptdeamonhandler.py [new file with mode: 0644]
addons/service.xbmc.versioncheck/lib/common.py [new file with mode: 0644]
addons/service.xbmc.versioncheck/lib/jsoninterface.py [new file with mode: 0644]
addons/service.xbmc.versioncheck/lib/shellhandlerapt.py [new file with mode: 0644]
addons/service.xbmc.versioncheck/lib/versions.py [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Afrikaans/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Albanian/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Amharic/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Arabic/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Basque/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Belarusian/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Bosnian/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Bulgarian/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Catalan/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Chinese (Simple)/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Chinese (Traditional)/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Croatian/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Czech/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Danish/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Dutch/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/English/strings.po
addons/service.xbmc.versioncheck/resources/language/Esperanto/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Estonian/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Finnish/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/French/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Galician/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/German/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Greek/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Hebrew/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Hindi (Devanagiri)/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Hungarian/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Icelandic/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Indonesian/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Italian/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Japanese/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Korean/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Latvian/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Lithuanian/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Macedonian/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Malay/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Malayalam/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Maltese/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Norwegian/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Persian (Iran)/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Persian/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Polish/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Portuguese (Brazil)/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Portuguese/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Romanian/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Russian/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Serbian (Cyrillic)/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Serbian/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Slovak/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Slovenian/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Spanish (Argentina)/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Spanish (Mexico)/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Spanish/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Swedish/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Tamil (India)/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Thai/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Turkish/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Ukrainian/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/language/Vietnamese/strings.po [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/polkit/10-allow-update.pkla [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/polkit/README [new file with mode: 0644]
addons/service.xbmc.versioncheck/resources/settings.xml
addons/service.xbmc.versioncheck/resources/versions.txt
addons/service.xbmc.versioncheck/service.py
lib/cpluff/configure.ac
system/settings/settings.xml
tools/TexturePacker/XBTFWriter.cpp
tools/depends/configure.in
tools/depends/native/cmake-native/Makefile
tools/depends/native/pkg-config-native/Makefile
tools/depends/target/Toolchain.cmake.in
tools/depends/target/afpfs-ng/fix_afpfs-ng_includes.patch
tools/depends/target/config.site.in
tools/depends/target/libgpg-error/Makefile
tools/depends/target/libmicrohttpd/Makefile
tools/depends/target/libmpeg2/04-clang-fix.patch [new file with mode: 0644]
tools/depends/target/libmpeg2/Makefile
tools/depends/target/libplist/0002-fixclang.diff [new file with mode: 0644]
tools/depends/target/libplist/Makefile
tools/depends/target/openssl/Makefile
tools/depends/target/pythonmodule-pil/Makefile
xbmc/Application.cpp
xbmc/LangInfo.cpp
xbmc/cores/omxplayer/OMXPlayer.cpp
xbmc/cores/omxplayer/OMXPlayer.h
xbmc/cores/omxplayer/OMXVideo.cpp
xbmc/cores/omxplayer/OMXVideo.h
xbmc/dialogs/GUIDialogKaiToast.cpp
xbmc/dialogs/GUIDialogKaiToast.h
xbmc/osx/ios/XBMCIOS-Info.plist
xbmc/profiles/ProfilesManager.cpp
xbmc/utils/CharsetConverter.cpp
xbmc/utils/CharsetConverter.h

index 8dc61aa..9da070b 100644 (file)
                                GCC_MODEL_TUNING = "";
                                GCC_OPTIMIZATION_LEVEL = 2;
                                GCC_PREPROCESSOR_DEFINITIONS = (
-                                       NDEBUG,
                                        TARGET_POSIX,
                                        TARGET_DARWIN,
                                        TARGET_DARWIN_OSX,
                                        "\"$(DEVELOPER_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/System/Library/Frameworks\"",
                                );
                                GCC_OPTIMIZATION_LEVEL = 0;
-                               GCC_PREPROCESSOR_DEFINITIONS = (
-                                       _DEBUG,
-                                       TARGET_DARWIN_IOS,
-                                       TARGET_DARWIN_IOS_ATV2,
-                                       "$(XBMC_GCC_PREPROCESSOR_DEFINITIONS_COMMON)",
-                               );
                                GCC_VERSION = 4.2;
                                HEADER_SEARCH_PATHS = (
                                        $SRCROOT,
                                );
                                GCC_ENABLE_FIX_AND_CONTINUE = NO;
                                GCC_ENABLE_OBJC_EXCEPTIONS = YES;
-                               GCC_PREPROCESSOR_DEFINITIONS = (
-                                       NDEBUG,
-                                       TARGET_DARWIN_IOS,
-                                       TARGET_DARWIN_IOS_ATV2,
-                                       "$(XBMC_GCC_PREPROCESSOR_DEFINITIONS_COMMON)",
-                               );
                                GCC_VERSION = 4.2;
                                HEADER_SEARCH_PATHS = (
                                        $SRCROOT,
                                        "\"$(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"",
                                );
                                GCC_C_LANGUAGE_STANDARD = gnu99;
-                               GCC_PREPROCESSOR_DEFINITIONS = (
-                                       _DEBUG,
-                                       TARGET_DARWIN_IOS,
-                                       "$(XBMC_GCC_PREPROCESSOR_DEFINITIONS_COMMON)",
-                               );
                                HEADER_SEARCH_PATHS = (
                                        "$(inherited)",
                                        $SRCROOT,
                                        "\"$(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"",
                                );
                                GCC_C_LANGUAGE_STANDARD = gnu99;
-                               GCC_PREPROCESSOR_DEFINITIONS = (
-                                       NDEBUG,
-                                       TARGET_DARWIN_IOS,
-                                       "$(XBMC_GCC_PREPROCESSOR_DEFINITIONS_COMMON)",
-                               );
                                HEADER_SEARCH_PATHS = (
                                        "$(inherited)",
                                        $SRCROOT,
index f9468c9..ec1038b 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="metadata.album.universal"
        name="Universal Album Scraper"
-       version="1.7.7b"
+       version="2.1.0"
        provider-name="Olympia, Team XBMC">
   <requires>
     <import addon="xbmc.metadata" version="2.1.0"/>
@@ -10,7 +10,7 @@
     <import addon="metadata.common.musicbrainz.org" version="1.2.3"/>
     <import addon="metadata.common.fanart.tv" version="2.1.2"/>
     <import addon="metadata.common.amazon.de" version="1.0.0"/>
-    <import addon="metadata.common.theaudiodb.com" version="1.4.0"/>
+    <import addon="metadata.common.theaudiodb.com" version="1.7.0"/>
   </requires>
   <extension point="xbmc.metadata.scraper.albums"
              language="en"
index b42a21e..d18eacc 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<scraper framework="1.1" date="2012-06-09">
+<scraper framework="1.1" date="2013-05-29">
        <NfoUrl dest="3">
                <RegExp input="$$1" output="&lt;url&gt;http://musicbrainz.org/ws/2/release/\1?inc=recordings+release-groups+artists+labels+ratings&lt;/url&gt;" dest="3">
                        <expression>release/(.+)</expression>
@@ -11,7 +11,7 @@
                </RegExp>
        </ResolveIDToUrl>
        <CreateAlbumSearchUrl dest="3">
-               <RegExp input="$$1" output="&lt;url&gt;http://search.musicbrainz.org/ws/2/release/?fmt=xml&amp;query=release:\1%20AND%20artist:&quot;$$4&quot;&lt;/url&gt;" dest="3">
+               <RegExp input="$$1" output="&lt;url&gt;http://search.musicbrainz.org/ws/2/release/?fmt=xml&amp;query=release:&quot;\1&quot;%20AND%20artist:&quot;$$4&quot;&lt;/url&gt;" dest="3">
                        <RegExp input="$$2" output="\1" dest="4">
                                <expression noclean="1">(.+)</expression>
                        </RegExp>
        <GetAlbumSearchResults dest="8">
                <RegExp input="$$5" output="&lt;results sorted=&quot;yes&quot;&gt;\1&lt;/results&gt;" dest="8">
                        <RegExp input="$$1" output="&lt;entity&gt;&lt;year&gt;\5-\4-T#\6&lt;/year&gt;&lt;artist&gt;\3&lt;/artist&gt;&lt;title&gt;\2&lt;/title&gt;&lt;url cache=&quot;mb-\1-album.xml&quot;&gt;http://musicbrainz.org/ws/2/release/\1?inc=recordings+release-groups+artists+labels+ratings&lt;/url&gt;&lt;/entity&gt;" dest="5">
-                               <expression repeat="yes">id=&quot;([^&quot;]*)&quot;&gt;&lt;title&gt;([^&lt;]*)&lt;/title&gt;&lt;status&gt;Official&lt;/status&gt;&lt;text-representation&gt;(?:&lt;language&gt;[^&lt;]*&lt;/language&gt;)*(?:&lt;script&gt;[^&lt;]*&lt;/script&gt;)*&lt;/text-representation&gt;&lt;artist-credit&gt;&lt;name-credit(?:&gt;)*(?:\sjoinphrase=&quot;[^&quot;]*&quot;&gt;)*(?:&lt;name&gt;[^&lt;]*&lt;/name)*(?:&gt;)*&lt;artist\sid=&quot;[^&quot;]*&quot;&gt;&lt;name&gt;([^&lt;]*)&lt;/name&gt;(?:&lt;sort-name&gt;[^&lt;]*&lt;/sort-name&gt;)*(?:&lt;disambiguation&gt;[^&lt;]*&lt;/disambiguation&gt;)*(?:&lt;alias-list&gt;.*?&lt;/alias-list&gt;)*&lt;/artist&gt;&lt;/name-credit&gt;(?:&lt;name-credit(?:&gt;)*(?:\sjoinphrase=&quot;[^&quot;]*&quot;&gt;)*(?:&lt;name&gt;[^&lt;]*&lt;/name)*(?:&gt;)*&lt;artist\sid=&quot;[^&quot;]*&quot;&gt;&lt;name&gt;[^&lt;]*&lt;/name&gt;(?:&lt;sort-name&gt;[^&lt;]*&lt;/sort-name&gt;)*(?:&lt;disambiguation&gt;[^&lt;]*&lt;/disambiguation&gt;)*(?:&lt;alias-list&gt;.*?&lt;/alias-list&gt;)*&lt;/artist&gt;&lt;/name-credit&gt;)*&lt;/artist-credit&gt;&lt;release-group\stype=&quot;Album&quot;\sid=&quot;[^&quot;]*&quot;&gt;(?:&lt;primary-type&gt;[^&lt;]*&lt;/primary-type&gt;)*(?:&lt;secondary-type-list&gt;&lt;secondary-type&gt;[^&lt;]*&lt;/secondary-type&gt;&lt;/secondary-type-list&gt;)*&lt;/release-group&gt;&lt;date&gt;(\d{4})[^&lt;]*&lt;/date&gt;(?:&lt;country&gt;)*([^&lt;]*)?.*?&lt;track-list\scount=&quot;(\d+)</expression>
+                               <expression repeat="yes">id=&quot;([^&quot;]*)&quot;&gt;&lt;title&gt;([^&lt;]*)&lt;/title&gt;&lt;status&gt;Official&lt;/status&gt;(?:&lt;disambiguation&gt;[^&lt;]*&lt;/disambiguation&gt;)*&lt;text-representation&gt;(?:&lt;language&gt;[^&lt;]*&lt;/language&gt;)*(?:&lt;script&gt;[^&lt;]*&lt;/script&gt;)*&lt;/text-representation&gt;&lt;artist-credit&gt;&lt;name-credit(?:&gt;)*(?:\sjoinphrase=&quot;[^&quot;]*&quot;&gt;)*(?:&lt;name&gt;[^&lt;]*&lt;/name)*(?:&gt;)*&lt;artist\sid=&quot;[^&quot;]*&quot;&gt;&lt;name&gt;([^&lt;]*)&lt;/name&gt;(?:&lt;sort-name&gt;[^&lt;]*&lt;/sort-name&gt;)*(?:&lt;disambiguation&gt;[^&lt;]*&lt;/disambiguation&gt;)*(?:&lt;alias-list&gt;.*?&lt;/alias-list&gt;)*&lt;/artist&gt;&lt;/name-credit&gt;(?:&lt;name-credit(?:&gt;)*(?:\sjoinphrase=&quot;[^&quot;]*&quot;&gt;)*(?:&lt;name&gt;[^&lt;]*&lt;/name)*(?:&gt;)*&lt;artist\sid=&quot;[^&quot;]*&quot;&gt;&lt;name&gt;[^&lt;]*&lt;/name&gt;(?:&lt;sort-name&gt;[^&lt;]*&lt;/sort-name&gt;)*(?:&lt;disambiguation&gt;[^&lt;]*&lt;/disambiguation&gt;)*(?:&lt;alias-list&gt;.*?&lt;/alias-list&gt;)*&lt;/artist&gt;&lt;/name-credit&gt;)*&lt;/artist-credit&gt;&lt;release-group\stype=&quot;Album&quot;\sid=&quot;[^&quot;]*&quot;&gt;(?:&lt;primary-type&gt;[^&lt;]*&lt;/primary-type&gt;)*(?:&lt;secondary-type-list&gt;&lt;secondary-type&gt;[^&lt;]*&lt;/secondary-type&gt;&lt;/secondary-type-list&gt;)*&lt;/release-group&gt;&lt;date&gt;(\d{4})[^&lt;]*&lt;/date&gt;(?:&lt;country&gt;)*([^&lt;]*)?.*?&lt;track-list\scount=&quot;(\d+)</expression>
                        </RegExp>
                        <RegExp input="$$1" output="&lt;entity&gt;&lt;year&gt;\5-\4-T#\6&lt;/year&gt;&lt;artist&gt;\3&lt;/artist&gt;&lt;title&gt;\2&lt;/title&gt;&lt;url cache=&quot;mb-\1-album.xml&quot;&gt;http://musicbrainz.org/ws/2/release/\1?inc=recordings+release-groups+artists+labels+ratings&lt;/url&gt;&lt;/entity&gt;" dest="5+">
-                               <expression repeat="yes">id=&quot;([^&quot;]*)&quot;&gt;&lt;title&gt;([^&lt;]*)&lt;/title&gt;&lt;status&gt;Official&lt;/status&gt;&lt;text-representation&gt;(?:&lt;language&gt;[^&lt;]*&lt;/language&gt;)*(?:&lt;script&gt;[^&lt;]*&lt;/script&gt;)*&lt;/text-representation&gt;&lt;artist-credit&gt;&lt;name-credit(?:&gt;)*(?:\sjoinphrase=&quot;[^&quot;]*&quot;&gt;)*(?:&lt;name&gt;[^&lt;]*&lt;/name)*(?:&gt;)*&lt;artist\sid=&quot;[^&quot;]*&quot;&gt;&lt;name&gt;([^&lt;]*)&lt;/name&gt;(?:&lt;sort-name&gt;[^&lt;]*&lt;/sort-name&gt;)*(?:&lt;disambiguation&gt;[^&lt;]*&lt;/disambiguation&gt;)*(?:&lt;alias-list&gt;.*?&lt;/alias-list&gt;)*&lt;/artist&gt;&lt;/name-credit&gt;(?:&lt;name-credit(?:&gt;)*(?:\sjoinphrase=&quot;[^&quot;]*&quot;&gt;)*(?:&lt;name&gt;[^&lt;]*&lt;/name)*(?:&gt;)*&lt;artist\sid=&quot;[^&quot;]*&quot;&gt;&lt;name&gt;[^&lt;]*&lt;/name&gt;(?:&lt;sort-name&gt;[^&lt;]*&lt;/sort-name&gt;)*(?:&lt;disambiguation&gt;[^&lt;]*&lt;/disambiguation&gt;)*(?:&lt;alias-list&gt;.*?&lt;/alias-list&gt;)*&lt;/artist&gt;&lt;/name-credit&gt;)*&lt;/artist-credit&gt;&lt;release-group(?:\stype=&quot;[^&quot;]*&quot;)*\sid=&quot;[^&quot;]*&quot;&gt;(?:&lt;primary-type&gt;[^&lt;]*&lt;/primary-type&gt;)*(?:&lt;secondary-type-list&gt;&lt;secondary-type&gt;[^&lt;]*&lt;/secondary-type&gt;&lt;/secondary-type-list&gt;)*&lt;/release-group&gt;&lt;date&gt;(\d{4})[^&lt;]*&lt;/date&gt;(?:&lt;country&gt;)*([^&lt;]*)?.*?&lt;track-list\scount=&quot;(\d+)</expression>
+                               <expression repeat="yes">id=&quot;([^&quot;]*)&quot;&gt;&lt;title&gt;([^&lt;]*)&lt;/title&gt;&lt;status&gt;Official&lt;/status&gt;(?:&lt;disambiguation&gt;[^&lt;]*&lt;/disambiguation&gt;)*&lt;text-representation&gt;(?:&lt;language&gt;[^&lt;]*&lt;/language&gt;)*(?:&lt;script&gt;[^&lt;]*&lt;/script&gt;)*&lt;/text-representation&gt;&lt;artist-credit&gt;&lt;name-credit(?:&gt;)*(?:\sjoinphrase=&quot;[^&quot;]*&quot;&gt;)*(?:&lt;name&gt;[^&lt;]*&lt;/name)*(?:&gt;)*&lt;artist\sid=&quot;[^&quot;]*&quot;&gt;&lt;name&gt;([^&lt;]*)&lt;/name&gt;(?:&lt;sort-name&gt;[^&lt;]*&lt;/sort-name&gt;)*(?:&lt;disambiguation&gt;[^&lt;]*&lt;/disambiguation&gt;)*(?:&lt;alias-list&gt;.*?&lt;/alias-list&gt;)*&lt;/artist&gt;&lt;/name-credit&gt;(?:&lt;name-credit(?:&gt;)*(?:\sjoinphrase=&quot;[^&quot;]*&quot;&gt;)*(?:&lt;name&gt;[^&lt;]*&lt;/name)*(?:&gt;)*&lt;artist\sid=&quot;[^&quot;]*&quot;&gt;&lt;name&gt;[^&lt;]*&lt;/name&gt;(?:&lt;sort-name&gt;[^&lt;]*&lt;/sort-name&gt;)*(?:&lt;disambiguation&gt;[^&lt;]*&lt;/disambiguation&gt;)*(?:&lt;alias-list&gt;.*?&lt;/alias-list&gt;)*&lt;/artist&gt;&lt;/name-credit&gt;)*&lt;/artist-credit&gt;&lt;release-group(?:\stype=&quot;[^&quot;]*&quot;)*\sid=&quot;[^&quot;]*&quot;&gt;(?:&lt;primary-type&gt;[^&lt;]*&lt;/primary-type&gt;)*(?:&lt;secondary-type-list&gt;&lt;secondary-type&gt;[^&lt;]*&lt;/secondary-type&gt;&lt;/secondary-type-list&gt;)*&lt;/release-group&gt;&lt;date&gt;(\d{4})[^&lt;]*&lt;/date&gt;(?:&lt;country&gt;)*([^&lt;]*)?.*?&lt;track-list\scount=&quot;(\d+)</expression>
                        </RegExp>
                        <RegExp input="$$1" output="&lt;entity&gt;&lt;year&gt;\5-\4-T#\6&lt;/year&gt;&lt;artist&gt;\3&lt;/artist&gt;&lt;title&gt;\2&lt;/title&gt;&lt;url cache=&quot;mb-\1-album.xml&quot;&gt;http://musicbrainz.org/ws/2/release/\1?inc=recordings+release-groups+artists+labels+ratings&lt;/url&gt;&lt;/entity&gt;" dest="5">
-                               <expression repeat="yes">id=&quot;([^&quot;]*)&quot; ext:score=&quot;[^&quot;]*&quot;&gt;&lt;title&gt;([^&lt;]*)&lt;/title&gt;&lt;status&gt;Official&lt;/status&gt;&lt;text-representation&gt;(?:&lt;language&gt;[^&lt;]*&lt;/language&gt;)*(?:&lt;script&gt;[^&lt;]*&lt;/script&gt;)*&lt;/text-representation&gt;&lt;artist-credit&gt;&lt;name-credit(?:&gt;)*(?:\sjoinphrase=&quot;[^&quot;]*&quot;&gt;)*(?:&lt;name&gt;[^&lt;]*&lt;/name)*(?:&gt;)*&lt;artist\sid=&quot;[^&quot;]*&quot;&gt;&lt;name&gt;([^&lt;]*)&lt;/name&gt;(?:&lt;sort-name&gt;[^&lt;]*&lt;/sort-name&gt;)*(?:&lt;disambiguation&gt;[^&lt;]*&lt;/disambiguation&gt;)*(?:&lt;alias-list&gt;.*?&lt;/alias-list&gt;)*&lt;/artist&gt;&lt;/name-credit&gt;(?:&lt;name-credit(?:&gt;)*(?:\sjoinphrase=&quot;[^&quot;]*&quot;&gt;)*(?:&lt;name&gt;[^&lt;]*&lt;/name)*(?:&gt;)*&lt;artist\sid=&quot;[^&quot;]*&quot;&gt;&lt;name&gt;[^&lt;]*&lt;/name&gt;(?:&lt;sort-name&gt;[^&lt;]*&lt;/sort-name&gt;)*(?:&lt;disambiguation&gt;[^&lt;]*&lt;/disambiguation&gt;)*(?:&lt;alias-list&gt;.*?&lt;/alias-list&gt;)*&lt;/artist&gt;&lt;/name-credit&gt;)*&lt;/artist-credit&gt;&lt;release-group\sid=&quot;[^&quot;]*&quot;\stype=&quot;Album&quot;&gt;(?:&lt;primary-type&gt;[^&lt;]*&lt;/primary-type&gt;)*(?:&lt;secondary-type-list&gt;&lt;secondary-type&gt;[^&lt;]*&lt;/secondary-type&gt;&lt;/secondary-type-list&gt;)*&lt;/release-group&gt;&lt;date&gt;(\d{4})[^&lt;]*&lt;/date&gt;(?:&lt;country&gt;)*([^&lt;]*)?.*?&lt;track-list\scount=&quot;(\d+)</expression>
+                               <expression repeat="yes">id=&quot;([^&quot;]*)&quot; ext:score=&quot;[^&quot;]*&quot;&gt;&lt;title&gt;([^&lt;]*)&lt;/title&gt;&lt;status&gt;Official&lt;/status&gt;(?:&lt;disambiguation&gt;[^&lt;]*&lt;/disambiguation&gt;)*&lt;text-representation&gt;(?:&lt;language&gt;[^&lt;]*&lt;/language&gt;)*(?:&lt;script&gt;[^&lt;]*&lt;/script&gt;)*&lt;/text-representation&gt;&lt;artist-credit&gt;&lt;name-credit(?:&gt;)*(?:\sjoinphrase=&quot;[^&quot;]*&quot;&gt;)*(?:&lt;name&gt;[^&lt;]*&lt;/name)*(?:&gt;)*&lt;artist\sid=&quot;[^&quot;]*&quot;&gt;&lt;name&gt;([^&lt;]*)&lt;/name&gt;(?:&lt;sort-name&gt;[^&lt;]*&lt;/sort-name&gt;)*(?:&lt;disambiguation&gt;[^&lt;]*&lt;/disambiguation&gt;)*(?:&lt;alias-list&gt;.*?&lt;/alias-list&gt;)*&lt;/artist&gt;&lt;/name-credit&gt;(?:&lt;name-credit(?:&gt;)*(?:\sjoinphrase=&quot;[^&quot;]*&quot;&gt;)*(?:&lt;name&gt;[^&lt;]*&lt;/name)*(?:&gt;)*&lt;artist\sid=&quot;[^&quot;]*&quot;&gt;&lt;name&gt;[^&lt;]*&lt;/name&gt;(?:&lt;sort-name&gt;[^&lt;]*&lt;/sort-name&gt;)*(?:&lt;disambiguation&gt;[^&lt;]*&lt;/disambiguation&gt;)*(?:&lt;alias-list&gt;.*?&lt;/alias-list&gt;)*&lt;/artist&gt;&lt;/name-credit&gt;)*&lt;/artist-credit&gt;&lt;release-group\sid=&quot;[^&quot;]*&quot;\stype=&quot;Album&quot;&gt;(?:&lt;primary-type&gt;[^&lt;]*&lt;/primary-type&gt;)*(?:&lt;secondary-type-list&gt;&lt;secondary-type&gt;[^&lt;]*&lt;/secondary-type&gt;&lt;/secondary-type-list&gt;)*&lt;/release-group&gt;&lt;date&gt;(\d{4})[^&lt;]*&lt;/date&gt;(?:&lt;country&gt;)*([^&lt;]*)?.*?&lt;track-list\scount=&quot;(\d+)</expression>
                        </RegExp>
                        <RegExp input="$$1" output="&lt;entity&gt;&lt;year&gt;\5-\4-T#\6&lt;/year&gt;&lt;artist&gt;\3&lt;/artist&gt;&lt;title&gt;\2&lt;/title&gt;&lt;url cache=&quot;mb-\1-album.xml&quot;&gt;http://musicbrainz.org/ws/2/release/\1?inc=recordings+release-groups+artists+labels+ratings&lt;/url&gt;&lt;/entity&gt;" dest="5+">
-                               <expression repeat="yes">id=&quot;([^&quot;]*)&quot; ext:score=&quot;[^&quot;]*&quot;&gt;&lt;title&gt;([^&lt;]*)&lt;/title&gt;&lt;status&gt;Official&lt;/status&gt;&lt;text-representation&gt;(?:&lt;language&gt;[^&lt;]*&lt;/language&gt;)*(?:&lt;script&gt;[^&lt;]*&lt;)*/script&gt;&lt;/text-representation&gt;&lt;artist-credit&gt;&lt;name-credit(?:&gt;)*(?:\sjoinphrase=&quot;[^&quot;]*&quot;&gt;)*(?:&lt;name&gt;[^&lt;]*&lt;/name)*(?:&gt;)*&lt;artist\sid=&quot;[^&quot;]*&quot;&gt;&lt;name&gt;([^&lt;]*)&lt;/name&gt;(?:&lt;sort-name&gt;[^&lt;]*&lt;/sort-name&gt;)*(?:&lt;disambiguation&gt;[^&lt;]*&lt;/disambiguation&gt;)*(?:&lt;alias-list&gt;.*?&lt;/alias-list&gt;)*&lt;/artist&gt;&lt;/name-credit&gt;(?:&lt;name-credit(?:&gt;)*(?:\sjoinphrase=&quot;[^&quot;]*&quot;&gt;)*(?:&lt;name&gt;[^&lt;]*&lt;/name)*(?:&gt;)*&lt;artist\sid=&quot;[^&quot;]*&quot;&gt;&lt;name&gt;[^&lt;]*&lt;/name&gt;(?:&lt;sort-name&gt;[^&lt;]*&lt;/sort-name&gt;)*(?:&lt;disambiguation&gt;[^&lt;]*&lt;/disambiguation&gt;)*(?:&lt;alias-list&gt;.*?&lt;/alias-list&gt;)*&lt;/artist&gt;&lt;/name-credit&gt;)*&lt;/artist-credit&gt;&lt;release-group\sid=&quot;[^&quot;]*&quot;(?:\stype=&quot;[^&quot;]*&quot;)*&gt;(?:&lt;primary-type&gt;[^&lt;]*&lt;/primary-type&gt;)*(?:&lt;secondary-type-list&gt;&lt;secondary-type&gt;[^&lt;]*&lt;/secondary-type&gt;&lt;/secondary-type-list&gt;)*&lt;/release-group&gt;&lt;date&gt;(\d{4})[^&lt;]*&lt;/date&gt;(?:&lt;country&gt;)*([^&lt;]*)?.*?&lt;track-list\scount=&quot;(\d+)</expression>
+                               <expression repeat="yes">id=&quot;([^&quot;]*)&quot; ext:score=&quot;[^&quot;]*&quot;&gt;&lt;title&gt;([^&lt;]*)&lt;/title&gt;&lt;status&gt;Official&lt;/status&gt;(?:&lt;disambiguation&gt;[^&lt;]*&lt;/disambiguation&gt;)*&lt;text-representation&gt;(?:&lt;language&gt;[^&lt;]*&lt;/language&gt;)*(?:&lt;script&gt;[^&lt;]*&lt;/script&gt;)*&lt;/text-representation&gt;&lt;artist-credit&gt;&lt;name-credit(?:&gt;)*(?:\sjoinphrase=&quot;[^&quot;]*&quot;&gt;)*(?:&lt;name&gt;[^&lt;]*&lt;/name)*(?:&gt;)*&lt;artist\sid=&quot;[^&quot;]*&quot;&gt;&lt;name&gt;([^&lt;]*)&lt;/name&gt;(?:&lt;sort-name&gt;[^&lt;]*&lt;/sort-name&gt;)*(?:&lt;disambiguation&gt;[^&lt;]*&lt;/disambiguation&gt;)*(?:&lt;alias-list&gt;.*?&lt;/alias-list&gt;)*&lt;/artist&gt;&lt;/name-credit&gt;(?:&lt;name-credit(?:&gt;)*(?:\sjoinphrase=&quot;[^&quot;]*&quot;&gt;)*(?:&lt;name&gt;[^&lt;]*&lt;/name)*(?:&gt;)*&lt;artist\sid=&quot;[^&quot;]*&quot;&gt;&lt;name&gt;[^&lt;]*&lt;/name&gt;(?:&lt;sort-name&gt;[^&lt;]*&lt;/sort-name&gt;)*(?:&lt;disambiguation&gt;[^&lt;]*&lt;/disambiguation&gt;)*(?:&lt;alias-list&gt;.*?&lt;/alias-list&gt;)*&lt;/artist&gt;&lt;/name-credit&gt;)*&lt;/artist-credit&gt;&lt;release-group\sid=&quot;[^&quot;]*&quot;(?:\stype=&quot;[^&quot;]*&quot;)*&gt;(?:&lt;primary-type&gt;[^&lt;]*&lt;/primary-type&gt;)*(?:&lt;secondary-type-list&gt;&lt;secondary-type&gt;[^&lt;]*&lt;/secondary-type&gt;&lt;/secondary-type-list&gt;)*&lt;/release-group&gt;&lt;date&gt;(\d{4})[^&lt;]*&lt;/date&gt;(?:&lt;country&gt;)*([^&lt;]*)?.*?&lt;track-list\scount=&quot;(\d+)</expression>
                        </RegExp>
                        <expression noclean="1" />
                </RegExp>
@@ -95,6 +95,9 @@
                        <RegExp input="$INFO[albumratingsource]" output="&lt;url function=&quot;GetAMGAlbumRating&quot; cache=&quot;mb-$$4-rg.xml&quot;&gt;http://musicbrainz.org/ws/2/release-group/$$4?inc=url-rels&lt;/url&gt;" dest="5+">
                                <expression>allmusic.com</expression>
                        </RegExp>
+                       <RegExp input="$INFO[albumratingsource]" output="&lt;chain function=&quot;GetTADBAlbumRatingByMBID&quot;&gt;$$4&lt;/chain&gt;" dest="5+">
+                               <expression>TheAudioDb.com</expression>
+                       </RegExp>
                        <RegExp input="$INFO[albumstylessource]" output="&lt;url function=&quot;GetAMGAlbumStyles&quot; cache=&quot;mb-$$4-rg.xml&quot;&gt;http://musicbrainz.org/ws/2/release-group/$$4?inc=url-rels&lt;/url&gt;" dest="5+">
                                <expression>allmusic.com</expression>
                        </RegExp>
index 5624e3e..4692df7 100644 (file)
@@ -1,3 +1,10 @@
+[B]2.1.0[/B]
+Added: option to fetch album Rating from TheAudioDB.com
+
+[B]2.0.0[/B]
+Added: ResolveIDToUrl
+Fixed: album won't find some times (thanks and credits to crankylemur & ezechiel1917)
+
 [B]1.7.6[/B]
 Updated language files from Transifex
 
index f75639e..7cba6db 100644 (file)
@@ -5,7 +5,7 @@
       <setting label="30002" type="labelenum" values="TheAudioDb.com|amazon.de|None" id="albumreviewsource" default="TheAudioDb.com"/>
       <setting label="30003" type="labelenum" values="en|de|es|fr|it|cn|jp|ru|pt|se|nl|hu" id="tadbalbumlanguage" default="en" visible="eq(-1,0)"/>
       <setting type="sep"/>
-      <setting label="30004" type="labelenum" values="MusicBrainz|allmusic.com|None" id="albumratingsource" default="MusicBrainz"/>
+      <setting label="30004" type="labelenum" values="MusicBrainz|allmusic.com|TheAudioDb.com|None" id="albumratingsource" default="MusicBrainz"/>
       <setting label="30005" type="labelenum" values="allmusic.com|None" id="albumstylessource" default="allmusic.com"/>
       <setting label="30006" type="labelenum" values="allmusic.com|None" id="albummoodssource" default="allmusic.com"/>
       <setting label="30007" type="labelenum" values="allmusic.com|None" id="albumthemessource" default="allmusic.com"/>
index e7045e3..1501afa 100644 (file)
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="metadata.artists.universal"
        name="Universal Artist Scraper"
-       version="2.6.6b"
+       version="3.3.0"
        provider-name="Olympia, Team XBMC">
   <requires>
     <import addon="xbmc.metadata" version="2.1.0"/>
     <import addon="metadata.common.last.fm" version="1.6.0"/>
-    <import addon="metadata.common.allmusic.com" version="2.6.0"/>
+    <import addon="metadata.common.allmusic.com" version="3.0.0"/>
     <import addon="metadata.common.musicbrainz.org" version="1.3.0"/>
-    <import addon="metadata.common.htbackdrops.com" version="1.2.0"/>
     <import addon="metadata.common.fanart.tv" version="2.1.2"/>
     <import addon="metadata.common.theaudiodb.com" version="1.5.0"/>
+    <import addon="metadata.common.htbackdrops.com" version="1.3.0"/>
   </requires>
   <extension point="xbmc.metadata.scraper.artists"
              language="en"
index 8f30321..2f0c128 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<scraper framework="1.1" date="2013-02-27">
+<scraper framework="1.1" date="2013-05-29">
        <NfoUrl dest="3">
                <RegExp input="$$1" output="&lt;url&gt;http://musicbrainz.org/ws/2/artist/\1?inc=url-rels&lt;/url&gt;" dest="3">
                        <expression>http://musicbrainz.org/artist/(.+)</expression>
                        <RegExp input="$$1" output="\1" dest="4">
                                <expression noclean="1">(.+)</expression>
                        </RegExp>
+                       <RegExp input="$$1" output="\1/\2\3" dest="7">
+                               <expression noclean="1">(.+)([-!])(.+)</expression>
+                       </RegExp>
                        <RegExp input="$$1" output="\1" dest="6">
                                <expression noclean="1">(.+)(?:Ft%2e|Feat%2e|%20Ft\.|%20Feat\.|%20and%20)</expression>
                        </RegExp>
+                       <RegExp input="$$7" output="\1" dest="4">
+                               <expression>(.+)</expression>
+                       </RegExp>
                        <RegExp input="$$6" output="\1" dest="4">
                                <expression>(.+)</expression>
                        </RegExp>
index 34f7905..101d198 100644 (file)
@@ -1,3 +1,17 @@
+[B]3.3.0[/B]
+Added: Restore scraping from HTBackdrops.com using their new domain htbackdrops.org
+
+[B]3.2.0[/B]
+Added: An attempt to handle dash and exclamation mark in the artist name
+
+[B]3.1.0[/B]
+Added: Polish for theaudiodb.com language selection
+Removed: htbackdrops.com scraping since site is dead for a good while
+Fixed: allmusic.com scraping
+
+[B]3.0.0[/B]
+Added: ResolveIDToUrl
+
 [B]2.6.5[/B]
 Updated language files from Transifex
 
index 434725a..d158409 100644 (file)
@@ -2,7 +2,7 @@
 <settings>
   <category label="128">
       <setting label="30006" type="labelenum" values="TheAudioDb.com|None" id="biogsource" default="TheAudioDb.com"/>
-      <setting label="30015" type="labelenum" values="en|de|es|fr|it|cn|jp|ru|pt|se|nl|hu" id="tadbartistlanguage" default="en" visible="eq(-1,0)"/>
+      <setting label="30015" type="labelenum" values="en|de|es|fr|it|cn|jp|ru|pt|se|nl|hu|pl" id="tadbartistlanguage" default="en" visible="eq(-1,0)"/>
       <setting type="sep"/>
       <setting label="30008" type="labelenum" values="MusicBrainz|allmusic.com|TheAudioDb.com|None" id="discogsource" default="MusicBrainz"/>
       <setting type="sep"/>
@@ -16,7 +16,7 @@
 
   <category label="30021">
       <setting label="30016" type="labelenum" values="TheAudioDb.com|None" id="biogfbsource" default="None"/>
-      <setting label="30015" type="labelenum" values="en|de|es|fr|it|cn|jp|ru|pt|se|nl|hu" id="tadbartistlanguage" default="en" visible="eq(-1,0)"/>
+      <setting label="30015" type="labelenum" values="en|de|es|fr|it|cn|jp|ru|pt|se|nl|hu|pl" id="tadbartistlanguage" default="en" visible="eq(-1,0)"/>
       <setting type="sep"/>
       <setting label="30020" type="labelenum" values="TheAudioDb.com|MusicBrainz|allmusic.com|None" id="lifespanfbsource" default="None"/>
       <setting type="sep"/>
@@ -28,9 +28,9 @@
     <setting type="lsep" label="Thumb Sources"/>
     <setting label="30005" type="bool" id="fanarttvthumbs" default="true"/>
     <setting label="30022" type="bool" id="tadbthumbs" default="true"/>
-    <setting label="30003" type="bool" id="htbthumbs" default="true"/>
     <setting label="30002" type="bool" id="lastfmartistthumbs" default="false"/>
     <setting label="30001" type="bool" id="allmusicartistthumbs" default="true"/>
+    <setting label="30003" type="bool" id="htbthumbs" default="true"/>
     <setting type="lsep" label="Fanart Sources"/>
     <setting label="30004" type="bool" id="fanarttvfanart" default="true"/>
     <setting label="30023" type="bool" id="tadbfanart" default="true"/>
index 750870e..1eece85 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="metadata.common.allmusic.com"
        name="AllMusic"
-        version="2.6.0"
+        version="3.0.1"
        provider-name="Team XBMC">
   <requires>
     <import addon="xbmc.metadata" version="2.1.0"/>
index 51d57fb..a7a2e1c 100644 (file)
@@ -1,6 +1,6 @@
 <scraperfunctions>
        <GetAMGDiscographyByAMGID dest="5" clearbuffers="no">
-               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-artist.html&quot; function=&quot;ParseAMGDiscography&quot;&gt;http://www.allmusic.com/artist/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-artist-discography.html&quot; function=&quot;ParseAMGDiscography&quot;&gt;http://www.allmusic.com/artist/\1/discography&lt;/url&gt;&lt;/details&gt;" dest="5">
                        <expression clear="yes" noclean="1"/>
                </RegExp>
        </GetAMGDiscographyByAMGID>
@@ -10,7 +10,7 @@
                                <expression />
                        </RegExp>
                        <RegExp input="$$1" output="&lt;album&gt;&lt;year&gt;\1&lt;/year&gt;&lt;title&gt;\2&lt;/title&gt;&lt;label&gt;\3&lt;/label&gt;&lt;/album&gt;" dest="3">
-                               <expression repeat="yes" clear="yes" trim="1">&lt;td class=&quot;year[^&quot;]*&quot;(?:\stitle=&quot;[^&quot;]*&quot;)*\s*data-sort-value=&quot;[^&gt;]*&gt;([^&lt;]*)&lt;/td&gt;[^&lt;]*&lt;td class=&quot;.*?title=&quot;([^&quot;]*)</expression>
+                               <expression repeat="yes" clear="yes" trim="1">&lt;td\sclass=&quot;year[^&quot;]*&quot;(?:\stitle=&quot;[^&quot;]*&quot;)*\s*data-sort-value=&quot;[^&gt;]*&gt;\s*([^&lt;]*)&lt;/td&gt;[^&lt;]*&lt;td\sclass=&quot;.*?title=&quot;([^&quot;]*)</expression>
                        </RegExp>
                        <expression noclean="1" />
                </RegExp>
                </RegExp>
        </ParseAMGFallbackBiography>
 
-       <GetAMGArtistNameByAMGID dest="5">
-               <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-artist.html&quot; function=&quot;ParseAMGArtistName&quot;&gt;http://www.allmusic.com/artist/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
-                       <expression noclean="1"/>
-               </RegExp>
-       </GetAMGArtistNameByAMGID>
-       <ParseAMGArtistName dest="5">
-               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
-                       <RegExp input="$$1" output="&lt;name&gt;\1&lt;/name&gt;" dest="2">
-                               <expression noclean="1">http://schema.org/MusicGroup&quot;&gt;[^&lt;]*&lt;span itemprop=&quot;name&quot;&gt;([^&lt;]*)&lt;/span&gt;</expression>
-                       </RegExp>
-                       <expression noclean="1"/>
-               </RegExp>
-       </ParseAMGArtistName>
-
        <GetAMGArtistLifeSpanByAMGID dest="5" clearbuffers="no">
                <RegExp input="$$1" output="&lt;details&gt;&lt;url cache=&quot;am-\1-artist.html&quot; function=&quot;ParseAMGArtistLifeSpan&quot;&gt;http://www.allmusic.com/artist/\1&lt;/url&gt;&lt;/details&gt;" dest="5">
                        <expression noclean="1"/>
                                <expression />
                        </RegExp>
                        <RegExp input="$$1" output="&lt;born&gt;\1 \2&lt;/born&gt;" dest="11+">
-                               <expression trim="1,2">&lt;dt&gt;\s*Born[^&gt;]*&gt;[^&gt;]*&gt;[^&gt;]*&gt;(.*?\d{4})\s*([^&lt;]*)?</expression>
+                               <expression trim="1,2">&lt;h4&gt;\s*Born\s*&lt;/h4&gt;\s*&lt;div&gt;(.*?\d{4})\s*([^&lt;]*)?</expression>
                        </RegExp>
                        <RegExp input="$$1" output="&lt;died&gt;\1 \2&lt;/died&gt;" dest="11+">
-                               <expression trim="1,2">&lt;dt&gt;\s*Died[^&gt;]*&gt;[^&gt;]*&gt;[^&gt;]*&gt;(.*?\d{4})\s*([^&lt;]*)?</expression>
+                               <expression trim="1,2">&lt;h4&gt;\s*Died\s*&lt;/h4&gt;\s*&lt;div&gt;(.*?\d{4})\s*([^&lt;]*)?</expression>
                        </RegExp>
                        <RegExp input="$$1" output="&lt;formed&gt;\1&lt;/formed&gt;" dest="11+">
-                               <expression trim="1,2">&lt;dt&gt;\s*Formed[^&gt;]*&gt;[^&gt;]*&gt;[^&gt;]*&gt;(.*?\d{4})\s*([^&lt;]*)?</expression>
+                               <expression trim="1,2">&lt;h4&gt;\s*Formed\s*&lt;/h4&gt;\s*&lt;div&gt;(.*?\d{4})\s*([^&lt;]*)?</expression>
                        </RegExp>
                        <RegExp input="$$1" output="&lt;disbanded&gt;\1&lt;/disbanded&gt;" dest="11+">
-                               <expression trim="1,2">&lt;dt&gt;\s*Disbanded[^&gt;]*&gt;[^&gt;]*&gt;[^&gt;]*&gt;(.*?\d{4})\s*([^&lt;]*)?</expression>
+                               <expression trim="1,2">&lt;h4&gt;\s*Disbanded\s*&lt;/h4&gt;\s*&lt;div&gt;(.*?\d{4})\s*([^&lt;]*)?</expression>
                        </RegExp>
                        <RegExp input="$$11" output="$$12" dest="2">
                                <RegExp input="$INFO[lifespanfbsource]" output="&lt;chain function=&quot;GetMBFallbackLafeSpanByMBID&quot;&gt;$$8&lt;/chain&gt;" dest="12">
                                <expression />
                        </RegExp>
                        <RegExp input="$$1" output="&lt;born&gt;\1 \2&lt;/born&gt;" dest="2">
-                               <expression trim="1,2">&lt;dt&gt;\s*Born[^&gt;]*&gt;[^&gt;]*&gt;[^&gt;]*&gt;(.*?\d{4})\s*([^&lt;]*)?</expression>
+                               <expression trim="1,2">&lt;h4&gt;\s*Born\s*&lt;/h4&gt;\s*&lt;div&gt;(.*?\d{4})\s*([^&lt;]*)?</expression>
                        </RegExp>
                        <RegExp input="$$1" output="&lt;died&gt;\1 \2&lt;/died&gt;" dest="2+">
-                               <expression trim="1,2">&lt;dt&gt;\s*Died[^&gt;]*&gt;[^&gt;]*&gt;[^&gt;]*&gt;(.*?\d{4})\s*([^&lt;]*)?</expression>
+                               <expression trim="1,2">&lt;h4&gt;\s*Died\s*&lt;/h4&gt;\s*&lt;div&gt;(.*?\d{4})\s*([^&lt;]*)?</expression>
                        </RegExp>
                        <RegExp input="$$1" output="&lt;formed&gt;\1&lt;/formed&gt;" dest="2">
-                               <expression trim="1,2">&lt;dt&gt;\s*Formed[^&gt;]*&gt;[^&gt;]*&gt;[^&gt;]*&gt;(.*?\d{4})\s*([^&lt;]*)?</expression>
+                               <expression trim="1,2">&lt;h4&gt;\s*Formed\s*&lt;/h4&gt;\s*&lt;div&gt;(.*?\d{4})\s*([^&lt;]*)?</expression>
                        </RegExp>
                        <RegExp input="$$1" output="&lt;disbanded&gt;\1&lt;/disbanded&gt;" dest="2+">
-                               <expression trim="1,2">&lt;dt&gt;\s*Disbanded[^&gt;]*&gt;[^&gt;]*&gt;[^&gt;]*&gt;(.*?\d{4})\s*([^&lt;]*)?</expression>
+                               <expression trim="1,2">&lt;h4&gt;\s*Disbanded\s*&lt;/h4&gt;\s*&lt;div&gt;(.*?\d{4})\s*([^&lt;]*)?</expression>
                        </RegExp>
                        <expression noclean="1"/>
                </RegExp>
                                <expression />
                        </RegExp>
                        <RegExp input="$$1" output="&lt;yearsactive&gt;\1&lt;/yearsactive&gt;" dest="2">
-                               <expression trim="1" noclean="1">&lt;dd class=&quot;active&quot;&gt;([^&lt;]*)&lt;</expression>
+                               <expression trim="1" noclean="1">&lt;h\d&gt;Active&lt;/h\d&gt;[^&gt;]*&gt;([^&lt;]*)&lt;</expression>
                        </RegExp>
                        <expression noclean="1" />
                </RegExp>
                                <expression />
                        </RegExp>
                        <RegExp input="$$1" output="\1" dest="6">
-                               <expression noclean="1">&lt;dt&gt;Genres&lt;/dt&gt;(.*?)&lt;/dd&gt;</expression>
+                               <expression noclean="1">&lt;h4&gt;Genre&lt;/h4&gt;\s*&lt;div&gt;(.*?)&lt;/div&gt;</expression>
                        </RegExp>
-                       <RegExp input="$$6" output="&lt;genre&gt;\2&lt;/genre&gt;" dest="11">
-                               <expression repeat="yes" noclean="1">&lt;li&gt;&lt;a href=&quot;/genre/[^&quot;]*&quot;&gt;(&lt;strong&gt;)?([^&lt;]*)</expression>
+                       <RegExp input="$$6" output="&lt;genre&gt;\1&lt;/genre&gt;" dest="11">
+                               <expression repeat="yes" noclean="1">&lt;a\shref=&quot;http://www.allmusic.com/genre/[^&quot;]*&quot;&gt;([^&lt;]*)</expression>
                        </RegExp>
                        <RegExp input="$$11" output="$$12" dest="2">
                                <RegExp input="$INFO[genresfbsource]" output="&lt;chain function=&quot;GetLastFMFallbackArtistGenresByMBID&quot;&gt;$$8&lt;/chain&gt;" dest="12">
                                <expression />
                        </RegExp>
                        <RegExp input="$$1" output="\1" dest="6">
-                               <expression noclean="1">&lt;dt&gt;Genres&lt;/dt&gt;(.*?)&lt;/dd&gt;</expression>
+                               <expression noclean="1">&lt;h4&gt;Genre&lt;/h4&gt;\s*&lt;div&gt;(.*?)&lt;/div&gt;</expression>
                        </RegExp>
-                       <RegExp input="$$6" output="&lt;genre&gt;\2&lt;/genre&gt;" dest="2">
-                               <expression repeat="yes" noclean="1">&lt;li&gt;&lt;a href=&quot;/genre/[^&quot;]*&quot;&gt;(&lt;strong&gt;)?([^&lt;]*)</expression>
+                       <RegExp input="$$6" output="&lt;genre&gt;\1&lt;/genre&gt;" dest="2">
+                               <expression repeat="yes" noclean="1">&lt;a\shref=&quot;http://www.allmusic.com/genre/[^&quot;]*&quot;&gt;([^&lt;]*)</expression>
                        </RegExp>
                        <expression noclean="1" />
                </RegExp>
                                <expression />
                        </RegExp>
                        <RegExp input="$$1" output="\1" dest="7">
-                               <expression noclean="1">&lt;dt&gt;Styles&lt;/dt&gt;(.*?)&lt;/dd&gt;</expression>
+                               <expression noclean="1">&lt;h4&gt;Styles&lt;/h4&gt;\s*&lt;div&gt;(.*?)&lt;/div&gt;</expression>
                        </RegExp>
                        <RegExp input="$$7" output="&lt;style&gt;\1&lt;/style&gt;" dest="11">
-                               <expression repeat="yes" noclean="1">&lt;li&gt;&lt;a href=&quot;/style/[^&quot;]*&quot;&gt;([^&lt;]*)</expression>
+                               <expression repeat="yes" noclean="1">&lt;a\shref=&quot;http://www.allmusic.com/style/[^&quot;]*&quot;&gt;([^&lt;]*)</expression>
                        </RegExp>
                        <RegExp input="$$11" output="$$12" dest="2">
                                <RegExp input="$INFO[stylesfbsource]" output="&lt;chain function=&quot;GetLastFMFallbackArtistStylesByMBID&quot;&gt;$$8&lt;/chain&gt;" dest="12">
                                <expression />
                        </RegExp>
                        <RegExp input="$$1" output="\1" dest="7">
-                               <expression noclean="1">&lt;dt&gt;Styles&lt;/dt&gt;(.*?)&lt;/dd&gt;</expression>
+                               <expression noclean="1">&lt;h4&gt;Styles&lt;/h4&gt;\s*&lt;div&gt;(.*?)&lt;/div&gt;</expression>
                        </RegExp>
                        <RegExp input="$$7" output="&lt;style&gt;\1&lt;/style&gt;" dest="2">
-                               <expression repeat="yes" noclean="1">&lt;li&gt;&lt;a href=&quot;/style/[^&quot;]*&quot;&gt;([^&lt;]*)</expression>
+                               <expression repeat="yes" noclean="1">&lt;a\shref=&quot;http://www.allmusic.com/style/[^&quot;]*&quot;&gt;([^&lt;]*)</expression>
                        </RegExp>
                        <expression noclean="1" />
                </RegExp>
                                <expression />
                        </RegExp>
                        <RegExp input="$$1" output="\1" dest="10">
-                               <expression noclean="1">&lt;h4&gt;artist moods&lt;/h4&gt;(.*?)&lt;/ul&gt;</expression>
+                               <expression noclean="1">&gt;Artists\sMoods&lt;/h\d*&gt;(.*?)&lt;/ul&gt;</expression>
                        </RegExp>
                        <RegExp input="$$10" output="&lt;mood&gt;\1&lt;/mood&gt;" dest="2">
-                               <expression repeat="yes" noclean="1">&lt;li&gt;[^&gt;]*&gt;([^&lt;]*)&lt;/a&gt;&lt;/li&gt;</expression>
+                               <expression repeat="yes" noclean="1">&lt;li&gt;[^&gt;]*&gt;([^&lt;]*)&lt;/a&gt;\s*&lt;/li&gt;</expression>
                        </RegExp>
                        <expression noclean="1" />
                </RegExp>
                                <expression />
                        </RegExp>
                        <RegExp input="$$1" output="\1" dest="4">
-                               <expression noclean="1">&lt;h4&gt;photo gallery&lt;/h4&gt;(.*?)&lt;h4&gt;</expression>
+                               <expression noclean="1">&lt;h\d&gt;Photo\sGallery&lt;/h\d&gt;(.*?)&lt;h2\sclass=&quot;artist-name&quot;</expression>
                        </RegExp>
                        <RegExp input="$$4" output="&lt;thumb&gt;http://cps-static.rovicorp.com/3/JPG_1080/\1&lt;/thumb&gt;" dest="2">
                                <expression repeat="yes" noclean="1">&lt;img src=&quot;http://cps-static.rovicorp.com/3/JPG_[^/]*/([^&quot;]*)</expression>
        </GetAMGAlbumRatingByAMGID>
        <ParseAMGAlbumRating dest="5">
                <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
-                       <RegExp input="$$1" output="&lt;rating max=&quot;5.0&quot;&gt;\1&lt;/rating&gt;" dest="2">
-                               <expression noclean="1">itemprop=&quot;rating&quot;&gt;([0-9^]*)</expression>
+                       <RegExp input="$$1" output="&lt;rating max=&quot;10.0&quot;&gt;\1&lt;/rating&gt;" dest="2">
+                               <expression noclean="1">rating-allmusic-([0-9^]*)</expression>
                        </RegExp>
                        <expression noclean="1" />
                </RegExp>
        <ParseAMGAlbumGenres dest="5">
                <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
                        <RegExp input="$$1" output="\1" dest="6">
-                               <expression noclean="1">&lt;dd class=&quot;genres&quot;&gt;(.*?)&lt;/dd&gt;</expression>
+                               <expression noclean="1">&lt;h4&gt;Genre&lt;/h4&gt;\s*&lt;div&gt;(.*?)&lt;/div&gt;</expression>
                        </RegExp>
                        <RegExp input="$$6" output="&lt;genre&gt;\1&lt;/genre&gt;" dest="2">
-                               <expression repeat="yes" trim="1" noclean="1">&lt;li&gt;[^&gt;]*&gt;([^&lt;]*)&lt;/a&gt;&lt;/li&gt;</expression>
+                               <expression repeat="yes" noclean="1">&lt;a\shref=&quot;http://www.allmusic.com/genre/[^&quot;]*&quot;&gt;([^&lt;]*)</expression>
                        </RegExp>
                        <expression noclean="1" />
                </RegExp>
        <ParseAMGAlbumStyles dest="5">
                <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
                        <RegExp input="$$1" output="\1" dest="7">
-                               <expression noclean="1">&lt;dd class=&quot;styles&quot;&gt;(.*?)&lt;/dd&gt;</expression>
+                               <expression noclean="1">&lt;h4&gt;Styles&lt;/h4&gt;\s*&lt;div&gt;(.*?)&lt;/div&gt;</expression>
                        </RegExp>
                        <RegExp input="$$7" output="&lt;style&gt;\1&lt;/style&gt;" dest="2">
-                               <expression repeat="yes" trim="1" noclean="1">&lt;li&gt;[^&gt;]*&gt;([^&lt;]*)&lt;/a&gt;&lt;/li&gt;</expression>
+                               <expression repeat="yes" noclean="1">&lt;a\shref=&quot;http://www.allmusic.com/style/[^&quot;]*&quot;&gt;([^&lt;]*)</expression>
                        </RegExp>
                        <expression noclean="1" />
                </RegExp>
        <ParseAMGAlbumMoods dest="5">
                <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
                        <RegExp input="$$1" output="\1" dest="8">
-                               <expression trim="1" noclean="1">&gt;\s*&lt;h4&gt;album moods&lt;/h4&gt;(.*?)&lt;/ul&gt;</expression>
+                               <expression trim="1" noclean="1">&gt;\s*&lt;h4&gt;Album\sMoods&lt;/h4&gt;(.*?)&lt;/section&gt;</expression>
                        </RegExp>
                        <RegExp input="$$8" output="&lt;mood&gt;\1&lt;/mood&gt;" dest="2">
-                               <expression repeat="yes" noclean="1">&lt;li&gt;[^&gt;]*&gt;([^&lt;]*)&lt;/a&gt;&lt;/li&gt;</expression>
+                               <expression repeat="yes" noclean="1">&lt;a\shref=&quot;http://www.allmusic.com/mood/[^&quot;]*&quot;&gt;([^&lt;]*)</expression>
                        </RegExp>
                        <expression noclean="1" />
                </RegExp>
        <ParseAMGAlbumThemes dest="5">
                <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
                        <RegExp input="$$1" output="\1" dest="4">
-                               <expression noclean="1">&lt;h4&gt;album themes&lt;/h4&gt;(.*?)&lt;/ul&gt;</expression>
+                               <expression trim="1" noclean="1">&gt;\s*&lt;h4&gt;Themes&lt;/h4&gt;(.*?)&lt;/ul&gt;</expression>
                        </RegExp>
                        <RegExp input="$$4" output="&lt;theme&gt;\1&lt;/theme&gt;" dest="2">
-                               <expression repeat="yes" noclean="1">&lt;li&gt;[^&gt;]*&gt;([^&lt;]*)&lt;/a&gt;&lt;/li&gt;</expression>
+                               <expression repeat="yes" noclean="1">&lt;a\shref=&quot;http://www.allmusic.com/theme/[^&quot;]*&quot;&gt;([^&lt;]*)</expression>
                        </RegExp>
                        <expression noclean="1" />
                </RegExp>
        <ParseAMGAlbumThumbs dest="5">
                <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
                        <RegExp input="$$1" output="&lt;thumb&gt;http://cps-static.rovicorp.com/3/JPG_500/\1&lt;/thumb&gt;" dest="2">
-                               <expression noclean="1">&lt;meta property=&quot;og:image&quot; content=&quot;http://cps-static.rovicorp.com/3/JPG_[^/]*/([^&quot;]*)</expression>
+                               <expression noclean="1">&quot;http://cps-static.rovicorp.com/3/JPG_[^/]*/([^&quot;]*)</expression>
                        </RegExp>
                        <expression noclean="1" />
                </RegExp>
index 0a71e09..fb097de 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="metadata.common.hdtrailers.net"
        name="HD-Trailers common scraper functions"
-       version="1.0.9"
+       version="2.0.2"
        provider-name="Bence Nádas (olympia)">
   <requires>
     <import addon="xbmc.metadata" version="2.1.0"/>
index 485e72b..c5eae9a 100644 (file)
@@ -2,7 +2,7 @@
        <GetHDTrailersnet480p dest="3">
                <RegExp input="$$6" output="&lt;details&gt;&lt;url function=&quot;Parse480pTrailer&quot; cache=&quot;hd-trailers-\1.xml&quot;&gt;http://xbmc.hd-trailers.net/movie/\1&lt;/url&gt;&lt;/details&gt;" dest="3">
                        <RegExp input="$$1" output="\1-" dest="6">
-                               <expression repeat="yes" fixchars="1" trim="1">([\w]+)</expression>
+                               <expression repeat="yes" trim="1">([\w]+)</expression>
                        </RegExp>
                        <expression noclean="1" />
                </RegExp>
@@ -10,7 +10,7 @@
        <GetHDTrailersnet720p dest="3">
                <RegExp input="$$6" output="&lt;details&gt;&lt;url function=&quot;Parse720pTrailer&quot; cache=&quot;hd-trailers-\1.xml&quot;&gt;http://xbmc.hd-trailers.net/movie/\1&lt;/url&gt;&lt;/details&gt;" dest="3">
                        <RegExp input="$$1" output="\1-" dest="6">
-                               <expression repeat="yes" fixchars="1" trim="1">([\w]+)</expression>
+                               <expression repeat="yes" trim="1">([\w]+)</expression>
                        </RegExp>
                        <expression noclean="1" />
                </RegExp>
        <GetHDTrailersnet1080p dest="3">
                <RegExp input="$$6" output="&lt;details&gt;&lt;url function=&quot;Parse1080pTrailer&quot; cache=&quot;hd-trailers-\1.xml&quot;&gt;http://xbmc.hd-trailers.net/movie/\1&lt;/url&gt;&lt;/details&gt;" dest="3">
                        <RegExp input="$$1" output="\1-" dest="6">
-                               <expression repeat="yes" fixchars="1" trim="1">([\w]+)</expression>
+                               <expression repeat="yes" trim="1">([\w]+)</expression>
                        </RegExp>
                        <expression noclean="1" />
                </RegExp>
        </GetHDTrailersnet1080p>
        <Parse480pTrailer dest="5">
-               <RegExp input="$$6" output="&lt;details&gt;&lt;trailer&gt;\1&lt;/trailer&gt;&lt;/details&gt;" dest="5">
+               <RegExp input="$$6" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
                        <!--fetch 480p trailer link from hdtrailers.net-->
-                       <RegExp input="$$1" output="http://playlist.yahoo.com/makeplaylist.dll?sdm=web&amp;pt=rd&amp;sid=\2" dest="6">
-                               <expression noclean="1">&quot;&gt;(Theatrical )?Trailer&lt;/span&gt;&lt;/td&gt;.*?sid=(\d*)&quot; rel=&quot;lightbox\[res480p</expression>
-                       </RegExp>
-                       <RegExp input="$$1" output="http://playlist.yahoo.com/makeplaylist.dll?sdm=web&amp;pt=rd&amp;sid=\2" dest="6+">
-                               <expression noclean="1">&quot;&gt;(Teaser )?Trailer&lt;/span&gt;&lt;/td&gt;.*?sid=(\d*)&quot; rel=&quot;lightbox\[res480p</expression>
+                       <RegExp input="$$1" output="&lt;trailer&gt;http://pdl.stream.aol.com/\1&lt;/trailer&gt;" dest="6">
+                               <expression noclean="1">http://pdl\.stream\.aol\.com/([^&quot;]*?_480p_dl.mov)"\srel=&quot;lightbox\[res480p</expression>
                        </RegExp>
                        <expression noclean="1" />
                </RegExp>
        </Parse480pTrailer>
        <Parse720pTrailer dest="5">
-               <RegExp input="$$6" output="&lt;details&gt;&lt;trailer&gt;\1&lt;/trailer&gt;&lt;/details&gt;" dest="5">
+               <RegExp input="$$6" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
                        <!--Fallback to fetch 480p trailer link if 720p is not available-->
-                       <RegExp input="$$1" output="http://playlist.yahoo.com/makeplaylist.dll?sdm=web&amp;pt=rd&amp;sid=\2" dest="6">
-                               <expression noclean="1">&quot;&gt;(Theatrical )?Trailer&lt;/span&gt;&lt;/td&gt;.*?sid=(\d*)&quot; rel=&quot;lightbox\[res480p</expression>
-                       </RegExp>
-                       <RegExp input="$$1" output="http://playlist.yahoo.com/makeplaylist.dll?sdm=web&amp;pt=rd&amp;sid=\2" dest="6+">
-                               <expression noclean="1">&quot;&gt;(Teaser )?Trailer&lt;/span&gt;&lt;/td&gt;.*?sid=(\d*)&quot; rel=&quot;lightbox\[res480p</expression>
+                       <RegExp input="$$1" output="&lt;trailer&gt;http://pdl.stream.aol.com/\1&lt;/trailer&gt;" dest="6">
+                               <expression noclean="1">http://pdl\.stream\.aol\.com/([^&quot;]*?_480p_dl.mov)"\srel=&quot;lightbox\[res480p</expression>
                        </RegExp>
                        <!--Fetch 720p trailer link from hdtrailers.net-->
-                       <RegExp input="$$1" output="http://playlist.yahoo.com/makeplaylist.dll?sdm=web&amp;pt=rd&amp;sid=\2" dest="6">
-                               <expression noclean="1">&quot;&gt;(Theatrical )?Trailer&lt;/span&gt;&lt;/td&gt;.*?sid=(\d*)&quot; rel=&quot;lightbox\[res720p</expression>
-                       </RegExp>
-                       <RegExp input="$$1" output="http://playlist.yahoo.com/makeplaylist.dll?sdm=web&amp;pt=rd&amp;sid=\2" dest="6+">
-                               <expression noclean="1">&quot;&gt;(Teaser )?Trailer&lt;/span&gt;&lt;/td&gt;.*?sid=(\d*)&quot; rel=&quot;lightbox\[res720p</expression>
+                       <RegExp input="$$1" output="&lt;trailer&gt;http://pdl.stream.aol.com/\1&lt;/trailer&gt;" dest="6">
+                               <expression noclean="1">http://pdl\.stream\.aol\.com/([^&quot;]*?_720p_dl.mov)"\srel=&quot;lightbox\[res720p</expression>
                        </RegExp>
                        <expression noclean="1" />
                </RegExp>
        </Parse720pTrailer>
        <Parse1080pTrailer dest="5">
-               <RegExp input="$$6" output="&lt;details&gt;&lt;trailer&gt;\1&lt;/trailer&gt;&lt;/details&gt;" dest="5">
+               <RegExp input="$$6" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
                        <!--Fallback to fetch 480p trailer link if 720p and 1080p are not available-->
-                       <RegExp input="$$1" output="http://playlist.yahoo.com/makeplaylist.dll?sdm=web&amp;pt=rd&amp;sid=\2" dest="6">
-                               <expression noclean="1">&quot;&gt;(Theatrical )?Trailer&lt;/span&gt;&lt;/td&gt;.*?sid=(\d*)&quot; rel=&quot;lightbox\[res480p</expression>
-                       </RegExp>
-                       <RegExp input="$$1" output="http://playlist.yahoo.com/makeplaylist.dll?sdm=web&amp;pt=rd&amp;sid=\2" dest="6+">
-                               <expression noclean="1">&quot;&gt;(Teaser )?Trailer&lt;/span&gt;&lt;/td&gt;.*?sid=(\d*)&quot; rel=&quot;lightbox\[res480p</expression>
+                       <RegExp input="$$1" output="&lt;trailer&gt;http://pdl.stream.aol.com/\1&lt;/trailer&gt;" dest="6">
+                               <expression noclean="1">http://pdl\.stream\.aol\.com/([^&quot;]*?_480p_dl.mov)"\srel=&quot;lightbox\[res480p</expression>
                        </RegExp>
-                       <!--Fallback to fetch 720p trailer link if 1080p is not available-->
-                       <RegExp input="$$1" output="http://playlist.yahoo.com/makeplaylist.dll?sdm=web&amp;pt=rd&amp;sid=\2" dest="6">
-                               <expression noclean="1">&quot;&gt;(Theatrical )?Trailer&lt;/span&gt;&lt;/td&gt;.*?sid=(\d*)&quot; rel=&quot;lightbox\[res720p</expression>
-                       </RegExp>
-                       <RegExp input="$$1" output="http://playlist.yahoo.com/makeplaylist.dll?sdm=web&amp;pt=rd&amp;sid=\2" dest="6+">
-                               <expression noclean="1">&quot;&gt;(Teaser )?Trailer&lt;/span&gt;&lt;/td&gt;.*?sid=(\d*)&quot; rel=&quot;lightbox\[res720p</expression>
+                       <!--Fetch 720p trailer link from hdtrailers.net-->
+                       <RegExp input="$$1" output="&lt;trailer&gt;http://pdl.stream.aol.com/\1&lt;/trailer&gt;" dest="6">
+                               <expression noclean="1">http://pdl\.stream\.aol\.com/([^&quot;]*?_720p_dl.mov)"\srel=&quot;lightbox\[res720p</expression>
                        </RegExp>
                        <!--Fetch 1080p trailer link from hdtrailers.net-->
-                       <RegExp input="$$1" output="http://playlist.yahoo.com/makeplaylist.dll?sdm=web&amp;pt=rd&amp;sid=\2" dest="6">
-                               <expression noclean="1">&quot;&gt;(Theatrical )?Trailer&lt;/span&gt;&lt;/td&gt;.*?sid=(\d*)&quot; rel=&quot;lightbox\[res1080p</expression>
-                       </RegExp>
-                       <RegExp input="$$1" output="http://playlist.yahoo.com/makeplaylist.dll?sdm=web&amp;pt=rd&amp;sid=\2" dest="6+">
-                               <expression noclean="1">&quot;&gt;(Teaser  )?Trailer&lt;/span&gt;&lt;/td&gt;.*?sid=(\d*)&quot; rel=&quot;lightbox\[res1080p</expression>
+                       <RegExp input="$$1" output="&lt;trailer&gt;http://pdl.stream.aol.com/\1&lt;/trailer&gt;" dest="6">
+                               <expression noclean="1">http://pdl\.stream\.aol\.com/([^&quot;]*?_1080p_dl.mov)"\srel=&quot;lightbox\[res1080p</expression>
                        </RegExp>
                        <expression noclean="1" />
                </RegExp>
        </Parse1080pTrailer>
-</scraperfunctions>
+</scraperfunctions>
\ No newline at end of file
index 2b7d8b3..47e8d2f 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="metadata.common.htbackdrops.com"
        name="HTBackdrops"
-       version="1.2.0"
+       version="1.3.0"
        provider-name="Team XBMC">
   <requires>
     <import addon="xbmc.metadata" version="1.0"/>
index 0531585..71f8555 100644 (file)
@@ -1,11 +1,11 @@
 <scraperfunctions>
        <GetHTBThumbsByMBID dest="5" clearbuffers="no">
-               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseHTBThumbs&quot; post=&quot;yes&quot; cache=&quot;htb-images-\1.xml&quot;&gt;http://htbackdrops.com/api/7681a907c805e0670330c694e788e8e8/searchXML?mbid=\1&amp;aid=1,5&lt;/url&gt;&lt;/details&gt;" dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseHTBThumbs&quot; post=&quot;yes&quot; cache=&quot;htb-images-\1.xml&quot;&gt;http://htbackdrops.org/api/7681a907c805e0670330c694e788e8e8/searchXML?mbid=\1&amp;aid=1,5&lt;/url&gt;&lt;/details&gt;" dest="5">
                        <expression noclean="1" />
                </RegExp>
        </GetHTBThumbsByMBID>
        <GetHTBThumbs dest="5">
-               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseHTBThumbs&quot; post=&quot;yes&quot; cache=&quot;htb-images-\1.xml&quot;&gt;http://htbackdrops.com/api/7681a907c805e0670330c694e788e8e8/searchXML?keywords=\1&amp;default_operator=and&amp;aid=1,5&lt;/url&gt;&lt;/details&gt;" dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseHTBThumbs&quot; post=&quot;yes&quot; cache=&quot;htb-images-\1.xml&quot;&gt;http://htbackdrops.org/api/7681a907c805e0670330c694e788e8e8/searchXML?keywords=\1&amp;default_operator=and&amp;aid=1,5&lt;/url&gt;&lt;/details&gt;" dest="5">
                        <expression noclean="1" />
                </RegExp>
        </GetHTBThumbs>
@@ -14,7 +14,7 @@
                        <RegExp input="" output="" dest="13">
                                <expression />
                        </RegExp>
-                       <RegExp input="$$1" output="&lt;thumb preview=&quot;http://www.htbackdrops.com/api/7681a907c805e0670330c694e788e8e8/download/\1/thumbnail&quot;&gt;http://www.htbackdrops.com/api/7681a907c805e0670330c694e788e8e8/download/\1/fullsize&lt;/thumb&gt;" dest="13">
+                       <RegExp input="$$1" output="&lt;thumb preview=&quot;http://www.htbackdrops.org/api/7681a907c805e0670330c694e788e8e8/download/\1/thumbnail&quot;&gt;http://www.htbackdrops.org/api/7681a907c805e0670330c694e788e8e8/download/\1/fullsize&lt;/thumb&gt;" dest="13">
                                <expression repeat="yes" noclean="1">&lt;id&gt;([^&lt;]+)&lt;/id&gt;\n[^&lt;]+&lt;aid&gt;5&lt;/aid&gt;</expression>
                        </RegExp>
                        <expression noclean="1" />
        </ParseHTBThumbs>
 
        <GetHTBFanartByMBID dest="5" clearbuffers="no">
-               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseHTBFanart&quot; post=&quot;yes&quot; cache=&quot;htb-images-\1.xml&quot;&gt;http://htbackdrops.com/api/7681a907c805e0670330c694e788e8e8/searchXML?mbid=\1&amp;aid=1,5&lt;/url&gt;&lt;/details&gt;" dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseHTBFanart&quot; post=&quot;yes&quot; cache=&quot;htb-images-\1.xml&quot;&gt;http://htbackdrops.org/api/7681a907c805e0670330c694e788e8e8/searchXML?mbid=\1&amp;aid=1,5&lt;/url&gt;&lt;/details&gt;" dest="5">
                        <expression noclean="1" />
                </RegExp>
        </GetHTBFanartByMBID>
        <GetHTBFanart dest="5">
-               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseHTBFanart&quot; post=&quot;yes&quot; cache=&quot;htb-images-\1.xml&quot;&gt;http://htbackdrops.com/api/7681a907c805e0670330c694e788e8e8/searchXML?keywords=\1&amp;default_operator=and&amp;aid=1,5&lt;/url&gt;&lt;/details&gt;" dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseHTBFanart&quot; post=&quot;yes&quot; cache=&quot;htb-images-\1.xml&quot;&gt;http://htbackdrops.org/api/7681a907c805e0670330c694e788e8e8/searchXML?keywords=\1&amp;default_operator=and&amp;aid=1,5&lt;/url&gt;&lt;/details&gt;" dest="5">
                        <expression noclean="1" />
                </RegExp>
        </GetHTBFanart>
@@ -39,7 +39,7 @@
                        <RegExp input="" output="" dest="14">
                                <expression />
                        </RegExp>
-                       <RegExp input="$$1" output="&lt;thumb preview=&quot;http://www.htbackdrops.com/api/7681a907c805e0670330c694e788e8e8/download/\1/thumbnail&quot;&gt;http://www.htbackdrops.com/api/7681a907c805e0670330c694e788e8e8/download/\1/fullsize&lt;/thumb&gt;" dest="14">
+                       <RegExp input="$$1" output="&lt;thumb preview=&quot;http://www.htbackdrops.org/api/7681a907c805e0670330c694e788e8e8/download/\1/thumbnail&quot;&gt;http://www.htbackdrops.org/api/7681a907c805e0670330c694e788e8e8/download/\1/fullsize&lt;/thumb&gt;" dest="14">
                                <expression repeat="yes" noclean="1">&lt;id&gt;([^&lt;]+)&lt;/id&gt;\n[^&lt;]+&lt;aid&gt;1&lt;/aid&gt;</expression>
                        </RegExp>
                        <RegExp input="$$14" output="\1" dest="13">
index 4658980..95c2a46 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="metadata.common.imdb.com"
        name="IMDB Scraper Library"
-       version="2.7.6"
+       version="2.7.7"
        provider-name="Team XBMC">
   <requires>
     <import addon="xbmc.metadata" version="2.1.0"/>
index 95d20ec..c2f1418 100644 (file)
@@ -1,3 +1,6 @@
+[B]2.7.7[/B]
+- fixed: MetaCritic Score for 100/100 films
+
 [B]2.7.6[/B]
 - fixed: IMDb studio/director/writer after layout change
 
index 7d92f36..cb1646d 100644 (file)
@@ -77,7 +77,7 @@
        <ParseMetaCriticRating dest="5">
                <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
                        <RegExp input="$$1" output="&lt;rating&gt;\1.\2&lt;/rating&gt;" dest="2">
-                               <expression>&lt;a\shref=&quot;criticreviews[^&quot;]*?&quot;\stitle[^&gt;]*?&gt;\s(\d)(\d*)</expression>
+                               <expression>&lt;a\shref=&quot;criticreviews[^&quot;]*?&quot;\stitle[^&gt;]*?&gt;\s(\d*)(\d)/</expression>
                        </RegExp>
                        <expression noclean="1" />
                </RegExp>
index a70f9cf..25265fb 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="metadata.common.musicbrainz.org"
        name="musicbrainz"
-        version="1.3.1b"
+        version="2.0.1"
        provider-name="Team XBMC">
   <requires>
     <import addon="xbmc.metadata" version="2.1.0"/>
index a35a9b4..e954bdc 100644 (file)
        <ParseMBAlbumTracks dest="5">
                <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
                        <RegExp input="$$1" output="&lt;track&gt;&lt;position&gt;\1&lt;/position&gt;&lt;title&gt;\4&lt;/title&gt;&lt;duration&gt;\2&lt;/duration&gt;&lt;/track&gt;" dest="2">
-                               <expression repeat="yes">&lt;track&gt;&lt;position&gt;(\d+)&lt;/position&gt;&lt;number&gt;\d*&lt;/number&gt;(?:&lt;length&gt;(\d*?)\d{3}&lt;/length&gt;)*(?:&lt;recording id=&quot;([^&quot;]*)&quot;&gt;)*&lt;title&gt;([^&lt;]*)&lt;</expression>
+                               <expression repeat="yes">&lt;track[^&gt;]+&gt;&lt;position&gt;(\d+)&lt;/position&gt;&lt;number&gt;\d*&lt;/number&gt;(?:&lt;length&gt;(\d*?)\d{3}&lt;/length&gt;)*(?:&lt;recording id=&quot;([^&quot;]*)&quot;&gt;)*&lt;title&gt;([^&lt;]*)&lt;</expression>
                        </RegExp>
                        <expression noclean="1">(.+)</expression>
                </RegExp>
index 4327637..02e33e9 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="metadata.common.theaudiodb.com"
        name="TheAudioDb Common Scraper Functions"
-       version="1.6.1"
+       version="1.7.1"
        provider-name="Team XBMC">
   <requires>
     <import addon="xbmc.metadata" version="2.1.0"/>
index 7c1a807..6f49d7d 100644 (file)
@@ -67,6 +67,9 @@
                        <RegExp input="" output="" dest="11">
                                <expression />
                        </RegExp>
+                       <RegExp input="" output="" dest="12">
+                               <expression />
+                       </RegExp>
                        <RegExp input="$$1" output="\1" dest="11">
                                <expression fixchars="1">strBiographyEN&quot;:&quot;(.*?)&quot;,&quot;</expression>
                        </RegExp>
                        <RegExp input="" output="" dest="11">
                                <expression />
                        </RegExp>
+                       <RegExp input="" output="" dest="12">
+                               <expression />
+                       </RegExp>
                        <RegExp input="$$1" output="&lt;formed&gt;\2 (\1)&lt;/formed&gt;" dest="11">
                                <expression fixchars="2" noclean="1">intFormedYear&quot;:&quot;([^&quot;]*).*?strCountry&quot;:&quot;([^&quot;]*)</expression>
                        </RegExp>
                        <RegExp input="" output="" dest="11">
                                <expression />
                        </RegExp>
+                       <RegExp input="" output="" dest="12">
+                               <expression />
+                       </RegExp>
                        <RegExp input="$$1" output="&lt;formed&gt;\2 (\1)&lt;/formed&gt;" dest="11">
                                <expression fixchars="2" noclean="1">intFormedYear&quot;:&quot;([^&quot;]*).*?strCountry&quot;:&quot;([^&quot;]*)</expression>
                        </RegExp>
                        <RegExp input="" output="" dest="11">
                                <expression />
                        </RegExp>
+                       <RegExp input="" output="" dest="12">
+                               <expression />
+                       </RegExp>
                        <RegExp input="$$1" output="\1" dest="11">
                                <expression fixchars="1">strSubGenre&quot;:&quot;([^&quot;]*)</expression>
                        </RegExp>
                </RegExp>
        </ParseTADBAlbumReview>
 
+       <GetTADBAlbumRating dest="5">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseTADBAlbumRating&quot; cache=&quot;tadb-\1-album.json&quot;&gt;http://www.theaudiodb.com/api/v1/json/58424d43204d6564696120/album.php?m=\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetTADBAlbumRating>
+       <GetTADBAlbumRatingByMBID dest="5" clearbuffers="no">
+               <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseTADBAlbumRating&quot;&gt;http://www.theaudiodb.com/api/v1/json/58424d43204d6564696120/album-mb.php?i=\1&lt;/url&gt;&lt;/details&gt;" dest="5">
+                       <expression noclean="1"/>
+               </RegExp>
+       </GetTADBAlbumRatingByMBID>
+       <ParseTADBAlbumRating dest="5">
+               <RegExp input="$$2" output="&lt;details&gt;\1&lt;/details&gt;" dest="5">
+                       <RegExp input="$$1" output="&lt;rating max=&quot;10.0&quot;&gt;\1&lt;/rating&gt;" dest="2">
+                               <expression fixchars="1">intScore&quot;:&quot;(.*?)&quot;,&quot;</expression>
+                       </RegExp>
+                       <expression noclean="1" />
+               </RegExp>
+       </ParseTADBAlbumRating>
+
        <GetTADBAlbumTitleByID dest="5">
                <RegExp input="$$1" output="&lt;details&gt;&lt;url function=&quot;ParseTADBAlbumTitle&quot; cache=&quot;tadb-\1-album.json&quot;&gt;http://www.theaudiodb.com/api/v1/json/58424d43204d6564696120/album.php?m=\1&lt;/url&gt;&lt;/details&gt;" dest="5">
                        <expression noclean="1"/>
index fc9a87a..bd879c3 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="metadata.common.themoviedb.org"
        name="The Movie Database Scraper Library"
-       version="2.9.3"
+       version="2.9.4"
        provider-name="Team XBMC">
   <requires>
     <import addon="xbmc.metadata" version="2.1.0"/>
index 675bf67..65b207a 100644 (file)
                        <RegExp input="$$1" output="\1" dest="7">
                                <expression clear="yes" noclean="1">&quot;cast&quot;:\[([^\]]*)</expression>
                        </RegExp>
-                       <RegExp input="$$7" output="&lt;actor&gt;&lt;name&gt;\1&lt;/name&gt;&lt;role&gt;\2&lt;/role&gt;&lt;thumb&gt;http://cf2.imgobject.com/t/p/original\3&lt;/thumb&gt;&lt;/actor&gt;" dest="2">
-                               <expression repeat="yes" fixchars="1">&quot;name&quot;:&quot;([^&quot;]*)&quot;,&quot;character&quot;:&quot;([^&quot;]*)&quot;,&quot;order&quot;:[0-9]*,&quot;cast_id&quot;:[0-9]*,&quot;profile_path&quot;:&quot;([^&quot;]*)&quot;</expression>
+                       <RegExp input="$$7" output="&lt;actor&gt;&lt;name&gt;\1&lt;/name&gt;&lt;role&gt;\2&lt;/role&gt;&lt;order&gt;\3&lt;/order&gt;&lt;thumb&gt;http://cf2.imgobject.com/t/p/original\4&lt;/thumb&gt;&lt;/actor&gt;" dest="2">
+                               <expression repeat="yes" fixchars="1">&quot;name&quot;:&quot;([^&quot;]*)&quot;,&quot;character&quot;:&quot;([^&quot;]*)&quot;,&quot;order&quot;:([0-9]*),&quot;cast_id&quot;:[0-9]*,&quot;profile_path&quot;:&quot;([^&quot;]*)&quot;</expression>
                        </RegExp>
-                       <RegExp input="$$7" output="&lt;actor&gt;&lt;name&gt;\1&lt;/name&gt;&lt;role&gt;\2&lt;/role&gt;&lt;/actor&gt;" dest="2+">
-                               <expression repeat="yes" fixchars="1">&quot;name&quot;:&quot;([^&quot;]*)&quot;,&quot;character&quot;:&quot;([^&quot;]*)&quot;,&quot;order&quot;:[0-9]*,&quot;cast_id&quot;:[0-9]*,&quot;profile_path&quot;:null</expression>
+                       <RegExp input="$$7" output="&lt;actor&gt;&lt;name&gt;\1&lt;/name&gt;&lt;role&gt;\2&lt;/role&gt;&lt;order&gt;\3&lt;/order&gt;&lt;/actor&gt;" dest="2+">
+                               <expression repeat="yes" fixchars="1">&quot;name&quot;:&quot;([^&quot;]*)&quot;,&quot;character&quot;:&quot;([^&quot;]*)&quot;,&quot;order&quot;:([0-9]*),&quot;cast_id&quot;:[0-9]*,&quot;profile_path&quot;:null</expression>
                        </RegExp>
                        <expression noclean="1" />
                </RegExp>
diff --git a/addons/script.module.simplejson/addon.xml b/addons/script.module.simplejson/addon.xml
deleted file mode 100644 (file)
index c5709c4..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="script.module.simplejson"
-       name="simplejson"
-       version="2.0.10" 
-       provider-name="code.google.com/simplejson">
-  <requires>
-    <import addon="xbmc.python" version="2.0.0"/>
-  </requires>
-  <extension point="xbmc.python.module"
-             library="lib" />
-  <extension point="xbmc.addon.metadata">
-    <platform>all</platform>
-  </extension>
-</addon>
diff --git a/addons/script.module.simplejson/lib/LICENSE.txt b/addons/script.module.simplejson/lib/LICENSE.txt
deleted file mode 100644 (file)
index ad95f29..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2006 Bob Ippolito
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/addons/script.module.simplejson/lib/simplejson/__init__.py b/addons/script.module.simplejson/lib/simplejson/__init__.py
deleted file mode 100644 (file)
index d5b4d39..0000000
+++ /dev/null
@@ -1,318 +0,0 @@
-r"""JSON (JavaScript Object Notation) <http://json.org> is a subset of
-JavaScript syntax (ECMA-262 3rd edition) used as a lightweight data
-interchange format.
-
-:mod:`simplejson` exposes an API familiar to users of the standard library
-:mod:`marshal` and :mod:`pickle` modules. It is the externally maintained
-version of the :mod:`json` library contained in Python 2.6, but maintains
-compatibility with Python 2.4 and Python 2.5 and (currently) has
-significant performance advantages, even without using the optional C
-extension for speedups.
-
-Encoding basic Python object hierarchies::
-
-    >>> import simplejson as json
-    >>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
-    '["foo", {"bar": ["baz", null, 1.0, 2]}]'
-    >>> print json.dumps("\"foo\bar")
-    "\"foo\bar"
-    >>> print json.dumps(u'\u1234')
-    "\u1234"
-    >>> print json.dumps('\\')
-    "\\"
-    >>> print json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True)
-    {"a": 0, "b": 0, "c": 0}
-    >>> from StringIO import StringIO
-    >>> io = StringIO()
-    >>> json.dump(['streaming API'], io)
-    >>> io.getvalue()
-    '["streaming API"]'
-
-Compact encoding::
-
-    >>> import simplejson as json
-    >>> json.dumps([1,2,3,{'4': 5, '6': 7}], separators=(',',':'))
-    '[1,2,3,{"4":5,"6":7}]'
-
-Pretty printing::
-
-    >>> import simplejson as json
-    >>> s = json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4)
-    >>> print '\n'.join([l.rstrip() for l in  s.splitlines()])
-    {
-        "4": 5,
-        "6": 7
-    }
-
-Decoding JSON::
-
-    >>> import simplejson as json
-    >>> obj = [u'foo', {u'bar': [u'baz', None, 1.0, 2]}]
-    >>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]') == obj
-    True
-    >>> json.loads('"\\"foo\\bar"') == u'"foo\x08ar'
-    True
-    >>> from StringIO import StringIO
-    >>> io = StringIO('["streaming API"]')
-    >>> json.load(io)[0] == 'streaming API'
-    True
-
-Specializing JSON object decoding::
-
-    >>> import simplejson as json
-    >>> def as_complex(dct):
-    ...     if '__complex__' in dct:
-    ...         return complex(dct['real'], dct['imag'])
-    ...     return dct
-    ...
-    >>> json.loads('{"__complex__": true, "real": 1, "imag": 2}',
-    ...     object_hook=as_complex)
-    (1+2j)
-    >>> import decimal
-    >>> json.loads('1.1', parse_float=decimal.Decimal) == decimal.Decimal('1.1')
-    True
-
-Specializing JSON object encoding::
-
-    >>> import simplejson as json
-    >>> def encode_complex(obj):
-    ...     if isinstance(obj, complex):
-    ...         return [obj.real, obj.imag]
-    ...     raise TypeError(repr(o) + " is not JSON serializable")
-    ...
-    >>> json.dumps(2 + 1j, default=encode_complex)
-    '[2.0, 1.0]'
-    >>> json.JSONEncoder(default=encode_complex).encode(2 + 1j)
-    '[2.0, 1.0]'
-    >>> ''.join(json.JSONEncoder(default=encode_complex).iterencode(2 + 1j))
-    '[2.0, 1.0]'
-
-
-Using simplejson.tool from the shell to validate and pretty-print::
-
-    $ echo '{"json":"obj"}' | python -m simplejson.tool
-    {
-        "json": "obj"
-    }
-    $ echo '{ 1.2:3.4}' | python -m simplejson.tool
-    Expecting property name: line 1 column 2 (char 2)
-"""
-__version__ = '2.0.9'
-__all__ = [
-    'dump', 'dumps', 'load', 'loads',
-    'JSONDecoder', 'JSONEncoder',
-]
-
-__author__ = 'Bob Ippolito <bob@redivi.com>'
-
-from decoder import JSONDecoder
-from encoder import JSONEncoder
-
-_default_encoder = JSONEncoder(
-    skipkeys=False,
-    ensure_ascii=True,
-    check_circular=True,
-    allow_nan=True,
-    indent=None,
-    separators=None,
-    encoding='utf-8',
-    default=None,
-)
-
-def dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True,
-        allow_nan=True, cls=None, indent=None, separators=None,
-        encoding='utf-8', default=None, **kw):
-    """Serialize ``obj`` as a JSON formatted stream to ``fp`` (a
-    ``.write()``-supporting file-like object).
-
-    If ``skipkeys`` is true then ``dict`` keys that are not basic types
-    (``str``, ``unicode``, ``int``, ``long``, ``float``, ``bool``, ``None``)
-    will be skipped instead of raising a ``TypeError``.
-
-    If ``ensure_ascii`` is false, then the some chunks written to ``fp``
-    may be ``unicode`` instances, subject to normal Python ``str`` to
-    ``unicode`` coercion rules. Unless ``fp.write()`` explicitly
-    understands ``unicode`` (as in ``codecs.getwriter()``) this is likely
-    to cause an error.
-
-    If ``check_circular`` is false, then the circular reference check
-    for container types will be skipped and a circular reference will
-    result in an ``OverflowError`` (or worse).
-
-    If ``allow_nan`` is false, then it will be a ``ValueError`` to
-    serialize out of range ``float`` values (``nan``, ``inf``, ``-inf``)
-    in strict compliance of the JSON specification, instead of using the
-    JavaScript equivalents (``NaN``, ``Infinity``, ``-Infinity``).
-
-    If ``indent`` is a non-negative integer, then JSON array elements and object
-    members will be pretty-printed with that indent level. An indent level
-    of 0 will only insert newlines. ``None`` is the most compact representation.
-
-    If ``separators`` is an ``(item_separator, dict_separator)`` tuple
-    then it will be used instead of the default ``(', ', ': ')`` separators.
-    ``(',', ':')`` is the most compact JSON representation.
-
-    ``encoding`` is the character encoding for str instances, default is UTF-8.
-
-    ``default(obj)`` is a function that should return a serializable version
-    of obj or raise TypeError. The default simply raises TypeError.
-
-    To use a custom ``JSONEncoder`` subclass (e.g. one that overrides the
-    ``.default()`` method to serialize additional types), specify it with
-    the ``cls`` kwarg.
-
-    """
-    # cached encoder
-    if (not skipkeys and ensure_ascii and
-        check_circular and allow_nan and
-        cls is None and indent is None and separators is None and
-        encoding == 'utf-8' and default is None and not kw):
-        iterable = _default_encoder.iterencode(obj)
-    else:
-        if cls is None:
-            cls = JSONEncoder
-        iterable = cls(skipkeys=skipkeys, ensure_ascii=ensure_ascii,
-            check_circular=check_circular, allow_nan=allow_nan, indent=indent,
-            separators=separators, encoding=encoding,
-            default=default, **kw).iterencode(obj)
-    # could accelerate with writelines in some versions of Python, at
-    # a debuggability cost
-    for chunk in iterable:
-        fp.write(chunk)
-
-
-def dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True,
-        allow_nan=True, cls=None, indent=None, separators=None,
-        encoding='utf-8', default=None, **kw):
-    """Serialize ``obj`` to a JSON formatted ``str``.
-
-    If ``skipkeys`` is false then ``dict`` keys that are not basic types
-    (``str``, ``unicode``, ``int``, ``long``, ``float``, ``bool``, ``None``)
-    will be skipped instead of raising a ``TypeError``.
-
-    If ``ensure_ascii`` is false, then the return value will be a
-    ``unicode`` instance subject to normal Python ``str`` to ``unicode``
-    coercion rules instead of being escaped to an ASCII ``str``.
-
-    If ``check_circular`` is false, then the circular reference check
-    for container types will be skipped and a circular reference will
-    result in an ``OverflowError`` (or worse).
-
-    If ``allow_nan`` is false, then it will be a ``ValueError`` to
-    serialize out of range ``float`` values (``nan``, ``inf``, ``-inf``) in
-    strict compliance of the JSON specification, instead of using the
-    JavaScript equivalents (``NaN``, ``Infinity``, ``-Infinity``).
-
-    If ``indent`` is a non-negative integer, then JSON array elements and
-    object members will be pretty-printed with that indent level. An indent
-    level of 0 will only insert newlines. ``None`` is the most compact
-    representation.
-
-    If ``separators`` is an ``(item_separator, dict_separator)`` tuple
-    then it will be used instead of the default ``(', ', ': ')`` separators.
-    ``(',', ':')`` is the most compact JSON representation.
-
-    ``encoding`` is the character encoding for str instances, default is UTF-8.
-
-    ``default(obj)`` is a function that should return a serializable version
-    of obj or raise TypeError. The default simply raises TypeError.
-
-    To use a custom ``JSONEncoder`` subclass (e.g. one that overrides the
-    ``.default()`` method to serialize additional types), specify it with
-    the ``cls`` kwarg.
-
-    """
-    # cached encoder
-    if (not skipkeys and ensure_ascii and
-        check_circular and allow_nan and
-        cls is None and indent is None and separators is None and
-        encoding == 'utf-8' and default is None and not kw):
-        return _default_encoder.encode(obj)
-    if cls is None:
-        cls = JSONEncoder
-    return cls(
-        skipkeys=skipkeys, ensure_ascii=ensure_ascii,
-        check_circular=check_circular, allow_nan=allow_nan, indent=indent,
-        separators=separators, encoding=encoding, default=default,
-        **kw).encode(obj)
-
-
-_default_decoder = JSONDecoder(encoding=None, object_hook=None)
-
-
-def load(fp, encoding=None, cls=None, object_hook=None, parse_float=None,
-        parse_int=None, parse_constant=None, **kw):
-    """Deserialize ``fp`` (a ``.read()``-supporting file-like object containing
-    a JSON document) to a Python object.
-
-    If the contents of ``fp`` is encoded with an ASCII based encoding other
-    than utf-8 (e.g. latin-1), then an appropriate ``encoding`` name must
-    be specified. Encodings that are not ASCII based (such as UCS-2) are
-    not allowed, and should be wrapped with
-    ``codecs.getreader(fp)(encoding)``, or simply decoded to a ``unicode``
-    object and passed to ``loads()``
-
-    ``object_hook`` is an optional function that will be called with the
-    result of any object literal decode (a ``dict``). The return value of
-    ``object_hook`` will be used instead of the ``dict``. This feature
-    can be used to implement custom decoders (e.g. JSON-RPC class hinting).
-
-    To use a custom ``JSONDecoder`` subclass, specify it with the ``cls``
-    kwarg.
-
-    """
-    return loads(fp.read(),
-        encoding=encoding, cls=cls, object_hook=object_hook,
-        parse_float=parse_float, parse_int=parse_int,
-        parse_constant=parse_constant, **kw)
-
-
-def loads(s, encoding=None, cls=None, object_hook=None, parse_float=None,
-        parse_int=None, parse_constant=None, **kw):
-    """Deserialize ``s`` (a ``str`` or ``unicode`` instance containing a JSON
-    document) to a Python object.
-
-    If ``s`` is a ``str`` instance and is encoded with an ASCII based encoding
-    other than utf-8 (e.g. latin-1) then an appropriate ``encoding`` name
-    must be specified. Encodings that are not ASCII based (such as UCS-2)
-    are not allowed and should be decoded to ``unicode`` first.
-
-    ``object_hook`` is an optional function that will be called with the
-    result of any object literal decode (a ``dict``). The return value of
-    ``object_hook`` will be used instead of the ``dict``. This feature
-    can be used to implement custom decoders (e.g. JSON-RPC class hinting).
-
-    ``parse_float``, if specified, will be called with the string
-    of every JSON float to be decoded. By default this is equivalent to
-    float(num_str). This can be used to use another datatype or parser
-    for JSON floats (e.g. decimal.Decimal).
-
-    ``parse_int``, if specified, will be called with the string
-    of every JSON int to be decoded. By default this is equivalent to
-    int(num_str). This can be used to use another datatype or parser
-    for JSON integers (e.g. float).
-
-    ``parse_constant``, if specified, will be called with one of the
-    following strings: -Infinity, Infinity, NaN, null, true, false.
-    This can be used to raise an exception if invalid JSON numbers
-    are encountered.
-
-    To use a custom ``JSONDecoder`` subclass, specify it with the ``cls``
-    kwarg.
-
-    """
-    if (cls is None and encoding is None and object_hook is None and
-            parse_int is None and parse_float is None and
-            parse_constant is None and not kw):
-        return _default_decoder.decode(s)
-    if cls is None:
-        cls = JSONDecoder
-    if object_hook is not None:
-        kw['object_hook'] = object_hook
-    if parse_float is not None:
-        kw['parse_float'] = parse_float
-    if parse_int is not None:
-        kw['parse_int'] = parse_int
-    if parse_constant is not None:
-        kw['parse_constant'] = parse_constant
-    return cls(encoding=encoding, **kw).decode(s)
diff --git a/addons/script.module.simplejson/lib/simplejson/decoder.py b/addons/script.module.simplejson/lib/simplejson/decoder.py
deleted file mode 100644 (file)
index b769ea4..0000000
+++ /dev/null
@@ -1,354 +0,0 @@
-"""Implementation of JSONDecoder
-"""
-import re
-import sys
-import struct
-
-from simplejson.scanner import make_scanner
-try:
-    from simplejson._speedups import scanstring as c_scanstring
-except ImportError:
-    c_scanstring = None
-
-__all__ = ['JSONDecoder']
-
-FLAGS = re.VERBOSE | re.MULTILINE | re.DOTALL
-
-def _floatconstants():
-    _BYTES = '7FF80000000000007FF0000000000000'.decode('hex')
-    if sys.byteorder != 'big':
-        _BYTES = _BYTES[:8][::-1] + _BYTES[8:][::-1]
-    nan, inf = struct.unpack('dd', _BYTES)
-    return nan, inf, -inf
-
-NaN, PosInf, NegInf = _floatconstants()
-
-
-def linecol(doc, pos):
-    lineno = doc.count('\n', 0, pos) + 1
-    if lineno == 1:
-        colno = pos
-    else:
-        colno = pos - doc.rindex('\n', 0, pos)
-    return lineno, colno
-
-
-def errmsg(msg, doc, pos, end=None):
-    # Note that this function is called from _speedups
-    lineno, colno = linecol(doc, pos)
-    if end is None:
-        #fmt = '{0}: line {1} column {2} (char {3})'
-        #return fmt.format(msg, lineno, colno, pos)
-        fmt = '%s: line %d column %d (char %d)'
-        return fmt % (msg, lineno, colno, pos)
-    endlineno, endcolno = linecol(doc, end)
-    #fmt = '{0}: line {1} column {2} - line {3} column {4} (char {5} - {6})'
-    #return fmt.format(msg, lineno, colno, endlineno, endcolno, pos, end)
-    fmt = '%s: line %d column %d - line %d column %d (char %d - %d)'
-    return fmt % (msg, lineno, colno, endlineno, endcolno, pos, end)
-
-
-_CONSTANTS = {
-    '-Infinity': NegInf,
-    'Infinity': PosInf,
-    'NaN': NaN,
-}
-
-STRINGCHUNK = re.compile(r'(.*?)(["\\\x00-\x1f])', FLAGS)
-BACKSLASH = {
-    '"': u'"', '\\': u'\\', '/': u'/',
-    'b': u'\b', 'f': u'\f', 'n': u'\n', 'r': u'\r', 't': u'\t',
-}
-
-DEFAULT_ENCODING = "utf-8"
-
-def py_scanstring(s, end, encoding=None, strict=True, _b=BACKSLASH, _m=STRINGCHUNK.match):
-    """Scan the string s for a JSON string. End is the index of the
-    character in s after the quote that started the JSON string.
-    Unescapes all valid JSON string escape sequences and raises ValueError
-    on attempt to decode an invalid string. If strict is False then literal
-    control characters are allowed in the string.
-    
-    Returns a tuple of the decoded string and the index of the character in s
-    after the end quote."""
-    if encoding is None:
-        encoding = DEFAULT_ENCODING
-    chunks = []
-    _append = chunks.append
-    begin = end - 1
-    while 1:
-        chunk = _m(s, end)
-        if chunk is None:
-            raise ValueError(
-                errmsg("Unterminated string starting at", s, begin))
-        end = chunk.end()
-        content, terminator = chunk.groups()
-        # Content is contains zero or more unescaped string characters
-        if content:
-            if not isinstance(content, unicode):
-                content = unicode(content, encoding)
-            _append(content)
-        # Terminator is the end of string, a literal control character,
-        # or a backslash denoting that an escape sequence follows
-        if terminator == '"':
-            break
-        elif terminator != '\\':
-            if strict:
-                msg = "Invalid control character %r at" % (terminator,)
-                #msg = "Invalid control character {0!r} at".format(terminator)
-                raise ValueError(errmsg(msg, s, end))
-            else:
-                _append(terminator)
-                continue
-        try:
-            esc = s[end]
-        except IndexError:
-            raise ValueError(
-                errmsg("Unterminated string starting at", s, begin))
-        # If not a unicode escape sequence, must be in the lookup table
-        if esc != 'u':
-            try:
-                char = _b[esc]
-            except KeyError:
-                msg = "Invalid \\escape: " + repr(esc)
-                raise ValueError(errmsg(msg, s, end))
-            end += 1
-        else:
-            # Unicode escape sequence
-            esc = s[end + 1:end + 5]
-            next_end = end + 5
-            if len(esc) != 4:
-                msg = "Invalid \\uXXXX escape"
-                raise ValueError(errmsg(msg, s, end))
-            uni = int(esc, 16)
-            # Check for surrogate pair on UCS-4 systems
-            if 0xd800 <= uni <= 0xdbff and sys.maxunicode > 65535:
-                msg = "Invalid \\uXXXX\\uXXXX surrogate pair"
-                if not s[end + 5:end + 7] == '\\u':
-                    raise ValueError(errmsg(msg, s, end))
-                esc2 = s[end + 7:end + 11]
-                if len(esc2) != 4:
-                    raise ValueError(errmsg(msg, s, end))
-                uni2 = int(esc2, 16)
-                uni = 0x10000 + (((uni - 0xd800) << 10) | (uni2 - 0xdc00))
-                next_end += 6
-            char = unichr(uni)
-            end = next_end
-        # Append the unescaped character
-        _append(char)
-    return u''.join(chunks), end
-
-
-# Use speedup if available
-scanstring = c_scanstring or py_scanstring
-
-WHITESPACE = re.compile(r'[ \t\n\r]*', FLAGS)
-WHITESPACE_STR = ' \t\n\r'
-
-def JSONObject((s, end), encoding, strict, scan_once, object_hook, _w=WHITESPACE.match, _ws=WHITESPACE_STR):
-    pairs = {}
-    # Use a slice to prevent IndexError from being raised, the following
-    # check will raise a more specific ValueError if the string is empty
-    nextchar = s[end:end + 1]
-    # Normally we expect nextchar == '"'
-    if nextchar != '"':
-        if nextchar in _ws:
-            end = _w(s, end).end()
-            nextchar = s[end:end + 1]
-        # Trivial empty object
-        if nextchar == '}':
-            return pairs, end + 1
-        elif nextchar != '"':
-            raise ValueError(errmsg("Expecting property name", s, end))
-    end += 1
-    while True:
-        key, end = scanstring(s, end, encoding, strict)
-
-        # To skip some function call overhead we optimize the fast paths where
-        # the JSON key separator is ": " or just ":".
-        if s[end:end + 1] != ':':
-            end = _w(s, end).end()
-            if s[end:end + 1] != ':':
-                raise ValueError(errmsg("Expecting : delimiter", s, end))
-
-        end += 1
-
-        try:
-            if s[end] in _ws:
-                end += 1
-                if s[end] in _ws:
-                    end = _w(s, end + 1).end()
-        except IndexError:
-            pass
-
-        try:
-            value, end = scan_once(s, end)
-        except StopIteration:
-            raise ValueError(errmsg("Expecting object", s, end))
-        pairs[key] = value
-
-        try:
-            nextchar = s[end]
-            if nextchar in _ws:
-                end = _w(s, end + 1).end()
-                nextchar = s[end]
-        except IndexError:
-            nextchar = ''
-        end += 1
-
-        if nextchar == '}':
-            break
-        elif nextchar != ',':
-            raise ValueError(errmsg("Expecting , delimiter", s, end - 1))
-
-        try:
-            nextchar = s[end]
-            if nextchar in _ws:
-                end += 1
-                nextchar = s[end]
-                if nextchar in _ws:
-                    end = _w(s, end + 1).end()
-                    nextchar = s[end]
-        except IndexError:
-            nextchar = ''
-
-        end += 1
-        if nextchar != '"':
-            raise ValueError(errmsg("Expecting property name", s, end - 1))
-
-    if object_hook is not None:
-        pairs = object_hook(pairs)
-    return pairs, end
-
-def JSONArray((s, end), scan_once, _w=WHITESPACE.match, _ws=WHITESPACE_STR):
-    values = []
-    nextchar = s[end:end + 1]
-    if nextchar in _ws:
-        end = _w(s, end + 1).end()
-        nextchar = s[end:end + 1]
-    # Look-ahead for trivial empty array
-    if nextchar == ']':
-        return values, end + 1
-    _append = values.append
-    while True:
-        try:
-            value, end = scan_once(s, end)
-        except StopIteration:
-            raise ValueError(errmsg("Expecting object", s, end))
-        _append(value)
-        nextchar = s[end:end + 1]
-        if nextchar in _ws:
-            end = _w(s, end + 1).end()
-            nextchar = s[end:end + 1]
-        end += 1
-        if nextchar == ']':
-            break
-        elif nextchar != ',':
-            raise ValueError(errmsg("Expecting , delimiter", s, end))
-
-        try:
-            if s[end] in _ws:
-                end += 1
-                if s[end] in _ws:
-                    end = _w(s, end + 1).end()
-        except IndexError:
-            pass
-
-    return values, end
-
-class JSONDecoder(object):
-    """Simple JSON <http://json.org> decoder
-
-    Performs the following translations in decoding by default:
-
-    +---------------+-------------------+
-    | JSON          | Python            |
-    +===============+===================+
-    | object        | dict              |
-    +---------------+-------------------+
-    | array         | list              |
-    +---------------+-------------------+
-    | string        | unicode           |
-    +---------------+-------------------+
-    | number (int)  | int, long         |
-    +---------------+-------------------+
-    | number (real) | float             |
-    +---------------+-------------------+
-    | true          | True              |
-    +---------------+-------------------+
-    | false         | False             |
-    +---------------+-------------------+
-    | null          | None              |
-    +---------------+-------------------+
-
-    It also understands ``NaN``, ``Infinity``, and ``-Infinity`` as
-    their corresponding ``float`` values, which is outside the JSON spec.
-
-    """
-
-    def __init__(self, encoding=None, object_hook=None, parse_float=None,
-            parse_int=None, parse_constant=None, strict=True):
-        """``encoding`` determines the encoding used to interpret any ``str``
-        objects decoded by this instance (utf-8 by default).  It has no
-        effect when decoding ``unicode`` objects.
-
-        Note that currently only encodings that are a superset of ASCII work,
-        strings of other encodings should be passed in as ``unicode``.
-
-        ``object_hook``, if specified, will be called with the result
-        of every JSON object decoded and its return value will be used in
-        place of the given ``dict``.  This can be used to provide custom
-        deserializations (e.g. to support JSON-RPC class hinting).
-
-        ``parse_float``, if specified, will be called with the string
-        of every JSON float to be decoded. By default this is equivalent to
-        float(num_str). This can be used to use another datatype or parser
-        for JSON floats (e.g. decimal.Decimal).
-
-        ``parse_int``, if specified, will be called with the string
-        of every JSON int to be decoded. By default this is equivalent to
-        int(num_str). This can be used to use another datatype or parser
-        for JSON integers (e.g. float).
-
-        ``parse_constant``, if specified, will be called with one of the
-        following strings: -Infinity, Infinity, NaN.
-        This can be used to raise an exception if invalid JSON numbers
-        are encountered.
-
-        """
-        self.encoding = encoding
-        self.object_hook = object_hook
-        self.parse_float = parse_float or float
-        self.parse_int = parse_int or int
-        self.parse_constant = parse_constant or _CONSTANTS.__getitem__
-        self.strict = strict
-        self.parse_object = JSONObject
-        self.parse_array = JSONArray
-        self.parse_string = scanstring
-        self.scan_once = make_scanner(self)
-
-    def decode(self, s, _w=WHITESPACE.match):
-        """Return the Python representation of ``s`` (a ``str`` or ``unicode``
-        instance containing a JSON document)
-
-        """
-        obj, end = self.raw_decode(s, idx=_w(s, 0).end())
-        end = _w(s, end).end()
-        if end != len(s):
-            raise ValueError(errmsg("Extra data", s, end, len(s)))
-        return obj
-
-    def raw_decode(self, s, idx=0):
-        """Decode a JSON document from ``s`` (a ``str`` or ``unicode`` beginning
-        with a JSON document) and return a 2-tuple of the Python
-        representation and the index in ``s`` where the document ended.
-
-        This can be used to decode a JSON document from a string that may
-        have extraneous data at the end.
-
-        """
-        try:
-            obj, end = self.scan_once(s, idx)
-        except StopIteration:
-            raise ValueError("No JSON object could be decoded")
-        return obj, end
diff --git a/addons/script.module.simplejson/lib/simplejson/encoder.py b/addons/script.module.simplejson/lib/simplejson/encoder.py
deleted file mode 100644 (file)
index cf58290..0000000
+++ /dev/null
@@ -1,440 +0,0 @@
-"""Implementation of JSONEncoder
-"""
-import re
-
-try:
-    from simplejson._speedups import encode_basestring_ascii as c_encode_basestring_ascii
-except ImportError:
-    c_encode_basestring_ascii = None
-try:
-    from simplejson._speedups import make_encoder as c_make_encoder
-except ImportError:
-    c_make_encoder = None
-
-ESCAPE = re.compile(r'[\x00-\x1f\\"\b\f\n\r\t]')
-ESCAPE_ASCII = re.compile(r'([\\"]|[^\ -~])')
-HAS_UTF8 = re.compile(r'[\x80-\xff]')
-ESCAPE_DCT = {
-    '\\': '\\\\',
-    '"': '\\"',
-    '\b': '\\b',
-    '\f': '\\f',
-    '\n': '\\n',
-    '\r': '\\r',
-    '\t': '\\t',
-}
-for i in range(0x20):
-    #ESCAPE_DCT.setdefault(chr(i), '\\u{0:04x}'.format(i))
-    ESCAPE_DCT.setdefault(chr(i), '\\u%04x' % (i,))
-
-# Assume this produces an infinity on all machines (probably not guaranteed)
-INFINITY = float('1e66666')
-FLOAT_REPR = repr
-
-def encode_basestring(s):
-    """Return a JSON representation of a Python string
-
-    """
-    def replace(match):
-        return ESCAPE_DCT[match.group(0)]
-    return '"' + ESCAPE.sub(replace, s) + '"'
-
-
-def py_encode_basestring_ascii(s):
-    """Return an ASCII-only JSON representation of a Python string
-
-    """
-    if isinstance(s, str) and HAS_UTF8.search(s) is not None:
-        s = s.decode('utf-8')
-    def replace(match):
-        s = match.group(0)
-        try:
-            return ESCAPE_DCT[s]
-        except KeyError:
-            n = ord(s)
-            if n < 0x10000:
-                #return '\\u{0:04x}'.format(n)
-                return '\\u%04x' % (n,)
-            else:
-                # surrogate pair
-                n -= 0x10000
-                s1 = 0xd800 | ((n >> 10) & 0x3ff)
-                s2 = 0xdc00 | (n & 0x3ff)
-                #return '\\u{0:04x}\\u{1:04x}'.format(s1, s2)
-                return '\\u%04x\\u%04x' % (s1, s2)
-    return '"' + str(ESCAPE_ASCII.sub(replace, s)) + '"'
-
-
-encode_basestring_ascii = c_encode_basestring_ascii or py_encode_basestring_ascii
-
-class JSONEncoder(object):
-    """Extensible JSON <http://json.org> encoder for Python data structures.
-
-    Supports the following objects and types by default:
-
-    +-------------------+---------------+
-    | Python            | JSON          |
-    +===================+===============+
-    | dict              | object        |
-    +-------------------+---------------+
-    | list, tuple       | array         |
-    +-------------------+---------------+
-    | str, unicode      | string        |
-    +-------------------+---------------+
-    | int, long, float  | number        |
-    +-------------------+---------------+
-    | True              | true          |
-    +-------------------+---------------+
-    | False             | false         |
-    +-------------------+---------------+
-    | None              | null          |
-    +-------------------+---------------+
-
-    To extend this to recognize other objects, subclass and implement a
-    ``.default()`` method with another method that returns a serializable
-    object for ``o`` if possible, otherwise it should call the superclass
-    implementation (to raise ``TypeError``).
-
-    """
-    item_separator = ', '
-    key_separator = ': '
-    def __init__(self, skipkeys=False, ensure_ascii=True,
-            check_circular=True, allow_nan=True, sort_keys=False,
-            indent=None, separators=None, encoding='utf-8', default=None):
-        """Constructor for JSONEncoder, with sensible defaults.
-
-        If skipkeys is false, then it is a TypeError to attempt
-        encoding of keys that are not str, int, long, float or None.  If
-        skipkeys is True, such items are simply skipped.
-
-        If ensure_ascii is true, the output is guaranteed to be str
-        objects with all incoming unicode characters escaped.  If
-        ensure_ascii is false, the output will be unicode object.
-
-        If check_circular is true, then lists, dicts, and custom encoded
-        objects will be checked for circular references during encoding to
-        prevent an infinite recursion (which would cause an OverflowError).
-        Otherwise, no such check takes place.
-
-        If allow_nan is true, then NaN, Infinity, and -Infinity will be
-        encoded as such.  This behavior is not JSON specification compliant,
-        but is consistent with most JavaScript based encoders and decoders.
-        Otherwise, it will be a ValueError to encode such floats.
-
-        If sort_keys is true, then the output of dictionaries will be
-        sorted by key; this is useful for regression tests to ensure
-        that JSON serializations can be compared on a day-to-day basis.
-
-        If indent is a non-negative integer, then JSON array
-        elements and object members will be pretty-printed with that
-        indent level.  An indent level of 0 will only insert newlines.
-        None is the most compact representation.
-
-        If specified, separators should be a (item_separator, key_separator)
-        tuple.  The default is (', ', ': ').  To get the most compact JSON
-        representation you should specify (',', ':') to eliminate whitespace.
-
-        If specified, default is a function that gets called for objects
-        that can't otherwise be serialized.  It should return a JSON encodable
-        version of the object or raise a ``TypeError``.
-
-        If encoding is not None, then all input strings will be
-        transformed into unicode using that encoding prior to JSON-encoding.
-        The default is UTF-8.
-
-        """
-
-        self.skipkeys = skipkeys
-        self.ensure_ascii = ensure_ascii
-        self.check_circular = check_circular
-        self.allow_nan = allow_nan
-        self.sort_keys = sort_keys
-        self.indent = indent
-        if separators is not None:
-            self.item_separator, self.key_separator = separators
-        if default is not None:
-            self.default = default
-        self.encoding = encoding
-
-    def default(self, o):
-        """Implement this method in a subclass such that it returns
-        a serializable object for ``o``, or calls the base implementation
-        (to raise a ``TypeError``).
-
-        For example, to support arbitrary iterators, you could
-        implement default like this::
-
-            def default(self, o):
-                try:
-                    iterable = iter(o)
-                except TypeError:
-                    pass
-                else:
-                    return list(iterable)
-                return JSONEncoder.default(self, o)
-
-        """
-        raise TypeError(repr(o) + " is not JSON serializable")
-
-    def encode(self, o):
-        """Return a JSON string representation of a Python data structure.
-
-        >>> JSONEncoder().encode({"foo": ["bar", "baz"]})
-        '{"foo": ["bar", "baz"]}'
-
-        """
-        # This is for extremely simple cases and benchmarks.
-        if isinstance(o, basestring):
-            if isinstance(o, str):
-                _encoding = self.encoding
-                if (_encoding is not None
-                        and not (_encoding == 'utf-8')):
-                    o = o.decode(_encoding)
-            if self.ensure_ascii:
-                return encode_basestring_ascii(o)
-            else:
-                return encode_basestring(o)
-        # This doesn't pass the iterator directly to ''.join() because the
-        # exceptions aren't as detailed.  The list call should be roughly
-        # equivalent to the PySequence_Fast that ''.join() would do.
-        chunks = self.iterencode(o, _one_shot=True)
-        if not isinstance(chunks, (list, tuple)):
-            chunks = list(chunks)
-        return ''.join(chunks)
-
-    def iterencode(self, o, _one_shot=False):
-        """Encode the given object and yield each string
-        representation as available.
-
-        For example::
-
-            for chunk in JSONEncoder().iterencode(bigobject):
-                mysocket.write(chunk)
-
-        """
-        if self.check_circular:
-            markers = {}
-        else:
-            markers = None
-        if self.ensure_ascii:
-            _encoder = encode_basestring_ascii
-        else:
-            _encoder = encode_basestring
-        if self.encoding != 'utf-8':
-            def _encoder(o, _orig_encoder=_encoder, _encoding=self.encoding):
-                if isinstance(o, str):
-                    o = o.decode(_encoding)
-                return _orig_encoder(o)
-
-        def floatstr(o, allow_nan=self.allow_nan, _repr=FLOAT_REPR, _inf=INFINITY, _neginf=-INFINITY):
-            # Check for specials.  Note that this type of test is processor- and/or
-            # platform-specific, so do tests which don't depend on the internals.
-
-            if o != o:
-                text = 'NaN'
-            elif o == _inf:
-                text = 'Infinity'
-            elif o == _neginf:
-                text = '-Infinity'
-            else:
-                return _repr(o)
-
-            if not allow_nan:
-                raise ValueError(
-                    "Out of range float values are not JSON compliant: " +
-                    repr(o))
-
-            return text
-
-
-        if _one_shot and c_make_encoder is not None and not self.indent and not self.sort_keys:
-            _iterencode = c_make_encoder(
-                markers, self.default, _encoder, self.indent,
-                self.key_separator, self.item_separator, self.sort_keys,
-                self.skipkeys, self.allow_nan)
-        else:
-            _iterencode = _make_iterencode(
-                markers, self.default, _encoder, self.indent, floatstr,
-                self.key_separator, self.item_separator, self.sort_keys,
-                self.skipkeys, _one_shot)
-        return _iterencode(o, 0)
-
-def _make_iterencode(markers, _default, _encoder, _indent, _floatstr, _key_separator, _item_separator, _sort_keys, _skipkeys, _one_shot,
-        ## HACK: hand-optimized bytecode; turn globals into locals
-        False=False,
-        True=True,
-        ValueError=ValueError,
-        basestring=basestring,
-        dict=dict,
-        float=float,
-        id=id,
-        int=int,
-        isinstance=isinstance,
-        list=list,
-        long=long,
-        str=str,
-        tuple=tuple,
-    ):
-
-    def _iterencode_list(lst, _current_indent_level):
-        if not lst:
-            yield '[]'
-            return
-        if markers is not None:
-            markerid = id(lst)
-            if markerid in markers:
-                raise ValueError("Circular reference detected")
-            markers[markerid] = lst
-        buf = '['
-        if _indent is not None:
-            _current_indent_level += 1
-            newline_indent = '\n' + (' ' * (_indent * _current_indent_level))
-            separator = _item_separator + newline_indent
-            buf += newline_indent
-        else:
-            newline_indent = None
-            separator = _item_separator
-        first = True
-        for value in lst:
-            if first:
-                first = False
-            else:
-                buf = separator
-            if isinstance(value, basestring):
-                yield buf + _encoder(value)
-            elif value is None:
-                yield buf + 'null'
-            elif value is True:
-                yield buf + 'true'
-            elif value is False:
-                yield buf + 'false'
-            elif isinstance(value, (int, long)):
-                yield buf + str(value)
-            elif isinstance(value, float):
-                yield buf + _floatstr(value)
-            else:
-                yield buf
-                if isinstance(value, (list, tuple)):
-                    chunks = _iterencode_list(value, _current_indent_level)
-                elif isinstance(value, dict):
-                    chunks = _iterencode_dict(value, _current_indent_level)
-                else:
-                    chunks = _iterencode(value, _current_indent_level)
-                for chunk in chunks:
-                    yield chunk
-        if newline_indent is not None:
-            _current_indent_level -= 1
-            yield '\n' + (' ' * (_indent * _current_indent_level))
-        yield ']'
-        if markers is not None:
-            del markers[markerid]
-
-    def _iterencode_dict(dct, _current_indent_level):
-        if not dct:
-            yield '{}'
-            return
-        if markers is not None:
-            markerid = id(dct)
-            if markerid in markers:
-                raise ValueError("Circular reference detected")
-            markers[markerid] = dct
-        yield '{'
-        if _indent is not None:
-            _current_indent_level += 1
-            newline_indent = '\n' + (' ' * (_indent * _current_indent_level))
-            item_separator = _item_separator + newline_indent
-            yield newline_indent
-        else:
-            newline_indent = None
-            item_separator = _item_separator
-        first = True
-        if _sort_keys:
-            items = dct.items()
-            items.sort(key=lambda kv: kv[0])
-        else:
-            items = dct.iteritems()
-        for key, value in items:
-            if isinstance(key, basestring):
-                pass
-            # JavaScript is weakly typed for these, so it makes sense to
-            # also allow them.  Many encoders seem to do something like this.
-            elif isinstance(key, float):
-                key = _floatstr(key)
-            elif key is True:
-                key = 'true'
-            elif key is False:
-                key = 'false'
-            elif key is None:
-                key = 'null'
-            elif isinstance(key, (int, long)):
-                key = str(key)
-            elif _skipkeys:
-                continue
-            else:
-                raise TypeError("key " + repr(key) + " is not a string")
-            if first:
-                first = False
-            else:
-                yield item_separator
-            yield _encoder(key)
-            yield _key_separator
-            if isinstance(value, basestring):
-                yield _encoder(value)
-            elif value is None:
-                yield 'null'
-            elif value is True:
-                yield 'true'
-            elif value is False:
-                yield 'false'
-            elif isinstance(value, (int, long)):
-                yield str(value)
-            elif isinstance(value, float):
-                yield _floatstr(value)
-            else:
-                if isinstance(value, (list, tuple)):
-                    chunks = _iterencode_list(value, _current_indent_level)
-                elif isinstance(value, dict):
-                    chunks = _iterencode_dict(value, _current_indent_level)
-                else:
-                    chunks = _iterencode(value, _current_indent_level)
-                for chunk in chunks:
-                    yield chunk
-        if newline_indent is not None:
-            _current_indent_level -= 1
-            yield '\n' + (' ' * (_indent * _current_indent_level))
-        yield '}'
-        if markers is not None:
-            del markers[markerid]
-
-    def _iterencode(o, _current_indent_level):
-        if isinstance(o, basestring):
-            yield _encoder(o)
-        elif o is None:
-            yield 'null'
-        elif o is True:
-            yield 'true'
-        elif o is False:
-            yield 'false'
-        elif isinstance(o, (int, long)):
-            yield str(o)
-        elif isinstance(o, float):
-            yield _floatstr(o)
-        elif isinstance(o, (list, tuple)):
-            for chunk in _iterencode_list(o, _current_indent_level):
-                yield chunk
-        elif isinstance(o, dict):
-            for chunk in _iterencode_dict(o, _current_indent_level):
-                yield chunk
-        else:
-            if markers is not None:
-                markerid = id(o)
-                if markerid in markers:
-                    raise ValueError("Circular reference detected")
-                markers[markerid] = o
-            o = _default(o)
-            for chunk in _iterencode(o, _current_indent_level):
-                yield chunk
-            if markers is not None:
-                del markers[markerid]
-
-    return _iterencode
diff --git a/addons/script.module.simplejson/lib/simplejson/scanner.py b/addons/script.module.simplejson/lib/simplejson/scanner.py
deleted file mode 100644 (file)
index adbc6ec..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-"""JSON token scanner
-"""
-import re
-try:
-    from simplejson._speedups import make_scanner as c_make_scanner
-except ImportError:
-    c_make_scanner = None
-
-__all__ = ['make_scanner']
-
-NUMBER_RE = re.compile(
-    r'(-?(?:0|[1-9]\d*))(\.\d+)?([eE][-+]?\d+)?',
-    (re.VERBOSE | re.MULTILINE | re.DOTALL))
-
-def py_make_scanner(context):
-    parse_object = context.parse_object
-    parse_array = context.parse_array
-    parse_string = context.parse_string
-    match_number = NUMBER_RE.match
-    encoding = context.encoding
-    strict = context.strict
-    parse_float = context.parse_float
-    parse_int = context.parse_int
-    parse_constant = context.parse_constant
-    object_hook = context.object_hook
-
-    def _scan_once(string, idx):
-        try:
-            nextchar = string[idx]
-        except IndexError:
-            raise StopIteration
-
-        if nextchar == '"':
-            return parse_string(string, idx + 1, encoding, strict)
-        elif nextchar == '{':
-            return parse_object((string, idx + 1), encoding, strict, _scan_once, object_hook)
-        elif nextchar == '[':
-            return parse_array((string, idx + 1), _scan_once)
-        elif nextchar == 'n' and string[idx:idx + 4] == 'null':
-            return None, idx + 4
-        elif nextchar == 't' and string[idx:idx + 4] == 'true':
-            return True, idx + 4
-        elif nextchar == 'f' and string[idx:idx + 5] == 'false':
-            return False, idx + 5
-
-        m = match_number(string, idx)
-        if m is not None:
-            integer, frac, exp = m.groups()
-            if frac or exp:
-                res = parse_float(integer + (frac or '') + (exp or ''))
-            else:
-                res = parse_int(integer)
-            return res, m.end()
-        elif nextchar == 'N' and string[idx:idx + 3] == 'NaN':
-            return parse_constant('NaN'), idx + 3
-        elif nextchar == 'I' and string[idx:idx + 8] == 'Infinity':
-            return parse_constant('Infinity'), idx + 8
-        elif nextchar == '-' and string[idx:idx + 9] == '-Infinity':
-            return parse_constant('-Infinity'), idx + 9
-        else:
-            raise StopIteration
-
-    return _scan_once
-
-make_scanner = c_make_scanner or py_make_scanner
diff --git a/addons/script.module.simplejson/lib/simplejson/tool.py b/addons/script.module.simplejson/lib/simplejson/tool.py
deleted file mode 100644 (file)
index 9044331..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-r"""Command-line tool to validate and pretty-print JSON
-
-Usage::
-
-    $ echo '{"json":"obj"}' | python -m simplejson.tool
-    {
-        "json": "obj"
-    }
-    $ echo '{ 1.2:3.4}' | python -m simplejson.tool
-    Expecting property name: line 1 column 2 (char 2)
-
-"""
-import sys
-import simplejson
-
-def main():
-    if len(sys.argv) == 1:
-        infile = sys.stdin
-        outfile = sys.stdout
-    elif len(sys.argv) == 2:
-        infile = open(sys.argv[1], 'rb')
-        outfile = sys.stdout
-    elif len(sys.argv) == 3:
-        infile = open(sys.argv[1], 'rb')
-        outfile = open(sys.argv[2], 'wb')
-    else:
-        raise SystemExit(sys.argv[0] + " [infile [outfile]]")
-    try:
-        obj = simplejson.load(infile)
-    except ValueError, e:
-        raise SystemExit(e)
-    simplejson.dump(obj, outfile, sort_keys=True, indent=4)
-    outfile.write('\n')
-
-
-if __name__ == '__main__':
-    main()
index 5f8cbc5..1442d6f 100644 (file)
@@ -3,4 +3,4 @@ XBMC Versioncheck
 
 This service checks the installed XBMC version against the next available one and notifies you if there is a new version available.
 When a new version comes out the versions.txt should be updated to reflect the latest version available.
-When updating the version.txt always put latest release at the top since the list is read in chronological order.
+When updating the version.txt always put latest release at the top since the list is read in chronilogical order.
index f196a48..5db1796 100644 (file)
@@ -1,23 +1,85 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="service.xbmc.versioncheck"
        name="XBMC Version Check"
-      version="0.1.2"
+      version="0.1.11"
       provider-name="Team XBMC">
     <requires>
         <import addon="xbmc.addon" version="12.0.0"/>
         <import addon="xbmc.python" version="2.1.0"/>
-        <import addon="script.module.simplejson" version="2.0.10"/>
     </requires>
     <extension point="xbmc.service" library="service.py" start="login"/>
     <extension point="xbmc.addon.metadata">
+        <summary lang="be">XBMC Version Check checks if you are running latest released version.</summary>
+        <summary lang="bg">XBMC Version Check проверява ползвате ли най-новата версия на XBMC.</summary>
+        <summary lang="de">XBMC Version-Check prüft, ob die neuste Version von XBMC installiert ist.</summary>
+        <summary lang="el">Ο Έλεγχος Έκδοσης XBMC εξετάζει αν έχετε την πιο πρόσφατη έκδοση του προγράμματος.</summary>
         <summary lang="en">XBMC Version Check checks if you are running latest released version.</summary>
+        <summary lang="es">XBMC Version Check comprueba si está ejecutando la última versión de XBMC.</summary>
+        <summary lang="es_MX">Comprobador de Version de XBMC  comprueba si se esta ejecutando ultima version publicada.</summary>
+        <summary lang="fr">XBMC Version Check vérifie si vous utilisez la dernière version disponible.</summary>
+        <summary lang="gl">XBMC Version Check verifica se está a executar a última versión.</summary>
+        <summary lang="he">XBMC Version Check בודק אם אתה מפעיל את הגרסה הרשמית האחרונה.</summary>
+        <summary lang="hr">XBMC provjeritelj inačice provjerava imate li posljednju inačicu izdanja.</summary>
+        <summary lang="hu">Az XBMC verzió ellenőrző megvizsgálja, hogy a legújabb kiadást futtatja-e.</summary>
+        <summary lang="id">XBMC Version Check mengecek apakah Anda menggunakan versi rilis terbaru.</summary>
+        <summary lang="it">XBMC Version Check verifica se hai l'ultima versione rilasciata</summary>
+        <summary lang="ko">XBMC Version Checks는 최신 정식 릴리즈 버전을 사용중인지 검사해줍니다.</summary>
+        <summary lang="nl">XBMC Versie Check controleert of je de laatst beschikbare versie hebt.</summary>
+        <summary lang="no">XBMC Versjonsettersyn sjekker om du kjører den sist utgitte versjonen.</summary>
+        <summary lang="pl">XBMC Version Check sprawdza czy używasz najnowszą wersję.</summary>
+        <summary lang="pt">O XBMC Version Check verifica se a sua versão de lançamento do XBMC está actualizada.</summary>
+        <summary lang="pt_BR">XBMC Version Check verifica se você está executando a versão mais recente.</summary>
+        <summary lang="ru">XBMC Version Check проверяет если вы используете последнюю версию</summary>
+        <summary lang="sv">XBMC Version Check kontrollerar om du använder den senaste versionen.</summary>
+        <summary lang="zh">XBMC版本检查检查你使用的是否为最新发布的版本。</summary>
+        <description lang="be">XBMC Version Check only supports a number of platforms/distros as releases may differ between them. For more information visit the xbmc.org website.</description>
+        <description lang="bg">XBMC Version Check поддържа няколко платформи/дистрибуции. За повече информация посетете страницата www.xbmc.org.</description>
+        <description lang="de">XBMC Versions-Check unterstützt nur ein paar Plattformen/Distributionen, da sich die jeweiligen Veröffentlichungen unterscheiden können. Für weitere Informationen besuche die xbmc.org-Website.</description>
+        <description lang="el">Ο Έλεγχος Έκδοσης XBMC υποστηρίζει μόνο ορισμένα λειτουργικά συστήματα/διανομές, καθώς οι εκδόσεις διαφέρουν για το καθένα. Για περισσότερες πληροφορίες επισκεφθείτε το xbmc.org</description>
         <description lang="en">XBMC Version Check only supports a number of platforms/distros as releases may differ between them. For more information visit the xbmc.org website.</description>
+        <description lang="es">XBMC Version Check solo soporta un número limitado de plataformas/distribuciones, ya que los lanzamientos pueden diferir entre ellos. Para más información, visite la web de xbmc.org.</description>
+        <description lang="fr">XBMC Version Check supporte seulement un nombre de plateformes/distributions qui peuvent varier entre elles. Visitez le site internet xbmc.org  pour plus d'informations.</description>
+        <description lang="gl">XBMC Version Check só soporta un número limitado de plataformas/distribucións, xa que os lanzamentos poden diferir entre eles. Para máis información visitar o sitio web de xbmc.org.</description>
+        <description lang="he">XBMC Version Check תומך רק במספר פלטפורמות/הפצות מאחר שסימון הגרסאות שונה בין אחת לשניה. למידע נוסף בקר באתר xbmc.org.</description>
+        <description lang="hr">XBMC provjeritelj inačice samo podržava broj platformi/distribucija koliko to dopuštaju pojedina izdanja. Za više informacija posjetite xbmc.org web stranicu.</description>
+        <description lang="hu">Az XBMC verzió-ellenőrző csak néhány platformot / disztribúciót támogat, mert a kiadások között különbségek lehetnek. További információkért keresse fel az xbmc.org oldalt.</description>
+        <description lang="id">XBMC Version Check hanya mendukung beberapa platform/distro karena rilisnya mungkin berbeda-beda. Untuk informasi lebih lanjut kunjungi situs xbmc.org.</description>
+        <description lang="it">XBMC Version Check supporta un numero di piattaforme e distribuzioni diverse tra loro. Per più informazioni visita il sito xbmc.org</description>
+        <description lang="nl">XBMC Version Check ondersteunt maar enkele platforms/distros omdat er verschil kan zijn tussen versies.  Voor meer informatie bezoek XBMC.org website.</description>
+        <description lang="no">XBMC Versjonsettersyn støtter kun noen plattformer/distribusjoner fordi utgivelser kan være forskjellige mellom dem. Besøk xbmc.org for mer informasjon.</description>
+        <description lang="pl">XBMC Version Check wspiera część platform/dystrybucji, jako że wydania mogą się różnić. Po więcej informacji odwiedź stronę xbmc.org.</description>
+        <description lang="pt">O XBMC Version Check suporta apenas algumas plataformas/distribuições, porque os lançamentos podem não ser sempre idênticos. Para mais informação, visite o site xbmc.org.</description>
+        <description lang="pt_BR">XBMC Version Check somente suporta algumas plataformas/distros, que podem variar entre si. Para maiores informações visite o website xbmc.org</description>
+        <description lang="sv">XBMC Version Check stöder endeast ett antal plattformar/distributioner eftersom utgivningar kan skilja mellan dessa. För mer information besök xbmc.org webplatsen.</description>
+        <description lang="zh">XBMC版本检查只支持部分平台/发行版,它们之间的版本可能会有所不同。欲了解更多信息,请访问的xbmc.org网站。</description>
+        <disclaimer lang="be">Feel free to use this script. For information visit xbmc.org</disclaimer>
+        <disclaimer lang="bg">Спокойно можете да ползвате скрипта за собствени цели. За информация посетете www.xbmc.org</disclaimer>
+        <disclaimer lang="de">Zögere nicht dieses Script zu benutzen. Für Informationen besuche xbmc.org</disclaimer>
+        <disclaimer lang="el">Χρησιμοποιήστε αυτό το script ελεύθερα. Για πληροφορίες επισκεφθείτε το xbmc.org</disclaimer>
         <disclaimer lang="en">Feel free to use this script. For information visit xbmc.org</disclaimer>
+        <disclaimer lang="es">Puede usar libremente este programa. Para más información, visite xbmc.org</disclaimer>
+        <disclaimer lang="es_MX">Sientase libre de utilizar este script. Para mas información visita xbmc.org</disclaimer>
+        <disclaimer lang="fr">Utilisez ce script si vous le désirez. Visitez le site Internet xbmc.org pour plus d'informations.</disclaimer>
+        <disclaimer lang="gl">Síntase libre de usar este script, para máis información visitar xbmc.org.</disclaimer>
+        <disclaimer lang="he">תרגיש חופשי להשתמש בסקריפט זה. למידע נוסף בקר בכתובת xbmc.org</disclaimer>
+        <disclaimer lang="hr">Slobodno koristite ovu skriptu. Za više informacija posjetite xbmc.org</disclaimer>
+        <disclaimer lang="hu">Használja bátran ezt a szkriptet! Információkért keresse fel az xbmc.org oldalt!</disclaimer>
+        <disclaimer lang="id">Jangan sungkan menggunakan script ini. Untuk informasi hubungi xbmc.org</disclaimer>
+        <disclaimer lang="it">Usa liberamente lo script. Per informazioni visita xbmc.org</disclaimer>
+        <disclaimer lang="ko">이 스크립트를 자유롭게 사용하세요. 관련 정보는 xbmc.org를 방문하세요.</disclaimer>
+        <disclaimer lang="nl">Gebruik dit script vrijblijvend. Voor meer informatie bezoek XBMC.org</disclaimer>
+        <disclaimer lang="no">Du har fri tillatelse til å benytte dette skriptet. Besøk xbmc.org for informasjon</disclaimer>
+        <disclaimer lang="pl">Zapraszamy do używania skryptu. Po więcej informacji odwiedź xbmc.org</disclaimer>
+        <disclaimer lang="pt">Esteja à vontade para usar este script. Para mais informação, visite xbmc.org.</disclaimer>
+        <disclaimer lang="pt_BR">Sinta-se livre para usar este script. Para informações, visite xbmc.org</disclaimer>
+        <disclaimer lang="ru">Используйте этот скрипт на свое усмотрение. Для информации посетите xbmc.org</disclaimer>
+        <disclaimer lang="sv">Använd gärna detta skript. För information, besök xbmc.org</disclaimer>
+        <disclaimer lang="zh">请随意使用此脚本,更多信息访问xbmc.org</disclaimer>
         <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license>
         <platform>osx osx32 osx64 ios windx wingl linux</platform>
         <website>http://xbmc.org</website>
         <source>https://github.com/XBMC-Addons/service.xbmc.versioncheck</source>
         <forum>http://forum.xbmc.org/showthread.php?tid=160228</forum>
-        <email></email>    
+        <email></email>
     </extension>
 </addon>
index be117b0..0148104 100644 (file)
@@ -1,5 +1,36 @@
+v0.1.11
+- Updated language files from Transifex
+- Fix problems with python2.7.5
+- Update with 13.0 Gotham_alpha8
+
+v0.1.11
+- Update with 13.0 Gotham_alpha7
+
+v0.1.9
+- Update with 13.0 Gotham_alpha6
+- Updated language files from Transifex
+
+v0.1.7
+- Update with 13.0 Gotham_alpha5
+
+v0.1.7
+- Update with 13.0 Gotham_alpha4
+
+v0.1.6
+- Update with 12.2 Frodo stable
+- Added Linux full system upgrade
+
+v0.1.5
+- Update with 13.0 Gotham_alpha3
+
+v0.1.4
+- We can now upgrade xbmc on Linux. This works either via polkit or shell wrapper as fallback
+
+v0.1.3
+- Update with 13.0 Gotham_alpha2
+
 v0.1.2
 - Add notification for Ubuntu users checking through apt command
 
 v0.1.1
-- Initial version
\ No newline at end of file
+- Initial version
index a7ad3eb..8eb53e5 100644 (file)
Binary files a/addons/service.xbmc.versioncheck/icon.png and b/addons/service.xbmc.versioncheck/icon.png differ
diff --git a/addons/service.xbmc.versioncheck/lib/__init__.py b/addons/service.xbmc.versioncheck/lib/__init__.py
new file mode 100644 (file)
index 0000000..4b0dc39
--- /dev/null
@@ -0,0 +1 @@
+from common import *
diff --git a/addons/service.xbmc.versioncheck/lib/aptdeamonhandler.py b/addons/service.xbmc.versioncheck/lib/aptdeamonhandler.py
new file mode 100644 (file)
index 0000000..0123127
--- /dev/null
@@ -0,0 +1,109 @@
+# -*- coding: utf-8 -*-
+#
+#     Copyright (C) 2013 Team-XBMC
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+import xbmc
+from common import *
+
+try:
+    #import apt
+    import apt
+    from aptdaemon import client
+    from aptdaemon import errors
+except:
+    log('python apt import error')
+
+class AptdeamonHandler:
+
+    def __init__(self):
+        self.aptclient = client.AptClient()
+
+    def _check_versions(self, package):
+        if not self._update_cache():
+            return False, False
+        try:
+            trans = self.aptclient.upgrade_packages([package])
+            #trans = self.aptclient.upgrade_packages("bla")
+            trans.simulate(reply_handler=self._apttransstarted, error_handler=self._apterrorhandler)
+            pkg = trans.packages[4][0]
+            if pkg == package:
+               cache=apt.Cache()
+               cache.open(None)
+               cache.upgrade()
+               if cache[pkg].installed:
+                   return cache[pkg].installed.version, cache[pkg].candidate.version
+
+            return False, False
+
+        except Exception as error:
+            log("Exception while checking versions: %s" %error)
+            return False, False
+
+    def _update_cache(self):
+        try:
+            if self.aptclient.update_cache(wait=True) == "exit-success":
+                return True
+            else:
+                return False
+        except errors.NotAuthorizedError:
+            log("You are not allowed to update the cache")
+            return False
+
+    def check_upgrade_available(self, package):
+        '''returns True if newer package is available in the repositories'''
+        installed, candidate = self._check_versions(package)
+        if installed and candidate:
+            if installed != candidate:
+                log("Version installed  %s" %installed)
+                log("Version available  %s" %candidate)
+                return True
+            else:
+                log("Already on newest version")
+        elif not installed:
+                log("No installed package found")
+                return False
+        else:
+            return False
+
+    def upgrade_package(self, package):
+        try:
+            log("Installing new version")
+            if self.aptclient.upgrade_packages([package], wait=True) == "exit-success":
+                log("Upgrade successful")
+                return True
+        except Exception as error:
+            log("Exception during upgrade: %s" %error)
+        return False
+
+    def upgrade_system(self):
+        try:
+            log("Upgrading system")
+            if self.aptclient.upgrade_system(wait=True) == "exit-success":
+                return True
+        except Exception as error:
+            log("Exception during system upgrade: %s" %error)
+        return False
+
+    def _getpassword(self):
+        if len(self._pwd) == 0:
+            self._pwd = get_password_from_user()
+        return self._pwd
+
+    def _apttransstarted(self):
+        pass
+    
+    def _apterrorhandler(self, error):
+        log("Apt Error %s" %error)
\ No newline at end of file
diff --git a/addons/service.xbmc.versioncheck/lib/common.py b/addons/service.xbmc.versioncheck/lib/common.py
new file mode 100644 (file)
index 0000000..5579e6f
--- /dev/null
@@ -0,0 +1,89 @@
+# -*- coding: utf-8 -*-
+#
+#     Copyright (C) 2013 Team-XBMC
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+import xbmc
+import xbmcaddon
+import xbmcgui
+import xbmcvfs
+
+__addon__        = xbmcaddon.Addon()
+__addonversion__ = __addon__.getAddonInfo('version')
+__addonname__    = __addon__.getAddonInfo('name')
+__addonpath__    = __addon__.getAddonInfo('path').decode('utf-8')
+__icon__         = __addon__.getAddonInfo('icon')
+__localize__     = __addon__.getLocalizedString
+
+def log(txt):
+    if isinstance (txt,str):
+        txt = txt.decode("utf-8")
+    message = u'%s: %s' % ("XBMC Version Check", txt)
+    xbmc.log(msg=message.encode("utf-8"), level=xbmc.LOGDEBUG)
+
+def get_password_from_user():
+    keyboard = xbmc.Keyboard("", __addonname__ + "," +__localize__(32022), True)
+    keyboard.doModal()
+    if (keyboard.isConfirmed()):
+        pwd = keyboard.getText()
+    return pwd
+
+def message_upgrade_success():
+    xbmc.executebuiltin("XBMC.Notification(%s, %s, %d, %s)" %(__addonname__,
+                                                              __localize__(32013),
+                                                              15000,
+                                                              __icon__))
+
+def message_restart():
+    if dialog_yesno(32014):
+        xbmc.executebuiltin("RestartApp")
+
+def dialog_yesno(line1 = 0, line2 = 0):
+    return xbmcgui.Dialog().yesno(__addonname__,
+                                  __localize__(line1),
+                                  __localize__(line2))
+
+def upgrade_message(msg, upgrade):
+    # Don't show while watching a video
+    while(xbmc.Player().isPlayingVideo() and not xbmc.abortRequested):
+        xbmc.sleep(1000)
+    i = 0
+    while(i < 5 and not xbmc.abortRequested):
+        xbmc.sleep(1000)
+        i += 1
+    # Detect if it's first run and only show OK dialog + ask to disable on that
+    firstrun = __addon__.getSetting("versioncheck_firstrun") != 'false'
+    if firstrun and not xbmc.abortRequested:
+        xbmcgui.Dialog().ok(__addonname__,
+                            __localize__(msg),
+                            __localize__(32001),
+                            __localize__(32002))
+        # sets check to false which is checked on startup
+        if dialog_yesno(32009, 32010):
+            __addon__.setSetting("versioncheck_enable", 'false')
+        # set first run to false to only show a popup next startup / every two days
+        __addon__.setSetting("versioncheck_firstrun", 'false')
+    # Show notification after firstrun
+    elif not xbmc.abortRequested:
+        if upgrade:
+            return dialog_yesno(msg)
+        else:
+            xbmc.executebuiltin("XBMC.Notification(%s, %s, %d, %s)" %(__addonname__,
+                                                                  __localize__(32001) + '' + __localize__(32002),
+                                                                  15000,
+                                                                  __icon__))
+    else:
+        pass
\ No newline at end of file
diff --git a/addons/service.xbmc.versioncheck/lib/jsoninterface.py b/addons/service.xbmc.versioncheck/lib/jsoninterface.py
new file mode 100644 (file)
index 0000000..c6ab4f6
--- /dev/null
@@ -0,0 +1,54 @@
+# -*- coding: utf-8 -*-
+#
+#     Copyright (C) 2013 Team-XBMC
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+import os
+import sys
+import xbmc
+import xbmcaddon
+import xbmcvfs
+import lib.common
+from lib.common import log
+
+__addonpath__    = lib.common.__addonpath__
+
+import json as jsoninterface
+
+def get_installedversion():
+    # retrieve current installed version
+    json_query = xbmc.executeJSONRPC('{ "jsonrpc": "2.0", "method": "Application.GetProperties", "params": {"properties": ["version", "name"]}, "id": 1 }')
+    json_query = unicode(json_query, 'utf-8', errors='ignore')
+    json_query = jsoninterface.loads(json_query)
+    version_installed = []
+    if json_query.has_key('result') and json_query['result'].has_key('version'):
+        version_installed  = json_query['result']['version']
+        log("Version installed %s" %version_installed)
+    return version_installed
+    
+def get_versionfilelist():
+    # retrieve versionlists from supplied version file
+    version_file = os.path.join(__addonpath__, 'resources/versions.txt')
+    # Eden didn't have xbmcvfs.File()
+    if xbmcaddon.Addon('xbmc.addon').getAddonInfo('version') < "11.9.3":
+        file = open(version_file, 'r')
+    else:
+        file = xbmcvfs.File(version_file)
+    data = file.read()
+    file.close()
+    version_query = unicode(data, 'utf-8', errors='ignore')
+    version_query = jsoninterface.loads(version_query)
+    return version_query
\ No newline at end of file
diff --git a/addons/service.xbmc.versioncheck/lib/shellhandlerapt.py b/addons/service.xbmc.versioncheck/lib/shellhandlerapt.py
new file mode 100644 (file)
index 0000000..f539fee
--- /dev/null
@@ -0,0 +1,125 @@
+# -*- coding: utf-8 -*-
+#
+#     Copyright (C) 2013 Team-XBMC
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+import xbmc
+from common import *
+
+try:
+    from subprocess import check_output
+    from subprocess import call
+except:
+    log('subprocess import error')
+
+
+class ShellHandlerApt:
+
+    _pwd = ""
+
+    def __init__(self, usesudo=False):
+        self.sudo = usesudo
+        installed, candidate = self._check_versions("xbmc", False)
+        if not installed:
+            # there is no package installed via repo, so we exit here
+            log("No installed package found, exiting")
+            import sys
+            sys.exit(0)
+
+    def _check_versions(self, package, update=True):
+        _cmd = "apt-cache policy " + package
+
+        if update and not self._update_cache():
+            return False, False
+
+        try:
+            result = check_output([_cmd], shell=True).split("\n")
+        except Exception as error:
+            log("ShellHandlerApt: exception while executing shell command %s: %s" %(_cmd, error))
+            return False, False
+
+        if result[0].replace(":", "") == package:
+            installed = result[1].split()[1]
+            candidate = result[2].split()[1]
+            if installed == "(none)":
+                installed = False
+            if candidate == "(none)":
+                candiate = False
+            return installed, candidate
+        else:
+            log("ShellHandlerApt: error during version check")
+            return False, False
+
+    def _update_cache(self):
+        _cmd = 'apt-get update'
+        try:
+            if self.sudo:
+                x = check_output('echo \'%s\' | sudo -S %s' %(self._getpassword(), _cmd), shell=True)
+            else:
+                x = check_output(_cmd.split())
+        except Exception as error:
+            log("Exception while executing shell command %s: %s" %(_cmd, error))
+            return False
+
+        return True
+
+    def check_upgrade_available(self, package):
+        '''returns True if newer package is available in the repositories'''
+        installed, candidate = self._check_versions(package)
+        if installed and candidate:
+            if installed != candidate:
+                log("Version installed  %s" %installed)
+                log("Version available  %s" %candidate)
+                return True
+            else:
+                log("Already on newest version")
+        elif not installed:
+                log("No installed package found")
+                return False
+        else:
+            return False
+
+    def upgrade_package(self, package):
+        _cmd = "apt-get install -y " + package
+        try:
+            if self.sudo:
+                x = check_output('echo \'%s\' | sudo -S %s' %(self._getpassword(), _cmd), shell=True)
+            else:
+                x = check_output(_cmd.split())
+            log("Upgrade successful")
+        except Exception as error:
+            log("Exception while executing shell command %s: %s" %(_cmd, error))
+            return False
+
+        return True
+
+    def upgrade_system(self):
+        _cmd = "apt-get upgrade -y"
+        try:
+            log("Upgrading system")
+            if self.sudo:
+                x = check_output('echo \'%s\' | sudo -S %s' %(self._getpassword(), _cmd), shell=True)
+            else:
+                x = check_output(_cmd.split())
+        except Exception as error:
+            log("Exception while executing shell command %s: %s" %(_cmd, error))
+            return False
+
+        return True
+
+    def _getpassword(self):
+        if len(self._pwd) == 0:
+            self._pwd = get_password_from_user()
+        return self._pwd
diff --git a/addons/service.xbmc.versioncheck/lib/versions.py b/addons/service.xbmc.versioncheck/lib/versions.py
new file mode 100644 (file)
index 0000000..0bd7607
--- /dev/null
@@ -0,0 +1,93 @@
+# -*- coding: utf-8 -*-
+#
+#     Copyright (C) 2013 Team-XBMC
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+from lib.common import log
+
+def compare_version(version_installed, versionlist):
+    # Create seperate version lists
+    versionlist_stable = versionlist['releases']['stable']
+    versionlist_rc = versionlist['releases']['releasecandidate']
+    versionlist_beta = versionlist['releases']['beta']
+    versionlist_alpha = versionlist['releases']['alpha']
+    versionlist_prealpha = versionlist['releases']['prealpha'] 
+    ### Check to upgrade to newest available stable version
+    # check on smaller major version. Smaller version than available always notify
+    oldversion = False
+    msg = ''
+    if version_installed['major'] < int(versionlist_stable[0]['major']):
+        msg = 32003
+        oldversion = True
+        log("Version available  %s" %versionlist_stable[0])
+
+    # check on same major version installed and available
+    elif version_installed['major'] == int(versionlist_stable[0]['major']):
+        # check on smaller minor version
+        if version_installed['minor'] < int(versionlist_stable[0]['minor']):
+            msg = 32003
+            oldversion = True
+            log("Version available  %s" %versionlist_stable[0])
+        # check if not installed a stable so always notify
+        elif version_installed['minor'] == int(versionlist_stable[0]['minor']) and version_installed['tag'] != "stable":
+            msg = 32008
+            oldversion = True
+            log("Version available  %s" %versionlist_stable[0])
+        else:
+            log("Last available stable installed")
+
+    ### Check to upgrade to newest available RC version if not installed stable
+    ## Check also oldversion hasn't been set true by previous check because if so this need to be skipped
+    if not oldversion and version_installed['tag'] != "stable":
+        if 'revision' in version_installed.keys():
+            # only check on equal or lower major because newer installed beta/alpha/prealpha version will be higher
+            if versionlist_rc and version_installed['major'] <= int(versionlist_rc[0]['major']):
+                if version_installed['revision'] <= versionlist_rc[0]['revision']:
+                    msg = 32004
+                    oldversion = True
+                    log("Version available  %s" %versionlist_rc[0])
+
+            # exclude if installed RC on checking for newer beta
+            if not oldversion and versionlist_beta and version_installed['tag'] not in ["releasecandidate"]:
+                if version_installed['major'] <= int(versionlist_beta[0]['major']):
+                    if version_installed['revision'] < versionlist_beta[0]['revision']:
+                        msg = 32005
+                        oldversion = True
+                        log("Version available  %s" %versionlist_beta[0])
+        
+            # exclude if installed RC or beta on checking for newer alpha
+            if not oldversion and versionlist_alpha and version_installed['tag'] not in ["releasecandidate", "beta"]:
+                if version_installed['major'] <= int(versionlist_alpha[0]['major']):
+                    if version_installed['revision'] < versionlist_alpha[0]['revision']:
+                        msg = 32006
+                        oldversion = True
+                        log("Version available  %s" %versionlist_alpha[0])
+
+            # exclude if installed RC, beta or alpha on checking for newer prealpha
+            if not oldversion and versionlist_prealpha and version_installed['tag'] not in ["releasecandidate", "beta", "alpha"]:
+                if version_installed['major'] <= int(versionlist_prealpha[0]['major']):
+                    if  version_installed['revision'] < versionlist_prealpha[0]['revision']:
+                        msg = 32007
+                        oldversion = True
+                        log("Version available  %s" %versionlist_prealpha[0])
+
+        log("Nothing to see here, move along. Running a latest non stable release")
+        # Nothing to see here, move along
+    else:
+        log("Nothing to see here, move along. Running a stable release")
+        # Nothing to see here, move along
+        pass
+    return oldversion, msg
\ No newline at end of file
diff --git a/addons/service.xbmc.versioncheck/resources/language/Afrikaans/strings.po b/addons/service.xbmc.versioncheck/resources/language/Afrikaans/strings.po
new file mode 100644 (file)
index 0000000..eba84cd
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Afrikaans (http://www.transifex.com/projects/p/xbmc-addons/language/af/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: af\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Algemeen"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Albanian/strings.po b/addons/service.xbmc.versioncheck/resources/language/Albanian/strings.po
new file mode 100644 (file)
index 0000000..af8479d
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Albanian (http://www.transifex.com/projects/p/xbmc-addons/language/sq/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: sq\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Të përgjithshëm"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Amharic/strings.po b/addons/service.xbmc.versioncheck/resources/language/Amharic/strings.po
new file mode 100644 (file)
index 0000000..e5870ba
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Amharic (http://www.transifex.com/projects/p/xbmc-addons/language/am/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: am\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "ባጠቃላይ"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Arabic/strings.po b/addons/service.xbmc.versioncheck/resources/language/Arabic/strings.po
new file mode 100644 (file)
index 0000000..183b69a
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Arabic (http://www.transifex.com/projects/p/xbmc-addons/language/ar/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ar\n"
+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "عام"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Basque/strings.po b/addons/service.xbmc.versioncheck/resources/language/Basque/strings.po
new file mode 100644 (file)
index 0000000..23d9f4e
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Basque (http://www.transifex.com/projects/p/xbmc-addons/language/eu/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: eu\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Orokorra"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Belarusian/strings.po b/addons/service.xbmc.versioncheck/resources/language/Belarusian/strings.po
new file mode 100644 (file)
index 0000000..d3a6312
--- /dev/null
@@ -0,0 +1,93 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Belarusian (http://www.transifex.com/projects/p/xbmc-addons/language/be/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: be\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+msgctxt "#32001"
+msgid "We would like to recommend you to upgrade."
+msgstr "We would like to recommend you to upgrade."
+
+msgctxt "#32002"
+msgid "Visit XBMC.org for more information."
+msgstr "Visit XBMC.org for more information."
+
+msgctxt "#32003"
+msgid "You are still using an older stable version of XBMC."
+msgstr "You are still using an older stable version of XBMC."
+
+msgctxt "#32004"
+msgid "You are still using an older RC version of XBMC."
+msgstr "You are still using an older RC version of XBMC."
+
+msgctxt "#32005"
+msgid "You are still using an older beta version of XBMC."
+msgstr "You are still using an older beta version of XBMC."
+
+msgctxt "#32006"
+msgid "You are still using an older alpha version of XBMC."
+msgstr "You are still using an older alpha version of XBMC."
+
+msgctxt "#32007"
+msgid "You are still using an older monthly version of XBMC."
+msgstr "You are still using an older monthly version of XBMC."
+
+msgctxt "#32008"
+msgid "You are still using an older non stable version of XBMC."
+msgstr "You are still using an older non stable version of XBMC."
+
+msgctxt "#32009"
+msgid "Would you like to remove this reminder?"
+msgstr "Would you like to remove this reminder?"
+
+msgctxt "#32010"
+msgid "You can enable/disable it through addon settings."
+msgstr "You can enable/disable it through addon settings."
+
+msgctxt "#32011"
+msgid "Use your package manager(apt) to upgrade."
+msgstr "Use your package manager(apt) to upgrade."
+
+msgctxt "#32012"
+msgid "A new version is available, do you want to upgrade now?"
+msgstr "A new version is available, do you want to upgrade now?"
+
+msgctxt "#32013"
+msgid "Upgrade successful"
+msgstr "Upgrade successful"
+
+msgctxt "#32014"
+msgid "Do you want to restart Xbmc to finish the upgrade?"
+msgstr "Do you want to restart Xbmc to finish the upgrade?"
+
+msgctxt "#32015"
+msgid "Do you want to check the repository for a new version?"
+msgstr "Do you want to check the repository for a new version?"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "General"
+
+msgctxt "#32021"
+msgid "Enable XBMC version check?"
+msgstr "Enable XBMC version check?"
+
+msgctxt "#32022"
+msgid "Please enter your password"
+msgstr "Please enter your password"
+
+msgctxt "#32023"
+msgid "Linux: Upgrade complete system"
+msgstr "Linux: Upgrade complete system"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Bosnian/strings.po b/addons/service.xbmc.versioncheck/resources/language/Bosnian/strings.po
new file mode 100644 (file)
index 0000000..e8b767a
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Bosnian (http://www.transifex.com/projects/p/xbmc-addons/language/bs/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: bs\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"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Opšte"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Bulgarian/strings.po b/addons/service.xbmc.versioncheck/resources/language/Bulgarian/strings.po
new file mode 100644 (file)
index 0000000..cef3174
--- /dev/null
@@ -0,0 +1,89 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Bulgarian (http://www.transifex.com/projects/p/xbmc-addons/language/bg/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: bg\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32001"
+msgid "We would like to recommend you to upgrade."
+msgstr "Препоръчваме Ви да актуализирате."
+
+msgctxt "#32002"
+msgid "Visit XBMC.org for more information."
+msgstr "Посетете www.xbmc.info за информация."
+
+msgctxt "#32003"
+msgid "You are still using an older stable version of XBMC."
+msgstr "Ползвате стара стабилна версия на XBMC."
+
+msgctxt "#32004"
+msgid "You are still using an older RC version of XBMC."
+msgstr "Ползвате стара RC версия на XBMC."
+
+msgctxt "#32005"
+msgid "You are still using an older beta version of XBMC."
+msgstr "Ползвате стара бета версия на XBMC."
+
+msgctxt "#32006"
+msgid "You are still using an older alpha version of XBMC."
+msgstr "Ползвате стара алфа версия на XBMC."
+
+msgctxt "#32007"
+msgid "You are still using an older monthly version of XBMC."
+msgstr "Ползвате стара версия, от месечно компилираните, на XBMC."
+
+msgctxt "#32008"
+msgid "You are still using an older non stable version of XBMC."
+msgstr "Ползвате стара нестабилна версия на XBMC."
+
+msgctxt "#32009"
+msgid "Would you like to remove this reminder?"
+msgstr "Желаете ли изключите това напомняне?"
+
+msgctxt "#32010"
+msgid "You can enable/disable it through addon settings."
+msgstr "Можете да включите/изключите напомнянето от настройките на добавката."
+
+msgctxt "#32011"
+msgid "Use your package manager(apt) to upgrade."
+msgstr "Актуализирайте чрез вашия диспeчер на пакети  (apt)."
+
+msgctxt "#32012"
+msgid "A new version is available, do you want to upgrade now?"
+msgstr "Налична е нова версия. Желаете ли да актуализирате сега?"
+
+msgctxt "#32013"
+msgid "Upgrade successful"
+msgstr "Актуализирането е успешно"
+
+msgctxt "#32014"
+msgid "Do you want to restart Xbmc to finish the upgrade?"
+msgstr "Желаете ли да рестартирате XBMC, за да приключи актуализирането?"
+
+msgctxt "#32015"
+msgid "Do you want to check the repository for a new version?"
+msgstr "Желаете ли хранилището да бъде проверено за нова версия?"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Основни"
+
+msgctxt "#32021"
+msgid "Enable XBMC version check?"
+msgstr "Да бъде ли проверяване версията на XBMC?"
+
+msgctxt "#32022"
+msgid "Please enter your password"
+msgstr "Моля, въведете паролата си"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Catalan/strings.po b/addons/service.xbmc.versioncheck/resources/language/Catalan/strings.po
new file mode 100644 (file)
index 0000000..0084857
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Catalan (http://www.transifex.com/projects/p/xbmc-addons/language/ca/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ca\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "General"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Chinese (Simple)/strings.po b/addons/service.xbmc.versioncheck/resources/language/Chinese (Simple)/strings.po
new file mode 100644 (file)
index 0000000..ce61033
--- /dev/null
@@ -0,0 +1,93 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Chinese (Simple) (http://www.transifex.com/projects/p/xbmc-addons/language/zh/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+msgctxt "#32001"
+msgid "We would like to recommend you to upgrade."
+msgstr "我们建议你升级。"
+
+msgctxt "#32002"
+msgid "Visit XBMC.org for more information."
+msgstr "更多信息访问XBMC.org。"
+
+msgctxt "#32003"
+msgid "You are still using an older stable version of XBMC."
+msgstr "您仍在使用一个旧的稳定版XBMC。"
+
+msgctxt "#32004"
+msgid "You are still using an older RC version of XBMC."
+msgstr "您仍在使用一个旧的RC版XBMC。"
+
+msgctxt "#32005"
+msgid "You are still using an older beta version of XBMC."
+msgstr "您仍在使用一个旧的beta版XBMC。"
+
+msgctxt "#32006"
+msgid "You are still using an older alpha version of XBMC."
+msgstr "您仍在使用一个旧的alpha版XBMC。"
+
+msgctxt "#32007"
+msgid "You are still using an older monthly version of XBMC."
+msgstr "您仍在使用一个旧的月度版XBMC。"
+
+msgctxt "#32008"
+msgid "You are still using an older non stable version of XBMC."
+msgstr "您仍在使用一个旧的非稳定版XBMC。"
+
+msgctxt "#32009"
+msgid "Would you like to remove this reminder?"
+msgstr "你想移除此提醒吗?"
+
+msgctxt "#32010"
+msgid "You can enable/disable it through addon settings."
+msgstr "你可以通过插件设置来启用/禁用它。"
+
+msgctxt "#32011"
+msgid "Use your package manager(apt) to upgrade."
+msgstr "使用你的软件包管理器(apt)升级。"
+
+msgctxt "#32012"
+msgid "A new version is available, do you want to upgrade now?"
+msgstr "新版可用,你现在要升级吗?"
+
+msgctxt "#32013"
+msgid "Upgrade successful"
+msgstr "成功升级"
+
+msgctxt "#32014"
+msgid "Do you want to restart Xbmc to finish the upgrade?"
+msgstr "你要重启XBMC来完成升级吗?"
+
+msgctxt "#32015"
+msgid "Do you want to check the repository for a new version?"
+msgstr "你要检查库中的新版本吗?"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "常用"
+
+msgctxt "#32021"
+msgid "Enable XBMC version check?"
+msgstr "启用XBMC版本检查?"
+
+msgctxt "#32022"
+msgid "Please enter your password"
+msgstr "请输入你的密码"
+
+msgctxt "#32023"
+msgid "Linux: Upgrade complete system"
+msgstr "Linux:升级完整的系统"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Chinese (Traditional)/strings.po b/addons/service.xbmc.versioncheck/resources/language/Chinese (Traditional)/strings.po
new file mode 100644 (file)
index 0000000..2e73d59
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Chinese (Traditional) (http://www.transifex.com/projects/p/xbmc-addons/language/zh_TW/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh_TW\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "一般設定"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Croatian/strings.po b/addons/service.xbmc.versioncheck/resources/language/Croatian/strings.po
new file mode 100644 (file)
index 0000000..3c08810
--- /dev/null
@@ -0,0 +1,93 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Croatian (http://www.transifex.com/projects/p/xbmc-addons/language/hr/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: hr\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"
+
+msgctxt "#32001"
+msgid "We would like to recommend you to upgrade."
+msgstr "Želimo vam preproučiti nadogradnju."
+
+msgctxt "#32002"
+msgid "Visit XBMC.org for more information."
+msgstr "Posjetite XBMC.org za više informacija."
+
+msgctxt "#32003"
+msgid "You are still using an older stable version of XBMC."
+msgstr "Još uvijek koristite stariju stabilnu inačicu XBMC-a."
+
+msgctxt "#32004"
+msgid "You are still using an older RC version of XBMC."
+msgstr "Još uvijek koristite stariju pred-stabilnu inačicu XBMC-a."
+
+msgctxt "#32005"
+msgid "You are still using an older beta version of XBMC."
+msgstr "Još uvijek koristite stariju beta inačicu XBMC-a."
+
+msgctxt "#32006"
+msgid "You are still using an older alpha version of XBMC."
+msgstr "Još uvijek koristite stariju alfa inačicu XBMC-a."
+
+msgctxt "#32007"
+msgid "You are still using an older monthly version of XBMC."
+msgstr "Još uvijek koristite stariju mjesečnu inačicu XBMC-a."
+
+msgctxt "#32008"
+msgid "You are still using an older non stable version of XBMC."
+msgstr "Još uvijek koristite stariju nestabilnu inačicu XBMC-a."
+
+msgctxt "#32009"
+msgid "Would you like to remove this reminder?"
+msgstr "Želite li ukloniti ovog podsjetnika?"
+
+msgctxt "#32010"
+msgid "You can enable/disable it through addon settings."
+msgstr "Možete ga omogućiti/onemogućiti kroz postavke dodatka."
+
+msgctxt "#32011"
+msgid "Use your package manager(apt) to upgrade."
+msgstr "Koristite svoj upravitelj paketa (apt) za nadogradnju."
+
+msgctxt "#32012"
+msgid "A new version is available, do you want to upgrade now?"
+msgstr "Nova inačica je dostupna, želite li ju odmah nadograditi?"
+
+msgctxt "#32013"
+msgid "Upgrade successful"
+msgstr "Nadogradnja uspješna"
+
+msgctxt "#32014"
+msgid "Do you want to restart Xbmc to finish the upgrade?"
+msgstr "Želite li ponovno pokrenuti XBMC za dovršetak nadogradnje?"
+
+msgctxt "#32015"
+msgid "Do you want to check the repository for a new version?"
+msgstr "Želite li provjeriti repozitorij za novu inačicu?"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Općenito"
+
+msgctxt "#32021"
+msgid "Enable XBMC version check?"
+msgstr "Omogući XBMC provjeritelja inačice?"
+
+msgctxt "#32022"
+msgid "Please enter your password"
+msgstr "Upišite svoju lozinku"
+
+msgctxt "#32023"
+msgid "Linux: Upgrade complete system"
+msgstr "Linux: nadogradi cjelokupan sustav"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Czech/strings.po b/addons/service.xbmc.versioncheck/resources/language/Czech/strings.po
new file mode 100644 (file)
index 0000000..046b763
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Czech (http://www.transifex.com/projects/p/xbmc-addons/language/cs/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: cs\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Obecné"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Danish/strings.po b/addons/service.xbmc.versioncheck/resources/language/Danish/strings.po
new file mode 100644 (file)
index 0000000..bd71391
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Danish (http://www.transifex.com/projects/p/xbmc-addons/language/da/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: da\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Generelt"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Dutch/strings.po b/addons/service.xbmc.versioncheck/resources/language/Dutch/strings.po
new file mode 100644 (file)
index 0000000..5a86a7f
--- /dev/null
@@ -0,0 +1,93 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Dutch (http://www.transifex.com/projects/p/xbmc-addons/language/nl/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: nl\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32001"
+msgid "We would like to recommend you to upgrade."
+msgstr "We bevelen je aan om te upgraden."
+
+msgctxt "#32002"
+msgid "Visit XBMC.org for more information."
+msgstr "Bezoek XBMC.org voor meer informatie."
+
+msgctxt "#32003"
+msgid "You are still using an older stable version of XBMC."
+msgstr "Je gebruikt nog steeds een oudere stabiele versie van XBMC"
+
+msgctxt "#32004"
+msgid "You are still using an older RC version of XBMC."
+msgstr "Je gebruikt nog steeds een oudere RC versie van XBMC"
+
+msgctxt "#32005"
+msgid "You are still using an older beta version of XBMC."
+msgstr "Je gebruikt nog steeds een oudere beta versie van XBMC."
+
+msgctxt "#32006"
+msgid "You are still using an older alpha version of XBMC."
+msgstr "Je gebruikt nog steeds een oudere alpha versie van XBMC."
+
+msgctxt "#32007"
+msgid "You are still using an older monthly version of XBMC."
+msgstr "Je gebruikt nog steeds een oudere maandelijkse versie van XBMC."
+
+msgctxt "#32008"
+msgid "You are still using an older non stable version of XBMC."
+msgstr "Je gebruikt nog steeds een oudere niet stabiele versie van XBMC."
+
+msgctxt "#32009"
+msgid "Would you like to remove this reminder?"
+msgstr "Will je deze herinneren verwijderen?"
+
+msgctxt "#32010"
+msgid "You can enable/disable it through addon settings."
+msgstr "Deze kan je aan/uitzetten in addon settings."
+
+msgctxt "#32011"
+msgid "Use your package manager(apt) to upgrade."
+msgstr "Gebruik pakket manager(apt) voor upgraden."
+
+msgctxt "#32012"
+msgid "A new version is available, do you want to upgrade now?"
+msgstr "Er is een nieuwe versie beschikbaar, wil je nu upgraden?"
+
+msgctxt "#32013"
+msgid "Upgrade successful"
+msgstr "Upgrade succesvol"
+
+msgctxt "#32014"
+msgid "Do you want to restart Xbmc to finish the upgrade?"
+msgstr "Wil je XBMC opnieuw starten om de upgrade te voltooien?"
+
+msgctxt "#32015"
+msgid "Do you want to check the repository for a new version?"
+msgstr "Wil je de repository controleren op een nieuwe versie?"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Algemeen"
+
+msgctxt "#32021"
+msgid "Enable XBMC version check?"
+msgstr "XBMC versie controle aanzetten?"
+
+msgctxt "#32022"
+msgid "Please enter your password"
+msgstr "Vul uw wachtwoord in"
+
+msgctxt "#32023"
+msgid "Linux: Upgrade complete system"
+msgstr "Linux: Upgrade compleet systeem"
index 38b4c9a..891e84f 100644 (file)
@@ -60,10 +60,36 @@ msgctxt "#32011"
 msgid "Use your package manager(apt) to upgrade."
 msgstr ""
 
+msgctxt "#32012"
+msgid "A new version is available, do you want to upgrade now?"
+msgstr ""
+
+msgctxt "#32013"
+msgid "Upgrade successful"
+msgstr ""
+
+msgctxt "#32014"
+msgid "Do you want to restart Xbmc to finish the upgrade?"
+msgstr ""
+
+msgctxt "#32015"
+msgid "Do you want to check the repository for a new version?"
+msgstr ""
+
+#empty strings from id 32016 to 32019
+
 msgctxt "#32020"
 msgid "General"
 msgstr ""
 
 msgctxt "#32021"
 msgid "Enable XBMC version check?"
-msgstr ""
\ No newline at end of file
+msgstr ""
+
+msgctxt "#32022"
+msgid "Please enter your password"
+msgstr ""
+
+msgctxt "#32023"
+msgid "Linux: Upgrade complete system"
+msgstr ""
diff --git a/addons/service.xbmc.versioncheck/resources/language/Esperanto/strings.po b/addons/service.xbmc.versioncheck/resources/language/Esperanto/strings.po
new file mode 100644 (file)
index 0000000..6b9a419
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Esperanto (http://www.transifex.com/projects/p/xbmc-addons/language/eo/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: eo\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Generalo"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Estonian/strings.po b/addons/service.xbmc.versioncheck/resources/language/Estonian/strings.po
new file mode 100644 (file)
index 0000000..a4bc7f5
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Estonian (http://www.transifex.com/projects/p/xbmc-addons/language/et/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: et\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Üldine"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Finnish/strings.po b/addons/service.xbmc.versioncheck/resources/language/Finnish/strings.po
new file mode 100644 (file)
index 0000000..f3dbef5
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Finnish (http://www.transifex.com/projects/p/xbmc-addons/language/fi/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: fi\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Yleinen"
diff --git a/addons/service.xbmc.versioncheck/resources/language/French/strings.po b/addons/service.xbmc.versioncheck/resources/language/French/strings.po
new file mode 100644 (file)
index 0000000..784407c
--- /dev/null
@@ -0,0 +1,93 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: French (http://www.transifex.com/projects/p/xbmc-addons/language/fr/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: fr\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+msgctxt "#32001"
+msgid "We would like to recommend you to upgrade."
+msgstr "Nous vous recommandons de mettre à jour XBMC."
+
+msgctxt "#32002"
+msgid "Visit XBMC.org for more information."
+msgstr "Visitez xbmc.org pour plus d'informations."
+
+msgctxt "#32003"
+msgid "You are still using an older stable version of XBMC."
+msgstr "Vous utilisez toujours une ancienne version stable d'XBMC."
+
+msgctxt "#32004"
+msgid "You are still using an older RC version of XBMC."
+msgstr "Vous utilisez toujours une ancienne version RC d'XBMC."
+
+msgctxt "#32005"
+msgid "You are still using an older beta version of XBMC."
+msgstr "Vous utilisez toujours une ancienne version béta d'XBMC."
+
+msgctxt "#32006"
+msgid "You are still using an older alpha version of XBMC."
+msgstr "Vous utilisez toujours une ancienne version alpha d'XBMC."
+
+msgctxt "#32007"
+msgid "You are still using an older monthly version of XBMC."
+msgstr "Vous utilisez toujours une ancienne version mensuelle d'XBMC."
+
+msgctxt "#32008"
+msgid "You are still using an older non stable version of XBMC."
+msgstr "Vous utilisez toujours une ancienne version non stable d'XBMC."
+
+msgctxt "#32009"
+msgid "Would you like to remove this reminder?"
+msgstr "Souhaitez-vous supprimer ce rappel ?"
+
+msgctxt "#32010"
+msgid "You can enable/disable it through addon settings."
+msgstr "Vous pouvez l'activer/désactiver depuis les paramètres de l'extension."
+
+msgctxt "#32011"
+msgid "Use your package manager(apt) to upgrade."
+msgstr "Utilisez votre gestionnaire de paquets (apt) pour mettre à jour."
+
+msgctxt "#32012"
+msgid "A new version is available, do you want to upgrade now?"
+msgstr "Une nouvelle version est disponible, souhaitez vous mettre à niveau maintenant ?"
+
+msgctxt "#32013"
+msgid "Upgrade successful"
+msgstr "Mise à jour réussie"
+
+msgctxt "#32014"
+msgid "Do you want to restart Xbmc to finish the upgrade?"
+msgstr "Voulez-vous redémarrer Xbmc pour terminer la mise à jour ?"
+
+msgctxt "#32015"
+msgid "Do you want to check the repository for a new version?"
+msgstr "Voulez-vous vérifier sur le dépôt s’il existe une nouvelle version?"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Général"
+
+msgctxt "#32021"
+msgid "Enable XBMC version check?"
+msgstr "Activer XBMC Version Check ?"
+
+msgctxt "#32022"
+msgid "Please enter your password"
+msgstr "S'il vous plaît entrer votre mot de passe"
+
+msgctxt "#32023"
+msgid "Linux: Upgrade complete system"
+msgstr "Linux: Mise à niveau du système terminée"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Galician/strings.po b/addons/service.xbmc.versioncheck/resources/language/Galician/strings.po
new file mode 100644 (file)
index 0000000..630c821
--- /dev/null
@@ -0,0 +1,93 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Galician (http://www.transifex.com/projects/p/xbmc-addons/language/gl/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: gl\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32001"
+msgid "We would like to recommend you to upgrade."
+msgstr "Gustaríanos recomendarlle actualizar."
+
+msgctxt "#32002"
+msgid "Visit XBMC.org for more information."
+msgstr "Visitar XBMC.org para máis información."
+
+msgctxt "#32003"
+msgid "You are still using an older stable version of XBMC."
+msgstr "Aínda está a usar unha versión antiga de XBMC."
+
+msgctxt "#32004"
+msgid "You are still using an older RC version of XBMC."
+msgstr "Aínda está a usar unha versión RC antiga de XBMC."
+
+msgctxt "#32005"
+msgid "You are still using an older beta version of XBMC."
+msgstr "Aínda está a usar unha versión beta antiga de XBMC."
+
+msgctxt "#32006"
+msgid "You are still using an older alpha version of XBMC."
+msgstr "Aínda está a usar unha versión alpha antiga de XBMC."
+
+msgctxt "#32007"
+msgid "You are still using an older monthly version of XBMC."
+msgstr "Aínda está a usar unha versión mensual antiga de XBMC."
+
+msgctxt "#32008"
+msgid "You are still using an older non stable version of XBMC."
+msgstr "Aínda está a usar unha versión antiga non estábel de XBMC."
+
+msgctxt "#32009"
+msgid "Would you like to remove this reminder?"
+msgstr "Quere eliminar este aviso?"
+
+msgctxt "#32010"
+msgid "You can enable/disable it through addon settings."
+msgstr "Pode des/activarlo mediante a configuración do complemento."
+
+msgctxt "#32011"
+msgid "Use your package manager(apt) to upgrade."
+msgstr "Use o xestor de paquetes(apt) para actualizar."
+
+msgctxt "#32012"
+msgid "A new version is available, do you want to upgrade now?"
+msgstr "Hai unha nova versión dispoñíbel, ¿quere actualizar agora?"
+
+msgctxt "#32013"
+msgid "Upgrade successful"
+msgstr "Actualización correcta"
+
+msgctxt "#32014"
+msgid "Do you want to restart Xbmc to finish the upgrade?"
+msgstr "Quere reiniciar agora o XBMC para rematar a actualización?"
+
+msgctxt "#32015"
+msgid "Do you want to check the repository for a new version?"
+msgstr "Quere buscar no repositorio unha nova versión?"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Xeral"
+
+msgctxt "#32021"
+msgid "Enable XBMC version check?"
+msgstr "Activar a verificación de versión do XBMC?"
+
+msgctxt "#32022"
+msgid "Please enter your password"
+msgstr "Por favor introduza o seu contrasinal"
+
+msgctxt "#32023"
+msgid "Linux: Upgrade complete system"
+msgstr "Linux: Actualizar o sistema completo"
diff --git a/addons/service.xbmc.versioncheck/resources/language/German/strings.po b/addons/service.xbmc.versioncheck/resources/language/German/strings.po
new file mode 100644 (file)
index 0000000..470ec88
--- /dev/null
@@ -0,0 +1,93 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: German (http://www.transifex.com/projects/p/xbmc-addons/language/de/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: de\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32001"
+msgid "We would like to recommend you to upgrade."
+msgstr "Wir empfehlen Ihnen ein Upgrade."
+
+msgctxt "#32002"
+msgid "Visit XBMC.org for more information."
+msgstr "Besuchen Sie XBMC.org für mehr Informationen."
+
+msgctxt "#32003"
+msgid "You are still using an older stable version of XBMC."
+msgstr "Sie verwenden eine ältere, aber stabile Version von XBMC."
+
+msgctxt "#32004"
+msgid "You are still using an older RC version of XBMC."
+msgstr "Sie verwenden noch eine ältere Version von XBMC."
+
+msgctxt "#32005"
+msgid "You are still using an older beta version of XBMC."
+msgstr "Sie verwenden noch eine ältere BETA-Version von XBMC"
+
+msgctxt "#32006"
+msgid "You are still using an older alpha version of XBMC."
+msgstr "Sie verwenden noch eine ältere ALPHA-Version von XBMC."
+
+msgctxt "#32007"
+msgid "You are still using an older monthly version of XBMC."
+msgstr "Du benutzt noch eine ältere Version von XBMC."
+
+msgctxt "#32008"
+msgid "You are still using an older non stable version of XBMC."
+msgstr "Sie verwenden eine ältere, aber stabile Version von XBMC."
+
+msgctxt "#32009"
+msgid "Would you like to remove this reminder?"
+msgstr "Möchten Sie diese Erinnerung löschen?"
+
+msgctxt "#32010"
+msgid "You can enable/disable it through addon settings."
+msgstr "Dies kann in den Addoneinstellungen aktiviert/deaktiviert werden."
+
+msgctxt "#32011"
+msgid "Use your package manager(apt) to upgrade."
+msgstr "Bitte verwenden Sie den Packetmanager (apt) für ein Upgrade."
+
+msgctxt "#32012"
+msgid "A new version is available, do you want to upgrade now?"
+msgstr "Eine neue Version ist verfügbar, wollen sie jetzt upgraden?"
+
+msgctxt "#32013"
+msgid "Upgrade successful"
+msgstr "Upgrade erfolgreich"
+
+msgctxt "#32014"
+msgid "Do you want to restart Xbmc to finish the upgrade?"
+msgstr "Wollen sie Neustarten um das Upgrade zu beenden?"
+
+msgctxt "#32015"
+msgid "Do you want to check the repository for a new version?"
+msgstr "Repository auf eine neue Version überprüfen?"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Allgemein"
+
+msgctxt "#32021"
+msgid "Enable XBMC version check?"
+msgstr "XBMC Versionsprüfung aktivieren?"
+
+msgctxt "#32022"
+msgid "Please enter your password"
+msgstr "Geben Sie ihr Passwort ein"
+
+msgctxt "#32023"
+msgid "Linux: Upgrade complete system"
+msgstr "Linux: Komplettes System aktualisieren"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Greek/strings.po b/addons/service.xbmc.versioncheck/resources/language/Greek/strings.po
new file mode 100644 (file)
index 0000000..9ac083f
--- /dev/null
@@ -0,0 +1,93 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Greek (http://www.transifex.com/projects/p/xbmc-addons/language/el/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: el\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32001"
+msgid "We would like to recommend you to upgrade."
+msgstr "Θα σας προτείναμε να κάνετε αναβάθμιση."
+
+msgctxt "#32002"
+msgid "Visit XBMC.org for more information."
+msgstr "Επισκεφθείτε το XBMC.org για περισσότερες πληροφορίες."
+
+msgctxt "#32003"
+msgid "You are still using an older stable version of XBMC."
+msgstr "Χρησιμοποιείτε ακόμη μια παλιά σταθερή έκδοση του XBMC."
+
+msgctxt "#32004"
+msgid "You are still using an older RC version of XBMC."
+msgstr "Χρησιμοποιείτε ακόμη μια παλιά RC έκδοση του XBMC."
+
+msgctxt "#32005"
+msgid "You are still using an older beta version of XBMC."
+msgstr "Χρησιμοποιείτε ακόμη μια παλιά beta έκδοση του XBMC."
+
+msgctxt "#32006"
+msgid "You are still using an older alpha version of XBMC."
+msgstr "Χρησιμοποιείτε ακόμη μια παλιά alpha έκδοση του XBMC."
+
+msgctxt "#32007"
+msgid "You are still using an older monthly version of XBMC."
+msgstr "Χρησιμοποιείτε ακόμη μια παλιά μηνιαία έκδοση του XBMC."
+
+msgctxt "#32008"
+msgid "You are still using an older non stable version of XBMC."
+msgstr "Χρησιμοποιείτε ακόμη μια παλιά μη σταθερή έκδοση του XBMC."
+
+msgctxt "#32009"
+msgid "Would you like to remove this reminder?"
+msgstr "Να αφαιρεθεί αυτή η υπενθύμιση;"
+
+msgctxt "#32010"
+msgid "You can enable/disable it through addon settings."
+msgstr "Μπορείτε να την (απ)ενεργοποιήσετε από τις ρυθμίσεις του πρόσθετου."
+
+msgctxt "#32011"
+msgid "Use your package manager(apt) to upgrade."
+msgstr "Χρησιμοποιήστε τη διαχείριση πακέτων (apt) για αναβάθμιση."
+
+msgctxt "#32012"
+msgid "A new version is available, do you want to upgrade now?"
+msgstr "Μια νέα έκδοση είναι διαθέσιμη, να γίνει αναβάθμιση τώρα;"
+
+msgctxt "#32013"
+msgid "Upgrade successful"
+msgstr "Επιτυχής Αναβάθμιση"
+
+msgctxt "#32014"
+msgid "Do you want to restart Xbmc to finish the upgrade?"
+msgstr "Να γίνει επανεκκίνηση του XBMC για να ολοκληρωθεί η αναβάθμιση;"
+
+msgctxt "#32015"
+msgid "Do you want to check the repository for a new version?"
+msgstr "Να γίνει έλεγχος του αποθετηρίου για νέα έκδοση;"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Γενικά"
+
+msgctxt "#32021"
+msgid "Enable XBMC version check?"
+msgstr "Ενεργοποίηση ελέγχου έκδοσης XBMC;"
+
+msgctxt "#32022"
+msgid "Please enter your password"
+msgstr "Παρακαλώ εισάγετε τον κωδικό σας"
+
+msgctxt "#32023"
+msgid "Linux: Upgrade complete system"
+msgstr "Linux: Αναβάθμιση όλου του συστήματος"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Hebrew/strings.po b/addons/service.xbmc.versioncheck/resources/language/Hebrew/strings.po
new file mode 100644 (file)
index 0000000..97005fd
--- /dev/null
@@ -0,0 +1,93 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Hebrew (http://www.transifex.com/projects/p/xbmc-addons/language/he/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: he\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32001"
+msgid "We would like to recommend you to upgrade."
+msgstr "אנו ממליצים לך לשדרג."
+
+msgctxt "#32002"
+msgid "Visit XBMC.org for more information."
+msgstr "בקר ב-XBMC.org למידע נוסף."
+
+msgctxt "#32003"
+msgid "You are still using an older stable version of XBMC."
+msgstr "הינך משתמש עדיין בגרסה יציבה ישנה של XBMC."
+
+msgctxt "#32004"
+msgid "You are still using an older RC version of XBMC."
+msgstr "הינך משתמש עדיין בגרסת RC ישנה של XBMC."
+
+msgctxt "#32005"
+msgid "You are still using an older beta version of XBMC."
+msgstr "הינך משתמש עדיין בגרסת ביטא ישנה של XBMC."
+
+msgctxt "#32006"
+msgid "You are still using an older alpha version of XBMC."
+msgstr "הינך משתמש עדיין בגרסת אלפא ישנה של XBMC."
+
+msgctxt "#32007"
+msgid "You are still using an older monthly version of XBMC."
+msgstr "הינך משתמש עדיין בגרסה חודשית ישנה של XBMC."
+
+msgctxt "#32008"
+msgid "You are still using an older non stable version of XBMC."
+msgstr "הינך משתמש עדיין בגרסה לא יציבה ישנה של XBMC."
+
+msgctxt "#32009"
+msgid "Would you like to remove this reminder?"
+msgstr "התרצה להסיר תזכורת זאת?"
+
+msgctxt "#32010"
+msgid "You can enable/disable it through addon settings."
+msgstr "הינך יכול להפעיל/לנטרל זאת בהגדרות התוסף."
+
+msgctxt "#32011"
+msgid "Use your package manager(apt) to upgrade."
+msgstr "השתמש במנהל החבילות (apt) לשידרוג."
+
+msgctxt "#32012"
+msgid "A new version is available, do you want to upgrade now?"
+msgstr "גרסה חדשה זמינה, התרצה לעדכן כעת?"
+
+msgctxt "#32013"
+msgid "Upgrade successful"
+msgstr "שדרוג התבצע בהצלחה"
+
+msgctxt "#32014"
+msgid "Do you want to restart Xbmc to finish the upgrade?"
+msgstr "התרצה להפעיל מחדש את XBMC כדי לסיים את השדרוג?"
+
+msgctxt "#32015"
+msgid "Do you want to check the repository for a new version?"
+msgstr "התרצה לבדוק האם זמינה גרסה חדשה במאגר?"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "כללי"
+
+msgctxt "#32021"
+msgid "Enable XBMC version check?"
+msgstr "להפעיל את XBMC version check?"
+
+msgctxt "#32022"
+msgid "Please enter your password"
+msgstr "אנא הזן סיסמתך"
+
+msgctxt "#32023"
+msgid "Linux: Upgrade complete system"
+msgstr "לינוקס: שדרוג מערכת מלא"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Hindi (Devanagiri)/strings.po b/addons/service.xbmc.versioncheck/resources/language/Hindi (Devanagiri)/strings.po
new file mode 100644 (file)
index 0000000..6060b06
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Hindi (Devanagiri) (http://www.transifex.com/projects/p/xbmc-addons/language/hi/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: hi\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "सामान्य"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Hungarian/strings.po b/addons/service.xbmc.versioncheck/resources/language/Hungarian/strings.po
new file mode 100644 (file)
index 0000000..f98a2e0
--- /dev/null
@@ -0,0 +1,85 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Hungarian (http://www.transifex.com/projects/p/xbmc-addons/language/hu/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: hu\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32001"
+msgid "We would like to recommend you to upgrade."
+msgstr "Azt ajánljuk Önnek, hogy frissítse a rendszerét."
+
+msgctxt "#32002"
+msgid "Visit XBMC.org for more information."
+msgstr "További információkért keresse fel az xbmc.org oldalt!"
+
+msgctxt "#32003"
+msgid "You are still using an older stable version of XBMC."
+msgstr "Ön még az XBMC egy régebbi, stabil változatát használja."
+
+msgctxt "#32004"
+msgid "You are still using an older RC version of XBMC."
+msgstr "Ön még az XBMC egy régebbi, kiadás előtti (RC) változatát használja."
+
+msgctxt "#32005"
+msgid "You are still using an older beta version of XBMC."
+msgstr "Ön még az XBMC egy régebbi, béta változatát használja."
+
+msgctxt "#32006"
+msgid "You are still using an older alpha version of XBMC."
+msgstr "Ön még az XBMC egy régebbi, alfa változatát használja."
+
+msgctxt "#32007"
+msgid "You are still using an older monthly version of XBMC."
+msgstr "Ön még az XBMC egy régebbi, havi kiadású változatát használja."
+
+msgctxt "#32008"
+msgid "You are still using an older non stable version of XBMC."
+msgstr "Ön még az XBMC egy régebbi, kísérleti változatát használja."
+
+msgctxt "#32009"
+msgid "Would you like to remove this reminder?"
+msgstr "Szeretné eltávolítani ezt az emlékeztetőt?"
+
+msgctxt "#32010"
+msgid "You can enable/disable it through addon settings."
+msgstr "Engedélyezheti / letilthatja a kiegészítő beállításaiban."
+
+msgctxt "#32011"
+msgid "Use your package manager(apt) to upgrade."
+msgstr "Használja a csomagkezelőt (apt) a frissítéshez."
+
+msgctxt "#32012"
+msgid "A new version is available, do you want to upgrade now?"
+msgstr "Egy új verzió érhető el, szeretne erre frissíteni?"
+
+msgctxt "#32013"
+msgid "Upgrade successful"
+msgstr "A frissítés sikerült."
+
+msgctxt "#32014"
+msgid "Do you want to restart Xbmc to finish the upgrade?"
+msgstr "Kívánja újraindítani az XBMC-t a frissítés befejezéséhez?"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Általános"
+
+msgctxt "#32021"
+msgid "Enable XBMC version check?"
+msgstr "Engedélyezi az XBMC verzió ellenőrzését?"
+
+msgctxt "#32022"
+msgid "Please enter your password"
+msgstr "Kérjük, adja meg jelszavát"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Icelandic/strings.po b/addons/service.xbmc.versioncheck/resources/language/Icelandic/strings.po
new file mode 100644 (file)
index 0000000..4eb7d76
--- /dev/null
@@ -0,0 +1,65 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Icelandic (http://www.transifex.com/projects/p/xbmc-addons/language/is/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: is\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32001"
+msgid "We would like to recommend you to upgrade."
+msgstr "Við mælum með að þú uppfærir."
+
+msgctxt "#32002"
+msgid "Visit XBMC.org for more information."
+msgstr "Farðu inn á XBMC.org til að fá fleiri upplýsingar."
+
+msgctxt "#32003"
+msgid "You are still using an older stable version of XBMC."
+msgstr "Þú ert enn að nota eldri örugga útgáfu af XBMC."
+
+msgctxt "#32005"
+msgid "You are still using an older beta version of XBMC."
+msgstr "Þú ert enn að nota eldri beta útgáfu af XBMC."
+
+msgctxt "#32007"
+msgid "You are still using an older monthly version of XBMC."
+msgstr "Þú ert enn að nota eldri mánaðarlega útgáfu af XBMC."
+
+msgctxt "#32008"
+msgid "You are still using an older non stable version of XBMC."
+msgstr "Þú ert enn að nota eldri óörugga útgáfu af XBMC."
+
+msgctxt "#32009"
+msgid "Would you like to remove this reminder?"
+msgstr "Viltu fjarlægja þessa áminningu ?"
+
+msgctxt "#32011"
+msgid "Use your package manager(apt) to upgrade."
+msgstr "Notaðu pakkastjórann (apt) til að uppfæra."
+
+msgctxt "#32012"
+msgid "A new version is available, do you want to upgrade now?"
+msgstr "Ný útgáfa er fáanleg, viltu uppfæra núna ?"
+
+msgctxt "#32013"
+msgid "Upgrade successful"
+msgstr "Uppfærsla heppnaðist"
+
+msgctxt "#32014"
+msgid "Do you want to restart Xbmc to finish the upgrade?"
+msgstr "Viltu endurræsa  Xbmc til að ljúka uppfærslu ?"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Almennt"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Indonesian/strings.po b/addons/service.xbmc.versioncheck/resources/language/Indonesian/strings.po
new file mode 100644 (file)
index 0000000..fdaa956
--- /dev/null
@@ -0,0 +1,93 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Indonesian (http://www.transifex.com/projects/p/xbmc-addons/language/id/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: id\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+msgctxt "#32001"
+msgid "We would like to recommend you to upgrade."
+msgstr "Kami merekomendasikan Anda untuk upgrade."
+
+msgctxt "#32002"
+msgid "Visit XBMC.org for more information."
+msgstr "Kunjungi XBMC.org untuk informasi lebih lanjut."
+
+msgctxt "#32003"
+msgid "You are still using an older stable version of XBMC."
+msgstr "Anda masih menggunakan versi stabil XBMC yang lebih lama."
+
+msgctxt "#32004"
+msgid "You are still using an older RC version of XBMC."
+msgstr "Anda masih menggunakan versi RC XBMC yang lebih lama."
+
+msgctxt "#32005"
+msgid "You are still using an older beta version of XBMC."
+msgstr "Anda masih menggunakan versi beta XBMC yang lebih lama."
+
+msgctxt "#32006"
+msgid "You are still using an older alpha version of XBMC."
+msgstr "Anda masih menggunakan versi alpha XBMC yang lebih lama."
+
+msgctxt "#32007"
+msgid "You are still using an older monthly version of XBMC."
+msgstr "Anda masih menggunakan versi bulanan XBMC yang lebih lama."
+
+msgctxt "#32008"
+msgid "You are still using an older non stable version of XBMC."
+msgstr "Anda masih menggunakan versi non-stabil XBMC yang lebih lama."
+
+msgctxt "#32009"
+msgid "Would you like to remove this reminder?"
+msgstr "Apakah anda ingin menghapus pengingat ini?"
+
+msgctxt "#32010"
+msgid "You can enable/disable it through addon settings."
+msgstr "Anda dapat mengaktifkan/menonaktifkannya melalui pengaturan addon."
+
+msgctxt "#32011"
+msgid "Use your package manager(apt) to upgrade."
+msgstr "Gunakan manajer paket (apt) untuk upgrade."
+
+msgctxt "#32012"
+msgid "A new version is available, do you want to upgrade now?"
+msgstr "Versi yang baru sudah tersedia, apakah Anda ingin upgrade sekarang?"
+
+msgctxt "#32013"
+msgid "Upgrade successful"
+msgstr "Upgrade sukses"
+
+msgctxt "#32014"
+msgid "Do you want to restart Xbmc to finish the upgrade?"
+msgstr "Apakah Anda ingin memulai ulang XBMC untuk menuntaskan proses upgrade?"
+
+msgctxt "#32015"
+msgid "Do you want to check the repository for a new version?"
+msgstr "Apakah Anda ingin memeriksa repositori untuk versi yang baru?"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Umum"
+
+msgctxt "#32021"
+msgid "Enable XBMC version check?"
+msgstr "Aktifkan pengecekan versi XBMC?"
+
+msgctxt "#32022"
+msgid "Please enter your password"
+msgstr "Silakan masukkan kata sandi Anda"
+
+msgctxt "#32023"
+msgid "Linux: Upgrade complete system"
+msgstr "Linux: Upgrade sistem seluruhnya"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Italian/strings.po b/addons/service.xbmc.versioncheck/resources/language/Italian/strings.po
new file mode 100644 (file)
index 0000000..517f399
--- /dev/null
@@ -0,0 +1,93 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Italian (http://www.transifex.com/projects/p/xbmc-addons/language/it/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: it\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32001"
+msgid "We would like to recommend you to upgrade."
+msgstr "Ti raccomandiamo di aggiornare."
+
+msgctxt "#32002"
+msgid "Visit XBMC.org for more information."
+msgstr "Visita XBMC.org per più informazioni."
+
+msgctxt "#32003"
+msgid "You are still using an older stable version of XBMC."
+msgstr "Stai ancora usando una vecchia versione stabile di XBMC"
+
+msgctxt "#32004"
+msgid "You are still using an older RC version of XBMC."
+msgstr "Stai ancora usando una vecchia versione RC di XBMC."
+
+msgctxt "#32005"
+msgid "You are still using an older beta version of XBMC."
+msgstr "Stai ancora usando una vecchia versione beta di XBMC."
+
+msgctxt "#32006"
+msgid "You are still using an older alpha version of XBMC."
+msgstr "Stai ancora usando una vecchia versione alpha di XBMC."
+
+msgctxt "#32007"
+msgid "You are still using an older monthly version of XBMC."
+msgstr "Stai ancora usando una vecchia versione mensile di XBMC."
+
+msgctxt "#32008"
+msgid "You are still using an older non stable version of XBMC."
+msgstr "Stai ancora usando una vecchia versione non stabile di XBMC."
+
+msgctxt "#32009"
+msgid "Would you like to remove this reminder?"
+msgstr "Vuoi eliminare questo promemoria?"
+
+msgctxt "#32010"
+msgid "You can enable/disable it through addon settings."
+msgstr "Puoi abilitarlo/disabilitarlo dalle impostazioni dell'addon"
+
+msgctxt "#32011"
+msgid "Use your package manager(apt) to upgrade."
+msgstr "Usa il tuo gestore pacchetti (apt) per aggiornare."
+
+msgctxt "#32012"
+msgid "A new version is available, do you want to upgrade now?"
+msgstr "Una nuova versione è disponibile, vuoi aggiornare ora?"
+
+msgctxt "#32013"
+msgid "Upgrade successful"
+msgstr "Aggiornamento effettuato con successo"
+
+msgctxt "#32014"
+msgid "Do you want to restart Xbmc to finish the upgrade?"
+msgstr "Vuoi riavviare l'XBMC per finire l'aggiornamento?"
+
+msgctxt "#32015"
+msgid "Do you want to check the repository for a new version?"
+msgstr "Vuoi verificare la presenza di un nuovo aggiornamento?"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Generale"
+
+msgctxt "#32021"
+msgid "Enable XBMC version check?"
+msgstr "Abilita XBMC version check?"
+
+msgctxt "#32022"
+msgid "Please enter your password"
+msgstr "Inserisci la tua Password"
+
+msgctxt "#32023"
+msgid "Linux: Upgrade complete system"
+msgstr "Linux: Aggiornamento completo del sistema"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Japanese/strings.po b/addons/service.xbmc.versioncheck/resources/language/Japanese/strings.po
new file mode 100644 (file)
index 0000000..3e7f403
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Japanese (http://www.transifex.com/projects/p/xbmc-addons/language/ja/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ja\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "一般"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Korean/strings.po b/addons/service.xbmc.versioncheck/resources/language/Korean/strings.po
new file mode 100644 (file)
index 0000000..63f0b1f
--- /dev/null
@@ -0,0 +1,89 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Korean (http://www.transifex.com/projects/p/xbmc-addons/language/ko/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ko\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+msgctxt "#32001"
+msgid "We would like to recommend you to upgrade."
+msgstr "업그레이드를 권장합니다."
+
+msgctxt "#32002"
+msgid "Visit XBMC.org for more information."
+msgstr "자세한 정보는 XBMC.org를 방문하세요."
+
+msgctxt "#32003"
+msgid "You are still using an older stable version of XBMC."
+msgstr "오래된 XBMC 안정 버전을 사용 중입니다."
+
+msgctxt "#32004"
+msgid "You are still using an older RC version of XBMC."
+msgstr "오래된 XBMC RC 버전을 사용중입니다."
+
+msgctxt "#32005"
+msgid "You are still using an older beta version of XBMC."
+msgstr "오래된 XBMC 베타 버전을 사용 중입니다."
+
+msgctxt "#32006"
+msgid "You are still using an older alpha version of XBMC."
+msgstr "오래된 XBMC 알파 버전을 사용 중입니다."
+
+msgctxt "#32007"
+msgid "You are still using an older monthly version of XBMC."
+msgstr "오래된 XBMC monthly 버전을 사용 중입니다."
+
+msgctxt "#32008"
+msgid "You are still using an older non stable version of XBMC."
+msgstr "오래된 XBMC 불안정 버전을 사용 중입니다."
+
+msgctxt "#32009"
+msgid "Would you like to remove this reminder?"
+msgstr "이 미리 알림을 삭제하겠습니까?"
+
+msgctxt "#32010"
+msgid "You can enable/disable it through addon settings."
+msgstr "추가기능 설정에서 사용/사용하지 않음을 선택할 수 있습니다."
+
+msgctxt "#32011"
+msgid "Use your package manager(apt) to upgrade."
+msgstr "패키지 관리자(apt)로 업그레이드 하세요."
+
+msgctxt "#32012"
+msgid "A new version is available, do you want to upgrade now?"
+msgstr "새 버전이 사용 가능합니다. 지금 업그레이드 하겠습니까?"
+
+msgctxt "#32013"
+msgid "Upgrade successful"
+msgstr "업그레이드 성공"
+
+msgctxt "#32014"
+msgid "Do you want to restart Xbmc to finish the upgrade?"
+msgstr "업그레이드를 완료하기 위해 XBMC를 다시 시작 하겠습니까?"
+
+msgctxt "#32015"
+msgid "Do you want to check the repository for a new version?"
+msgstr "저장소에서 새 버전을 확인하겠습니까?"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "일반"
+
+msgctxt "#32021"
+msgid "Enable XBMC version check?"
+msgstr "XBMC 버전을 검사하겠습니까?"
+
+msgctxt "#32022"
+msgid "Please enter your password"
+msgstr "패스워드를 입력하세요"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Latvian/strings.po b/addons/service.xbmc.versioncheck/resources/language/Latvian/strings.po
new file mode 100644 (file)
index 0000000..3a7e0e0
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Latvian (http://www.transifex.com/projects/p/xbmc-addons/language/lv/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: lv\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Vispārīgi"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Lithuanian/strings.po b/addons/service.xbmc.versioncheck/resources/language/Lithuanian/strings.po
new file mode 100644 (file)
index 0000000..cfb87b5
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Lithuanian (http://www.transifex.com/projects/p/xbmc-addons/language/lt/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: lt\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Pagrindinis"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Macedonian/strings.po b/addons/service.xbmc.versioncheck/resources/language/Macedonian/strings.po
new file mode 100644 (file)
index 0000000..84e225b
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Macedonian (http://www.transifex.com/projects/p/xbmc-addons/language/mk/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: mk\n"
+"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Општо"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Malay/strings.po b/addons/service.xbmc.versioncheck/resources/language/Malay/strings.po
new file mode 100644 (file)
index 0000000..653931e
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Malay (http://www.transifex.com/projects/p/xbmc-addons/language/ms/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ms\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Am"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Malayalam/strings.po b/addons/service.xbmc.versioncheck/resources/language/Malayalam/strings.po
new file mode 100644 (file)
index 0000000..ef8f1d9
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Malayalam (http://www.transifex.com/projects/p/xbmc-addons/language/ml/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ml\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "പോതുവായത്"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Maltese/strings.po b/addons/service.xbmc.versioncheck/resources/language/Maltese/strings.po
new file mode 100644 (file)
index 0000000..6ab48f0
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Maltese (http://www.transifex.com/projects/p/xbmc-addons/language/mt/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: mt\n"
+"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n==0 || ( n%100>1 && n%100<11) ? 1 : (n%100>10 && n%100<20 ) ? 2 : 3);\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Ġenerali"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Norwegian/strings.po b/addons/service.xbmc.versioncheck/resources/language/Norwegian/strings.po
new file mode 100644 (file)
index 0000000..74593af
--- /dev/null
@@ -0,0 +1,93 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Norwegian (http://www.transifex.com/projects/p/xbmc-addons/language/no/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: no\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32001"
+msgid "We would like to recommend you to upgrade."
+msgstr "Vi ønsker å anbefale at du oppgraderer."
+
+msgctxt "#32002"
+msgid "Visit XBMC.org for more information."
+msgstr "Besøk XBMC.org for mer informasjon"
+
+msgctxt "#32003"
+msgid "You are still using an older stable version of XBMC."
+msgstr "Du bruker fortsatt en eldre, stabil versjon av XBMC."
+
+msgctxt "#32004"
+msgid "You are still using an older RC version of XBMC."
+msgstr "Du bruker fortsatt en eldre, RC-versjon av XBMC."
+
+msgctxt "#32005"
+msgid "You are still using an older beta version of XBMC."
+msgstr "Du bruker fortsatt en eldre, betaversjon av XBMC."
+
+msgctxt "#32006"
+msgid "You are still using an older alpha version of XBMC."
+msgstr "Du bruker fortsatt en eldre, alphaversjon av XBMC."
+
+msgctxt "#32007"
+msgid "You are still using an older monthly version of XBMC."
+msgstr "Du bruker fortsatt en eldre, månedlig versjon av XBMC."
+
+msgctxt "#32008"
+msgid "You are still using an older non stable version of XBMC."
+msgstr "Du bruker fortsatt en eldre, ustabil versjon av XBMC."
+
+msgctxt "#32009"
+msgid "Would you like to remove this reminder?"
+msgstr "Ønsker du å fjerne denne påminnelsen?"
+
+msgctxt "#32010"
+msgid "You can enable/disable it through addon settings."
+msgstr "Du kan aktivere/deaktivere den gjennom tilleggsinnstillingene."
+
+msgctxt "#32011"
+msgid "Use your package manager(apt) to upgrade."
+msgstr "Bruk pakkebehandleren (apt) din for å oppgradere."
+
+msgctxt "#32012"
+msgid "A new version is available, do you want to upgrade now?"
+msgstr "En ny versjon er tilgjengelig, ønsker du å oppgradere nå?"
+
+msgctxt "#32013"
+msgid "Upgrade successful"
+msgstr "Vellykket oppgradering"
+
+msgctxt "#32014"
+msgid "Do you want to restart Xbmc to finish the upgrade?"
+msgstr "Ønsker du å starte XBMC på nytt for å fullføre oppgraderingen?"
+
+msgctxt "#32015"
+msgid "Do you want to check the repository for a new version?"
+msgstr "Ønsker du å sjekke pakkebrønnen etter en ny versjon?"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Generelt"
+
+msgctxt "#32021"
+msgid "Enable XBMC version check?"
+msgstr "Aktiver XBMC versjonsettersyn"
+
+msgctxt "#32022"
+msgid "Please enter your password"
+msgstr "Vennlingst skriv inn ditt passord"
+
+msgctxt "#32023"
+msgid "Linux: Upgrade complete system"
+msgstr "Linux: Oppgrader hele systemet"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Persian (Iran)/strings.po b/addons/service.xbmc.versioncheck/resources/language/Persian (Iran)/strings.po
new file mode 100644 (file)
index 0000000..c6e8e1b
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Persian (Iran) (http://www.transifex.com/projects/p/xbmc-addons/language/fa_IR/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: fa_IR\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "عمومی"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Persian/strings.po b/addons/service.xbmc.versioncheck/resources/language/Persian/strings.po
new file mode 100644 (file)
index 0000000..4da33e2
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Persian (http://www.transifex.com/projects/p/xbmc-addons/language/fa/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: fa\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "عمومی"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Polish/strings.po b/addons/service.xbmc.versioncheck/resources/language/Polish/strings.po
new file mode 100644 (file)
index 0000000..74b9325
--- /dev/null
@@ -0,0 +1,93 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Polish (http://www.transifex.com/projects/p/xbmc-addons/language/pl/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: pl\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+msgctxt "#32001"
+msgid "We would like to recommend you to upgrade."
+msgstr "Chcielibyśmy polecić aktualizację."
+
+msgctxt "#32002"
+msgid "Visit XBMC.org for more information."
+msgstr "Odwiedź XBMC.org po więcej informacji."
+
+msgctxt "#32003"
+msgid "You are still using an older stable version of XBMC."
+msgstr "Nadal używasz starszej stabilnej wersji XBMC."
+
+msgctxt "#32004"
+msgid "You are still using an older RC version of XBMC."
+msgstr "Nadal używasz starszej wersji RC."
+
+msgctxt "#32005"
+msgid "You are still using an older beta version of XBMC."
+msgstr "Nadal używasz starszej wersji beta XBMC."
+
+msgctxt "#32006"
+msgid "You are still using an older alpha version of XBMC."
+msgstr "Nadal używasz starszej wersji alpha XBMC."
+
+msgctxt "#32007"
+msgid "You are still using an older monthly version of XBMC."
+msgstr "Nadal używasz starszej wersji comiesięcznej XBMC."
+
+msgctxt "#32008"
+msgid "You are still using an older non stable version of XBMC."
+msgstr "Nadal używasz starszej niestabilnej wersji XBMC."
+
+msgctxt "#32009"
+msgid "Would you like to remove this reminder?"
+msgstr "Usunąć to przypomnienie?"
+
+msgctxt "#32010"
+msgid "You can enable/disable it through addon settings."
+msgstr "Można to włączyć/wyłączyć przez ustawienia wtyczki."
+
+msgctxt "#32011"
+msgid "Use your package manager(apt) to upgrade."
+msgstr "Użyj swojego menedżera pakietów (apt) do aktualizacji."
+
+msgctxt "#32012"
+msgid "A new version is available, do you want to upgrade now?"
+msgstr "Dostępna jest nowa wersja, chcesz teraz aktualizować?"
+
+msgctxt "#32013"
+msgid "Upgrade successful"
+msgstr "Aktualizacja powiodła się"
+
+msgctxt "#32014"
+msgid "Do you want to restart Xbmc to finish the upgrade?"
+msgstr "Chcesz zrestartować Xbmc by dokończyć aktualizację?"
+
+msgctxt "#32015"
+msgid "Do you want to check the repository for a new version?"
+msgstr "Czy chcesz sprawdzić repozytorium czy jest nowa wersja?"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Ogólne"
+
+msgctxt "#32021"
+msgid "Enable XBMC version check?"
+msgstr "Włączyć sprawdzanie wersji XBMC?"
+
+msgctxt "#32022"
+msgid "Please enter your password"
+msgstr "Proszę podać hasło"
+
+msgctxt "#32023"
+msgid "Linux: Upgrade complete system"
+msgstr "Linux: aktualizacja systemu kompletna"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Portuguese (Brazil)/strings.po b/addons/service.xbmc.versioncheck/resources/language/Portuguese (Brazil)/strings.po
new file mode 100644 (file)
index 0000000..ea13e4a
--- /dev/null
@@ -0,0 +1,93 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/xbmc-addons/language/pt_BR/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: pt_BR\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+msgctxt "#32001"
+msgid "We would like to recommend you to upgrade."
+msgstr "Gostaríamos de recomendar-lhe que atualize."
+
+msgctxt "#32002"
+msgid "Visit XBMC.org for more information."
+msgstr "Visite XBMC.org para mais informações."
+
+msgctxt "#32003"
+msgid "You are still using an older stable version of XBMC."
+msgstr "Você ainda está usando uma versão estável antiga do XBMC."
+
+msgctxt "#32004"
+msgid "You are still using an older RC version of XBMC."
+msgstr "Você ainda está usando uma versão RC antiga do XBMC."
+
+msgctxt "#32005"
+msgid "You are still using an older beta version of XBMC."
+msgstr "Você ainda está usando uma versão beta antiga do XBMC."
+
+msgctxt "#32006"
+msgid "You are still using an older alpha version of XBMC."
+msgstr "Você ainda está usando uma versão alpha antiga do XBMC."
+
+msgctxt "#32007"
+msgid "You are still using an older monthly version of XBMC."
+msgstr "Você ainda está usando uma versão mensal antiga do XBMC."
+
+msgctxt "#32008"
+msgid "You are still using an older non stable version of XBMC."
+msgstr "Você ainda está usando uma versão não estável antiga do XBMC."
+
+msgctxt "#32009"
+msgid "Would you like to remove this reminder?"
+msgstr "Gostaria de remover este lembrete?"
+
+msgctxt "#32010"
+msgid "You can enable/disable it through addon settings."
+msgstr "Você pode ativar/desativá-lo através das configurações do add-on."
+
+msgctxt "#32011"
+msgid "Use your package manager(apt) to upgrade."
+msgstr "Use seu gerenciador de pacotes(apt) para atualizar."
+
+msgctxt "#32012"
+msgid "A new version is available, do you want to upgrade now?"
+msgstr "Uma nova versão está disponível, você quer atualizara agora?"
+
+msgctxt "#32013"
+msgid "Upgrade successful"
+msgstr "Atualização efetuada com sucesso"
+
+msgctxt "#32014"
+msgid "Do you want to restart Xbmc to finish the upgrade?"
+msgstr "Você deseja reiniciar o XBMC após atualização finalizar?"
+
+msgctxt "#32015"
+msgid "Do you want to check the repository for a new version?"
+msgstr "Deseja verificar se há uma nova versão no repositório?"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Geral"
+
+msgctxt "#32021"
+msgid "Enable XBMC version check?"
+msgstr "Habilitar verificação de versão do XBMC?"
+
+msgctxt "#32022"
+msgid "Please enter your password"
+msgstr "Por favor entre sua senha"
+
+msgctxt "#32023"
+msgid "Linux: Upgrade complete system"
+msgstr "Linux: Atualizar o sistema completamente"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Portuguese/strings.po b/addons/service.xbmc.versioncheck/resources/language/Portuguese/strings.po
new file mode 100644 (file)
index 0000000..d3d6eb8
--- /dev/null
@@ -0,0 +1,93 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Portuguese (http://www.transifex.com/projects/p/xbmc-addons/language/pt/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: pt\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32001"
+msgid "We would like to recommend you to upgrade."
+msgstr "Gostaríamos de recomendar-lhe que actualizasse o XBMC."
+
+msgctxt "#32002"
+msgid "Visit XBMC.org for more information."
+msgstr "Visite xbmc.org para mais informação."
+
+msgctxt "#32003"
+msgid "You are still using an older stable version of XBMC."
+msgstr "Ainda está a usar uma versão estável antiga do XBMC."
+
+msgctxt "#32004"
+msgid "You are still using an older RC version of XBMC."
+msgstr "Ainda está a usar uma versão RC antiga do XBMC."
+
+msgctxt "#32005"
+msgid "You are still using an older beta version of XBMC."
+msgstr "Ainda está a usar uma versão beta antiga do XBMC."
+
+msgctxt "#32006"
+msgid "You are still using an older alpha version of XBMC."
+msgstr "Ainda está a usar uma versão alpha antiga do XBMC."
+
+msgctxt "#32007"
+msgid "You are still using an older monthly version of XBMC."
+msgstr "Ainda está a usar uma versão mensal antiga do XBMC."
+
+msgctxt "#32008"
+msgid "You are still using an older non stable version of XBMC."
+msgstr "Ainda está a usar uma versão instável antiga do XBMC."
+
+msgctxt "#32009"
+msgid "Would you like to remove this reminder?"
+msgstr "Gostaria de anular este lembrete?"
+
+msgctxt "#32010"
+msgid "You can enable/disable it through addon settings."
+msgstr "Pode activá-lo/desactivá-lo através das definições de addon."
+
+msgctxt "#32011"
+msgid "Use your package manager(apt) to upgrade."
+msgstr "Use o gestor de pacotes(apt) para actualizar."
+
+msgctxt "#32012"
+msgid "A new version is available, do you want to upgrade now?"
+msgstr "Uma nova versão está disponível, quer actualizar agora?"
+
+msgctxt "#32013"
+msgid "Upgrade successful"
+msgstr "A actualização foi concluída"
+
+msgctxt "#32014"
+msgid "Do you want to restart Xbmc to finish the upgrade?"
+msgstr "Quer reiniciar o XBMC para concluir a actualização?"
+
+msgctxt "#32015"
+msgid "Do you want to check the repository for a new version?"
+msgstr "Quer procurar por uma nova versão no repositório?"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Menus"
+
+msgctxt "#32021"
+msgid "Enable XBMC version check?"
+msgstr "Activar verificação de versão do XBMC?"
+
+msgctxt "#32022"
+msgid "Please enter your password"
+msgstr "Por favor, introduza a sua palavra-passe"
+
+msgctxt "#32023"
+msgid "Linux: Upgrade complete system"
+msgstr "Linux: Actualização completa do sistema"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Romanian/strings.po b/addons/service.xbmc.versioncheck/resources/language/Romanian/strings.po
new file mode 100644 (file)
index 0000000..538bc65
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Romanian (http://www.transifex.com/projects/p/xbmc-addons/language/ro/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ro\n"
+"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "General"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Russian/strings.po b/addons/service.xbmc.versioncheck/resources/language/Russian/strings.po
new file mode 100644 (file)
index 0000000..7ffbeee
--- /dev/null
@@ -0,0 +1,29 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Russian (http://www.transifex.com/projects/p/xbmc-addons/language/ru/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ru\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"
+
+msgctxt "#32001"
+msgid "We would like to recommend you to upgrade."
+msgstr "Мы рекомендуем Вам обновиться."
+
+msgctxt "#32002"
+msgid "Visit XBMC.org for more information."
+msgstr "Для более полной информации посетите XBMC.org."
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Основные"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Serbian (Cyrillic)/strings.po b/addons/service.xbmc.versioncheck/resources/language/Serbian (Cyrillic)/strings.po
new file mode 100644 (file)
index 0000000..32c0ccf
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Serbian (Cyrillic) (http://www.transifex.com/projects/p/xbmc-addons/language/sr_RS/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: sr_RS\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"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Опште"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Serbian/strings.po b/addons/service.xbmc.versioncheck/resources/language/Serbian/strings.po
new file mode 100644 (file)
index 0000000..e017c89
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Serbian (http://www.transifex.com/projects/p/xbmc-addons/language/sr/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: sr\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"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Opšte"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Slovak/strings.po b/addons/service.xbmc.versioncheck/resources/language/Slovak/strings.po
new file mode 100644 (file)
index 0000000..7c215fc
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Slovak (http://www.transifex.com/projects/p/xbmc-addons/language/sk/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: sk\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Všeobecné"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Slovenian/strings.po b/addons/service.xbmc.versioncheck/resources/language/Slovenian/strings.po
new file mode 100644 (file)
index 0000000..17b30a2
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Slovenian (http://www.transifex.com/projects/p/xbmc-addons/language/sl/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: sl\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Splošno"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Spanish (Argentina)/strings.po b/addons/service.xbmc.versioncheck/resources/language/Spanish (Argentina)/strings.po
new file mode 100644 (file)
index 0000000..b1f7002
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/xbmc-addons/language/es_AR/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: es_AR\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "General"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Spanish (Mexico)/strings.po b/addons/service.xbmc.versioncheck/resources/language/Spanish (Mexico)/strings.po
new file mode 100644 (file)
index 0000000..ecb65a8
--- /dev/null
@@ -0,0 +1,57 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/xbmc-addons/language/es_MX/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: es_MX\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32001"
+msgid "We would like to recommend you to upgrade."
+msgstr "Nos gustaria recomendarle actualizar."
+
+msgctxt "#32002"
+msgid "Visit XBMC.org for more information."
+msgstr "Visita XBMC.org para mas informacion."
+
+msgctxt "#32003"
+msgid "You are still using an older stable version of XBMC."
+msgstr "Usted todavia esta utilizando una version vieja estable de XBMC."
+
+msgctxt "#32004"
+msgid "You are still using an older RC version of XBMC."
+msgstr "Usted todavia esta utilizando una version vieja RC de XBMC."
+
+msgctxt "#32005"
+msgid "You are still using an older beta version of XBMC."
+msgstr "Usted todavia esta utilizando una version vieja beta de XBMC."
+
+msgctxt "#32006"
+msgid "You are still using an older alpha version of XBMC."
+msgstr "Usted todavia esta utilizando una version vieja alpha de XBMC."
+
+msgctxt "#32007"
+msgid "You are still using an older monthly version of XBMC."
+msgstr "Usted todavia esta utilizando una vieja version mensual de XBMC."
+
+msgctxt "#32008"
+msgid "You are still using an older non stable version of XBMC."
+msgstr "Usted todavia esta utilizando una version vieja inestable de XBMC."
+
+msgctxt "#32009"
+msgid "Would you like to remove this reminder?"
+msgstr "Usted quiere remover este recordatorio?"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "General"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Spanish/strings.po b/addons/service.xbmc.versioncheck/resources/language/Spanish/strings.po
new file mode 100644 (file)
index 0000000..b06ed19
--- /dev/null
@@ -0,0 +1,93 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Spanish (http://www.transifex.com/projects/p/xbmc-addons/language/es/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: es\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32001"
+msgid "We would like to recommend you to upgrade."
+msgstr "Le recomendamos que actualice."
+
+msgctxt "#32002"
+msgid "Visit XBMC.org for more information."
+msgstr "Visite XBMC.org para más información."
+
+msgctxt "#32003"
+msgid "You are still using an older stable version of XBMC."
+msgstr "Todavía está usando una versión antigua estable de XBMC."
+
+msgctxt "#32004"
+msgid "You are still using an older RC version of XBMC."
+msgstr "Todavía está usando una versión antigua RC de XBMC."
+
+msgctxt "#32005"
+msgid "You are still using an older beta version of XBMC."
+msgstr "Todavía está usando una antigua versión beta de XBMC."
+
+msgctxt "#32006"
+msgid "You are still using an older alpha version of XBMC."
+msgstr "Todavía está usando una antigua versión alfa de XBMC."
+
+msgctxt "#32007"
+msgid "You are still using an older monthly version of XBMC."
+msgstr "Todavía está usando una antigua versión mensual de XBMC."
+
+msgctxt "#32008"
+msgid "You are still using an older non stable version of XBMC."
+msgstr "Todavía está usando una versión antigua no estable de XBMC."
+
+msgctxt "#32009"
+msgid "Would you like to remove this reminder?"
+msgstr "¿Desea eliminar este recordatorio?"
+
+msgctxt "#32010"
+msgid "You can enable/disable it through addon settings."
+msgstr "Puede activarlo o desactivarlo a través de los ajustes del complemento."
+
+msgctxt "#32011"
+msgid "Use your package manager(apt) to upgrade."
+msgstr "Use su administrador de paquetes (apt) para actualizar."
+
+msgctxt "#32012"
+msgid "A new version is available, do you want to upgrade now?"
+msgstr "Está disponible una nueva versión, ¿deseas actualizar ahora?"
+
+msgctxt "#32013"
+msgid "Upgrade successful"
+msgstr "Actualización correcta"
+
+msgctxt "#32014"
+msgid "Do you want to restart Xbmc to finish the upgrade?"
+msgstr "¿Deseas reiniciar XBMC para terminar la actualización?"
+
+msgctxt "#32015"
+msgid "Do you want to check the repository for a new version?"
+msgstr "¿Quieres comprobar el repositorio para una nueva versión?"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "General"
+
+msgctxt "#32021"
+msgid "Enable XBMC version check?"
+msgstr "¿Activar la comprobación de versión de XBMC?"
+
+msgctxt "#32022"
+msgid "Please enter your password"
+msgstr "Por favor introduce tu contraseña"
+
+msgctxt "#32023"
+msgid "Linux: Upgrade complete system"
+msgstr "Linux: Actualizar sistema completo"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Swedish/strings.po b/addons/service.xbmc.versioncheck/resources/language/Swedish/strings.po
new file mode 100644 (file)
index 0000000..fb6767d
--- /dev/null
@@ -0,0 +1,93 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Swedish (http://www.transifex.com/projects/p/xbmc-addons/language/sv/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: sv\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32001"
+msgid "We would like to recommend you to upgrade."
+msgstr "Vi rekommenderar dig att uppgradera."
+
+msgctxt "#32002"
+msgid "Visit XBMC.org for more information."
+msgstr "Besök XBMC.org för mer information."
+
+msgctxt "#32003"
+msgid "You are still using an older stable version of XBMC."
+msgstr "Du använder fortfarande en äldre stabil version av XBMC."
+
+msgctxt "#32004"
+msgid "You are still using an older RC version of XBMC."
+msgstr "Du använder fortfarande en äldre RC version av XBMC."
+
+msgctxt "#32005"
+msgid "You are still using an older beta version of XBMC."
+msgstr "Du använder fortfarande en äldre betaversion av XBMC."
+
+msgctxt "#32006"
+msgid "You are still using an older alpha version of XBMC."
+msgstr "Du använder fortfarande en äldre alfaversion av XBMC."
+
+msgctxt "#32007"
+msgid "You are still using an older monthly version of XBMC."
+msgstr "Du använder fortfarande en äldre månatlig version av XBMC."
+
+msgctxt "#32008"
+msgid "You are still using an older non stable version of XBMC."
+msgstr "Du använder fortfarande en äldre ostabil version av XBMC."
+
+msgctxt "#32009"
+msgid "Would you like to remove this reminder?"
+msgstr "Vill du ta bort denna påminnelse?"
+
+msgctxt "#32010"
+msgid "You can enable/disable it through addon settings."
+msgstr "Du kan aktivera/inaktivera detta i tilläggsinställningarna."
+
+msgctxt "#32011"
+msgid "Use your package manager(apt) to upgrade."
+msgstr "Använd din pakethanterare (apt) för att uppgradera."
+
+msgctxt "#32012"
+msgid "A new version is available, do you want to upgrade now?"
+msgstr "En ny version är tillgänglig, vill du uppgradera nu?"
+
+msgctxt "#32013"
+msgid "Upgrade successful"
+msgstr "Uppgradering lyckades"
+
+msgctxt "#32014"
+msgid "Do you want to restart Xbmc to finish the upgrade?"
+msgstr "Vill du starta om XBMC för att slutföra uppgraderingen?"
+
+msgctxt "#32015"
+msgid "Do you want to check the repository for a new version?"
+msgstr "Vill du kontrollera förrådet efter en ny version?"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Allmänna"
+
+msgctxt "#32021"
+msgid "Enable XBMC version check?"
+msgstr "Aktivera XBMC versionskontroll?"
+
+msgctxt "#32022"
+msgid "Please enter your password"
+msgstr "Var god ange ditt lösenord"
+
+msgctxt "#32023"
+msgid "Linux: Upgrade complete system"
+msgstr "Linux: Uppdatera hela systemet"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Tamil (India)/strings.po b/addons/service.xbmc.versioncheck/resources/language/Tamil (India)/strings.po
new file mode 100644 (file)
index 0000000..2e5c373
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Tamil (India) (http://www.transifex.com/projects/p/xbmc-addons/language/ta_IN/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ta_IN\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "பொதுவானது"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Thai/strings.po b/addons/service.xbmc.versioncheck/resources/language/Thai/strings.po
new file mode 100644 (file)
index 0000000..28cdb37
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Thai (http://www.transifex.com/projects/p/xbmc-addons/language/th/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: th\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "ทั่วไป"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Turkish/strings.po b/addons/service.xbmc.versioncheck/resources/language/Turkish/strings.po
new file mode 100644 (file)
index 0000000..cf00b55
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Turkish (http://www.transifex.com/projects/p/xbmc-addons/language/tr/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: tr\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Genel"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Ukrainian/strings.po b/addons/service.xbmc.versioncheck/resources/language/Ukrainian/strings.po
new file mode 100644 (file)
index 0000000..6746c9c
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Ukrainian (http://www.transifex.com/projects/p/xbmc-addons/language/uk/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: uk\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"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Загальні"
diff --git a/addons/service.xbmc.versioncheck/resources/language/Vietnamese/strings.po b/addons/service.xbmc.versioncheck/resources/language/Vietnamese/strings.po
new file mode 100644 (file)
index 0000000..a9aaf36
--- /dev/null
@@ -0,0 +1,21 @@
+# XBMC Media Center language file
+# Addon Name: XBMC Version Check
+# Addon id: service.xbmc.versioncheck
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Addons\n"
+"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: Vietnamese (http://www.transifex.com/projects/p/xbmc-addons/language/vi/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: vi\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+msgctxt "#32020"
+msgid "General"
+msgstr "Chung"
diff --git a/addons/service.xbmc.versioncheck/resources/polkit/10-allow-update.pkla b/addons/service.xbmc.versioncheck/resources/polkit/10-allow-update.pkla
new file mode 100644 (file)
index 0000000..a513534
--- /dev/null
@@ -0,0 +1,6 @@
+[Untrusted Upgrade]
+Identity=unix-user:xbmc
+Action=org.debian.apt.upgrade-packages;org.debian.apt.update-cache
+ResultAny=no
+ResultInactive=yes
+ResultActive=yes
diff --git a/addons/service.xbmc.versioncheck/resources/polkit/README b/addons/service.xbmc.versioncheck/resources/polkit/README
new file mode 100644 (file)
index 0000000..c3a1a45
--- /dev/null
@@ -0,0 +1,10 @@
+If you run xbmc standalone and/or do want to have password less upgrades, copy the file 10-allow-update.conf to /etc/polkit-1/localauthority/50-local.d/
+
+Make sure to adjust the username if it is different from "xbmc"
+
+For this to work, you must have python-apt and  python-aptdaemon installed:
+sudo apt-get install python-apt python-aptdaemon
+
+
+If those packages are not installed, this script will fallback to calling apt directly and ask you for your password.
+
index f4efe60..b72c184 100644 (file)
@@ -2,5 +2,6 @@
 <settings>
     <category label="32020">
         <setting label="32021" type="bool" id="versioncheck_enable" default="true"/>
+        <setting label="32023" type="bool" id="upgrade_system" default="false"/>
     </category>
 </settings>
index 0ababef..c75d681 100644 (file)
@@ -4,6 +4,13 @@
         "stable": [
             {
                 "major": "12",
+                "minor": "2",
+                "tag": "stable",
+                "revision": "20130502-32b1a5e",
+                "extrainfo": "final"
+            },
+            {
+                "major": "12",
                 "minor": "1",
                 "tag": "stable",
                 "revision": "20130317-0d373cc",
                 "major": "13",
                 "minor": "0",
                 "tag": "prealpha",
+                "revision": "20130929-494c67a",
+                "extrainfo": "alpha8"
+            },
+            {
+                "major": "13",
+                "minor": "0",
+                "tag": "prealpha",
+                "revision": "20130831-2da9c97",
+                "extrainfo": "alpha7"
+            },
+            {
+                "major": "13",
+                "minor": "0",
+                "tag": "prealpha",
+                "revision": "20130630-30f4a79",
+                "extrainfo": "alpha6"
+            },
+            {
+                "major": "13",
+                "minor": "0",
+                "tag": "prealpha",
+                "revision": "20130630-9188e6a",
+                "extrainfo": "alpha5"
+            },
+            {
+                "major": "13",
+                "minor": "0",
+                "tag": "prealpha",
+                "revision": "20130531-0ccc594",
+                "extrainfo": "alpha4"
+            },
+            {
+                "major": "13",
+                "minor": "0",
+                "tag": "prealpha",
+                "revision": "20130430-e8fe5cf",
+                "extrainfo": "alpha3"
+            },
+            {
+                "major": "13",
+                "minor": "0",
+                "tag": "prealpha",
+                "revision": "20130331-194c408",
+                "extrainfo": "alpha2"
+            },
+            {
+                "major": "13",
+                "minor": "0",
+                "tag": "prealpha",
                 "revision": "20130227-8d2e0fe",
                 "extrainfo": "alpha1"
             },
index 49acf3a..eeac151 100644 (file)
 #
 
 
-import os
 import platform
 import xbmc
-import xbmcaddon
-import xbmcgui
-import xbmcvfs
+import lib.common
+from lib.common import log, dialog_yesno
+from lib.common import upgrade_message as _upgrademessage
 
-if sys.version_info < (2, 7):
-    import simplejson
-else:
-    import json as simplejson
+__addon__        = lib.common.__addon__
+__addonversion__ = lib.common.__addonversion__
+__addonname__    = lib.common.__addonname__
+__addonpath__    = lib.common.__addonpath__
+__icon__         = lib.common.__icon__
+__localize__     = lib.common.__localize__
 
-__addon__        = xbmcaddon.Addon()
-__addonversion__ = __addon__.getAddonInfo('version')
-__addonname__    = __addon__.getAddonInfo('name')
-__addonpath__    = __addon__.getAddonInfo('path').decode('utf-8')
-__icon__         = __addon__.getAddonInfo('icon')
-__localize__    = __addon__.getLocalizedString
-
-def log(txt):
-    if isinstance (txt,str):
-        txt = txt.decode("utf-8")
-    message = u'%s: %s' % (__addonname__, txt)
-    xbmc.log(msg=message.encode("utf-8"), level=xbmc.LOGDEBUG)
 
 class Main:
     def __init__(self):
+        linux = False
+        packages = []
         if __addon__.getSetting("versioncheck_enable") == 'true' and not xbmc.getCondVisibility('System.HasAddon(os.openelec.tv)'):
             if not sys.argv[0]:
                 xbmc.executebuiltin('XBMC.AlarmClock(CheckAtBoot,XBMC.RunScript(service.xbmc.versioncheck, started),00:00:30,silent)')
                 xbmc.executebuiltin('XBMC.AlarmClock(CheckWhileRunning,XBMC.RunScript(service.xbmc.versioncheck, started),24:00:00,silent,loop)')
             elif sys.argv[0] and sys.argv[1] == 'started':
                 if xbmc.getCondVisibility('System.Platform.Linux'):
-                    oldversion = _versionchecklinux('xbmc')
+                    packages = ['xbmc']
+                    _versionchecklinux(packages)
                 else:
-                    oldversion = _versioncheck()
-                if oldversion[0]:
-                    _upgrademessage(oldversion[1])
+                    oldversion, msg = _versioncheck()
+                    if oldversion:
+                        _upgrademessage(msg, False)
             else:
                 pass
                 
 def _versioncheck():
     # initial vars
-    oldversion = False
-    msg = ''
+    from lib.jsoninterface import get_installedversion, get_versionfilelist
+    from lib.versions import compare_version
     # retrieve versionlists from supplied version file
-    version_file = os.path.join(__addonpath__, 'resources/versions.txt')
-    # Eden didn't have xbmcvfs.File()
-    if xbmcaddon.Addon('xbmc.addon').getAddonInfo('version') < "11.9.3":
-        file = open(version_file, 'r')
-    else:
-        file = xbmcvfs.File(version_file)
-    data = file.read()
-    file.close()
-    version_query = unicode(data, 'utf-8', errors='ignore')
-    version_query = simplejson.loads(version_query)
-    
-    # Create seperate version lists
-    versionlist_stable = version_query['releases']['stable']
-    versionlist_rc = version_query['releases']['releasecandidate']
-    versionlist_beta = version_query['releases']['beta']
-    versionlist_alpha = version_query['releases']['alpha']
-    versionlist_prealpha = version_query['releases']['prealpha']        
-
-    # retrieve current installed version
-    json_query = xbmc.executeJSONRPC('{ "jsonrpc": "2.0", "method": "Application.GetProperties", "params": {"properties": ["version", "name"]}, "id": 1 }')
-    json_query = unicode(json_query, 'utf-8', errors='ignore')
-    json_query = simplejson.loads(json_query)
-    version_installed = []
-    if json_query.has_key('result') and json_query['result'].has_key('version'):
-        version_installed  = json_query['result']['version']
-        log("Version installed %s" %version_installed)
-    # set oldversion flag to false
-    oldversion = False
-
-    ### Check to upgrade to newest available stable version
-    # check on smaller major version. Smaller version than available always notify
-    if version_installed['major'] < int(versionlist_stable[0]['major']):
-        msg = __localize__(32003)
-        oldversion = True
-        log("Version available  %s" %versionlist_stable[0])
-
-    # check on same major version installed and available
-    elif version_installed['major'] == int(versionlist_stable[0]['major']):
-        # check on smaller minor version
-        if version_installed['minor'] < int(versionlist_stable[0]['minor']):
-            msg = __localize__(32003)
-            oldversion = True
-            log("Version available  %s" %versionlist_stable[0])
-        # check if not installed a stable so always notify
-        elif version_installed['tag'] != "stable":
-            msg = __localize__(32008)
-            oldversion = True
-            log("Version available  %s" %versionlist_stable[0])
-        else:
-            log("Last available stable installed")
-
-    ### Check to upgrade to newest available RC version if not installed stable
-    ## Check also oldversion hasn't been set true by previous check because if so this need to be skipped
-    if not oldversion and version_installed['tag'] != "stable":
-        # only check on equal or lower major because newer installed beta/alpha/prealpha version will be higher
-        if versionlist_rc and version_installed['major'] <= int(versionlist_rc[0]['major']):
-            if version_installed['revision'] <= versionlist_rc[0]['revision']:
-                msg = __localize__(32004)
-                oldversion = True
-                log("Version available  %s" %versionlist_rc[0])
-
-        # exclude if installed RC on checking for newer beta
-        if not oldversion and versionlist_beta and version_installed['tag'] not in ["releasecandidate"]:
-            if version_installed['major'] <= int(versionlist_beta[0]['major']):
-                if version_installed['revision'] < versionlist_beta[0]['revision']:
-                    msg = __localize__(32005)
-                    oldversion = True
-                    log("Version available  %s" %versionlist_beta[0])
-    
-        # exclude if installed RC or beta on checking for newer alpha
-        if not oldversion and versionlist_alpha and version_installed['tag'] not in ["releasecandidate", "beta"]:
-            if version_installed['major'] <= int(versionlist_alpha[0]['major']):
-                if version_installed['revision'] < versionlist_alpha[0]['revision']:
-                    msg = __localize__(32006)
-                    oldversion = True
-                    log("Version available  %s" %versionlist_alpha[0])
-
-        # exclude if installed RC, beta or alpha on checking for newer prealpha
-        if not oldversion and versionlist_prealpha and version_installed['tag'] not in ["releasecandidate", "beta", "alpha"]:
-            if version_installed['major'] <= int(versionlist_prealpha[0]['major']):
-                if version_installed['revision'] < versionlist_prealpha[0]['revision']:
-                    msg = __localize__(32007)
-                    oldversion = True
-                    log("Version available  %s" %versionlist_prealpha[0])
-
-        # Nothing to see here, move along
-    else:
-        # Nothing to see here, move along
-        pass
+    versionlist = get_versionfilelist()
+    # retrieve version installed
+    version_installed = get_installedversion()
+    # copmpare installed and available
+    oldversion, msg = compare_version(version_installed, versionlist)
     return oldversion, msg
 
 
-def _versionchecklinux(package):
-    if (platform.dist()[0] == "Ubuntu" or platform.dist()[0] == "Debian"):
-        oldversion, msg = _versioncheckapt(package)
+def _versionchecklinux(packages):
+    if platform.dist()[0].lower() in ['ubuntu', 'debian', 'linuxmint']:
+        handler = False
+        result = False
+        try:
+            # try aptdeamon first
+            from lib.aptdeamonhandler import AptdeamonHandler
+            handler = AptdeamonHandler()
+        except:
+            # fallback to shell
+            # since we need the user password, ask to check for new version first
+            from lib.shellhandlerapt import ShellHandlerApt
+            sudo = True
+            handler = ShellHandlerApt(sudo)
+            if dialog_yesno(32015):
+                pass
+            elif dialog_yesno(32009, 32010):
+                log("disabling addon by user request")
+                __addon__.setSetting("versioncheck_enable", 'false')
+                return
+
+        if handler:
+            if handler.check_upgrade_available(packages[0]):
+                if _upgrademessage(32012, True):
+                    if __addon__.getSetting("upgrade_system") == "false":
+                        result = handler.upgrade_package(packages[0])
+                    else:
+                        result = handler.upgrade_system()
+                    if result:
+                        from lib.common import message_upgrade_success, message_restart
+                        message_upgrade_success()
+                        message_restart()
+                    else:
+                        log("Error during upgrade")
+        else:
+            log("Error: no handler found")
     else:
         log("Unsupported platform %s" %platform.dist()[0])
         sys.exit(0)
-    return oldversion, msg
-        
-def _versioncheckapt(package):
-    #check for linux using Apt
-    # initial vars
-    oldversion = False
-    msg = ''
-    result = ''
-    
-    # try to import apt
-    try:
-        import apt
-        from aptdaemon import client
-        from aptdaemon import errors
-    except:
-        log('python apt import error')
-        sys.exit(0)
-    apt_client = client.AptClient()
-    try:
-        result = apt_client.update_cache(wait=True)
-        if (result == "exit-success"):
-            log("Finished updating the cache")
-        else:
-            log("Error updating the cache %s" %result) 
-    except errors.NotAuthorizedError:
-        log("You are not allowed to update the cache")
-        sys.exit(0)
-    
-    trans = apt_client.upgrade_packages([package])
-    trans.simulate(reply_handler=_apttransstarted, error_handler=_apterrorhandler)
-    pkg = trans.packages[4][0]
-    if (pkg == package):
-       cache=apt.Cache()
-       cache.open(None)
-       cache.upgrade()
-       if (cache[package].installed and cache[package].installed.version != cache[package].candidate.version):
-           log("Version installed  %s" %cache[package].installed.version)
-           log("Version available  %s" %cache[package].candidate.version)
-           oldversion = True
-           msg = __localize__(32011)
-       elif (cache[package].installed):
-           log("Already on newest version  %s" %cache[package].installed.version)
-       else:
-           log("No installed package found, probably manual install")
-           sys.exit(0)
-
-    return oldversion, msg
 
-def _apttransstarted():
-    pass
 
-def _apterrorhandler(error):
-    raise error
-
-def _upgrademessage(msg):
-    # Don't show while watching a video
-    while(xbmc.Player().isPlayingVideo() and not xbmc.abortRequested):
-        xbmc.sleep(1000)
-    i = 0
-    while(i < 5 and not xbmc.abortRequested):
-        xbmc.sleep(1000)
-        i += 1
-    # Detect if it's first run and only show OK dialog + ask to disable on that
-    firstrun = __addon__.getSetting("versioncheck_firstrun") != 'false'
-    if firstrun and not xbmc.abortRequested:
-        xbmcgui.Dialog().ok(__addonname__,
-                            msg,
-                            __localize__(32001),
-                            __localize__(32002))
-        # sets check to false which is checked on startup
-        if xbmcgui.Dialog().yesno(__addonname__,
-                                  __localize__(32009),
-                                  __localize__(32010)):
-            __addon__.setSetting("versioncheck_enable", 'false')
-        # set first run to false to only show a popup next startup / every two days
-        __addon__.setSetting("versioncheck_firstrun", 'false')
-    # Show notification after firstrun
-    elif not xbmc.abortRequested:
-        log(__localize__(32001) + '' + __localize__(32002))
-        xbmc.executebuiltin("XBMC.Notification(%s, %s, %d, %s)" %(__addonname__,
-                                                                  __localize__(32001) + '' + __localize__(32002),
-                                                                  15000,
-                                                                  __icon__))
-    else:
-        pass
 
 if (__name__ == "__main__"):
     log('Version %s started' % __addonversion__)
index a531cf5..bb69d19 100644 (file)
@@ -109,7 +109,7 @@ if test "$enable_threads" != no; then
     AC_LINK_IFELSE(
 [AC_LANG_SOURCE([#include <pthread.h>
 
-int main(int argc, char *argv[]) {
+int main(int argc, char **argv) {
        pthread_mutex_t mutex;
        
        pthread_mutex_init(&mutex, NULL);
@@ -126,7 +126,7 @@ cp_threads=Posix], AC_MSG_RESULT([no]))
     AC_LINK_IFELSE(
 [AC_LANG_SOURCE([#include <windows.h>
 
-int main(int argc, char *argv[]) {
+int main(int argc, char **argv) {
   CreateMutex(NULL, FALSE, NULL);
   return 0;
 }
index c035774..a381862 100644 (file)
           <requirement>HAVE_LIBVDPAU</requirement>
           <level>2</level>
           <default>true</default>
-          <control>
-            <dependencies>
-              <dependency type="enable" setting="videoplayer.usevdpau" operator="is">true</dependency> <!-- USE VDPAU -->
-            </dependencies>
-          </control>
+          <dependencies>
+            <dependency type="enable" setting="videoplayer.usevdpau" operator="is">true</dependency> <!-- USE VDPAU -->
+          </dependencies>
         </setting>
         <setting id="videoplayer.usevaapi" type="boolean" label="13426" help="36156">
           <requirement>HAVE_LIBVA</requirement>
index f238f87..339990c 100644 (file)
@@ -23,7 +23,7 @@
 #include <inttypes.h>
 #include "guilib/XBTF.h"
 #include "utils/EndianSwap.h"
-#if defined(TARGET_FREEBSD)
+#if defined(TARGET_FREEBSD) || defined(TARGET_DARWIN)
 #include <stdlib.h>
 #elif !defined(TARGET_DARWIN)
 #include <malloc.h>
index 921ac11..435654f 100644 (file)
@@ -164,16 +164,30 @@ case $host in
         platform_cc=gcc-4.2
         platform_cxx=g++-4.2
         ;;
-      *)
+      4.*.*)
         platform_cc=llvm-gcc-4.2
         platform_cxx=llvm-g++-4.2
+        ;; 
+      *)
+        platform_cc=clang
+        platform_cxx=clang++
+        platform_cflags="-fheinous-gnu-extensions -no-cpp-precomp -no-integrated-as"
+        platform_ldflags="-Wl,-search_paths_first"
+        platform_cxxflags="-no-cpp-precomp"
         ;;
     esac
     case $host in
       *86*-apple-darwin)
         found_sdk_version=[`$use_xcodebuild -showsdks | grep macosx | sort |  tail -n 1 | grep -oE 'macosx[0-9.0-9]+' | cut -c 7-$NF`]
+        case $use_xcode in
+          5.* | 5.*.* )
+            use_toolchain="${use_xcodepath}/Toolchains/XcodeDefault.xctoolchain"
+            ;;
+          *)
+            use_toolchain="${use_toolchain:-$use_xcodepath}"
+            ;;
+        esac
         use_sdk="${use_sdk:-$found_sdk_version}"
-        use_toolchain="${use_toolchain:-$use_xcodepath}"
         if test "$use_cpu" = "armv7"; then
           AC_MSG_ERROR(error in configure of --with-arch=$use_cpu)
         fi
@@ -182,6 +196,7 @@ case $host in
           10.6);;
           10.7);;
           10.8);;
+          10.9);;
           *)
             AC_MSG_ERROR(error in configure of --with-sdk=$use_sdk)
         esac
@@ -217,11 +232,20 @@ case $host in
         found_sdk_version=[`$use_xcodebuild -showsdks | grep iphoneos | sort | tail -n 1 | awk '{ print $2}'`]
         use_sdk="${use_sdk:-$found_sdk_version}"
         sdk_name=iphoneos$use_sdk
-        use_toolchain="${use_toolchain:-`$use_xcodebuild -version -sdk $sdk_name PlatformPath`/Developer}"
+        case $use_xcode in
+          5.* | 5.*.* )
+            use_toolchain="${use_xcodepath}/Toolchains/XcodeDefault.xctoolchain"
+            ;;
+          *)
+            use_toolchain="${use_toolchain:-`$use_xcodebuild -version -sdk $sdk_name PlatformPath`/Developer}"
+            ;;
+        esac
+        
        case $use_sdk in
           4.*);;
           5.*);;
           6.*);;
+          7.*);;
             *)
               AC_MSG_ERROR(error in configure of --with-sdk=$use_sdk)
             ;;
@@ -394,6 +418,7 @@ AC_SUBST(link_iconv)
 AC_SUBST(need_libiconv)
 AC_SUBST(use_gplv3)
 AC_SUBST(has_libcrystax)
+AC_SUBST(use_xcode)
 
 AC_OUTPUT
 echo -e "toolchain:\t $use_toolchain"
index 8c46e98..c925958 100644 (file)
@@ -3,7 +3,7 @@ PLATFORM=$(NATIVEPLATFORM)
 DEPS= ../../Makefile.include.in Makefile
 
 APPNAME=cmake
-VERSION=2.8.8
+VERSION=2.8.12
 SOURCE=$(APPNAME)-$(VERSION)
 ARCHIVE=$(SOURCE).tar.gz
 
index fe072e7..4ea1078 100644 (file)
@@ -6,7 +6,7 @@ DEPS= ../../Makefile.include.in Makefile
 # lib name, version
 # lib name, version
 LIBNAME=pkg-config
-VERSION=0.23
+VERSION=0.28
 SOURCE=$(LIBNAME)-$(VERSION)
 ARCHIVE=$(SOURCE).tar.gz
 
@@ -16,7 +16,7 @@ PC_PATH:=$(PC_PATH):/usr/lib/pkgconfig:/usr/lib/$(HOST)/pkgconfig:/usr/share/pkg
 endif
 
 # configuration settings
-CONFIGURE=./configure --prefix=$(PREFIX) --enable-indirect-deps --with-pc-path=$(PC_PATH)
+CONFIGURE=./configure --prefix=$(PREFIX) --enable-indirect-deps --with-pc-path=$(PC_PATH) --with-internal-glib
 LIBDYLIB=$(PLATFORM)/pkg-config
 
 CLEAN_FILES=$(ARCHIVE) $(PLATFORM)
index 156b501..d260dd8 100644 (file)
@@ -2,6 +2,9 @@ SET(OS "@platform_os@")
 IF("${OS}" STREQUAL "linux" OR "${OS}" STREQUAL "android")
 SET(CMAKE_SYSTEM_NAME Linux)
 ENDIF()
+IF("${OS}" STREQUAL "ios" OR "${OS}" STREQUAL "osx")
+SET(CMAKE_OSX_SYSROOT @use_sdk_path@)
+ENDIF()
 SET(CMAKE_SYSTEM_VERSION 1)
 
 # specify the cross compiler
index f507a48..08c6f02 100644 (file)
@@ -476,7 +476,7 @@ diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/afp.h afpfs-ng-0.8.1.patch/include/af
 +
 +struct afp_server * afp_server_full_connect(void * priv, struct afp_connection_request * req);
 +
-+void just_end_it_now(void *other);
++void just_end_it_now(void *other);
 +void add_fd_and_signal(int fd);
 +void loop_disconnect(struct afp_server *s);
 +void afp_wait_for_started_loop(void);
@@ -2685,6 +2685,16 @@ diff -Naur afpfs-ng-0.8.1/lib/loop.c afpfs-ng-0.8.1.patch/lib/loop.c
  
  #define SIGNAL_TO_USE SIGUSR2
  
+@@ -85,7 +85,7 @@ void signal_main_thread(void)
+ }
+ static int ending=0;
+-void * just_end_it_now(void * ignore)
++void just_end_it_now(void * ignore)
+ {
+       if (ending) return;
+       ending=1;
+       
 diff -Naur afpfs-ng-0.8.1/lib/lowlevel.c afpfs-ng-0.8.1.patch/lib/lowlevel.c
 --- afpfs-ng-0.8.1/lib/lowlevel.c      2008-02-20 02:33:17.000000000 +0100
 +++ afpfs-ng-0.8.1.patch/lib/lowlevel.c        2011-09-10 12:13:50.136124828 +0200
index 446c342..95187fd 100644 (file)
@@ -138,8 +138,16 @@ fi
 if test "@platform_os@" = "ios"; then
   # tweaks for libffi (ios must use llvm-gcc-4.2)
   if test "${PACKAGE_NAME}" = "libffi" ; then
-    export CC="@use_toolchain@/usr/bin/llvm-gcc-4.2"
-    export CPP="@use_toolchain@/usr/bin/llvm-gcc-4.2 -E"
+      case "@use_xcode@" in
+        5.* | 5.*.* )
+          export CC="@use_toolchain@/usr/bin/clang"
+          export CPP="@use_toolchain@/usr/bin/clang -E"
+          ;;
+        *)
+          export CC="@use_toolchain@/usr/bin/llvm-gcc-4.2"
+          export CPP="@use_toolchain@/usr/bin/llvm-gcc-4.2 -E"
+          ;;
+        esac
     unset AS
     unset CCAS
   fi
index f402cc4..fa6ffd5 100644 (file)
@@ -3,7 +3,7 @@ DEPS= ../../Makefile.include Makefile
 
 # lib name, version
 LIBNAME=libgpg-error
-VERSION=1.10
+VERSION=1.12
 SOURCE=$(LIBNAME)-$(VERSION)
 ARCHIVE=$(SOURCE).tar.bz2
 
index 1aaa54a..719fcae 100644 (file)
@@ -36,7 +36,7 @@ $(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS)
 $(LIBDYLIB): $(PLATFORM)
        $(MAKE) -C $(PLATFORM)/src/daemon
        $(MAKE) -C $(PLATFORM)/src/include install
-       #(STRIP_MEMMEM)
+       $(STRIP_MEMMEM)
 
 .installed-$(PLATFORM): $(LIBDYLIB)
        rm -f $(PREFIX)/lib/libmicrohttpd.so $(PREFIX)/lib/libmicrohttpd.so.5 $(PREFIX)/lib/libmicrohttpd.so.5.2.1
diff --git a/tools/depends/target/libmpeg2/04-clang-fix.patch b/tools/depends/target/libmpeg2/04-clang-fix.patch
new file mode 100644 (file)
index 0000000..2f92e5c
--- /dev/null
@@ -0,0 +1,10 @@
+--- /configure.ac      2013-10-09 22:39:08.000000000 +0400
++++ /configure.ac      2013-06-24 20:34:58.000000000 +0400
+@@ -149,7 +149,6 @@ AC_CHECK_GENERATE_INTTYPES([include])
+ dnl Checks for typedefs, structures, and compiler characteristics.
+ AC_C_CONST
+-AC_C_ALWAYS_INLINE
+ AC_C_RESTRICT
+ AC_C_BUILTIN_EXPECT
+ AC_C_BIGENDIAN
\ No newline at end of file
index 800d647..15dbd8c 100644 (file)
@@ -28,6 +28,8 @@ ifeq ($(OS),ios)
        cd $(PLATFORM); patch -p0 < ../02-neon.patch
        cd $(PLATFORM); patch -p1 < ../03-config-fix.patch
 endif
+       cd $(PLATFORM); patch -p1 < ../04-clang-fix.patch
+       cd $(PLATFORM); $(AUTORECONF) -vif
        cd $(PLATFORM); $(CONFIGURE)
 
 $(LIBDYLIB): $(PLATFORM)
diff --git a/tools/depends/target/libplist/0002-fixclang.diff b/tools/depends/target/libplist/0002-fixclang.diff
new file mode 100644 (file)
index 0000000..b4dd32a
--- /dev/null
@@ -0,0 +1,57 @@
+--- /libcnary/node.c   2011-06-25 05:00:48.000000000 +0400
++++ /libcnary/node.c   2013-03-19 20:34:11.000000000 +0400
+@@ -95,16 +95,17 @@
+ }
+ int node_detach(node_t* parent, node_t* child) {
+-      if (!parent || !child) return 0;
+-      if (node_list_remove(parent->children, child) == 0) {
++      if (!parent || !child) return -1;
++      int index = node_list_remove(parent->children, child);
++      if (index >= 0) {
+               parent->count--;
+       }
+-      return 0;
++      return index;
+ }
+ int node_insert(node_t* parent, unsigned int index, node_t* child)
+ {
+-      if (!parent || !child) return;
++      if (!parent || !child) return -1;
+       child->isLeaf = TRUE;
+       child->isRoot = FALSE;
+       child->parent = parent;
+@@ -209,7 +210,7 @@
+ node_t* node_copy_deep(node_t* node, copy_func_t copy_func)
+ {
+       if (!node) return NULL;
+-      void *data;
++      void *data = NULL;
+       if (copy_func) {
+               data = copy_func(node->data);
+       }
+       
+--- /src/base64.c      2013-10-06 23:14:24.000000000 +0400
++++ /src/base64.c      2013-03-19 20:34:11.000000000 +0400
+@@ -104,9 +104,9 @@
+ unsigned char *base64decode(const char *buf, size_t *size)
+ {
+-      if (!buf) return;
++      if (!buf) return NULL;
+       size_t len = strlen(buf);
+-      if (len <= 0) return;
++      if (len <= 0) return NULL;
+       unsigned char *outbuf = (unsigned char*)malloc((len/4)*3+3);
+       unsigned char *line;
+@@ -114,7 +114,7 @@
+       line = (unsigned char*)strtok((char*)buf, "\r\n\t ");
+       while (line) {
+-              p+=base64decode_block(outbuf+p, line, strlen((char*)line));
++              p+=base64decode_block(outbuf+p, (const char*)line, strlen((char*)line));
+               // get next line of base64 encoded block
+               line = (unsigned char*)strtok(NULL, "\r\n\t ");
\ No newline at end of file
index aa5a9b9..62ba1cf 100644 (file)
@@ -18,6 +18,7 @@ $(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS)
        rm -rf $(PLATFORM); mkdir -p $(PLATFORM)
        cd $(PLATFORM); $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE)
        cd $(PLATFORM); patch -p1 < ../0001-dontbuildswig.patch
+       cd $(PLATFORM); patch -p1 < ../0002-fixclang.diff
        cd $(PLATFORM); sed -ie 's/TARGET_LINK_LIBRARIES( plist /TARGET_LINK_LIBRARIES( plist m z  /' src/CMakeLists.txt
        cd $(PLATFORM); rm -rf build; mkdir -p build
        cd $(PLATFORM)/build; $(CMAKE) VERBOSE=1 -DCMAKE_C_FLAGS="$(CFLAGS)" -DCMAKE_LD_FLAGS="$(LDFLAGS)" ..
index 1ca4aa5..deb6239 100644 (file)
@@ -41,6 +41,7 @@ $(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS)
        cd $(PLATFORM); CFLAGS="$(CFLAGS)" CC=$(CC) RANLIB=$(RANLIB) $(CONFIGURE)
        if test "$(OS)" = "osx"; then \
                sed -ie "s|CC= /usr/bin/gcc-4.2|CC= $(CC)|" "$(PLATFORM)/Makefile"; \
+               sed -ie "s|CFLAG= |CFLAG=$(CFLAGS) |" "$(PLATFORM)/Makefile"; \
        fi
        if test "$(OS)" = "ios"; then \
                sed -ie "s|CFLAG= |CFLAG=$(CFLAGS) |" "$(PLATFORM)/Makefile"; \
index 08aafc7..4dec450 100644 (file)
@@ -33,7 +33,7 @@ $(LIBDYLIB): $(PLATFORM)
 
 .installed-$(PLATFORM): $(LIBDYLIB)
        mkdir -p $(PREFIX)/lib/python2.6/site-packages/PIL
-       unzip $(LIBDYLIB) -d $(PREFIX)/lib/python2.6/site-packages/PIL/
+       unzip -of $(LIBDYLIB) -d $(PREFIX)/lib/python2.6/site-packages/PIL/
        echo 'PIL' > $(PREFIX)/lib/python2.6/site-packages/PIL.pth
        touch $@
 
index 994748a..6a3fbdb 100644 (file)
@@ -759,9 +759,6 @@ bool CApplication::Create()
 
   update_emu_environ();//apply the GUI settings
 
-  // initialize our charset converter
-  g_charsetConverter.reset();
-
   // Load the langinfo to have user charset <-> utf-8 conversion
   CStdString strLanguage = CSettings::Get().GetString("locale.language");
   strLanguage[0] = toupper(strLanguage[0]);
@@ -1968,8 +1965,6 @@ void CApplication::UnloadSkin(bool forReload /* = false */)
 
   g_colorManager.Clear();
 
-  g_charsetConverter.reset();
-
   g_infoManager.Clear();
 
 //  The g_SkinInfo boost shared_ptr ought to be reset here
@@ -5742,8 +5737,6 @@ bool CApplication::SetLanguage(const CStdString &strLanguage)
     }
     CSettings::Get().SetString("locale.language", strNewLanguage);
 
-    g_charsetConverter.reset();
-
     if (!g_localizeStrings.Load("special://xbmc/language/", strNewLanguage))
       return false;
 
index 2088c2d..c31781e 100644 (file)
@@ -196,6 +196,7 @@ void CLangInfo::CRegion::SetGlobalLocale()
 
   locale::global(current_locale);
 #endif
+  g_charsetConverter.resetSystemCharset();
   CLog::Log(LOGINFO, "global locale set to %s", strLocale.c_str());
 }
 
@@ -370,6 +371,7 @@ bool CLangInfo::Load(const CStdString& strFileName)
     const CStdString& strName=CSettings::Get().GetString("locale.country");
     SetCurrentRegion(strName);
   }
+  g_charsetConverter.reinitCharsetsFromSettings();
 
   LoadTokens(pRootElement->FirstChild("sorttokens"),g_advancedSettings.m_vecTokens);
 
@@ -445,8 +447,6 @@ bool CLangInfo::SetLanguage(const std::string &strLanguage)
       CLog::Log(LOGERROR, "No ttf font found but needed: %s", strFontSet.c_str());
   }
 
-  g_charsetConverter.reset();
-
   if (!g_localizeStrings.Load("special://xbmc/language/", strLanguage))
     return false;
 
index e9e8821..56099fe 100644 (file)
@@ -689,7 +689,7 @@ bool COMXPlayer::OpenInputStream()
   m_clock.Reset();
   m_dvd.Clear();
   m_errorCount = 0;
-  m_iChannelEntryTimeOut = 0;
+  m_ChannelEntryTimeOut.SetInfinite();
 
   return true;
 }
@@ -1447,14 +1447,14 @@ bool COMXPlayer::CheckDelayedChannelEntry(void)
 {
   bool bReturn(false);
 
-  if (m_iChannelEntryTimeOut > 0 && XbmcThreads::SystemClockMillis() >= m_iChannelEntryTimeOut)
+  if (m_ChannelEntryTimeOut.IsTimePast())
   {
     CFileItem currentFile(g_application.CurrentFileItem());
     CPVRChannel *currentChannel = currentFile.GetPVRChannelInfoTag();
     SwitchChannel(*currentChannel);
 
     bReturn = true;
-    m_iChannelEntryTimeOut = 0;
+    m_ChannelEntryTimeOut.SetInfinite();
   }
 
   return bReturn;
@@ -2529,11 +2529,11 @@ void COMXPlayer::HandleMessages()
             if (bShowPreview)
             {
               UpdateApplication(0);
-              m_iChannelEntryTimeOut = XbmcThreads::SystemClockMillis() + CSettings::Get().GetInt("pvrplayback.channelentrytimeout");
+              m_ChannelEntryTimeOut.Set(CSettings::Get().GetInt("pvrplayback.channelentrytimeout"));
             }
             else
             {
-              m_iChannelEntryTimeOut = 0;
+              m_ChannelEntryTimeOut.SetInfinite();
               SAFE_DELETE(m_pDemuxer);
 
               g_infoManager.SetDisplayAfterSeek();
index fcf504d..123faad 100644 (file)
@@ -345,7 +345,7 @@ protected:
   std::string  m_mimetype;  // hold a hint to what content file contains (mime type)
   ECacheState  m_caching;
   CFileItem    m_item;
-  unsigned int m_iChannelEntryTimeOut;
+  XbmcThreads::EndTime m_ChannelEntryTimeOut;
 
 
   COMXCurrentStream m_CurrentAudio;
index cf308c5..cb7d5d1 100644 (file)
@@ -92,6 +92,7 @@ COMXVideo::~COMXVideo()
 
 bool COMXVideo::SendDecoderConfig()
 {
+  CSingleLock lock (m_critSection);
   OMX_ERRORTYPE omx_err   = OMX_ErrorNone;
 
   /* send decoder config */
@@ -144,6 +145,7 @@ bool COMXVideo::NaluFormatStartCodes(enum AVCodecID codec, uint8_t *in_extradata
 
 bool COMXVideo::PortSettingsChanged()
 {
+  CSingleLock lock (m_critSection);
   OMX_ERRORTYPE omx_err   = OMX_ErrorNone;
 
   if (m_settings_changed)
@@ -338,6 +340,7 @@ bool COMXVideo::PortSettingsChanged()
 
 bool COMXVideo::Open(CDVDStreamInfo &hints, OMXClock *clock, EDEINTERLACEMODE deinterlace, bool hdmi_clock_sync)
 {
+  CSingleLock lock (m_critSection);
   bool vflip = false;
   Close();
   OMX_ERRORTYPE omx_err   = OMX_ErrorNone;
@@ -674,6 +677,7 @@ bool COMXVideo::Open(CDVDStreamInfo &hints, OMXClock *clock, EDEINTERLACEMODE de
 
 void COMXVideo::Close()
 {
+  CSingleLock lock (m_critSection);
   m_omx_tunnel_clock.Deestablish();
   m_omx_tunnel_decoder.Deestablish();
   if(m_deinterlace)
@@ -710,19 +714,22 @@ void COMXVideo::SetDropState(bool bDrop)
 
 unsigned int COMXVideo::GetFreeSpace()
 {
+  CSingleLock lock (m_critSection);
   return m_omx_decoder.GetInputBufferSpace();
 }
 
 unsigned int COMXVideo::GetSize()
 {
+  CSingleLock lock (m_critSection);
   return m_omx_decoder.GetInputBufferSize();
 }
 
 int COMXVideo::Decode(uint8_t *pData, int iSize, double pts)
 {
+  CSingleLock lock (m_critSection);
   OMX_ERRORTYPE omx_err;
 
-  if( m_drop_state )
+  if( m_drop_state || !m_is_open )
     return true;
 
   unsigned int demuxer_bytes = (unsigned int)iSize;
@@ -810,16 +817,20 @@ int COMXVideo::Decode(uint8_t *pData, int iSize, double pts)
 
 void COMXVideo::Reset(void)
 {
+  CSingleLock lock (m_critSection);
   if(!m_is_open)
     return;
 
   m_setStartTime = true;
   m_omx_decoder.FlushInput();
+  if(m_deinterlace)
+    m_omx_image_fx.FlushInput();
 }
 
 ///////////////////////////////////////////////////////////////////////////////////////////
 void COMXVideo::SetVideoRect(const CRect& SrcRect, const CRect& DestRect)
 {
+  CSingleLock lock (m_critSection);
   if(!m_is_open)
     return;
 
@@ -850,11 +861,13 @@ void COMXVideo::SetVideoRect(const CRect& SrcRect, const CRect& DestRect)
 
 int COMXVideo::GetInputBufferSize()
 {
+  CSingleLock lock (m_critSection);
   return m_omx_decoder.GetInputBufferSize();
 }
 
 void COMXVideo::SubmitEOS()
 {
+  CSingleLock lock (m_critSection);
   if(!m_is_open)
     return;
 
@@ -888,6 +901,7 @@ void COMXVideo::SubmitEOS()
 
 bool COMXVideo::IsEOS()
 {
+  CSingleLock lock (m_critSection);
   if(!m_is_open)
     return true;
   if (!m_failed_eos && !m_omx_render.IsEOS())
index 5849df3..d69f854 100644 (file)
@@ -31,6 +31,7 @@
 #include "guilib/Geometry.h"
 #include "DVDDemuxers/DVDDemux.h"
 #include "xbmc/settings/VideoSettings.h"
+#include "threads/CriticalSection.h"
 #include <string>
 
 #define VIDEO_BUFFERS 60
@@ -100,6 +101,7 @@ protected:
   OMX_DISPLAYTRANSFORMTYPE m_transform;
   bool              m_settings_changed;
   static bool NaluFormatStartCodes(enum AVCodecID codec, uint8_t *in_extradata, int in_extrasize);
+  CCriticalSection m_critSection;
 };
 
 #endif
index eeaeb50..554ce89 100644 (file)
 #define POPUP_ICON_WARNING        404
 #define POPUP_ICON_ERROR          405
 
+CGUIDialogKaiToast::TOASTQUEUE CGUIDialogKaiToast::m_notifications;
+CCriticalSection CGUIDialogKaiToast::m_critical;
+
 CGUIDialogKaiToast::CGUIDialogKaiToast(void)
 : CGUIDialog(WINDOW_DIALOG_KAI_TOAST, "DialogKaiToast.xml")
 {
-  m_defaultIcon = "";
   m_loadType = LOAD_ON_GUI_INIT;
   m_timer = 0;
   m_toastDisplayTime = 0;
@@ -69,16 +71,11 @@ bool CGUIDialogKaiToast::OnMessage(CGUIMessage& message)
 void CGUIDialogKaiToast::OnWindowLoaded()
 {
   CGUIDialog::OnWindowLoaded();
-  CGUIImage *image = (CGUIImage *)GetControl(POPUP_ICON);
-  if (image)
-    m_defaultIcon = image->GetFileName();
 }
 
 void CGUIDialogKaiToast::QueueNotification(eMessageType eType, const CStdString& aCaption, const CStdString& aDescription, unsigned int displayTime /*= TOAST_DISPLAY_TIME*/, bool withSound /*= true*/, unsigned int messageTime /*= TOAST_MESSAGE_TIME*/)
 {
-  CGUIDialogKaiToast *toast = (CGUIDialogKaiToast *)g_windowManager.GetWindow(WINDOW_DIALOG_KAI_TOAST);
-  if (toast)
-    toast->AddToQueue(eType, aCaption, aDescription, displayTime, withSound, messageTime);
+  AddToQueue("", eType, aCaption, aDescription, displayTime, withSound, messageTime);
 }
 
 void CGUIDialogKaiToast::QueueNotification(const CStdString& aCaption, const CStdString& aDescription)
@@ -88,34 +85,15 @@ void CGUIDialogKaiToast::QueueNotification(const CStdString& aCaption, const CSt
 
 void CGUIDialogKaiToast::QueueNotification(const CStdString& aImageFile, const CStdString& aCaption, const CStdString& aDescription, unsigned int displayTime /*= TOAST_DISPLAY_TIME*/, bool withSound /*= true*/, unsigned int messageTime /*= TOAST_MESSAGE_TIME*/)
 {
-  CGUIDialogKaiToast *toast = (CGUIDialogKaiToast *)g_windowManager.GetWindow(WINDOW_DIALOG_KAI_TOAST);
-  if (toast)
-    toast->AddToQueue(aImageFile, aCaption, aDescription, displayTime, withSound, messageTime);
+  AddToQueue(aImageFile, Default, aCaption, aDescription, displayTime, withSound, messageTime);
 }
 
-void CGUIDialogKaiToast::AddToQueue(eMessageType eType, const CStdString& aCaption, const CStdString& aDescription, unsigned int displayTime /*= TOAST_DISPLAY_TIME*/, bool withSound /*= true*/, unsigned int messageTime /*= TOAST_MESSAGE_TIME*/)
-{
-  CGUIImage *image    = NULL;
-  
-  if (eType == Info)
-    image = (CGUIImage *)GetControl(POPUP_ICON_INFO);
-  else if (eType == Warning)
-    image = (CGUIImage *)GetControl(POPUP_ICON_WARNING);
-  else if (eType == Error)
-    image = (CGUIImage *)GetControl(POPUP_ICON_ERROR);
-  
-  CStdString strImage;
-  if (image)
-    strImage = image->GetFileName();
-  
-  AddToQueue(strImage, aCaption, aDescription, displayTime, withSound, messageTime);
-}
-
-void CGUIDialogKaiToast::AddToQueue(const CStdString& aImageFile, const CStdString& aCaption, const CStdString& aDescription, unsigned int displayTime /*= TOAST_DISPLAY_TIME*/, bool withSound /*= true*/, unsigned int messageTime /*= TOAST_MESSAGE_TIME*/)
+void CGUIDialogKaiToast::AddToQueue(const CStdString& aImageFile, const eMessageType eType, const CStdString& aCaption, const CStdString& aDescription, unsigned int displayTime /*= TOAST_DISPLAY_TIME*/, bool withSound /*= true*/, unsigned int messageTime /*= TOAST_MESSAGE_TIME*/)
 {
   CSingleLock lock(m_critical);
 
   Notification toast;
+  toast.eType = eType;
   toast.imagefile = aImageFile;
   toast.caption = aCaption;
   toast.description = aDescription;
@@ -152,10 +130,25 @@ bool CGUIDialogKaiToast::DoWork()
     CGUIImage *image = (CGUIImage *)GetControl(POPUP_ICON);
     if (image)
     {
-      if (!toast.imagefile.IsEmpty())
-        image->SetFileName(toast.imagefile);
-      else
-        image->SetFileName(m_defaultIcon);
+      CStdString strTypeImage = toast.imagefile;
+
+      if (strTypeImage.IsEmpty())
+      {
+        CGUIImage *typeImage = NULL;
+
+        if (toast.eType == Info)
+          typeImage = (CGUIImage *)GetControl(POPUP_ICON_INFO);
+        else if (toast.eType == Warning)
+          typeImage = (CGUIImage *)GetControl(POPUP_ICON_WARNING);
+        else if (toast.eType == Error)
+          typeImage = (CGUIImage *)GetControl(POPUP_ICON_ERROR);
+        else
+          typeImage = image;
+
+        strTypeImage = typeImage->GetFileName();
+      }
+
+      image->SetFileName(strTypeImage);
     }
 
     //  Play the window specific init sound for each notification queued
index a61df38..c9f5a4c 100644 (file)
@@ -33,17 +33,20 @@ public:
   CGUIDialogKaiToast(void);
   virtual ~CGUIDialogKaiToast(void);
 
+  enum eMessageType { Default = 0, Info, Warning, Error };
+
   struct Notification
   {
     CStdString caption;
     CStdString description;
     CStdString imagefile;
+    eMessageType eType;
     unsigned int displayTime;
     unsigned int messageTime;
     bool withSound;
   };
 
-  enum eMessageType { Info = 0, Warning, Error };
+  typedef std::queue<Notification> TOASTQUEUE;
 
   static void QueueNotification(eMessageType eType, const CStdString& aCaption, const CStdString& aDescription, unsigned int displayTime = TOAST_DISPLAY_TIME, bool withSound = true, unsigned int messageTime = TOAST_MESSAGE_TIME);
   static void QueueNotification(const CStdString& aCaption, const CStdString& aDescription);
@@ -56,17 +59,13 @@ public:
   void ResetTimer();
 
 protected:
-  void AddToQueue(eMessageType eType, const CStdString& aCaption, const CStdString& aDescription, unsigned int displayTime, bool withSound, unsigned int messageTime);
-  void AddToQueue(const CStdString& aImageFile, const CStdString& aCaption, const CStdString& aDescription, unsigned int displayTime, bool withSound, unsigned int messageTime);
+  static void AddToQueue(const CStdString& aImageFile, const eMessageType eType, const CStdString& aCaption, const CStdString& aDescription, unsigned int displayTime, bool withSound, unsigned int messageTime);
 
   unsigned int m_timer;
 
   unsigned int m_toastDisplayTime;
   unsigned int m_toastMessageTime;
 
-  CStdString m_defaultIcon;
-
-  typedef std::queue<Notification> TOASTQUEUE;
-  TOASTQUEUE m_notifications;
-  CCriticalSection m_critical;
+  static TOASTQUEUE m_notifications;
+  static CCriticalSection m_critical;
 };
index 1b491c9..6f375f0 100644 (file)
@@ -50,6 +50,8 @@
        <string>YES</string>
        <key>UIStatusBarHidden</key>
        <true/>
+       <key>UIViewControllerBasedStatusBarAppearance</key>
+       <false/>
        <key>UISupportedInterfaceOrientations</key>
        <array>
                <string>UIInterfaceOrientationLandscapeLeft</string>
index ab12446..0e55d3b 100644 (file)
@@ -254,9 +254,6 @@ bool CProfilesManager::LoadProfile(size_t index)
 
   CreateProfileFolders();
 
-  // initialize our charset converter
-  g_charsetConverter.reset();
-
   // Load the langinfo to have user charset <-> utf-8 conversion
   string strLanguage = CSettings::Get().GetString("locale.language");
   strLanguage[0] = toupper(strLanguage[0]);
index bd0ba49..13a54f4 100644 (file)
@@ -25,6 +25,7 @@
 #include "LangInfo.h"
 #include "guilib/LocalizeStrings.h"
 #include "settings/Setting.h"
+#include "settings/Settings.h"
 #include "threads/SingleLock.h"
 #include "log.h"
 
   #endif
 #endif
 
+#define NO_ICONV ((iconv_t)-1)
+
+enum SpecialCharset
+{
+  NotSpecialCharset = 0,
+  SystemCharset,
+  UserCharset /* locale.charset */, 
+  SubtitleCharset /* subtitles.charset */,
+  KaraokeCharset /* karaoke.charset */
+};
+
+
+class CConverterType : public CCriticalSection
+{
+public:
+  CConverterType(const std::string&  sourceCharset,        const std::string&  targetCharset,        unsigned int targetSingleCharMaxLen = 1);
+  CConverterType(enum SpecialCharset sourceSpecialCharset, const std::string&  targetCharset,        unsigned int targetSingleCharMaxLen = 1);
+  CConverterType(const std::string&  sourceCharset,        enum SpecialCharset targetSpecialCharset, unsigned int targetSingleCharMaxLen = 1);
+  CConverterType(enum SpecialCharset sourceSpecialCharset, enum SpecialCharset targetSpecialCharset, unsigned int targetSingleCharMaxLen = 1);
+  CConverterType(const CConverterType& other);
+  ~CConverterType();
+
+  iconv_t GetConverter(CSingleLock& converterLock);
+
+  void Reset(void);
+  void ReinitTo(const std::string& sourceCharset, const std::string& targetCharset, unsigned int targetSingleCharMaxLen = 1);
+  std::string GetSourceCharset(void) const  { return m_sourceCharset; }
+  std::string GetTargetCharset(void) const  { return m_targetCharset; }
+  unsigned int GetTargetSingleCharMaxLen(void) const  { return m_targetSingleCharMaxLen; }
+
+private:
+  static std::string ResolveSpecialCharset(enum SpecialCharset charset);
+
+  enum SpecialCharset m_sourceSpecialCharset;
+  std::string         m_sourceCharset;
+  enum SpecialCharset m_targetSpecialCharset;
+  std::string         m_targetCharset;
+  iconv_t             m_iconv;
+  unsigned int        m_targetSingleCharMaxLen;
+};
+
+CConverterType::CConverterType(const std::string& sourceCharset, const std::string& targetCharset, unsigned int targetSingleCharMaxLen /*= 1*/) : CCriticalSection(),
+  m_sourceSpecialCharset(NotSpecialCharset),
+  m_sourceCharset(sourceCharset),
+  m_targetSpecialCharset(NotSpecialCharset),
+  m_targetCharset(targetCharset),
+  m_iconv(NO_ICONV),
+  m_targetSingleCharMaxLen(targetSingleCharMaxLen)
+{
+}
+
+CConverterType::CConverterType(enum SpecialCharset sourceSpecialCharset, const std::string& targetCharset, unsigned int targetSingleCharMaxLen /*= 1*/) : CCriticalSection(),
+  m_sourceSpecialCharset(sourceSpecialCharset),
+  m_sourceCharset(),
+  m_targetSpecialCharset(NotSpecialCharset),
+  m_targetCharset(targetCharset),
+  m_iconv(NO_ICONV),
+  m_targetSingleCharMaxLen(targetSingleCharMaxLen)
+{
+}
+
+CConverterType::CConverterType(const std::string& sourceCharset, enum SpecialCharset targetSpecialCharset, unsigned int targetSingleCharMaxLen /*= 1*/) : CCriticalSection(),
+  m_sourceSpecialCharset(NotSpecialCharset),
+  m_sourceCharset(sourceCharset),
+  m_targetSpecialCharset(targetSpecialCharset),
+  m_targetCharset(),
+  m_iconv(NO_ICONV),
+  m_targetSingleCharMaxLen(targetSingleCharMaxLen)
+{
+}
+
+CConverterType::CConverterType(enum SpecialCharset sourceSpecialCharset, enum SpecialCharset targetSpecialCharset, unsigned int targetSingleCharMaxLen /*= 1*/) : CCriticalSection(),
+  m_sourceSpecialCharset(sourceSpecialCharset),
+  m_sourceCharset(),
+  m_targetSpecialCharset(targetSpecialCharset),
+  m_targetCharset(),
+  m_iconv(NO_ICONV),
+  m_targetSingleCharMaxLen(targetSingleCharMaxLen)
+{
+}
+
+CConverterType::CConverterType(const CConverterType& other) : CCriticalSection(),
+  m_sourceSpecialCharset(other.m_sourceSpecialCharset),
+  m_sourceCharset(other.m_sourceCharset),
+  m_targetSpecialCharset(other.m_targetSpecialCharset),
+  m_targetCharset(other.m_targetCharset),
+  m_iconv(NO_ICONV),
+  m_targetSingleCharMaxLen(other.m_targetSingleCharMaxLen)
+{
+}
+
+
+CConverterType::~CConverterType()
+{
+  CSingleLock(*this);
+  if (m_iconv != NO_ICONV)
+    iconv_close(m_iconv);
+}
+
+
+iconv_t CConverterType::GetConverter(CSingleLock& converterLock)
+{
+  // ensure that this unique instance is locked externally
+  if (&converterLock.get_underlying() != this)
+    return NO_ICONV;
+
+  if (m_iconv == NO_ICONV)
+  {
+    if (m_sourceSpecialCharset)
+      m_sourceCharset = ResolveSpecialCharset(m_sourceSpecialCharset);
+    if (m_targetSpecialCharset)
+      m_targetCharset = ResolveSpecialCharset(m_targetSpecialCharset);
+
+    m_iconv = iconv_open(m_targetCharset.c_str(), m_sourceCharset.c_str());
+    
+    if (m_iconv == NO_ICONV)
+      CLog::Log(LOGERROR, "%s: iconv_open() for \"%s\" -> \"%s\" failed, errno = %d (%s)",
+                __FUNCTION__, m_sourceCharset.c_str(), m_targetCharset.c_str(), errno, strerror(errno));
+  }
+
+  return m_iconv;
+}
+
+
+void CConverterType::Reset(void)
+{
+  CSingleLock(*this);
+  if (m_iconv != NO_ICONV)
+  {
+    iconv_close(m_iconv);
+    m_iconv = NO_ICONV;
+  }
+
+  if (m_sourceSpecialCharset)
+    m_sourceCharset.clear();
+  if (m_targetSpecialCharset)
+    m_targetCharset.clear();
+
+}
+
+void CConverterType::ReinitTo(const std::string& sourceCharset, const std::string& targetCharset, unsigned int targetSingleCharMaxLen /*= 1*/)
+{
+  CSingleLock(*this);
+  if (sourceCharset != m_sourceCharset || targetCharset != m_targetCharset)
+  {
+    if (m_iconv != NO_ICONV)
+    {
+      iconv_close(m_iconv);
+      m_iconv = NO_ICONV;
+    }
+
+    m_sourceSpecialCharset = NotSpecialCharset;
+    m_sourceCharset = sourceCharset;
+    m_targetSpecialCharset = NotSpecialCharset;
+    m_targetCharset = targetCharset;
+    m_targetSingleCharMaxLen = targetSingleCharMaxLen;
+  }
+}
+
+std::string CConverterType::ResolveSpecialCharset(enum SpecialCharset charset)
+{
+  switch (charset)
+  {
+  case SystemCharset:
+    return "";
+  case UserCharset:
+    return g_langInfo.GetGuiCharSet();
+  case SubtitleCharset:
+    return g_langInfo.GetSubtitleCharSet();
+  case KaraokeCharset:
+    {
+      CSetting* karaokeSetting = CSettings::Get().GetSetting("karaoke.charset");
+      if (karaokeSetting == NULL || ((CSettingString*)karaokeSetting)->GetValue() == "DEFAULT")
+        return g_langInfo.GetGuiCharSet();
+
+      return ((CSettingString*)karaokeSetting)->GetValue();
+    }
+  case NotSpecialCharset:
+  default:
+    return "UTF-8"; /* dummy value */
+  }
+}
+
+
+enum StdConversionType /* Keep it in sync with CCharsetConverter::CInnerConverter::m_stdConversion */
+{
+  NoConversion = -1,
+  Utf8ToUtf32 = 0,
+  Utf32ToUtf8,
+  Utf32ToW,
+  WToUtf32,
+  SubtitleCharsetToW,
+  Utf8ToUserCharset,
+  UserCharsetToUtf8,
+  Utf32ToUserCharset,
+  WtoUtf8,
+  Utf16LEtoW,
+  Utf16BEtoUtf8,
+  Utf16LEtoUtf8,
+  Utf8toW,
+  Utf8ToSystem,
+  Ucs2CharsetToUtf8,
+  NumberOfStdConversionTypes /* Dummy sentinel entry */
+};
+
+
+/* We don't want to pollute header file with many additional includes and definitions, so put 
+   here all staff that require usage of types defined in this file or in additional headers */
+class CCharsetConverter::CInnerConverter
+{
+public:
+  static bool logicalToVisualBiDi(const std::string& stringSrc, std::string& stringDst, FriBidiCharSet fribidiCharset, FriBidiCharType base = FRIBIDI_TYPE_LTR, bool* bWasFlipped =NULL);
+  
+  template<class INPUT,class OUTPUT>
+  static bool stdConvert(StdConversionType convertType, const INPUT& strSource, OUTPUT& strDest, bool failOnInvalidChar = false);
+  template<class INPUT,class OUTPUT>
+  static bool customConvert(const std::string& sourceCharset, const std::string& targetCharset, const INPUT& strSource, OUTPUT& strDest, bool failOnInvalidChar = false);
+
+  template<class INPUT,class OUTPUT>
+  static bool convert(iconv_t type, int multiplier, const INPUT& strSource, OUTPUT& strDest, bool failOnInvalidChar = false);
+
+  static CConverterType m_stdConversion[NumberOfStdConversionTypes];
+};
+
+/* single symbol sizes in chars */
+const int CCharsetConverter::m_Utf8CharMinSize = 1;
+const int CCharsetConverter::m_Utf8CharMaxSize = 4;
+
+CConverterType CCharsetConverter::CInnerConverter::m_stdConversion[NumberOfStdConversionTypes] = /* keep it in sync with enum StdConversionType */
+{
+  /* Utf8ToUtf32 */         CConverterType(UTF8_SOURCE,     UTF32_CHARSET),
+  /* Utf32ToUtf8 */         CConverterType(UTF32_CHARSET,   "UTF-8", CCharsetConverter::m_Utf8CharMaxSize),
+  /* Utf32ToW */            CConverterType(UTF32_CHARSET,   WCHAR_CHARSET),
+  /* WToUtf32 */            CConverterType(WCHAR_CHARSET,   UTF32_CHARSET),
+  /* SubtitleCharsetToW */  CConverterType(SubtitleCharset, WCHAR_CHARSET),
+  /* Utf8ToUserCharset */   CConverterType(UTF8_SOURCE,     UserCharset),
+  /* UserCharsetToUtf8 */   CConverterType(UserCharset,     "UTF-8", CCharsetConverter::m_Utf8CharMaxSize),
+  /* Utf32ToUserCharset */  CConverterType(UTF32_CHARSET,   UserCharset),
+  /* WtoUtf8 */             CConverterType(WCHAR_CHARSET,   "UTF-8", CCharsetConverter::m_Utf8CharMaxSize),
+  /* Utf16LEtoW */          CConverterType("UTF-16LE",      WCHAR_CHARSET),
+  /* Utf16BEtoUtf8 */       CConverterType("UTF-16BE",      "UTF-8", CCharsetConverter::m_Utf8CharMaxSize),
+  /* Utf16LEtoUtf8 */       CConverterType("UTF-16LE",      "UTF-8", CCharsetConverter::m_Utf8CharMaxSize),
+  /* Utf8toW */             CConverterType(UTF8_SOURCE,     WCHAR_CHARSET),
+  /* Utf8ToSystem */        CConverterType(UTF8_SOURCE,     SystemCharset),
+  /* Ucs2CharsetToUtf8 */   CConverterType("UCS-2LE",       "UTF-8", CCharsetConverter::m_Utf8CharMaxSize)
+};
+
+
+
+template<class INPUT,class OUTPUT>
+bool CCharsetConverter::CInnerConverter::stdConvert(StdConversionType convertType, const INPUT& strSource, OUTPUT& strDest, bool failOnInvalidChar /*= false*/)
+{
+  strDest.clear();
+  if (strSource.empty())
+    return true;
+
+  if (convertType < 0 || convertType >= NumberOfStdConversionTypes)
+    return false;
+
+  CConverterType& convType = m_stdConversion[convertType];
+  CSingleLock converterLock(convType);
+
+  return convert(convType.GetConverter(converterLock), convType.GetTargetSingleCharMaxLen(), strSource, strDest, failOnInvalidChar);
+}
+
+template<class INPUT,class OUTPUT>
+bool CCharsetConverter::CInnerConverter::customConvert(const std::string& sourceCharset, const std::string& targetCharset, const INPUT& strSource, OUTPUT& strDest, bool failOnInvalidChar /*= false*/)
+{
+  strDest.clear();
+  if (strSource.empty())
+    return true;
+
+  iconv_t conv = iconv_open(targetCharset.c_str(), sourceCharset.c_str());
+  if (conv == NO_ICONV)
+  {
+    CLog::Log(LOGERROR, "%s: iconv_open() for \"%s\" -> \"%s\" failed, errno = %d (%s)",
+              __FUNCTION__, sourceCharset.c_str(), targetCharset.c_str(), errno, strerror(errno));
+    return false;
+  }
+  const int dstMultp = (targetCharset.compare(0, 5, "UTF-8") == 0) ? CCharsetConverter::m_Utf8CharMaxSize : 1;
+  const bool result = convert(conv, dstMultp, strSource, strDest, failOnInvalidChar);
+  iconv_close(conv);
+
+  return result;
+}
 
-static iconv_t m_iconvUtf8ToUtf32                = (iconv_t)-1;
-static iconv_t m_iconvUtf32ToUtf8                = (iconv_t)-1;
-static iconv_t m_iconvUtf32ToW                   = (iconv_t)-1;
-static iconv_t m_iconvWToUtf32                   = (iconv_t)-1;
-static iconv_t m_iconvSubtitleCharsetToW         = (iconv_t)-1;
-static iconv_t m_iconvUtf8ToStringCharset        = (iconv_t)-1;
-static iconv_t m_iconvStringCharsetToUtf8        = (iconv_t)-1;
-static iconv_t m_iconvUtf32ToStringCharset       = (iconv_t)-1;
-static iconv_t m_iconvWtoUtf8                    = (iconv_t)-1;
-static iconv_t m_iconvUtf16LEtoW                 = (iconv_t)-1;
-static iconv_t m_iconvUtf16BEtoUtf8              = (iconv_t)-1;
-static iconv_t m_iconvUtf16LEtoUtf8              = (iconv_t)-1;
-static iconv_t m_iconvUtf8toW                    = (iconv_t)-1;
-static iconv_t m_iconvUcs2CharsetToUtf8          = (iconv_t)-1;
 
 #if defined(FRIBIDI_CHAR_SET_NOT_FOUND)
-static FriBidiCharSet m_stringFribidiCharset     = FRIBIDI_CHAR_SET_NOT_FOUND;
 #define FRIBIDI_UTF8 FRIBIDI_CHAR_SET_UTF8
-#define FRIBIDI_NOTFOUND FRIBIDI_CHAR_SET_NOT_FOUND
 #else /* compatibility to older version */
-static FriBidiCharSet m_stringFribidiCharset     = FRIBIDI_CHARSET_NOT_FOUND;
 #define FRIBIDI_UTF8 FRIBIDI_CHARSET_UTF8
-#define FRIBIDI_NOTFOUND FRIBIDI_CHARSET_NOT_FOUND
 #endif
 
 static CCriticalSection            m_critSection;
 
-static struct SFribidMapping
-{
-  FriBidiCharSet name;
-  const char*    charset;
-} g_fribidi[] = {
-#if defined(FRIBIDI_CHAR_SET_NOT_FOUND)
-  { FRIBIDI_CHAR_SET_ISO8859_6, "ISO-8859-6"   }
-, { FRIBIDI_CHAR_SET_ISO8859_8, "ISO-8859-8"   }
-, { FRIBIDI_CHAR_SET_CP1255   , "CP1255"       }
-, { FRIBIDI_CHAR_SET_CP1255   , "Windows-1255" }
-, { FRIBIDI_CHAR_SET_CP1256   , "CP1256"       }
-, { FRIBIDI_CHAR_SET_CP1256   , "Windows-1256" }
-, { FRIBIDI_CHAR_SET_NOT_FOUND, NULL           }
-#else /* compatibility to older version */
-  { FRIBIDI_CHARSET_ISO8859_6, "ISO-8859-6"   }
-, { FRIBIDI_CHARSET_ISO8859_8, "ISO-8859-8"   }
-, { FRIBIDI_CHARSET_CP1255   , "CP1255"       }
-, { FRIBIDI_CHARSET_CP1255   , "Windows-1255" }
-, { FRIBIDI_CHARSET_CP1256   , "CP1256"       }
-, { FRIBIDI_CHARSET_CP1256   , "Windows-1256" }
-, { FRIBIDI_CHARSET_NOT_FOUND, NULL           }
-#endif
-};
-
 static struct SCharsetMapping
 {
   const char* charset;
@@ -162,51 +406,24 @@ static struct SCharsetMapping
 };
 
 
-/* single symbol sizes in chars */
-const int CCharsetConverter::m_Utf8CharMinSize = 1;
-const int CCharsetConverter::m_Utf8CharMaxSize = 6;
-
-#define ICONV_PREPARE(iconv) iconv=(iconv_t)-1
-#define ICONV_SAFE_CLOSE(iconv) if (iconv!=(iconv_t)-1) { iconv_close(iconv); iconv=(iconv_t)-1; }
-
-size_t iconv_const (void* cd, const char** inbuf, size_t* inbytesleft,
-                    char** outbuf, size_t* outbytesleft)
+/* iconv may declare inbuf to be char** rather than const char** depending on platform and version,
+    so provide a wrapper that handles both */
+struct charPtrPtrAdapter
 {
-    struct iconv_param_adapter {
-        iconv_param_adapter(const char**p) : p(p) {}
-        iconv_param_adapter(char**p) : p((const char**)p) {}
-        operator char**() const
-        {
-            return(char**)p;
-        }
-        operator const char**() const
-        {
-            return(const char**)p;
-        }
-        const char** p;
-    };
-
-    return iconv((iconv_t)cd, iconv_param_adapter(inbuf), inbytesleft, outbuf, outbytesleft);
-}
+  const char** pointer;
+  charPtrPtrAdapter(const char** p) :
+    pointer(p) { }
+  operator char**()
+  { return const_cast<char**>(pointer); }
+  operator const char**()
+  { return pointer; }
+};
 
 template<class INPUT,class OUTPUT>
-static bool convert(iconv_t& type, int multiplier, const std::string& strFromCharset, const std::string& strToCharset, const INPUT& strSource, OUTPUT& strDest, bool failOnInvalidChar = false)
+bool CCharsetConverter::CInnerConverter::convert(iconv_t type, int multiplier, const INPUT& strSource, OUTPUT& strDest, bool failOnInvalidChar /*= false*/)
 {
-  strDest.clear();
-
-  if (type == (iconv_t)-1)
-  {
-    type = iconv_open(strToCharset.c_str(), strFromCharset.c_str());
-    if (type == (iconv_t)-1) //iconv_open failed
-    {
-      CLog::Log(LOGERROR, "%s iconv_open() failed from %s to %s, errno=%d(%s)",
-                __FUNCTION__, strFromCharset.c_str(), strToCharset.c_str(), errno, strerror(errno));
-      return false;
-    }
-  }
-
-  if (strSource.empty())
-    return true; //empty strings are easy
+  if (type == NO_ICONV)
+    return false;
 
   //input buffer for iconv() is the buffer from strSource
   size_t      inBufSize  = (strSource.length() + 1) * sizeof(typename INPUT::value_type);
@@ -230,7 +447,7 @@ static bool convert(iconv_t& type, int multiplier, const std::string& strFromCha
   while(1)
   {
     //iconv() will update inBufStart, inBytesAvail, outBufStart and outBytesAvail
-    returnV = iconv_const(type, &inBufStart, &inBytesAvail, &outBufStart, &outBytesAvail);
+    returnV = iconv(type, charPtrPtrAdapter(&inBufStart), &inBytesAvail, &outBufStart, &outBytesAvail);
 
     if (returnV == (size_t)-1)
     {
@@ -277,15 +494,15 @@ static bool convert(iconv_t& type, int multiplier, const std::string& strFromCha
       }
       else //iconv() had some other error
       {
-        CLog::Log(LOGERROR, "%s iconv() failed from %s to %s, errno=%d(%s)",
-                  __FUNCTION__, strFromCharset.c_str(), strToCharset.c_str(), errno, strerror(errno));
+        CLog::Log(LOGERROR, "%s: iconv() failed, errno=%d (%s)",
+                  __FUNCTION__, errno, strerror(errno));
       }
     }
     break;
   }
 
   //complete the conversion (reset buffers), otherwise the current data will prefix the data on the next call
-  if (iconv_const(type, NULL, NULL, &outBufStart, &outBytesAvail) == (size_t)-1)
+  if (iconv(type, NULL, NULL, &outBufStart, &outBytesAvail) == (size_t)-1)
     CLog::Log(LOGERROR, "%s failed cleanup errno=%d(%s)", __FUNCTION__, errno, strerror(errno));
 
   if (returnV == (size_t)-1)
@@ -298,7 +515,7 @@ static bool convert(iconv_t& type, int multiplier, const std::string& strFromCha
   const typename OUTPUT::size_type sizeInChars = (typename OUTPUT::size_type) (outBufSize - outBytesAvail) / sizeof(typename OUTPUT::value_type);
   typename OUTPUT::const_pointer strPtr = (typename OUTPUT::const_pointer) outBuf;
   /* Make sure that all buffer is assigned and string is stopped at end of buffer */
-  if (strPtr[sizeInChars-1] == 0)
+  if (strPtr[sizeInChars-1] == 0 && strSource[strSource.length()-1] != 0)
     strDest.assign(strPtr, sizeInChars-1);
   else
     strDest.assign(strPtr, sizeInChars);
@@ -308,12 +525,10 @@ static bool convert(iconv_t& type, int multiplier, const std::string& strFromCha
   return true;
 }
 
-using namespace std;
-
-static bool logicalToVisualBiDi(const std::string& stringSrc, std::string& stringDst, FriBidiCharSet fribidiCharset, FriBidiCharType base = FRIBIDI_TYPE_LTR, bool* bWasFlipped =NULL)
+bool CCharsetConverter::CInnerConverter::logicalToVisualBiDi(const std::string& stringSrc, std::string& stringDst, FriBidiCharSet fribidiCharset, FriBidiCharType base /*= FRIBIDI_TYPE_LTR*/, bool* bWasFlipped /*=NULL*/)
 {
   stringDst.clear();
-  vector<std::string> lines = StringUtils::Split(stringSrc, "\n");
+  std::vector<std::string> lines = StringUtils::Split(stringSrc, "\n");
 
   if (bWasFlipped)
     *bWasFlipped = false;
@@ -396,11 +611,12 @@ void CCharsetConverter::OnSettingChanged(const CSetting* setting)
     return;
 
   const std::string& settingId = setting->GetId();
-  // TODO: does this make any sense at all for subtitles and karaoke?
-  if (settingId == "subtitles.charset" ||
-      settingId == "karaoke.charset" ||
-      settingId == "locale.charset")
-    reset();
+  if (settingId == "locale.charset")
+    resetUserCharset();
+  else if (settingId == "subtitles.charset")
+    resetSubtitleCharset();
+  else if (settingId == "karaoke.charset")
+    resetKaraokeCharset();
 }
 
 void CCharsetConverter::clear()
@@ -409,7 +625,7 @@ void CCharsetConverter::clear()
 
 std::vector<std::string> CCharsetConverter::getCharsetLabels()
 {
-  vector<std::string> lab;
+  std::vector<std::string> lab;
   for(SCharsetMapping* c = g_charsets; c->charset; c++)
     lab.push_back(c->caption);
 
@@ -438,52 +654,43 @@ std::string CCharsetConverter::getCharsetNameByLabel(const std::string& charsetL
   return "";
 }
 
-bool CCharsetConverter::isBidiCharset(const std::string& charset)
+void CCharsetConverter::reset(void)
 {
-  for(SFribidMapping* c = g_fribidi; c->charset; c++)
-  {
-    if (StringUtils::EqualsNoCase(charset, c->charset))
-      return true;
-  }
-  return false;
+  for (int i = 0; i < NumberOfStdConversionTypes; i++)
+    CInnerConverter::m_stdConversion[i].Reset();
 }
 
-void CCharsetConverter::reset(void)
+void CCharsetConverter::resetSystemCharset(void)
 {
-  CSingleLock lock(m_critSection);
+  CInnerConverter::m_stdConversion[Utf8ToSystem].Reset();
+}
 
-  ICONV_SAFE_CLOSE(m_iconvUtf8ToUtf32);
-  ICONV_SAFE_CLOSE(m_iconvUtf32ToUtf8);
-  ICONV_SAFE_CLOSE(m_iconvUtf32ToW);
-  ICONV_SAFE_CLOSE(m_iconvWToUtf32);
-  ICONV_SAFE_CLOSE(m_iconvUtf8ToStringCharset);
-  ICONV_SAFE_CLOSE(m_iconvStringCharsetToUtf8);
-  ICONV_SAFE_CLOSE(m_iconvSubtitleCharsetToW);
-  ICONV_SAFE_CLOSE(m_iconvWtoUtf8);
-  ICONV_SAFE_CLOSE(m_iconvUtf16BEtoUtf8);
-  ICONV_SAFE_CLOSE(m_iconvUtf16LEtoUtf8);
-  ICONV_SAFE_CLOSE(m_iconvUtf32ToStringCharset);
-  ICONV_SAFE_CLOSE(m_iconvUtf8toW);
-  ICONV_SAFE_CLOSE(m_iconvUcs2CharsetToUtf8);
-
-
-  m_stringFribidiCharset = FRIBIDI_NOTFOUND;
-
-  std::string strCharset=g_langInfo.GetGuiCharSet();
-  for(SFribidMapping* c = g_fribidi; c->charset; c++)
-  {
-    if (StringUtils::EqualsNoCase(strCharset, c->charset))
-    {
-      m_stringFribidiCharset = c->name;
-      break;
-    }
-  }
+void CCharsetConverter::resetUserCharset(void)
+{
+  CInnerConverter::m_stdConversion[UserCharsetToUtf8].Reset();
+  CInnerConverter::m_stdConversion[UserCharsetToUtf8].Reset();
+  CInnerConverter::m_stdConversion[Utf32ToUserCharset].Reset();
+  resetSubtitleCharset();
+  resetKaraokeCharset();
+}
+
+void CCharsetConverter::resetSubtitleCharset(void)
+{
+  CInnerConverter::m_stdConversion[SubtitleCharsetToW].Reset();
+}
+
+void CCharsetConverter::resetKaraokeCharset(void)
+{
+}
+
+void CCharsetConverter::reinitCharsetsFromSettings(void)
+{
+  resetUserCharset(); // this will also reinit Subtitle and Karaoke charsets
 }
 
 bool CCharsetConverter::utf8ToUtf32(const std::string& utf8StringSrc, std::u32string& utf32StringDst, bool failOnBadChar /*= true*/)
 {
-  CSingleLock lock(m_critSection);
-  return convert(m_iconvUtf8ToUtf32, 1, UTF8_SOURCE, UTF32_CHARSET, utf8StringSrc, utf32StringDst, failOnBadChar);
+  return CInnerConverter::stdConvert(Utf8ToUtf32, utf8StringSrc, utf32StringDst, failOnBadChar);
 }
 
 std::u32string CCharsetConverter::utf8ToUtf32(const std::string& utf8StringSrc, bool failOnBadChar /*= true*/)
@@ -498,19 +705,16 @@ bool CCharsetConverter::utf8ToUtf32Visual(const std::string& utf8StringSrc, std:
   if (bVisualBiDiFlip)
   {
     std::string strFlipped;
-    if (!logicalToVisualBiDi(utf8StringSrc, strFlipped, FRIBIDI_UTF8, forceLTRReadingOrder ? FRIBIDI_TYPE_LTR : FRIBIDI_TYPE_PDF))
+    if (!CInnerConverter::logicalToVisualBiDi(utf8StringSrc, strFlipped, FRIBIDI_UTF8, forceLTRReadingOrder ? FRIBIDI_TYPE_LTR : FRIBIDI_TYPE_PDF))
       return false;
-    CSingleLock lock(m_critSection);
-    return convert(m_iconvUtf8ToUtf32, 1, UTF8_SOURCE, UTF32_CHARSET, strFlipped, utf32StringDst, failOnBadChar);
+    return CInnerConverter::stdConvert(Utf8ToUtf32, strFlipped, utf32StringDst, failOnBadChar);
   }
-  CSingleLock lock(m_critSection);
-  return convert(m_iconvUtf8ToUtf32, 1, UTF8_SOURCE, UTF32_CHARSET, utf8StringSrc, utf32StringDst, failOnBadChar);
+  return CInnerConverter::stdConvert(Utf8ToUtf32, utf8StringSrc, utf32StringDst, failOnBadChar);
 }
 
 bool CCharsetConverter::utf32ToUtf8(const std::u32string& utf32StringSrc, std::string& utf8StringDst, bool failOnBadChar /*= true*/)
 {
-  CSingleLock lock(m_critSection);
-  return convert(m_iconvUtf32ToUtf8, m_Utf8CharMaxSize, UTF32_CHARSET, "UTF-8", utf32StringSrc, utf8StringDst, failOnBadChar);
+  return CInnerConverter::stdConvert(Utf32ToUtf8, utf32StringSrc, utf8StringDst, failOnBadChar);
 }
 
 std::string CCharsetConverter::utf32ToUtf8(const std::u32string& utf32StringSrc, bool failOnBadChar /*= false*/)
@@ -526,8 +730,7 @@ bool CCharsetConverter::utf32ToW(const std::u32string& utf32StringSrc, std::wstr
   wStringDst.assign((const wchar_t*)utf32StringSrc.c_str(), utf32StringSrc.length());
   return true;
 #else // !WCHAR_IS_UCS_4
-  CSingleLock lock(m_critSection);
-  return convert(m_iconvUtf32ToW, 1, UTF32_CHARSET, WCHAR_CHARSET, utf32StringSrc, wStringDst, failOnBadChar);
+  return CInnerConverter::stdConvert(Utf32ToW, utf32StringSrc, wStringDst, failOnBadChar);
 #endif // !WCHAR_IS_UCS_4
 }
 
@@ -547,8 +750,7 @@ bool CCharsetConverter::wToUtf32(const std::wstring& wStringSrc, std::u32string&
   /* UCS-4 is almost equal to UTF-32, but UTF-32 has strict limits on possible values, while UCS-4 is usually unchecked.
    * With this "conversion" we ensure that output will be valid UTF-32 string. */
 #endif
-  CSingleLock lock(m_critSection);
-  return convert(m_iconvWToUtf32, 1, WCHAR_CHARSET, UTF32_CHARSET, wStringSrc, utf32StringDst, failOnBadChar);
+  return CInnerConverter::stdConvert(WToUtf32, wStringSrc, utf32StringDst, failOnBadChar);
 }
 
 // The bVisualBiDiFlip forces a flip of characters for hebrew/arabic languages, only set to false if the flipping
@@ -561,48 +763,35 @@ bool CCharsetConverter::utf8ToW(const std::string& utf8StringSrc, std::wstring&
   {
     std::string strFlipped;
     FriBidiCharType charset = forceLTRReadingOrder ? FRIBIDI_TYPE_LTR : FRIBIDI_TYPE_PDF;
-    logicalToVisualBiDi(utf8StringSrc, strFlipped, FRIBIDI_UTF8, charset, bWasFlipped);
-    CSingleLock lock(m_critSection);
-    return convert(m_iconvUtf8toW,1,UTF8_SOURCE,WCHAR_CHARSET,strFlipped,wStringDst, failOnBadChar);
+    CInnerConverter::logicalToVisualBiDi(utf8StringSrc, strFlipped, FRIBIDI_UTF8, charset, bWasFlipped);
+    return CInnerConverter::stdConvert(Utf8toW, strFlipped, wStringDst, failOnBadChar);
   }
   else
   {
-    CSingleLock lock(m_critSection);
-    return convert(m_iconvUtf8toW,1,UTF8_SOURCE,WCHAR_CHARSET,utf8StringSrc,wStringDst, failOnBadChar);
+    return CInnerConverter::stdConvert(Utf8toW, utf8StringSrc, wStringDst, failOnBadChar);
   }
 }
 
 bool CCharsetConverter::subtitleCharsetToW(const std::string& stringSrc, std::wstring& wStringDst)
 {
-  // No need to flip hebrew/arabic as mplayer does the flipping
-  CSingleLock lock(m_critSection);
-  return convert(m_iconvSubtitleCharsetToW,1,g_langInfo.GetSubtitleCharSet(),WCHAR_CHARSET,stringSrc,wStringDst);
+  return CInnerConverter::stdConvert(SubtitleCharsetToW, stringSrc, wStringDst, false);
 }
 
 bool CCharsetConverter::fromW(const std::wstring& wStringSrc,
                               std::string& stringDst, const std::string& enc)
 {
-  iconv_t iconvString;
-  ICONV_PREPARE(iconvString);
-  const bool result = convert(iconvString,m_Utf8CharMaxSize,WCHAR_CHARSET,enc,wStringSrc,stringDst);
-  iconv_close(iconvString);
-  return result;
+  return CInnerConverter::customConvert(WCHAR_CHARSET, enc, wStringSrc, stringDst);
 }
 
 bool CCharsetConverter::toW(const std::string& stringSrc,
                             std::wstring& wStringDst, const std::string& enc)
 {
-  iconv_t iconvString;
-  ICONV_PREPARE(iconvString);
-  const bool result = convert(iconvString,1,enc,WCHAR_CHARSET,stringSrc,wStringDst);
-  iconv_close(iconvString);
-  return result;
+  return CInnerConverter::customConvert(enc, WCHAR_CHARSET, stringSrc, wStringDst);
 }
 
 bool CCharsetConverter::utf8ToStringCharset(const std::string& utf8StringSrc, std::string& stringDst)
 {
-  CSingleLock lock(m_critSection);
-  return convert(m_iconvUtf8ToStringCharset,1,UTF8_SOURCE,g_langInfo.GetGuiCharSet(),utf8StringSrc,stringDst);
+  return CInnerConverter::stdConvert(Utf8ToUserCharset, utf8StringSrc, stringDst);
 }
 
 bool CCharsetConverter::utf8ToStringCharset(std::string& stringSrcDst)
@@ -618,11 +807,8 @@ bool CCharsetConverter::ToUtf8(const std::string& strSourceCharset, const std::s
     utf8StringDst = stringSrc;
     return true;
   }
-  iconv_t iconvString;
-  ICONV_PREPARE(iconvString);
-  const bool result = convert(iconvString,m_Utf8CharMaxSize,strSourceCharset,"UTF-8",stringSrc,utf8StringDst);
-  iconv_close(iconvString);
-  return result;
+  
+  return CInnerConverter::customConvert(strSourceCharset, "UTF-8", stringSrc, utf8StringDst);
 }
 
 bool CCharsetConverter::utf8To(const std::string& strDestCharset, const std::string& utf8StringSrc, std::string& stringDst)
@@ -632,29 +818,18 @@ bool CCharsetConverter::utf8To(const std::string& strDestCharset, const std::str
     stringDst = utf8StringSrc;
     return true;
   }
-  iconv_t iconvString;
-  ICONV_PREPARE(iconvString);
-  const bool result = convert(iconvString,1,UTF8_SOURCE,strDestCharset,utf8StringSrc,stringDst);
-  iconv_close(iconvString);
-  return result;
+
+  return CInnerConverter::customConvert(UTF8_SOURCE, strDestCharset, utf8StringSrc, stringDst);
 }
 
 bool CCharsetConverter::utf8To(const std::string& strDestCharset, const std::string& utf8StringSrc, std::u16string& utf16StringDst)
 {
-  iconv_t iconvString;
-  ICONV_PREPARE(iconvString);
-  const bool result = convert(iconvString,1,UTF8_SOURCE,strDestCharset,utf8StringSrc,utf16StringDst);
-  iconv_close(iconvString);
-  return result;
+  return CInnerConverter::customConvert(UTF8_SOURCE, strDestCharset, utf8StringSrc, utf16StringDst);
 }
 
 bool CCharsetConverter::utf8To(const std::string& strDestCharset, const std::string& utf8StringSrc, std::u32string& utf32StringDst)
 {
-  iconv_t iconvString;
-  ICONV_PREPARE(iconvString);
-  const bool result = convert(iconvString,1,UTF8_SOURCE,strDestCharset,utf8StringSrc,utf32StringDst);
-  iconv_close(iconvString);
-  return result;
+  return CInnerConverter::customConvert(UTF8_SOURCE, strDestCharset, utf8StringSrc, utf32StringDst);
 }
 
 bool CCharsetConverter::unknownToUTF8(std::string& stringSrcDst)
@@ -671,51 +846,44 @@ bool CCharsetConverter::unknownToUTF8(const std::string& stringSrc, std::string&
     utf8StringDst = stringSrc;
     return true;
   }
-  CSingleLock lock(m_critSection);
-  return convert(m_iconvStringCharsetToUtf8, m_Utf8CharMaxSize, g_langInfo.GetGuiCharSet(), "UTF-8", stringSrc, utf8StringDst, failOnBadChar);
+  return CInnerConverter::stdConvert(UserCharsetToUtf8, stringSrc, utf8StringDst, failOnBadChar);
 }
 
 bool CCharsetConverter::wToUTF8(const std::wstring& wStringSrc, std::string& utf8StringDst, bool failOnBadChar /*= false*/)
 {
-  CSingleLock lock(m_critSection);
-  return convert(m_iconvWtoUtf8,m_Utf8CharMaxSize,WCHAR_CHARSET,"UTF-8",wStringSrc,utf8StringDst, failOnBadChar);
+  return CInnerConverter::stdConvert(WtoUtf8, wStringSrc, utf8StringDst, failOnBadChar);
 }
 
 bool CCharsetConverter::utf16BEtoUTF8(const std::u16string& utf16StringSrc, std::string& utf8StringDst)
 {
-  CSingleLock lock(m_critSection);
-  return convert(m_iconvUtf16BEtoUtf8,m_Utf8CharMaxSize,"UTF-16BE","UTF-8",utf16StringSrc,utf8StringDst);
+  return CInnerConverter::stdConvert(Utf16BEtoUtf8, utf16StringSrc, utf8StringDst);
 }
 
 bool CCharsetConverter::utf16LEtoUTF8(const std::u16string& utf16StringSrc,
                                       std::string& utf8StringDst)
 {
-  CSingleLock lock(m_critSection);
-  return convert(m_iconvUtf16LEtoUtf8,m_Utf8CharMaxSize,"UTF-16LE","UTF-8",utf16StringSrc,utf8StringDst);
+  return CInnerConverter::stdConvert(Utf16LEtoUtf8, utf16StringSrc, utf8StringDst);
 }
 
 bool CCharsetConverter::ucs2ToUTF8(const std::u16string& ucs2StringSrc, std::string& utf8StringDst)
 {
-  CSingleLock lock(m_critSection);
-  return convert(m_iconvUcs2CharsetToUtf8,m_Utf8CharMaxSize,"UCS-2LE","UTF-8",ucs2StringSrc,utf8StringDst);
+  return CInnerConverter::stdConvert(Ucs2CharsetToUtf8, ucs2StringSrc,utf8StringDst);
 }
 
 bool CCharsetConverter::utf16LEtoW(const std::u16string& utf16String, std::wstring& wString)
 {
-  CSingleLock lock(m_critSection);
-  return convert(m_iconvUtf16LEtoW,1,"UTF-16LE",WCHAR_CHARSET,utf16String,wString);
+  return CInnerConverter::stdConvert(Utf16LEtoW, utf16String, wString);
 }
 
 bool CCharsetConverter::utf32ToStringCharset(const std::u32string& utf32StringSrc, std::string& stringDst)
 {
-  CSingleLock lock(m_critSection);
-  return convert(m_iconvUtf32ToStringCharset, 1, g_langInfo.GetGuiCharSet().c_str(), UTF32_CHARSET, utf32StringSrc, stringDst);
+  return CInnerConverter::stdConvert(Utf32ToUserCharset, utf32StringSrc, stringDst);
 }
 
 bool CCharsetConverter::utf8ToSystem(std::string& stringSrcDst, bool failOnBadChar /*= false*/)
 {
   std::string strSrc(stringSrcDst);
-  return utf8To("", strSrc, stringSrcDst);
+  return CInnerConverter::stdConvert(Utf8ToSystem, strSrc, stringSrcDst, failOnBadChar);
 }
 
 // Taken from RFC2640
@@ -786,12 +954,12 @@ bool CCharsetConverter::isValidUtf8(const std::string& str)
 
 bool CCharsetConverter::utf8logicalToVisualBiDi(const std::string& utf8StringSrc, std::string& utf8StringDst)
 {
-  return logicalToVisualBiDi(utf8StringSrc, utf8StringDst, FRIBIDI_UTF8, FRIBIDI_TYPE_RTL);
+  return CInnerConverter::logicalToVisualBiDi(utf8StringSrc, utf8StringDst, FRIBIDI_UTF8, FRIBIDI_TYPE_RTL);
 }
 
 void CCharsetConverter::SettingOptionsCharsetsFiller(const CSetting* setting, std::vector< std::pair<std::string, std::string> >& list, std::string& current)
 {
-  vector<std::string> vecCharsets = g_charsetConverter.getCharsetLabels();
+  std::vector<std::string> vecCharsets = g_charsetConverter.getCharsetLabels();
   sort(vecCharsets.begin(), vecCharsets.end(), sortstringbyname());
 
   list.push_back(make_pair(g_localizeStrings.Get(13278), "DEFAULT")); // "Default"
index c545d65..5cdcdaf 100644 (file)
@@ -38,9 +38,11 @@ public:
 
   virtual void OnSettingChanged(const CSetting* setting);
 
-  void reset();
+  static void reset();
+  static void resetSystemCharset();
+  static void reinitCharsetsFromSettings(void);
 
-  void clear();
+  static void clear();
 
   /**
    * Convert UTF-8 string to UTF-32 string.
@@ -51,7 +53,7 @@ public:
    *                            otherwise invalid character will be skipped
    * @return true on successful conversion, false on any error
    */
-  bool utf8ToUtf32(const std::string& utf8StringSrc, std::u32string& utf32StringDst, bool failOnBadChar = true);
+  static bool utf8ToUtf32(const std::string& utf8StringSrc, std::u32string& utf32StringDst, bool failOnBadChar = true);
   /**
    * Convert UTF-8 string to UTF-32 string.
    * No RTL logical-visual transformation is performed.
@@ -60,7 +62,7 @@ public:
    *                            otherwise invalid character will be skipped
    * @return converted string on successful conversion, empty string on any error
    */
-  std::u32string utf8ToUtf32(const std::string& utf8StringSrc, bool failOnBadChar = true);
+  static std::u32string utf8ToUtf32(const std::string& utf8StringSrc, bool failOnBadChar = true);
   /**
    * Convert UTF-8 string to UTF-32 string.
    * RTL logical-visual transformation is optionally performed.
@@ -74,7 +76,7 @@ public:
    *                            otherwise invalid character will be skipped
    * @return true on successful conversion, false on any error
    */
-  bool utf8ToUtf32Visual(const std::string& utf8StringSrc, std::u32string& utf32StringDst, bool bVisualBiDiFlip = false, bool forceLTRReadingOrder = false, bool failOnBadChar = false);
+  static bool utf8ToUtf32Visual(const std::string& utf8StringSrc, std::u32string& utf32StringDst, bool bVisualBiDiFlip = false, bool forceLTRReadingOrder = false, bool failOnBadChar = false);
   /**
    * Convert UTF-32 string to UTF-8 string.
    * No RTL visual-logical transformation is performed.
@@ -84,7 +86,7 @@ public:
    *                            otherwise invalid character will be skipped
    * @return true on successful conversion, false on any error
    */
-  bool utf32ToUtf8(const std::u32string& utf32StringSrc, std::string& utf8StringDst, bool failOnBadChar = false);
+  static bool utf32ToUtf8(const std::u32string& utf32StringSrc, std::string& utf8StringDst, bool failOnBadChar = false);
   /**
    * Convert UTF-32 string to UTF-8 string.
    * No RTL visual-logical transformation is performed.
@@ -93,7 +95,7 @@ public:
    *                            otherwise invalid character will be skipped
    * @return converted string on successful conversion, empty string on any error
    */
-  std::string utf32ToUtf8(const std::u32string& utf32StringSrc, bool failOnBadChar = false);
+  static std::string utf32ToUtf8(const std::u32string& utf32StringSrc, bool failOnBadChar = false);
   /**
    * Convert UTF-32 string to wchar_t string (wstring).
    * No RTL visual-logical transformation is performed.
@@ -103,7 +105,7 @@ public:
    *                            otherwise invalid character will be skipped
    * @return true on successful conversion, false on any error
    */
-  bool utf32ToW(const std::u32string& utf32StringSrc, std::wstring& wStringDst, bool failOnBadChar = false);
+  static bool utf32ToW(const std::u32string& utf32StringSrc, std::wstring& wStringDst, bool failOnBadChar = false);
   /**
    * Perform logical to visual flip.
    * @param logicalStringSrc    is source string with logical characters order
@@ -111,7 +113,7 @@ public:
    * @param forceLTRReadingOrder        force LTR reading order
    * @return true on success, false otherwise
    */
-  bool utf32logicalToVisualBiDi(const std::u32string& logicalStringSrc, std::u32string& visualStringDst, bool forceLTRReadingOrder = false);
+  static bool utf32logicalToVisualBiDi(const std::u32string& logicalStringSrc, std::u32string& visualStringDst, bool forceLTRReadingOrder = false);
   /**
    * Strictly convert wchar_t string (wstring) to UTF-32 string.
    * No RTL visual-logical transformation is performed.
@@ -121,58 +123,60 @@ public:
    *                            otherwise invalid character will be skipped
    * @return true on successful conversion, false on any error
    */
-  bool wToUtf32(const std::wstring& wStringSrc, std::u32string& utf32StringDst, bool failOnBadChar = false);
+  static bool wToUtf32(const std::wstring& wStringSrc, std::u32string& utf32StringDst, bool failOnBadChar = false);
 
-  bool utf8ToW(const std::string& utf8StringSrc, std::wstring& wStringDst,
+  static bool utf8ToW(const std::string& utf8StringSrc, std::wstring& wStringDst,
                 bool bVisualBiDiFlip = true, bool forceLTRReadingOrder = false,
                 bool failOnBadChar = false, bool* bWasFlipped = NULL);
 
-  bool utf16LEtoW(const std::u16string& utf16String, std::wstring& wString);
+  static bool utf16LEtoW(const std::u16string& utf16String, std::wstring& wString);
 
-  bool subtitleCharsetToW(const std::string& stringSrc, std::wstring& wStringDst);
+  static bool subtitleCharsetToW(const std::string& stringSrc, std::wstring& wStringDst);
 
-  bool utf8ToStringCharset(const std::string& utf8StringSrc, std::string& stringDst);
+  static bool utf8ToStringCharset(const std::string& utf8StringSrc, std::string& stringDst);
 
-  bool utf8ToStringCharset(std::string& stringSrcDst);
-  bool utf8ToSystem(std::string& stringSrcDst, bool failOnBadChar = false);
+  static bool utf8ToStringCharset(std::string& stringSrcDst);
+  static bool utf8ToSystem(std::string& stringSrcDst, bool failOnBadChar = false);
 
-  bool utf8To(const std::string& strDestCharset, const std::string& utf8StringSrc, std::string& stringDst);
-  bool utf8To(const std::string& strDestCharset, const std::string& utf8StringSrc, std::u16string& utf16StringDst);
-  bool utf8To(const std::string& strDestCharset, const std::string& utf8StringSrc, std::u32string& utf32StringDst);
+  static bool utf8To(const std::string& strDestCharset, const std::string& utf8StringSrc, std::string& stringDst);
+  static bool utf8To(const std::string& strDestCharset, const std::string& utf8StringSrc, std::u16string& utf16StringDst);
+  static bool utf8To(const std::string& strDestCharset, const std::string& utf8StringSrc, std::u32string& utf32StringDst);
 
-  bool ToUtf8(const std::string& strSourceCharset, const std::string& stringSrc, std::string& utf8StringDst);
+  static bool ToUtf8(const std::string& strSourceCharset, const std::string& stringSrc, std::string& utf8StringDst);
 
-  bool isValidUtf8(const std::string& str);
+  static bool isValidUtf8(const std::string& str);
 
-  bool isValidUtf8(const char* buf, unsigned int len);
+  static bool isValidUtf8(const char* buf, unsigned int len);
 
-  bool wToUTF8(const std::wstring& wStringSrc, std::string& utf8StringDst, bool failOnBadChar = false);
-  bool utf16BEtoUTF8(const std::u16string& utf16StringSrc, std::string& utf8StringDst);
-  bool utf16LEtoUTF8(const std::u16string& utf16StringSrc, std::string& utf8StringDst);
-  bool ucs2ToUTF8(const std::u16string& ucs2StringSrc, std::string& utf8StringDst);
+  static bool wToUTF8(const std::wstring& wStringSrc, std::string& utf8StringDst, bool failOnBadChar = false);
+  static bool utf16BEtoUTF8(const std::u16string& utf16StringSrc, std::string& utf8StringDst);
+  static bool utf16LEtoUTF8(const std::u16string& utf16StringSrc, std::string& utf8StringDst);
+  static bool ucs2ToUTF8(const std::u16string& ucs2StringSrc, std::string& utf8StringDst);
 
-  bool utf8logicalToVisualBiDi(const std::string& utf8StringSrc, std::string& utf8StringDst);
+  static bool utf8logicalToVisualBiDi(const std::string& utf8StringSrc, std::string& utf8StringDst);
 
-  bool utf32ToStringCharset(const std::u32string& utf32StringSrc, std::string& stringDst);
+  static bool utf32ToStringCharset(const std::u32string& utf32StringSrc, std::string& stringDst);
 
-  std::vector<std::string> getCharsetLabels();
-  std::string getCharsetLabelByName(const std::string& charsetName);
-  std::string getCharsetNameByLabel(const std::string& charsetLabel);
-  bool isBidiCharset(const std::string& charset);
+  static std::vector<std::string> getCharsetLabels();
+  static std::string getCharsetLabelByName(const std::string& charsetName);
+  static std::string getCharsetNameByLabel(const std::string& charsetLabel);
 
-  bool unknownToUTF8(std::string& stringSrcDst);
-  bool unknownToUTF8(const std::string& stringSrc, std::string& utf8StringDst, bool failOnBadChar = false);
+  static bool unknownToUTF8(std::string& stringSrcDst);
+  static bool unknownToUTF8(const std::string& stringSrc, std::string& utf8StringDst, bool failOnBadChar = false);
 
-  bool toW(const std::string& stringSrc, std::wstring& wStringDst, const std::string& enc);
-  bool fromW(const std::wstring& wStringSrc, std::string& stringDst, const std::string& enc);
+  static bool toW(const std::string& stringSrc, std::wstring& wStringDst, const std::string& enc);
+  static bool fromW(const std::wstring& wStringSrc, std::string& stringDst, const std::string& enc);
 
   static void SettingOptionsCharsetsFiller(const CSetting* setting, std::vector< std::pair<std::string, std::string> >& list, std::string& current);
 private:
+  static void resetUserCharset(void);
+  static void resetSubtitleCharset(void);
+  static void resetKaraokeCharset(void);
+
   static const int m_Utf8CharMinSize, m_Utf8CharMaxSize;
+  class CInnerConverter;
 };
 
 XBMC_GLOBAL(CCharsetConverter,g_charsetConverter);
 
-size_t iconv_const (void* cd, const char** inbuf, size_t* inbytesleft, char** outbuf, size_t* outbytesleft);
-
 #endif