mirror of
https://github.com/robweber/xbmcbackup.git
synced 2026-01-05 07:14:44 +01:00
Compare commits
195 Commits
eden-0.1.9
...
gotham-0.6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5b57a3c0c3 | ||
|
|
2dbc2fa71b | ||
|
|
31ea62c9bc | ||
|
|
7c740826c7 | ||
|
|
e803573340 | ||
|
|
687e830bcd | ||
|
|
c578fe15d8 | ||
|
|
72b2abfe8d | ||
|
|
d6d7221551 | ||
|
|
0b6a3ae506 | ||
|
|
2fc26b6e8c | ||
|
|
f41f37782d | ||
|
|
9e5873fcb7 | ||
|
|
d335634618 | ||
|
|
355135853b | ||
|
|
f8c00b473f | ||
|
|
3e32882afc | ||
|
|
4d109d138f | ||
|
|
08be62b4ec | ||
|
|
7bab6a9ada | ||
|
|
f0a6b3351a | ||
|
|
64d788e9f7 | ||
|
|
62104184de | ||
|
|
91af11c9f7 | ||
|
|
d9ff17eeec | ||
|
|
53ddc92325 | ||
|
|
250a5021e0 | ||
|
|
eb2f5dce74 | ||
|
|
b14fda20fb | ||
|
|
38cc67a54d | ||
|
|
d69a1b2d27 | ||
|
|
d7a0e622be | ||
|
|
a1c91ef51c | ||
|
|
45b6cea057 | ||
|
|
80f4e6bdfb | ||
|
|
f249ea1583 | ||
|
|
9945dc628e | ||
|
|
24e1311db5 | ||
|
|
49783f712a | ||
|
|
1255283f4d | ||
|
|
b3bbdd6911 | ||
|
|
5dfa9d9b76 | ||
|
|
545843e949 | ||
|
|
647bd8811b | ||
|
|
e6215dde51 | ||
|
|
9a89066e66 | ||
|
|
c28f9fd26b | ||
|
|
933fdbdf09 | ||
|
|
c49aebeba1 | ||
|
|
525dd8ff86 | ||
|
|
19fcb8bd46 | ||
|
|
24385a2c68 | ||
|
|
6dc23de55b | ||
|
|
eeb25a4c58 | ||
|
|
2365649f86 | ||
|
|
097238cf7b | ||
|
|
dd3a50027e | ||
|
|
ee435a90ef | ||
|
|
23b70af3dc | ||
|
|
a439863c05 | ||
|
|
6f34d39822 | ||
|
|
e025b3213c | ||
|
|
9f794549c2 | ||
|
|
290446c3a8 | ||
|
|
35c1717699 | ||
|
|
3a25c1c4eb | ||
|
|
37fb30d7ab | ||
|
|
a09677930f | ||
|
|
ed696a5c4f | ||
|
|
6f4de551dc | ||
|
|
6ad083ced8 | ||
|
|
eecdf4277c | ||
|
|
450687ba5d | ||
|
|
a217960576 | ||
|
|
7f42129606 | ||
|
|
4312625003 | ||
|
|
2bec306892 | ||
|
|
542bc692d9 | ||
|
|
70ced05cd5 | ||
|
|
405bbc08b5 | ||
|
|
775a5aeda2 | ||
|
|
e185ddf131 | ||
|
|
aec7d19b00 | ||
|
|
b0b611b5c9 | ||
|
|
884633073a | ||
|
|
4fcd40c745 | ||
|
|
77dbd69ce2 | ||
|
|
e3be458a28 | ||
|
|
987d90de12 | ||
|
|
163124089b | ||
|
|
4dd6c90ab9 | ||
|
|
d28596728b | ||
|
|
25a9faed9a | ||
|
|
83213c5561 | ||
|
|
4962a9c63b | ||
|
|
968248aaaf | ||
|
|
2b14f23a1d | ||
|
|
1a4e64572a | ||
|
|
1c7fdeb5a7 | ||
|
|
fbd53619cb | ||
|
|
dcfb5a1f89 | ||
|
|
f028bffca4 | ||
|
|
3ae5ce8f6f | ||
|
|
a7044cd17c | ||
|
|
af11c1a990 | ||
|
|
c9d285c76f | ||
|
|
9cbd6270e9 | ||
|
|
7ed09f3715 | ||
|
|
ff4cbf5493 | ||
|
|
f071dbd832 | ||
|
|
47308c6282 | ||
|
|
6151cc771b | ||
|
|
e63ba10473 | ||
|
|
7652a90c1a | ||
|
|
47f4b16571 | ||
|
|
d1620f116c | ||
|
|
27a4554ffa | ||
|
|
92a672e1ad | ||
|
|
4da499ebaa | ||
|
|
db7f7a02f5 | ||
|
|
7e703ca08c | ||
|
|
498e161347 | ||
|
|
625de8fa71 | ||
|
|
1357d45945 | ||
|
|
9165f8b2dc | ||
|
|
2d123318d9 | ||
|
|
a9b63500c3 | ||
|
|
052cd1a062 | ||
|
|
cfdc3694ef | ||
|
|
f2d61ed19d | ||
|
|
36332f20b8 | ||
|
|
3cd1ae3247 | ||
|
|
8e7aacca4f | ||
|
|
6eb5b7f986 | ||
|
|
e582be4c7b | ||
|
|
361be97e34 | ||
|
|
e32383c9ed | ||
|
|
e40e6c685d | ||
|
|
46cd3c6731 | ||
|
|
9fe364ef86 | ||
|
|
018a1a1e82 | ||
|
|
a036cde5a8 | ||
|
|
f4f4b658a0 | ||
|
|
52b6b74b9e | ||
|
|
042ed51ef3 | ||
|
|
16e55bdd23 | ||
|
|
926382e28e | ||
|
|
f6cac868d7 | ||
|
|
4ff0e49d82 | ||
|
|
1f25e11c93 | ||
|
|
18c85870ec | ||
|
|
c1784c0485 | ||
|
|
738033897f | ||
|
|
4f6128b39c | ||
|
|
da5d98a344 | ||
|
|
755e212b26 | ||
|
|
be7aea90bb | ||
|
|
535cd43e8a | ||
|
|
5b6b5d6c9a | ||
|
|
33e10c2a61 | ||
|
|
140610db5a | ||
|
|
c4a8e60729 | ||
|
|
cb6fdd7efe | ||
|
|
6c20e3a3ad | ||
|
|
847ad3a510 | ||
|
|
49f7c2fbbd | ||
|
|
e600703c94 | ||
|
|
9eb857396a | ||
|
|
9bc0c27ccf | ||
|
|
d3eab55f8a | ||
|
|
5ec8770057 | ||
|
|
4749978adb | ||
|
|
1321e244a7 | ||
|
|
ad2ddfa22f | ||
|
|
77f138e159 | ||
|
|
8ffbe3a791 | ||
|
|
5caeff23c9 | ||
|
|
7bed37a6c2 | ||
|
|
6b5b465121 | ||
|
|
28e3d08f0c | ||
|
|
db7021d97e | ||
|
|
272ea8b8a9 | ||
|
|
a3724657c7 | ||
|
|
3892a16778 | ||
|
|
dd39dc182e | ||
|
|
719a189de6 | ||
|
|
557771ee95 | ||
|
|
2cf9356f9c | ||
|
|
dff28f2653 | ||
|
|
377d7cd58d | ||
|
|
d908f23d72 | ||
|
|
92b74eb41c | ||
|
|
3d1729b721 | ||
|
|
38b2c0b535 | ||
|
|
e4f25f174f |
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
*.pyo
|
||||
.project
|
||||
.pydevproject
|
||||
95
README.txt
95
README.txt
@@ -1,23 +1,104 @@
|
||||
XBMC Backup
|
||||
|
||||
|
||||
About:
|
||||
I've had to recover my database, thumbnails, and source configuration enough times that I just wanted a quick easy way to back them up. That is what this addon is meant to do.
|
||||
|
||||
Usage:
|
||||
Remote Destination/File Selection:
|
||||
|
||||
In the addon settings you can define a remote path for the destination of your xbmc files. Each backup will create a folder named in a month, day, year format so you can create multiple backups.
|
||||
In the addon settings you can define a remote path for the destination of your xbmc files. Each backup will create a folder named in a YYYYMMDDHHmm format so you can create multiple backups. You can keep a set number of backups by setting the integer value of the Backups to Keep setting greater than 0.
|
||||
|
||||
If you choose to compress your backups there are a few things you need to be aware of. Compressing takes place on the server you are trying to backup and then only the archive is copied to the remote backup location. This means you must have sufficient space available to allow for creating the archive. When restoring a zipped archive the process is the same. It is first copied to your local storage, extracted, and the contents put to their correct locations. The archive is then deleted. Zipped and non-zipped backups can be mixed in the same archive folder.
|
||||
|
||||
On the Backup Selection page you can select which items from your user profile folder will be sent to the backup location. By default all are turned on except the Addon Data directory.
|
||||
|
||||
To restore your data simply switch the Mode from "backup" to "restore" and type the date of the backup you wish to restore from . The files will be copied from your remote directory to the local path. The file selection criteria will be used for the restore as well.
|
||||
You can also define non-XBMC directories on your device. See "Custom Directories" for more information on how these are handled.
|
||||
|
||||
Restores:
|
||||
|
||||
During the restore process there are a few checks and post-run procedures to know about.
|
||||
|
||||
The first is a version check. If you are restoring to a different version of XBMC than the one used to create the backup archive you'll get a warning. In most cases it is OK to proceed, just know that some specific items like addons and database files may not work correctly.
|
||||
|
||||
The next check is for an advancedsettings.xml file. If you've created this file and it exists in your restore archive you'll be asked to reboot XBMC. This is so that the file can be loaded and used for any special settings, mainly path substitutions, you may have had that would affect the rest of the restore. XBMC Backup will prompt you to continue the restore process when you reboot the program.
|
||||
|
||||
The last bit of post-processing is done after all the backup files have been restored. If you have restored your configuration files the addon will attempt to restore any system specific settings that it can from the guisettings.xml file. This is done by comparing the restored file with settings via the JSONPRC Settings.SetSettingValue method. Only system specific settings can be restored so you will get any custom views or skin specific settings back. See the FAQ for how to restore these.
|
||||
|
||||
|
||||
Scheduling:
|
||||
|
||||
You can also schedule backups to be completed on a set interval via the scheduling area. When it is time for the backup to run it will be executed in the background.
|
||||
You can schedule backups to be completed on a set interval via the scheduling area. When it is time for the backup to run it will be executed in the background.
|
||||
|
||||
What this Addon Will Not Do:
|
||||
When using the "Shutdown" function this will call XBMC's Shutdown method as defined in System Settings -> Power Saving -> Shutdown Function. This can be simply exiting xbmc, hibernating, or shutting down your htpc.
|
||||
|
||||
This is not meant as an XBMC file sync solution. If you have multiple frontends you want to keep in sync this addon may work in a "poor man's" sort of way but it is not intended for that.
|
||||
Running the Program:
|
||||
|
||||
This backup will not check the backup destination and delete files that do not match. It is best to only do one backup per day so that each folder is correct.
|
||||
Running the program will allow you to select Backup or Restore as a running mode. Selecting Backup will push files to your remote store using the addon settings you defined. Selecting Restore will give you a list of restore points currently in your remote destination. Selecting one will pull the files matching your selection criteria from the restore point to your local XBMC folders.
|
||||
|
||||
Custom Directories:
|
||||
|
||||
You can define custom directories that are not a part of your XBMC folder structure for backup. These create a custom_hash folder in your backup destination. The hash for these folders is very important. During a restore if the hash of the file path in Custom 1 does not match the hash in the restore folder it will not move the files. This is to prevent files from being restored to the wrong location in the event you change file paths in the addon settings. A dialog box will let you know if file paths do not match up.
|
||||
|
||||
Up to 2 Custom directories can be specified.
|
||||
|
||||
Using Dropbox:
|
||||
|
||||
Using Dropbox as a storage target adds a few steps the first time you wish to run a backup. First you will need to sign-up for you own developer app key and secret by visiting https://www.dropbox.com/developers. Name your app whatevery you want, and make it an "App Folder" type application. Your app can run in developer mode and you should never need to apply for production status. This is to get around Dropbox's rule not allow distribution of production key/secret pairs.
|
||||
|
||||
Once you have your app key and secret add them to the settings. XBMC Backup now needs to have permission to access your Dropbox account. When you see the prompt regarding the Dropbox URL Authorization DO NOT click OK. Check your XBMC log file for a line from "script.xbmcbackup" containing the authorization URL. Cut/paste this into a browser and click Allow. Once this is done you can click "OK" in XBMC and proceed as normal. XBMC Backup will cache the authorization code so you only have to do this once, or if you revoke the Dropbox permissions.
|
||||
|
||||
|
||||
Scripting XBMC Backup:
|
||||
|
||||
If you wish to script this addon using an outside scheduler or script it can be given parameters via the Xbmc.RunScript() or JsonRPC.Addons.ExecuteAddon() methods. Parameters given are either "backup" or "restore" to launch the correct program mode. If mode is "restore", an additional "archive" parameter can be given to set the restore point to be used instead of prompting via the GUI. An example would be:
|
||||
|
||||
Python code:
|
||||
-------------------------------------------
|
||||
RunScript(script.xbmcbackup,mode=backup)
|
||||
-------------------------------------------
|
||||
|
||||
or
|
||||
|
||||
JSON Request:
|
||||
-------------------------------------------
|
||||
{ "jsonrpc": "2.0", "method": "Addons.ExecuteAddon","params":{"addonid":"script.xbmcbackup","params":{"mode":"restore","archive":"000000000000"}}, "id": 1 }
|
||||
-------------------------------------------
|
||||
|
||||
There is also a windows parameter that can be used to check if XBMC Backup is running within a skin or from another program. It is attached to the home window, an example of using it would be the following:
|
||||
|
||||
Python code:
|
||||
-------------------------------------------
|
||||
#kick off the xbmc backup
|
||||
xbmc.executeJSONRPC('{ "jsonrpc": "2.0", "method": "Addons.ExecuteAddon","params":{"addonid":"script.xbmcbackup","params":{"mode":"backup"}}, "id": 1 }')
|
||||
|
||||
#sleep for a few seconds to give it time to kick off
|
||||
xbmc.sleep(10000)
|
||||
|
||||
window = xbmcgui.Window(10000)
|
||||
|
||||
while (window.getProperty('script.xbmcbackup.running') == 'true'):
|
||||
#do something here, probably just sleep for a few seconds
|
||||
xbmc.sleep(5000)
|
||||
|
||||
#backup is now done, continue with script
|
||||
-------------------------------------------
|
||||
FAQ:
|
||||
|
||||
I can't see any restore points when choosing "Restore", what is the problem?
|
||||
|
||||
If you've created restore points with an older version of the addon (pre 0.3.6) you may see this issue. New versions of the addon look for a file called xbmcbackup.val to validate that a folder is a valid restore archive. Your older restore folders may not have this file. All you need to do is create a blank text file and rename it to xbmcbackup.val. Then put this file inside the archive directory. Your restore points should show up after selecting "Restore" in the addon again.
|
||||
|
||||
Several settings aren't being restored, this includes views, weather, etc. How do I get these back?
|
||||
|
||||
GUISETTINGS.xml is a configuration file used heavily by XBMC for remembering GUI specific settings. Due to the fact that XBMC reads this file on startup, and writes from memory to this file on shutdown; it is not possible to restore this file while XBMC is running. This addon attempts to restore what settings it can via the JSONRPC interface, however you will still most likely be missing your specific skin settings and view settings. To get these back you must manually move this file from your backup archives if you wish to restore it. User SouthMark has posted the following steps for restoring in the OpenELEC system where this is more difficult:
|
||||
|
||||
1. Run the restore of your backup
|
||||
2. SSH using putty to the IP Address of your media centre username: root Password openelec
|
||||
3. Type "systemctl stop xbmc.service" - Your media center machine should now go blank
|
||||
5. Connect to your machine using WinSCP and copy the guisettings.xml file to the userdata folder (this is the guisettings.xml file from your backup), alternatively you can copy this file directly to an SMB share and use putty to move it to the right spot.
|
||||
6. go back to your putty window and type "systemctl start xbmc.service"
|
||||
|
||||
Why is the Addon prompting me to restart XBMC to continue?
|
||||
|
||||
If you have an advancedsettings file in your restore folder the addon will ask you if you want to restore this file and restart xbmc to continue. This is because the advancedsettings file may contain path substitution information that you want to be loaded when doing the rest of your restore. By restoring this file and restarting xbmc it will be loaded and the rest of your files will go where they are supposed to. If you know your file does not contain any path substitutions you can select "no" and continue as normal.
|
||||
|
||||
|
||||
69
addon.xml
69
addon.xml
@@ -1,37 +1,84 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<addon id="script.xbmcbackup"
|
||||
name="XBMC Backup" version="0.1.7" provider-name="robweber">
|
||||
name="XBMC Backup" version="0.6.1" provider-name="robweber">
|
||||
<requires>
|
||||
<import addon="xbmc.python" version="2.0"/>
|
||||
<import addon="xbmc.python" version="2.14.0"/>
|
||||
</requires>
|
||||
<extension point="xbmc.python.script" library="default.py">
|
||||
<provides>executable</provides>
|
||||
</extension>
|
||||
<extension point="xbmc.service" library="scheduler.py" start="startup" />
|
||||
<extension point="xbmc.addon.metadata">
|
||||
<summary lang="ar">إنسخ إحتياطياً قاعده بيانات إكس بى إم سى وملفات اﻹعدادات فى حاله وقوع إنهيار مع إمكانيه اﻹسترجاع</summary>
|
||||
<summary lang="be">Backup and restore your XBMC database and configuration files in the event of a crash or file corruption.</summary>
|
||||
<summary lang="bg">Добавката може да създава резервно копие на XBMC и възстановява (след това) Вашата база от данни и настройки, в случай на необходимост.</summary>
|
||||
<summary lang="ca">Feu còpies de seguretat i restaureu la vostra base de dades de l'XBMC i dels fitxers de configuració en el cas de fallada o corrupció dels fitxers.</summary>
|
||||
<summary lang="cs">Zálohování a obnovení XBMC databáze a konfiguračních souborů v případě chyby nebo poškození souborů.</summary>
|
||||
<summary lang="da">Sikkerhedskopiér og genskab din XBMC database og konfigurationsfiler i tilfælde af et nedbrud eller en ødelagt fil.</summary>
|
||||
<summary lang="de">Die XBMC Datenbank sichern und bei Dateiverlust oder Beschädigung wiederherstellen.</summary>
|
||||
<summary lang="el">Δημιουργήστε αντίγραφα ασφαλείας της βάσης δεδομένων και των ρυθμίσεων του XBMC για την πιθανότητα σφαλμάτων ή καταστροφής αρχείων.</summary>
|
||||
<summary lang="en">Backup and restore your XBMC database and configuration files in the event of a crash or file corruption.</summary>
|
||||
<summary lang="es">Haz copia de seguridad de tu base de datos y configuración y recupera todo en caso de fallo.</summary>
|
||||
<summary lang="en_NZ">Backup and restore your XBMC database and configuration files in the event of a crash or file corruption.</summary>
|
||||
<summary lang="en_US">Backup and restore your XBMC database and configuration files in the event of a crash or file corruption.</summary>
|
||||
<summary lang="es">Haz copia de seguridad de tu base de datos y configuración y recupera todo en caso de fallo.</summary>
|
||||
<summary lang="es_MX">Respalda y restaura tu base de datos y archivos de configuración de XBMC dado el evento de un cuelgue o corrupción de archivos. </summary>
|
||||
<summary lang="eu">XBMC datu-basea eta konfigurazio fitxategien babes-kopia egin kraskatze edo fitxategi hondamena saihesteko</summary>
|
||||
<summary lang="fr">Sauvegarder et restaurer vos bases de données XBMC et vos fichiers de configuration en cas de crash ou de fichiers corrompus.</summary>
|
||||
<summary lang="fr_CA">Sauvegarder et restaurer votre base de données et vos fichiers de configuration XBMC dans le cas d'un plantage ou d'une corruption de fichier.</summary>
|
||||
<summary lang="gl">Crear copia de seguranza e restaurar a base de datos e ficheiros de configuración de XBMC no caso dun fallo ou corrupción de ficheiros.</summary>
|
||||
<summary lang="he">גיבוי ושחזור מסד הנתונים וקבצי ההגדרות של XBMC במקרה של קריסה או קבצים פגומים.</summary>
|
||||
<summary lang="hr">Sigurnosno kopirajte i obnovite vašu XBMC bazu podataka i datoteke podešavanja prilikom rušenja ili oštećenja datoteka.</summary>
|
||||
<summary lang="hu">Biztonsági mentés készítése az XBMC adatbázisról és a beállítófájlokról vagy állítsa helyre azokat egy rendszerösszeomlás vagy adatvesztés után.</summary>
|
||||
<summary lang="id">Cadangkan dan kembalikan basis data XBMC Anda beserta berkas konfigurasi apabila terjadi kerusakan atau korupsi berkas.</summary>
|
||||
<summary lang="it">Effettua il backup o ripristina il tuo database di XBMC e i file di configurazione qualora si verifichi una chiusura imprevista o un danneggiamento dei file.</summary>
|
||||
<summary lang="ja">システムのクラッシュやファイル破損に備えて、XBMC のデータベースや設定ファイルをバックアップ・リストアできます。</summary>
|
||||
<summary lang="ko">XBMC 데이터베이스와 설정 파일을 백업하고 복구합니다.</summary>
|
||||
<summary lang="lt">Atsarginė kopija katra atkuria jūsų XBMC duomenų bazę ir konfigūracijos failus avarijos ar failo sugadinimo metu.</summary>
|
||||
<summary lang="pl">Stwórz kopię bezpieczeńśtwa oraz przywróć twoją bazę XBMC łącznie z plikami konfiguracyjnymi w przypadku awarii lub uszkodzenia plików.</summary>
|
||||
<summary lang="pt_BR">Backup e restaure o banco de dados do XBMC e seus arquivos de configuração, no caso de falha ou corrupção de arquivo</summary>
|
||||
<summary lang="nl">Back-up en herstel je XBMC database en configuratiebestanden in geval van een crash of bestandscorruptie.</summary>
|
||||
<summary lang="no">Sikkerhetskopier og gjenopprett dine XBMC-databaser og -konfigurasjonsfiler i tilfelle et krasj eller filkorrupsjon.</summary>
|
||||
<summary lang="pl">Stwórz kopię bezpieczeństwa oraz przywróć twoją bazę danych XBMC łącznie z plikami konfiguracyjnymi, w przypadku awarii lub uszkodzenia plików.</summary>
|
||||
<summary lang="pt">Crie cópias de segurança da base de dados do XBMC e dos ficheiros de configuração. Pode restaurar o conteúdo se ocorrer um crash ou corrupção de ficheiros.</summary>
|
||||
<summary lang="pt_BR">Faça backup e restaure o banco de dados do XBMC e seus arquivos de configuração, no caso de falha ou corrupção de arquivo.</summary>
|
||||
<summary lang="ru">Сохраняйте и восстанавливайте базу данных и конфигурационные файлы XBMC, чтоб не допустить потерю данных в случае аварии или повреждений файлов.</summary>
|
||||
<summary lang="sk">Zálohovanie a obnova XBMC databázy a konfiguračných súborov pre prípad havárie alebo poškodenia súboru.</summary>
|
||||
<summary lang="sv">Ta backupp av eller återställ din XBMC-databas och konfigurationsfiler i händelse av en krash eller filkorruption.</summary>
|
||||
<summary lang="zh">备份和恢复 XBMC 数据库和配置文件,以防范系统崩溃或文件损坏问题。</summary>
|
||||
<description lang="ar">أسبق لك ان أضعت تخصيصاتك المفضله ورغبت لو كان بإمكانك نسخهم إحتياطياً ؟ اﻷن بات بإمكانك ذلك. يمكنك إستخراج قاعده بياناتك وقوائم التشغيل والملحقات وتخصيصاتك المفضله وغيره الى اى مصدر خارجى قابل للكتابه من قِبَل إكس بى إم سى او مباشرتاً الى نظام تخزين سحابى. يمكنك تفعيل النسخ اﻹحتياطى عند الحاجه او جدولته مُسبقاً</description>
|
||||
<description lang="be">Ever hosed your XBMC configuration and wished you'd had a backup? Now you can with one easy click. You can export your database, playlist, thumbnails, addons and other configuration details to any source writeable by XBMC or directly to Dropbox cloud storage. Backups can be run on demand or via a scheduler. </description>
|
||||
<description lang="bg">Някога да сте губили всички настройки, които сте правили по XBMC? А разполагахте ли с резервно копие? Е сега можете да създавате резервни копия само с едно кликване. Можете да изнасяте базата от данни, плейлистите, миниатюрите, добавките и други, на всяко място до което XBMC има права за писане или директно в Dropbox. Можете да настроите и автоматично създаване на копия през определен интервал от време.</description>
|
||||
<description lang="ca">Alguna vegada s'ha carregat la seva configuració de l'XBMC i ha desitjat tenir una còpia de seguretat? Ara pot fer-ho amb un simple clic. Pot exportar la seva base de dades, llista de reproducció, miniatures, complements i altres detalls de la configuració a qualsevol font que pugui ser escrita per l'XBMC o directament a l'emmagatzematge en el núvol Dropbox. Les còpies de seguretat es poden executar sota demanda o per mitjà d'un planificador.</description>
|
||||
<description lang="da">Har du prøvet at slette din XBMC opsætning, og ønsket at du havde haft sikkerhedskopi? Nu kan du få det med et enkelt klik. Du kan eksportere din database, afspilninglister, miniaturebilleder, addons og andre opsætningsdetaljer til enhver kilde, som er skrivbar for XBMC eller direkt til Dropbox cloud lager. Sikkerhedskopier kan køres manuelt eller via en tidsplan.</description>
|
||||
<description lang="de">Jemals deine XBMC Konfiguration zerschossen und dir dann gewünscht, dass ein Backup existiert? Jetzt kannst du eine Sicherung mit nur einem Klick erzeugen. Du kannst deine Datenbanen, Playlisten, Thumbnails, Addons und andere Details zu einem Ort deiner Wahl sichern.</description>
|
||||
<description lang="en">Ever hosed your XBMC configuration and wished you'd had a backup? Now you can with one easy click. You can export your database, playlist, thumbnails, addons and other configuration details to any source writeable by XBMC. Backups can be run on demand or via a scheduler. </description>
|
||||
<description lang="el">Σας έτυχε ποτέ να χάσετε τις ρυθμίσεις του XBMC και να εύχεστε να είχατε αντίγραφο ασφαλείας; Πλέον μπορείτε με ένα απλό κλικ. Μπορείτε να εξάγετε τη βάση δεδομένων, τις λίστες αναπαραγωγής, τις μικρογραφίες, τα πρόσθετα και άλλες λεπτομέρειες της εγκατάστασης σε οποιαδήποτε πηγή στην οποία μπορεί να γράψει το XBMC, ή απευθείας στο λογαριασμό σας στο Dropbox. Τα αντίγραφα μπορούν να γίνονται κατ' επιλογή ή μέσω προγραμματισμού.</description>
|
||||
<description lang="en">Ever hosed your XBMC configuration and wished you'd had a backup? Now you can with one easy click. You can export your database, playlist, thumbnails, addons and other configuration details to any source writeable by XBMC or directly to Dropbox cloud storage. Backups can be run on demand or via a scheduler. </description>
|
||||
<description lang="en_NZ">Ever hosed your XBMC configuration and wished you'd had a backup? Now you can with one easy click. You can export your database, playlist, thumbnails, addons and other configuration details to any source writeable by XBMC or directly to Dropbox cloud storage. Backups can be run on demand or via a scheduler. </description>
|
||||
<description lang="en_US">Ever hosed your XBMC configuration and wished you'd had a backup? Now you can with one easy click. You can export your database, playlist, thumbnails, addons and other configuration details to any source writeable by XBMC or directly to Dropbox cloud storage. Backups can be run on demand or via a scheduler. </description>
|
||||
<description lang="es">¿Alguna vez te has cargado la configuración de XBMC y habrías deseado tener una copia de seguridad? Ahora puedes tenerla con un único click. Exporta tus base de datos, listas de reproducción, miniaturas, addons y resto de configuraciones a cualquier fuente accesible por XBMC o a tu almacenamiento en Dropbox. Las copias de seguridad pueden programarse o realizarse bajo demanda.</description>
|
||||
<description lang="es_MX">¿Alguna vez haz echado a perder tu configuración de XBMC y haz deseado tener un respaldo? Ahora puedes tenerlo con un simple click. Puedes exportar tu base de datos, listas de reproducción, miniaturas, addons y otros detalles de configuración correspondientes a cualquier fuente que pueda escribir XBMC. Los respaldos pueden ser efectuados a pedido o mediante una programación temporal</description>
|
||||
<description lang="fr">Avez-vous déjà perdu votre configuration XBMC et espéré avoir fait une sauvegarde ? Maintenant, vous pouvez le faire en un simple click. Vous pouvez exporter vos bases de données, playlists, miniatures, addons et autres fichiers de configuration vers n'importe quel endroit accessible depuis XBMC.</description>
|
||||
<description lang="he">Ever hosed your XBMC configuration and wished you'd had a backup? Now you can with one easy click. You can export your database, playlist, thumbnails, addons and other configuration details to any source writeable by XBMC. Backups can be run on demand or via a scheduler. </description>
|
||||
<description lang="fr_CA">Avez-vous déjà ruiné votre configuration XBMC et souhaité avoir une sauvegarde? Vous le pouvez maintenant en un seul clic. Vous pouvez exporter vos base de données, liste de lecture, imagettes, addiciels et autres détails de configurations vers n'importe quelle source inscriptible depuis XBMC ou directement vers le stockage en nuage Dropbox. Les sauvegardes peuvent être exécutées sur demande ou à l'aide d'un ordonnanceur.</description>
|
||||
<description lang="gl">De seguro que algunha vez eliminou a configuración do XBMC e desexou ter unha copia de seguranza?. Agora pode cun só clic. Pode exportar a súa base de datos, listaxes de reprodución, miniaturas, complementos e outros detalles da configuración a calquera medio escribíbel ou directamente ao Dropbox. As copias de seguranza pódense executar baixo demanda ou programadas.</description>
|
||||
<description lang="he">האם אי פעם נפגמו הגדרות XBMC וייחלת שהיה לך גיבוי ? כעת אתה יכול ליצור כזה בלחיצת כפתור קלילה. ניתן לייצא את בסיס הנתונים, רשימות ההשמעה, התמונות הממוזערות, הרחבות והגדרות נוספות לכל יעד שיש ל-XBMC הרשאת כתיבה לו או ישירות לשירות אחסון הענן דרופבוקס. ניתן לתזמן מראש גיבויים או להריצם ידנית.</description>
|
||||
<description lang="hr">Jeste li ikada oštetili vaša XBMC podešavanja i poželjeli ste ih obnoviti iz sigurnosne kopije? Sada to možete jednim klikom. Možete izvesti vašu bazu podataka, popis izvođenja, minijature, dodatke i ostale pojedinosti podešavanja na svaki izvor dostupan XBMC-u ili izravno na Dropbox oblak pohrane. Sigurnosno kopiranje se može pokrenuti na zahtjev ili u planiranom vremenu.</description>
|
||||
<description lang="hu">Sikerült már összekutyulni az XBMC beállításait és jó lett volna egy biztonsági mentés? Most megteheti egy kattintással. Exportálhatja az adatbázisait, lejátszáslistáit, könyvjelzőit, kiegészítőit és egyéb beállításokat bármely, az XBMC által írható tárhelyre vagy közvetlenül a Dropbox felhő tárolóba. A mentések kézzel vagy időzítetten indíthatóak.</description>
|
||||
<description lang="id">Pernah membuat berantakan konfigurasi XBMC Anda dan berharap Anda punya cadangannya? Sekarang Anda dapat melakukannya dengan klik mudah. Anda dapat mengekspor basis data, daftar putar, gambar kecil, addon dan rincian konfigurasi lainnya ke sumber mana saja yang dapat ditulis oleh XBMC atau langsung ke penyimpanan awan Dropbox. Pencadangan dapat dijalankan sesuai permintaan atau terjadwal.</description>
|
||||
<description lang="it">Hai mai distrutto la tua configurazione di XBMC ma non ne avevi una copia di backup? Ora puoi farlo con un semplice click. Puoi esportare il tuo database, le playlist, le anteprime, gli add-on ed altre configurazioni su ogni percorso accessibile da XBMC o direttamente su Dropbox. I backup si possono fare a richiesta o possono essere pianificati.</description>
|
||||
<description lang="ja">XBMCの設定が消えてしまい、バックアップをとっておけば... と思ったことはありますか?これからは1クリックで簡単にバックアップできます。データベース、プレイリスト、サムネール、アドオン、その他設定項目を、XBMC が書き込み可能なメディアに書き出せます。Dropbox クラウドストレージにも直接書き出せます。スケジューラによる自動バックアップと、オンデマンドでのバックアップの両方が使えます。</description>
|
||||
<description lang="ko">XBMC 설정 백업본이 있었으면 하고 원했던 적이 있습니까? 이제 한 번의 클릭으로 가능합니다. 데이터베이스, 재생목록, 썸네일, 애드온과 기타 세부 설정을 어디에나 내보내거나 직접 Dropbox 에 저장할 수 있습니다. 백업은 수동 또는 예약으로 실행할 수 있습니다.</description>
|
||||
<description lang="lt">Kada naujinate ir konfiguruojate savo XBMC ar susimastėte, kad jums reikalinga atsarginė kopija? Dabar galite tai atlikti vienu spustelėjimu. Savo duomenų bazes, atkūrimą, miniatiūras, priedus ir kitas konfigūracijos failus galite eksportuoti iš bet kokio šaltinio. Atsarginė(-ės) kopija(-os) gali būti paleistos pareikalavus arba per tvarkaraštį.</description>
|
||||
<description lang="pl">Straciłeś kiedyś swoją konfigurację XBMC i marzyłeś o tym by mieć backup? Teraz już możesz i to w prosty sposób. Możesz eksportować twoją bazę, playlisty, miniatury, dodatki oraz wiele więcej do dowolnego źródłą prosto z XBMC. Kopia bezpieczeństwa może być uruchomiona na rządanie lub przez plan.</description>
|
||||
<description lang="pt_BR">Sempre se preocupou com sua configuração do XBMC e desejou ter backup? Agora você pode, e somente com um simples clique. Você pode exportar seu banco de dados, lista de reprodução, miniaturas, addons e outros detalhes de configuração para qualquer fonte gravável pelo XBMC. Os backups podem ser executados sob demanda ou ser agendados.</description>
|
||||
<description lang="nl">Ooit je XBMC configuratie verknalt en gewenst dat je een backup had? Nu kan dat met een simpele klik. Je kunt je bibliotheek, afspeellijsten, miniaturen, addons en andere configuratie optes exporteren naar elke bron die door XBMC beschrijfbaar is of direct naar een Dropbox cloud opslag. Backups kunnen op verzoek of via een rooster gedraaid worden.</description>
|
||||
<description lang="no">Har du noen gang ødelagt XBMC-installasjonen din og ønsket at du hadde en sikkerhetskopi? Det kan du nå med et enkelt trykk. Du kan eksportere din database, spillelister, miniatyrer, utvidelser og andre konfigurasjonsdetaljer til enhver kilde som er tilgjengelig for XBMC eller til Dropbox. Du kan lage sikkerhetskopier ved behov eller med en timeplan.</description>
|
||||
<description lang="pl">Straciłeś kiedyś swoją konfigurację XBMC i marzyłeś o kopii zapasowej? Teraz już możesz i to w prosty sposób. Możesz eksportować swoją bazę, listy odtwarzania, miniatury, wtyczki oraz wiele więcej do dowolnego źródła bezpośrednio z XBMC. Kopia bezpieczeństwa może być uruchomiona na żądanie lub wg harmonogramu.</description>
|
||||
<description lang="pt">Já arruinou a sua configuração do XBMC e desejou ter feito uma cópia de segurança? Agora pode, com apenas um clique. Exporte a base de dados, listas de reprodução, miniaturas, add-ons e outras configurações para qualquer fonte acedível pelo XBMC. As cópias de segurança podem ser executadas manualmente ou por temporizador.</description>
|
||||
<description lang="pt_BR">Sempre se preocupou com sua configuração do XBMC e desejou ter um backup? Agora você pode com um simples clique. Você pode exportar seu banco de dados, listas de reprodução, miniaturas, addons e outros detalhes de configuração para qualquer fonte gravável pelo XBMC ou diretamente ao armazenamento na nuvem Dropbox. Os backups podem ser executados sob demanda ou por agendamento.</description>
|
||||
<description lang="ru">Хотите получить резервную копию настроек XBMC? Теперь можете это сделать одним щелчком мыши. Вы можете выгрузить вашу базу данных, плейлисты, эскизы, дополнения и другую нужную Вам информацию и сохранить её с помощью XBMC или выгрузить в облачное хранилище Dropbox. Резервную копию можно сделать по требованию или запускать по расписанию.</description>
|
||||
<description lang="sk">Už ste niekedy poškodili konfiguráciu XBMC a priali si mať zálohu? Teraz môžete - na jeden klik. Môžete exportovať Vašu databázu, playlist, náhľady, doplnky a konfigurácie na ktorýkoľvek zdroj zapisovateľný XBMC. Zálohy môžu byť púšťané na požiadanie alebo plánovačom. </description>
|
||||
<description lang="sv">Har du någonsin tappat bort din XBMC konfiguration och önskat att du hade en backup? Nu kan du enkelt med ett klick. Du kan exportera din databas, spellista, minityrer, tillägg och andra konfigurationsdetaljer till valfri källa som är skrivbar för XBMC. Backupper kan köras på begäran eller via scheman.</description>
|
||||
<description lang="zh">你是否经常折腾你的 XBMC,因而希望能够有个备份?你可以把资料库、播放列表、缩略图、插件和其他配置细节导出到 XBMC 可以写入的任意位置。备份可以按需运行或通过计划任务执行。</description>
|
||||
<language></language>
|
||||
<platform>all</platform>
|
||||
<license>The MIT License</license>
|
||||
<forum>http://forum.xbmc.org/showthread.php?tid=129499</forum>
|
||||
<source>https://github.com/robweber/xbmcbackup</source>
|
||||
</extension>
|
||||
</addon>
|
||||
|
||||
|
||||
|
||||
216
changelog.txt
216
changelog.txt
@@ -1,20 +1,198 @@
|
||||
[b]Version 0.1.7[/b]
|
||||
Version 0.6.0
|
||||
|
||||
fix for growing backups - thanks brokeh
|
||||
|
||||
Version 0.6.0
|
||||
|
||||
fixed typo in Dropbox rmfile command
|
||||
|
||||
Version 0.5.9
|
||||
|
||||
fixed dropbox unicode error
|
||||
create restored version of guisettings for easy local restoration
|
||||
|
||||
Version 0.5.8.7
|
||||
|
||||
allow limited updating of guisettings file through json
|
||||
|
||||
Version 0.5.8.6
|
||||
|
||||
show notification if some files failed
|
||||
check if destination is writeable - thanks war59312
|
||||
|
||||
Version 0.5.8.5
|
||||
|
||||
added custom library nodes to config backup options - thanks Ned Scott
|
||||
|
||||
Version 0.5.8.4
|
||||
|
||||
backup compression should use zip64 as sizes may be over 2GB
|
||||
need to expand out path -bugfix
|
||||
|
||||
Version 0.5.8
|
||||
|
||||
fixes path substitution errors
|
||||
|
||||
Version 0.5.7
|
||||
|
||||
added option to compress backups, uses local source for staging the zip before sending to remote
|
||||
|
||||
Version 0.5.6
|
||||
|
||||
fix dropbox delete recursion error - thanks durd
|
||||
updated language files
|
||||
|
||||
Version 0.5.5
|
||||
|
||||
fix for dropbox errors during repeated file upload attempts
|
||||
|
||||
Version 0.5.4
|
||||
|
||||
check xbmc version when doing a restore
|
||||
|
||||
Version 0.5.3
|
||||
|
||||
updated python version
|
||||
|
||||
Version 0.5.2
|
||||
|
||||
added additional script and window parameters, thanks Samu-rai
|
||||
|
||||
critical error in backup rotation
|
||||
|
||||
updated progress bar display
|
||||
|
||||
Version 0.5.1
|
||||
|
||||
updated for new Gotham xbmc python updates
|
||||
|
||||
Version 0.5.0
|
||||
|
||||
New Version for Gotham
|
||||
|
||||
Version 0.4.6
|
||||
|
||||
modified backup folder names to include time, also modified display listing
|
||||
|
||||
Version 0.4.5
|
||||
|
||||
added version info to logs
|
||||
|
||||
added try/catch for unicode errors
|
||||
|
||||
Version 0.4.4
|
||||
|
||||
modified the check for invalid file types
|
||||
|
||||
Version 0.4.3
|
||||
|
||||
added error message if remote directory is blank
|
||||
|
||||
added license tag
|
||||
|
||||
Version 0.4.2
|
||||
|
||||
Added support for userdata/profiles folder - thanks TUSSFC
|
||||
|
||||
Version 0.4.1
|
||||
|
||||
added encode() around notifications
|
||||
|
||||
Version 0.4.0
|
||||
|
||||
fixed settings display error - thanks zer04c
|
||||
|
||||
Version 0.3.9
|
||||
|
||||
added "just once" scheduler for one-off type backups
|
||||
show notification on scheduler update
|
||||
updated language files from Transifex
|
||||
|
||||
Version 0.3.8
|
||||
|
||||
added advancedsettings check on restore. prompts user to restore only this file and restart xbmc to continue. This fixes issues where path substitution was not working during restores - thanks ctrlbru
|
||||
|
||||
Version 0.3.7
|
||||
|
||||
added optional addon.xml tags
|
||||
|
||||
update language files from Transifex
|
||||
|
||||
Version 0.3.6
|
||||
|
||||
added up to 2 custom directories, can be toggled on/off
|
||||
|
||||
added a check for backup verification before rotation - no more deleting non backup related files
|
||||
|
||||
use monitor class for onSettingsChanged method
|
||||
|
||||
Version 0.3.5
|
||||
|
||||
test of custom directories - only 1 at the moment
|
||||
|
||||
Version 0.3.4
|
||||
|
||||
added ability to take parameters via RunScript() or JSONRPC.Addons.ExecuteAddon()
|
||||
|
||||
Version 0.3.3
|
||||
|
||||
updated xbmc python version (2.1.0)
|
||||
|
||||
Version 0.3.2
|
||||
|
||||
added settings for user provided Dropbox key and secret
|
||||
|
||||
Version 0.3.1
|
||||
|
||||
added try/except for multiple character encodings
|
||||
|
||||
remove token.txt file if Dropbox Authorization is revoked
|
||||
|
||||
can shutdown xbmc after scheduled backup
|
||||
|
||||
Version 0.3.0
|
||||
|
||||
major vfs rewrite
|
||||
|
||||
Added Dropbox as storage target
|
||||
|
||||
updated gui/removed settings - thanks SFX Group for idea!
|
||||
|
||||
Version 0.2.3
|
||||
|
||||
first official frodo build
|
||||
|
||||
Version 0.2.2
|
||||
|
||||
fix for backup rotation sort
|
||||
|
||||
Version 0.2.1
|
||||
|
||||
added ability to rotate backups, keeping a set number of days
|
||||
|
||||
Version 0.2.0
|
||||
|
||||
removed the vfs.py helper library
|
||||
|
||||
default.py file now uses xbmcvfs python library exclusively for listing directories and copy operations
|
||||
|
||||
Version 0.1.7
|
||||
|
||||
minor bug fixes and translations updates
|
||||
|
||||
[b]Version 0.1.6[/b]
|
||||
Version 0.1.6
|
||||
|
||||
merged scheduler branch with master, can now schedule backups on an interval
|
||||
|
||||
[b]Version 0.1.5[/b]
|
||||
Version 0.1.5
|
||||
|
||||
pulled xbmcbackup class into separate library
|
||||
|
||||
[b]Version 0.1.4[/b]
|
||||
Version 0.1.4
|
||||
|
||||
added more verbose error message for incorrect paths
|
||||
|
||||
[b]Version 0.1.3[/b]
|
||||
Version 0.1.3
|
||||
|
||||
backup folder format - thanks zeroram
|
||||
|
||||
@@ -26,59 +204,53 @@ updated utf-8 encoding for all logging
|
||||
|
||||
backup now uses date as folder name, restore allows user to type date of last backup
|
||||
|
||||
[b]Version 0.1.2[/b]
|
||||
Version 0.1.2
|
||||
|
||||
added French language translation - thanks mikebzh44
|
||||
|
||||
added some utf-8 encoding tags to filenames
|
||||
|
||||
[b]Version 0.1.1[/b]
|
||||
Version 0.1.1
|
||||
|
||||
added check for key in vfs.py - Thanks Martijn!
|
||||
|
||||
[b]Version 0.1.0[/b]
|
||||
Version 0.1.0
|
||||
|
||||
removed transparency from icon.png
|
||||
|
||||
[b]Version 0.0.9 [/b]
|
||||
Version 0.0.9
|
||||
|
||||
modified vfs.py again to filter out xsp files (smart playlists). Created running list for these types of compressed files
|
||||
|
||||
added enable/disable logging toggle in settings
|
||||
|
||||
[b]Version 0.0.8[/b]
|
||||
Version 0.0.8
|
||||
|
||||
modified vfs.py script to exclude handling zip files as directories, added keymap and peripheral data folders in the "config" section
|
||||
|
||||
[b]Version 0.0.7[/b]
|
||||
Version 0.0.7
|
||||
|
||||
removed "restore.txt" file and now write file listing to memory list instead
|
||||
|
||||
[b]Version 0.0.6[/b]
|
||||
Version 0.0.6
|
||||
|
||||
Added the vfs module created by paddycarey
|
||||
File Selection is now followed for both backup and restore options
|
||||
|
||||
[b]Version 0.0.5[/b]
|
||||
Version 0.0.5
|
||||
|
||||
Added option to manually type a path rather than browse for one (only one used)
|
||||
Show progress bar right away so you know this is doing something
|
||||
|
||||
[b]Version 0.0.4[/b]
|
||||
Version 0.0.4
|
||||
|
||||
Finished code for restore mode.
|
||||
|
||||
[b]Version 0.0.3[/b]
|
||||
Version 0.0.3
|
||||
|
||||
Added progress bar and "silent" option for running on startup or as a script
|
||||
|
||||
[b]Version 0.0.2[/b]
|
||||
Version 0.0.2
|
||||
|
||||
First version, should backup directories as needed
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
74
default.py
74
default.py
@@ -1,7 +1,73 @@
|
||||
import urlparse
|
||||
import xbmcgui
|
||||
import resources.lib.utils as utils
|
||||
from resources.lib.backup import XbmcBackup
|
||||
|
||||
#run the profile backup
|
||||
backup = XbmcBackup()
|
||||
def get_params():
|
||||
param = {}
|
||||
|
||||
if(len(sys.argv) > 1):
|
||||
for i in sys.argv:
|
||||
args = i
|
||||
if(args.startswith('?')):
|
||||
args = args[1:]
|
||||
param.update(dict(urlparse.parse_qsl(args)))
|
||||
|
||||
return param
|
||||
|
||||
if(backup.isReady()):
|
||||
backup.run()
|
||||
#the program mode
|
||||
mode = -1
|
||||
params = get_params()
|
||||
|
||||
|
||||
if("mode" in params):
|
||||
if(params['mode'] == 'backup'):
|
||||
mode = 0
|
||||
elif(params['mode'] == 'restore'):
|
||||
mode = 1
|
||||
|
||||
#if mode wasn't passed in as arg, get from user
|
||||
if(mode == -1):
|
||||
#figure out if this is a backup or a restore from the user
|
||||
mode = xbmcgui.Dialog().select(utils.getString(30010) + " - " + utils.getString(30023),[utils.getString(30016),utils.getString(30017)])
|
||||
|
||||
#check if program should be run
|
||||
if(mode != -1):
|
||||
#run the profile backup
|
||||
backup = XbmcBackup()
|
||||
|
||||
if(backup.remoteConfigured()):
|
||||
|
||||
if(mode == backup.Restore):
|
||||
#get list of valid restore points
|
||||
restorePoints = backup.listBackups()
|
||||
pointNames = []
|
||||
folderNames = []
|
||||
|
||||
for aDir in restorePoints:
|
||||
pointNames.append(aDir[1])
|
||||
folderNames.append(aDir[0])
|
||||
|
||||
selectedRestore = -1
|
||||
|
||||
if("archive" in params):
|
||||
#check that the user give archive exists
|
||||
if(params['archive'] in folderNames):
|
||||
#set the index
|
||||
selectedRestore = folderNames.index(params['archive'])
|
||||
utils.log(str(selectedRestore) + " : " + params['archive'])
|
||||
else:
|
||||
utils.showNotification(utils.getString(30045))
|
||||
utils.log(params['archive'] + ' is not a valid restore point')
|
||||
else:
|
||||
#allow user to select the backup to restore from
|
||||
selectedRestore = xbmcgui.Dialog().select(utils.getString(30010) + " - " + utils.getString(30021),pointNames)
|
||||
|
||||
if(selectedRestore != -1):
|
||||
backup.selectRestore(restorePoints[selectedRestore][0])
|
||||
|
||||
backup.run(mode)
|
||||
else:
|
||||
#can't go any further
|
||||
xbmcgui.Dialog().ok(utils.getString(30010),utils.getString(30045))
|
||||
utils.openSettings()
|
||||
|
||||
2
resources/.gitignore
vendored
Normal file
2
resources/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
|
||||
*.pyo
|
||||
@@ -1,48 +1,39 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Afrikaans language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/af/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">XBMC Rugsteun</string>
|
||||
<string id="30011">Algemeen</string>
|
||||
<string id="30012">Lêer Seleksie</string>
|
||||
<string id="30013">Skedulering</string>
|
||||
<string id="30016">Rugsteun</string>
|
||||
<string id="30017">Herstel</string>
|
||||
<string id="30023">Modus</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Dropbox Sleutel</string>
|
||||
<string id="30029">Dropbox Geheim</string>
|
||||
<string id="30032">Databasis</string>
|
||||
<string id="30033">Speellys</string>
|
||||
<string id="30036">Verpersoonlikte Gids 1</string>
|
||||
<string id="30037">Verpersoonlikte Gids 2</string>
|
||||
<string id="30059">Besoek https://www.dropbox.com/developers</string>
|
||||
<string id="30062">Uur van Dag</string>
|
||||
<string id="30063">Dag van Week</string>
|
||||
<string id="30064">Cron Skedule</string>
|
||||
<string id="30065">Sondag</string>
|
||||
<string id="30066">Maandag</string>
|
||||
<string id="30067">Dinsdag</string>
|
||||
<string id="30068">Woensdag</string>
|
||||
<string id="30069">Donderdag</string>
|
||||
<string id="30070">Vrydag</string>
|
||||
<string id="30071">Saterdag</string>
|
||||
<string id="30072">Elke Dag</string>
|
||||
<string id="30073">Elke Week</string>
|
||||
<string id="30074">Eerste Dag van Maand</string>
|
||||
<string id="30075">Pasgemaakte Skedule</string>
|
||||
<string id="30079">Net Vandag</string>
|
||||
<string id="30080">Profiele</string>
|
||||
<string id="30085">Weergawe Waarskuwing</string>
|
||||
</strings>
|
||||
|
||||
19
resources/language/Albanian/strings.xml
Normal file
19
resources/language/Albanian/strings.xml
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Albanian language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/sq/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30011">I përgjithsëm</string>
|
||||
<string id="30023">Mënyra</string>
|
||||
<string id="30032">Baza e të dhënave</string>
|
||||
<string id="30033">Lista e Lojës</string>
|
||||
<string id="30065">E Diel</string>
|
||||
<string id="30066">E Hënë</string>
|
||||
<string id="30067">E Martë</string>
|
||||
<string id="30068">E Mërkurë</string>
|
||||
<string id="30069">E Ejnte</string>
|
||||
<string id="30070">E Premte</string>
|
||||
<string id="30071">E Shtunë</string>
|
||||
<string id="30080">Profile</string>
|
||||
</strings>
|
||||
20
resources/language/Amharic/strings.xml
Normal file
20
resources/language/Amharic/strings.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Amharic language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/am/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30011">ባጠቃላይ</string>
|
||||
<string id="30023">ዘዴ </string>
|
||||
<string id="30032">ዳታቤዝ</string>
|
||||
<string id="30033">የሚጫወተው ዝርዝር </string>
|
||||
<string id="30062">ሰአት </string>
|
||||
<string id="30065">እሑድ </string>
|
||||
<string id="30066">ሰኞ</string>
|
||||
<string id="30067">ማክሰኞ</string>
|
||||
<string id="30068">ረቡዕ </string>
|
||||
<string id="30069">ሐሙስ</string>
|
||||
<string id="30070">አርብ</string>
|
||||
<string id="30071">ቅዳሜ</string>
|
||||
<string id="30080">ገጽታዎች </string>
|
||||
</strings>
|
||||
@@ -1,48 +1,47 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Arabic language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/ar/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">نسخ إكس بى إم سى اﻹحتياطى</string>
|
||||
<string id="30011">عام</string>
|
||||
<string id="30012">تحديد الملف</string>
|
||||
<string id="30016">نسخ إحتياطى</string>
|
||||
<string id="30017">إسترجاع</string>
|
||||
<string id="30018">إستعرض المسار</string>
|
||||
<string id="30019">نوع المسار</string>
|
||||
<string id="30020">إستعراض مسار بعيد</string>
|
||||
<string id="30021">إسم مجلد النسخ اﻹحتياطى</string>
|
||||
<string id="30023">الوضع</string>
|
||||
<string id="30024"> مسار نوع خارجي</string>
|
||||
<string id="30025">نوع مسار خارجي</string>
|
||||
<string id="30027">صندوق اﻹسقاط</string>
|
||||
<string id="30030">ملحقات المُستخدم</string>
|
||||
<string id="30032">قاعدة البيانات</string>
|
||||
<string id="30033">قائمة التشغيل</string>
|
||||
<string id="30040">إختر "نعم" ﻹسترجاع هذا الملف ثم إعاده تشغيل إكس بى إم سى</string>
|
||||
<string id="30041">إختر "لا" للمتابعه</string>
|
||||
<string id="30042">إستكمال اﻹسترجاع</string>
|
||||
<string id="30043">نسخ إكس بى إم سى اﻹحتياطى إكتشف وجود حاله إسترجاع غير مُنتهيه</string>
|
||||
<string id="30044">أترغب بالمتابعه ؟</string>
|
||||
<string id="30051">يُنشِئ قائمه بالملفات</string>
|
||||
<string id="30053">يبدأ النسخ اﻹحتياطى المجدول</string>
|
||||
<string id="30054">يَحَذِف ملفات النسخ اﻹحتياطى</string>
|
||||
<string id="30059">تفضل بزياره موقع https://www.dropbox.com/developers</string>
|
||||
<string id="30060">تفعيل الجدوله</string>
|
||||
<string id="30065">الاحد</string>
|
||||
<string id="30066">الاثنين</string>
|
||||
<string id="30067">الثلاثاء</string>
|
||||
<string id="30068">الاربعاء</string>
|
||||
<string id="30069">الخميس</string>
|
||||
<string id="30070">الجمعة</string>
|
||||
<string id="30071">السبت</string>
|
||||
<string id="30072">يومياً</string>
|
||||
<string id="30073">إسبوعياً</string>
|
||||
<string id="30074">أول يوم فى الشهر</string>
|
||||
<string id="30076">أطفئ بعد النسخ اﻹحتياطى</string>
|
||||
<string id="30077">أعد تشغيل إكس بى إم سى</string>
|
||||
<string id="30078">يتوجب عليك إعاده تشغيل إكس بى إم سى للمتابعه</string>
|
||||
<string id="30080">الملفات الشخصية</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,51 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Basque language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/eu/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">XBMC Babes-kopia</string>
|
||||
<string id="30011">Orokorra</string>
|
||||
<string id="30012">Fitxategi hautapena</string>
|
||||
<string id="30013">Plangintza</string>
|
||||
<string id="30016">Babes-kopia</string>
|
||||
<string id="30017">Berrezarri</string>
|
||||
<string id="30018">Arakatu bidea</string>
|
||||
<string id="30021">Babes-kopia karpeta izena</string>
|
||||
<string id="30023">Modua</string>
|
||||
<string id="30024">Idatzi Urruneko bidea</string>
|
||||
<string id="30025">Urruneko bide mota</string>
|
||||
<string id="30026">Mantentzeko babes-kopiak (0 denentzat)</string>
|
||||
<string id="30030">Erabiltzaile gehigarriak</string>
|
||||
<string id="30031">Gehigarri data</string>
|
||||
<string id="30032">Datu basea</string>
|
||||
<string id="30033">Zerrenda</string>
|
||||
<string id="30035">Konfigurazio fitxategiak</string>
|
||||
<string id="30045">Errorea: Urruneko bidea ez dago</string>
|
||||
<string id="30046">Abiarazten</string>
|
||||
<string id="30047">Karpeta lokala</string>
|
||||
<string id="30048">Urruneko karpeta</string>
|
||||
<string id="30049">Fitxategi zerrenda biltzen</string>
|
||||
<string id="30050">Urruneko bidea badago - fitxategi zaharrak eduki ditzake!</string>
|
||||
<string id="30051">Fitxategi zerrenda sortzen</string>
|
||||
<string id="30052">Fitxategia idazten</string>
|
||||
<string id="30053">Plangintzadun babes-kopia abiarazten</string>
|
||||
<string id="30054">Babeskopia ezabatzen</string>
|
||||
<string id="30060">Gaitu plangintza</string>
|
||||
<string id="30061">Plangintza</string>
|
||||
<string id="30062">Eguneko ordua</string>
|
||||
<string id="30063">Asteko eguna</string>
|
||||
<string id="30064">Cron plangintza</string>
|
||||
<string id="30065">Igandea</string>
|
||||
<string id="30066">Astelehena</string>
|
||||
<string id="30067">Asteartea</string>
|
||||
<string id="30068">Asteazkena</string>
|
||||
<string id="30069">Osteguna</string>
|
||||
<string id="30070">Ostirala</string>
|
||||
<string id="30071">Larunbata</string>
|
||||
<string id="30072">Egunero</string>
|
||||
<string id="30073">Astero</string>
|
||||
<string id="30074">Hilabeteko lehen egunean</string>
|
||||
<string id="30075">Plangintza pertsonalizatua</string>
|
||||
<string id="30080">Profilak</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,73 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Belarusian language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/be/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">XBMC Backup</string>
|
||||
<string id="30011">General</string>
|
||||
<string id="30012">File Selection</string>
|
||||
<string id="30013">Scheduling</string>
|
||||
<string id="30016">Backup</string>
|
||||
<string id="30017">Restore</string>
|
||||
<string id="30018">Browse Path</string>
|
||||
<string id="30019">Type Path</string>
|
||||
<string id="30020">Browse Remote Path</string>
|
||||
<string id="30021">Backup Folder Name</string>
|
||||
<string id="30023">Mode</string>
|
||||
<string id="30024">Type Remote Path</string>
|
||||
<string id="30025">Remote Path Type</string>
|
||||
<string id="30026">Backups to keep (0 for all)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Dropbox Key</string>
|
||||
<string id="30029">Dropbox Secret</string>
|
||||
<string id="30030">User Addons</string>
|
||||
<string id="30031">Addon Data</string>
|
||||
<string id="30032">Database</string>
|
||||
<string id="30033">Сьпіс прайграваньня</string>
|
||||
<string id="30034">Thumbnails/Fanart</string>
|
||||
<string id="30035">Config Files</string>
|
||||
<string id="30036">Custom Directory 1</string>
|
||||
<string id="30037">Custom Directory 2</string>
|
||||
<string id="30038">Advanced Settings Detected</string>
|
||||
<string id="30039">The advancedsettings file should be restored first</string>
|
||||
<string id="30040">Select Yes to restore this file and restart XBMC</string>
|
||||
<string id="30041">Select No to continue</string>
|
||||
<string id="30042">Resume Restore</string>
|
||||
<string id="30043">XBMC Backup has detected an unfinished restore</string>
|
||||
<string id="30044">Would you like to continue?</string>
|
||||
<string id="30045">Error: Remote path doesn't exist</string>
|
||||
<string id="30046">Starting</string>
|
||||
<string id="30047">Local Dir</string>
|
||||
<string id="30048">Remote Dir</string>
|
||||
<string id="30049">Gathering file list</string>
|
||||
<string id="30050">Remote Path exists - may have old files in it!</string>
|
||||
<string id="30051">Creating Files List</string>
|
||||
<string id="30052">Writing file</string>
|
||||
<string id="30053">Starting scheduled backup</string>
|
||||
<string id="30054">Removing backup</string>
|
||||
<string id="30056">Check log for Dropbox authorize URL</string>
|
||||
<string id="30057">Click OK when authorized</string>
|
||||
<string id="30058">Dropbox Developer Code Needed</string>
|
||||
<string id="30059">Visit https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Enable Scheduler</string>
|
||||
<string id="30061">Расклад</string>
|
||||
<string id="30062">Hour of Day</string>
|
||||
<string id="30063">Дзень тыдня</string>
|
||||
<string id="30064">Cron Schedule</string>
|
||||
<string id="30065">Нядзеля</string>
|
||||
<string id="30066">Панядзелак</string>
|
||||
<string id="30067">Аўторак</string>
|
||||
<string id="30068">Серада</string>
|
||||
<string id="30069">Чацьвер</string>
|
||||
<string id="30070">Пятніца</string>
|
||||
<string id="30071">Субота</string>
|
||||
<string id="30072">Штодня</string>
|
||||
<string id="30073">Штотыдзень</string>
|
||||
<string id="30074">Першы дзень месяца</string>
|
||||
<string id="30075">Custom Schedule</string>
|
||||
<string id="30076">Shutdown After Backup</string>
|
||||
<string id="30077">Restart XBMC</string>
|
||||
<string id="30078">You should restart XBMC to continue</string>
|
||||
<string id="30080">Профілі</string>
|
||||
</strings>
|
||||
|
||||
19
resources/language/Bosnian/strings.xml
Normal file
19
resources/language/Bosnian/strings.xml
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Bosnian language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/bs/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30011">Opšte</string>
|
||||
<string id="30023">Režim</string>
|
||||
<string id="30032">Baza podataka</string>
|
||||
<string id="30033">Spisak za rep.</string>
|
||||
<string id="30065">Nedjelja</string>
|
||||
<string id="30066">Ponedjeljak</string>
|
||||
<string id="30067">Utorak</string>
|
||||
<string id="30068">Srijeda</string>
|
||||
<string id="30069">Četvrtak</string>
|
||||
<string id="30070">Petak</string>
|
||||
<string id="30071">Subota</string>
|
||||
<string id="30080">Profili</string>
|
||||
</strings>
|
||||
@@ -1,48 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Bulgarian language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/bg/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">XBMC Backup</string>
|
||||
<string id="30011">Основи</string>
|
||||
<string id="30012">Избор на файлове</string>
|
||||
<string id="30013">Планиране</string>
|
||||
<string id="30016">Резервно копие</string>
|
||||
<string id="30017">Възстанови</string>
|
||||
<string id="30018">Преглеждане за път</string>
|
||||
<string id="30019">Въвеждане на път</string>
|
||||
<string id="30020">Прегледайте за отдалечен път</string>
|
||||
<string id="30021">Име на папката за резервните копия</string>
|
||||
<string id="30022">Известяване за напредъка</string>
|
||||
<string id="30023">Режим</string>
|
||||
<string id="30024">Въведете отдалечения път</string>
|
||||
<string id="30025">Окажете пътя до папката с резервни копия</string>
|
||||
<string id="30026">Колко резервни копия да бъдат съхранявани (0 за всички)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Dropbox ключ</string>
|
||||
<string id="30029">Dropbox секретен ключ</string>
|
||||
<string id="30030">Добавки</string>
|
||||
<string id="30031">Данните на добавките</string>
|
||||
<string id="30032">Базата данни</string>
|
||||
<string id="30033">Плейлисти</string>
|
||||
<string id="30034">Миниатюри/Фанарт</string>
|
||||
<string id="30035">Файловете с настройки</string>
|
||||
<string id="30036">Персонална директория 1</string>
|
||||
<string id="30037">Персонална директория 1</string>
|
||||
<string id="30038">Засечени са допълнителни настройки</string>
|
||||
<string id="30039">Първо трябва да бъде възстановен файла "advancedsettings.xml"</string>
|
||||
<string id="30040">Изберете "Да" за възстановяване от файла и рестартиране на XBMC</string>
|
||||
<string id="30041">Изберете "Не" за да продължите</string>
|
||||
<string id="30042">Възобнови</string>
|
||||
<string id="30043">XBMC Backup засече незавършено възстановяване</string>
|
||||
<string id="30044">Искате ли да продължите?</string>
|
||||
<string id="30045">Грешка: Отдалеченият път не съществува</string>
|
||||
<string id="30046">Стартиране</string>
|
||||
<string id="30047">Локална папка</string>
|
||||
<string id="30048">Отдалечена папка</string>
|
||||
<string id="30049">Изграждане на списък с файлове</string>
|
||||
<string id="30050">Отдалеченият път съществува. Вероятно съдържа стари файлове!</string>
|
||||
<string id="30051">Създаване на списъка с файлове</string>
|
||||
<string id="30052">Записване на файла</string>
|
||||
<string id="30053">Създаване на резервно копие (по план)</string>
|
||||
<string id="30054">Премахване на резервно копие</string>
|
||||
<string id="30056">За оторизационния URL адрес за Dropbox проверете дневника</string>
|
||||
<string id="30057">След оторизирането натиснете "Добре"</string>
|
||||
<string id="30058">Необходим е код за разработчик за Dropbox</string>
|
||||
<string id="30059">Посетете https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Активирай планировчика</string>
|
||||
<string id="30061">Планиране</string>
|
||||
<string id="30062">Час</string>
|
||||
<string id="30063">Ден</string>
|
||||
<string id="30064">Cron планиране</string>
|
||||
<string id="30065">неделя</string>
|
||||
<string id="30066">понеделник</string>
|
||||
<string id="30067">вторник</string>
|
||||
<string id="30068">сряда</string>
|
||||
<string id="30069">четвъртък</string>
|
||||
<string id="30070">петък</string>
|
||||
<string id="30071">събота</string>
|
||||
<string id="30072">Всеки ден</string>
|
||||
<string id="30073">Всяка седмица</string>
|
||||
<string id="30074">Първия ден на месеца</string>
|
||||
<string id="30075">Персонално планиране</string>
|
||||
<string id="30076">Изключвай XBMC след създаването на резервно копиране</string>
|
||||
<string id="30077">Рестартиране на XBMC</string>
|
||||
<string id="30078">Необходимо е да рестартирате XBMC за да продължите</string>
|
||||
<string id="30079">Само днес</string>
|
||||
<string id="30080">Профили</string>
|
||||
<string id="30081">Планировчика ще стартира отново на</string>
|
||||
<string id="30082">Лента за напредъка</string>
|
||||
<string id="30083">Лента за напредъка на заден план</string>
|
||||
<string id="30084">Без (тих режим)</string>
|
||||
<string id="30085">Предупреждение за версията</string>
|
||||
<string id="30086">Версията на XBMC, която ползвате е различна, от тази която се намира в архива</string>
|
||||
</strings>
|
||||
|
||||
8
resources/language/Burmese/strings.xml
Normal file
8
resources/language/Burmese/strings.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Burmese language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/my/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30011">ယေဘုယျ</string>
|
||||
</strings>
|
||||
@@ -1,48 +1,78 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Catalan language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/ca/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">XBMC Backup</string>
|
||||
<string id="30011">General</string>
|
||||
<string id="30012">Sel·lecció de fitxers</string>
|
||||
<string id="30013">Planificació</string>
|
||||
<string id="30016">Còpia de seguretat</string>
|
||||
<string id="30017">Restauració</string>
|
||||
<string id="30018">Navega per la ruta</string>
|
||||
<string id="30019">Tipus de ruta</string>
|
||||
<string id="30020">Navega per la ruta remota</string>
|
||||
<string id="30021">Nom de la carpeta de la còpia de seguretat</string>
|
||||
<string id="30023">Mode</string>
|
||||
<string id="30024">Tipus de ruta remota</string>
|
||||
<string id="30025">Tipus de ruta remota</string>
|
||||
<string id="30026">Còpies de seguretat a mantenir (0 per totes)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Dropbox Key</string>
|
||||
<string id="30029">Dropbox Secret</string>
|
||||
<string id="30030">Complements d'usuari</string>
|
||||
<string id="30031">Dades del complement</string>
|
||||
<string id="30032">Base de dades</string>
|
||||
<string id="30033">Llista de reproducció</string>
|
||||
<string id="30034">Miniatures/Fanart</string>
|
||||
<string id="30035">Fitxers de configuració</string>
|
||||
<string id="30036">Directori personalitzat 1</string>
|
||||
<string id="30037">Directori personalitzat 2</string>
|
||||
<string id="30038">S'ha detectat la configuració avançada</string>
|
||||
<string id="30039">El fitxer de configuració avançada s'ha de restaurar primer</string>
|
||||
<string id="30040">Seleccioneu «Sí» per restaurar aquest fitxer i reiniciar l'XBMC</string>
|
||||
<string id="30041">Seleccioneu «No» per continuar</string>
|
||||
<string id="30042">Repren la restauració</string>
|
||||
<string id="30043">L'XBMC Backup ha detectat una restauració inacabada</string>
|
||||
<string id="30044">Voleu continuar?</string>
|
||||
<string id="30045">Error: La ruta remota no existeix</string>
|
||||
<string id="30046">S'està iniciant</string>
|
||||
<string id="30047">Directori local</string>
|
||||
<string id="30048">Directori remot</string>
|
||||
<string id="30049">S'està recopilant la llista de fitxers</string>
|
||||
<string id="30050">La ruta remota existeix - hi pot haver fitxers antics!</string>
|
||||
<string id="30051">S'està creant la llista de fitxers</string>
|
||||
<string id="30052">S'està escrivint el fitxer</string>
|
||||
<string id="30053">S'està iniciant la còpia de seguretat planificada</string>
|
||||
<string id="30054">S'està eliminant la còpia de seguretat</string>
|
||||
<string id="30056">Comproveu el registre per la URL d'autorització del Dropbox</string>
|
||||
<string id="30057">Feu clic a «D'acord» quan hagi estat autoritzat</string>
|
||||
<string id="30058">Es necessita el codi de desenvolupador del Dropbox</string>
|
||||
<string id="30059">Visiteu https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Habilita el planificador</string>
|
||||
<string id="30061">Planificació</string>
|
||||
<string id="30062">Hora del dia</string>
|
||||
<string id="30063">Dia de la setmana</string>
|
||||
<string id="30064">Planificació Cron</string>
|
||||
<string id="30065">Diumenge</string>
|
||||
<string id="30066">Dilluns</string>
|
||||
<string id="30067">Dimarts</string>
|
||||
<string id="30068">Dimecres</string>
|
||||
<string id="30069">Dijous</string>
|
||||
<string id="30070">Divendres</string>
|
||||
<string id="30071">Dissabte</string>
|
||||
<string id="30072">Cada dia</string>
|
||||
<string id="30073">Cada setmana</string>
|
||||
<string id="30074">Primer dia del mes</string>
|
||||
<string id="30075">Planificació personalitzada</string>
|
||||
<string id="30076">Apaga després de la còpia de seguretat</string>
|
||||
<string id="30077">Reinicieu l'XBMC</string>
|
||||
<string id="30078">És recomanable que reinicieu l'XBMC per continuar</string>
|
||||
<string id="30079">Només avui</string>
|
||||
<string id="30080">Perfils</string>
|
||||
<string id="30081">El planificador de tasques s'executarà de nou</string>
|
||||
<string id="30082">Barra de progrés</string>
|
||||
<string id="30084">Cap (Silenciós)</string>
|
||||
<string id="30086">Aquesta versió d'XBMC és diferent que la utilitzada per crear el fitxer</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Chinese (Simple) language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/zh/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">XBMC 备份</string>
|
||||
<string id="30011">常规</string>
|
||||
<string id="30012">文件选择</string>
|
||||
<string id="30013">计划任务</string>
|
||||
<string id="30016">备份</string>
|
||||
<string id="30017">恢复</string>
|
||||
<string id="30018">浏览目录</string>
|
||||
<string id="30019">输入目录</string>
|
||||
<string id="30020">浏览远程目录</string>
|
||||
<string id="30021">备份文件夹名</string>
|
||||
<string id="30022">进度显示</string>
|
||||
<string id="30023">模式</string>
|
||||
<string id="30024">输入远程目录</string>
|
||||
<string id="30025">远程目录类型</string>
|
||||
<string id="30026">保留备份数(0为全部)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Dropbox 用户</string>
|
||||
<string id="30029">Dropbox 密码</string>
|
||||
<string id="30030">用户插件</string>
|
||||
<string id="30031">插件数据</string>
|
||||
<string id="30032">数据库</string>
|
||||
<string id="30033">播放列表</string>
|
||||
<string id="30034">缩略图/同人画</string>
|
||||
<string id="30035">配置文件</string>
|
||||
<string id="30036">自定义目录1</string>
|
||||
<string id="30037">自定义目录2</string>
|
||||
<string id="30038">检测到高级设置</string>
|
||||
<string id="30039">将先恢复高级设置文件</string>
|
||||
<string id="30040">选“是”恢复此文件并重启 XBMC</string>
|
||||
<string id="30041">选“否”继续</string>
|
||||
<string id="30042">继续恢复</string>
|
||||
<string id="30043">XBMC 备份检测到未完成的恢复</string>
|
||||
<string id="30044">要继续吗?</string>
|
||||
<string id="30045">错误:远程目录不存在</string>
|
||||
<string id="30046">开始</string>
|
||||
<string id="30047">本地目录</string>
|
||||
<string id="30048">远程目录</string>
|
||||
<string id="30049">获取文件列表</string>
|
||||
<string id="30050">远程目录存在 - 可能有旧文件留存!</string>
|
||||
<string id="30051">创建文件列表</string>
|
||||
<string id="30052">写入文件</string>
|
||||
<string id="30053">启动计划备份</string>
|
||||
<string id="30054">删除备份</string>
|
||||
<string id="30056">检查 Dropbox 授权 URL 日志</string>
|
||||
<string id="30057">授权后点“确定”</string>
|
||||
<string id="30058">需要 Dropbox 开发者 Code</string>
|
||||
<string id="30059">访问 https://www.dropbox.com/developers</string>
|
||||
<string id="30060">启用计划任务</string>
|
||||
<string id="30061">时间安排</string>
|
||||
<string id="30062">时刻</string>
|
||||
<string id="30063">星期</string>
|
||||
<string id="30064">Cron 计划任务</string>
|
||||
<string id="30065">星期日</string>
|
||||
<string id="30066">星期一</string>
|
||||
<string id="30067">星期二</string>
|
||||
<string id="30068">星期三</string>
|
||||
<string id="30069">星期四</string>
|
||||
<string id="30070">星期五</string>
|
||||
<string id="30071">星期六</string>
|
||||
<string id="30072">每天</string>
|
||||
<string id="30073">每周</string>
|
||||
<string id="30074">每月初</string>
|
||||
<string id="30075">自定义计划</string>
|
||||
<string id="30076">备份完成后关机</string>
|
||||
<string id="30077">重启 XBMC</string>
|
||||
<string id="30078">需要重启 XBMC 以继续</string>
|
||||
<string id="30079">就在今天</string>
|
||||
<string id="30080">用户配置</string>
|
||||
<string id="30081">计划任务将再次执行于</string>
|
||||
<string id="30082">进度条</string>
|
||||
<string id="30083">后台进度条</string>
|
||||
<string id="30084">无(静默)</string>
|
||||
<string id="30085">版本警告</string>
|
||||
<string id="30086">当前 XBMC 版本与创建备份时的版本不同</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Chinese (Traditional) language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/zh_TW/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30011">一般設定</string>
|
||||
<string id="30023">模式</string>
|
||||
<string id="30032">資料庫</string>
|
||||
<string id="30033">播放列表</string>
|
||||
<string id="30065">星期日</string>
|
||||
<string id="30066">星期一</string>
|
||||
<string id="30067">星期二</string>
|
||||
<string id="30068">星期三</string>
|
||||
<string id="30069">星期四</string>
|
||||
<string id="30070">星期五</string>
|
||||
<string id="30071">星期六</string>
|
||||
<string id="30080">設定檔</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Croatian language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/hr/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">XBMC sigurnosno kopiranje</string>
|
||||
<string id="30011">Općenito</string>
|
||||
<string id="30012">Odabir datoteke</string>
|
||||
<string id="30013">Planirano vrijeme</string>
|
||||
<string id="30016">Sigurnosno kopiranje</string>
|
||||
<string id="30017">Obnovi</string>
|
||||
<string id="30018">Putanja pregleda</string>
|
||||
<string id="30019">Vrsta putanje</string>
|
||||
<string id="30020">Pregledaj udaljenu putanju</string>
|
||||
<string id="30021">Sigurnosno kopiraj naziv mape</string>
|
||||
<string id="30022">Prikaz napretka</string>
|
||||
<string id="30023">Način</string>
|
||||
<string id="30024">Upišite udaljenu putanju</string>
|
||||
<string id="30025">Vrsta udaljene putanje</string>
|
||||
<string id="30026">Sigurnosna kopiranja za zadržavanje (0 za sve)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Dropbox ključ</string>
|
||||
<string id="30029">Dropbox tajna</string>
|
||||
<string id="30030">Dodaci korisnika</string>
|
||||
<string id="30031">Podaci dodatka</string>
|
||||
<string id="30032">Baza podataka</string>
|
||||
<string id="30033">Popisu izvođenja</string>
|
||||
<string id="30034">Minijature/Slike omota</string>
|
||||
<string id="30035">Datoteke podešavanja</string>
|
||||
<string id="30036">Prilagođeni direktorij 1</string>
|
||||
<string id="30037">Prilagođeni direktorij 2</string>
|
||||
<string id="30038">Otkrivene su napredne postavke</string>
|
||||
<string id="30039">Datoteka napredne postavke prvo se treba obnoviti</string>
|
||||
<string id="30040">Odaberite 'Da' za obnavljanje ove datoteke i ponovno pokretanje XBMC-a</string>
|
||||
<string id="30041">Odaberite 'Ne' za nastavak</string>
|
||||
<string id="30042">Nastavi obnovu</string>
|
||||
<string id="30043">XBMC sigurnosno kopiranje je otkrilo nezavršenu obnovu</string>
|
||||
<string id="30044">Želite li nastaviti?</string>
|
||||
<string id="30045">Greška: udaljena putanja ne postoji</string>
|
||||
<string id="30046">Pokretanje</string>
|
||||
<string id="30047">Lokalni direktorij</string>
|
||||
<string id="30048">Udaljeni direktorij</string>
|
||||
<string id="30049">Sakupljanje popisa datoteka</string>
|
||||
<string id="30050">Udaljena putanja postoji - možda sadrži zastarjele datoteke!</string>
|
||||
<string id="30051">Stvaranje popisa datoteka</string>
|
||||
<string id="30052">Zapisivanje datoteke</string>
|
||||
<string id="30053">Pokretanje sigurnosnog kopiranja u planirano vrijeme</string>
|
||||
<string id="30054">Uklanjanje sigurnosnog kopiranja</string>
|
||||
<string id="30056">Provjera zapisa za URL autorizacije Dropboxa</string>
|
||||
<string id="30057">Kliknite 'U redu' kada je autorizirano</string>
|
||||
<string id="30058">Potreban je kôd Dropbox razvijatelja</string>
|
||||
<string id="30059">Posjetite https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Omogući planirano vrijeme</string>
|
||||
<string id="30061">Planirano vrijeme</string>
|
||||
<string id="30062">Sata dnevno</string>
|
||||
<string id="30063">Dan u tjednu</string>
|
||||
<string id="30064">Cron planirano vrijeme</string>
|
||||
<string id="30065">Nedjelja</string>
|
||||
<string id="30066">Ponedjeljak</string>
|
||||
<string id="30067">Utorak</string>
|
||||
<string id="30068">Srijeda</string>
|
||||
<string id="30069">Četvrtak</string>
|
||||
<string id="30070">Petak</string>
|
||||
<string id="30071">Subota</string>
|
||||
<string id="30072">Svaki dan</string>
|
||||
<string id="30073">Svaki tjedan</string>
|
||||
<string id="30074">Prvi dan mjeseca</string>
|
||||
<string id="30075">Prilagođeno vrijeme planiranja</string>
|
||||
<string id="30076">Isključi nakon sigurnosnog kopiranja</string>
|
||||
<string id="30077">Ponovno pokreni XBMC</string>
|
||||
<string id="30078">Za nastavak je potrebno ponovno pokretanje XBMC-a</string>
|
||||
<string id="30079">Samo danas</string>
|
||||
<string id="30080">Profili</string>
|
||||
<string id="30081">Planirano vrijeme će se ponovno pokrenuti</string>
|
||||
<string id="30082">Traka napretka</string>
|
||||
<string id="30083">Pozadina trake napretka</string>
|
||||
<string id="30084">Nepoznato (Tiho)</string>
|
||||
<string id="30085">Upozorenje inačice</string>
|
||||
<string id="30086">Ova inačica XBMC-a je drugačija od one koja se koristila za stvaranje arhive</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Czech language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/cs/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">Záloha XBMC</string>
|
||||
<string id="30011">Obecné</string>
|
||||
<string id="30012">Výběr souboru</string>
|
||||
<string id="30013">Plánování</string>
|
||||
<string id="30016">Zálohovat</string>
|
||||
<string id="30017">Obnovit</string>
|
||||
<string id="30023">Režim</string>
|
||||
<string id="30032">Databáze</string>
|
||||
<string id="30033">Seznam stop</string>
|
||||
<string id="30061">Rozvrh</string>
|
||||
<string id="30065">Neděle</string>
|
||||
<string id="30066">Pondělí</string>
|
||||
<string id="30067">Úterý</string>
|
||||
<string id="30068">Středa</string>
|
||||
<string id="30069">Čtvrtek</string>
|
||||
<string id="30070">Pátek</string>
|
||||
<string id="30071">Sobota</string>
|
||||
<string id="30077">Restartovat XBMC</string>
|
||||
<string id="30080">Profily</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,74 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Danish language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/da/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">XBMC Sikkerhedskopi</string>
|
||||
<string id="30011">Generelt</string>
|
||||
<string id="30012">Filvalg</string>
|
||||
<string id="30013">Planlægning</string>
|
||||
<string id="30016">Backup</string>
|
||||
<string id="30017">Genopret</string>
|
||||
<string id="30018">Gennemse mapper</string>
|
||||
<string id="30019">Indtast Sti</string>
|
||||
<string id="30020">Gennemse netværksmapper</string>
|
||||
<string id="30021">Navngiv mappe til sikkerhedskopi</string>
|
||||
<string id="30023">Tilstand</string>
|
||||
<string id="30024">Indtast netværkssti</string>
|
||||
<string id="30025">Type af netværkssti</string>
|
||||
<string id="30026">Sikkerhedskopier der skal gemmes (0 for alle)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Dropbox kodeord</string>
|
||||
<string id="30029">Dropbox hemmeligt</string>
|
||||
<string id="30030">Bruger-Addons</string>
|
||||
<string id="30031">Addon-data</string>
|
||||
<string id="30032">Database</string>
|
||||
<string id="30033">Afspilningsliste</string>
|
||||
<string id="30034">Miniaturer/Fankunst</string>
|
||||
<string id="30035">Konfigurationsfil</string>
|
||||
<string id="30036">Brugerdefineret mappe 1</string>
|
||||
<string id="30037">Brugerdefineret mappe 2</string>
|
||||
<string id="30038">Udvidet indstilling opdaget</string>
|
||||
<string id="30039">Udvidede indstillings-fil bør gendannes først</string>
|
||||
<string id="30040">Vælg Ja for at gendanne denne fil og genstarte XBMC</string>
|
||||
<string id="30041">Vælg Nej for at fortsætte</string>
|
||||
<string id="30042">Genoptag gendannelse</string>
|
||||
<string id="30043">XBMC Backup har fundet en ufærdiggjort gendannelse</string>
|
||||
<string id="30044">Vil du fortsætte?</string>
|
||||
<string id="30045">Fejl: Netværksstien findes ikke</string>
|
||||
<string id="30046">Starter</string>
|
||||
<string id="30047">Lokal mappe</string>
|
||||
<string id="30048">Netværksmappe</string>
|
||||
<string id="30049">Indsamler filliste</string>
|
||||
<string id="30050">Netværksstien findes - indeholder muligvis ældre filer!</string>
|
||||
<string id="30051">Opbygger filliste</string>
|
||||
<string id="30052">Skriver fil</string>
|
||||
<string id="30053">Starter planlagt sikkerhedskopi</string>
|
||||
<string id="30054">Fjerner sikkerhedskopi</string>
|
||||
<string id="30056">Tjek log for autoriserings-URL til Dropbox</string>
|
||||
<string id="30057">Tryk OK efter autorisering</string>
|
||||
<string id="30058">Dropbox udviklerkode krævet</string>
|
||||
<string id="30059">Besøg https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Aktivér Tidsplan</string>
|
||||
<string id="30061">Tidsplan</string>
|
||||
<string id="30062">Tid på dagen</string>
|
||||
<string id="30063">Ugedag</string>
|
||||
<string id="30064">Cron tidsplan</string>
|
||||
<string id="30065">Søndag</string>
|
||||
<string id="30066">Mandag</string>
|
||||
<string id="30067">Tirsdag</string>
|
||||
<string id="30068">Onsdag</string>
|
||||
<string id="30069">Torsdag</string>
|
||||
<string id="30070">Fredag</string>
|
||||
<string id="30071">Lørdag</string>
|
||||
<string id="30072">Hver dag</string>
|
||||
<string id="30073">Hver uge</string>
|
||||
<string id="30074">Første dag i måneden</string>
|
||||
<string id="30075">Brugerdefineret tidsplan</string>
|
||||
<string id="30076">Luk ned efter Sikkerhedskopiering</string>
|
||||
<string id="30077">Genstart XBMC</string>
|
||||
<string id="30078">Du skal genstarte XBMC for at fortsætte</string>
|
||||
<string id="30079">Kun Idag</string>
|
||||
<string id="30080">Profiler</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Dutch language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/nl/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">XBMC Backup</string>
|
||||
<string id="30011">Algemeen</string>
|
||||
<string id="30012">Bestand Selectie</string>
|
||||
<string id="30013">Inplannen</string>
|
||||
<string id="30016">Backup</string>
|
||||
<string id="30017">Terugzetten</string>
|
||||
<string id="30018">Zoek pad</string>
|
||||
<string id="30019">Type pad</string>
|
||||
<string id="30020">Blader externe locatie</string>
|
||||
<string id="30021">Backup Folder Naam</string>
|
||||
<string id="30022">Voortgangsbeeldscherm</string>
|
||||
<string id="30023">Modus</string>
|
||||
<string id="30024">Enter Extern Pad</string>
|
||||
<string id="30025">Extern Pad Type</string>
|
||||
<string id="30026">Te bewaren backups (0 voor alle)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Dropbox sleutel</string>
|
||||
<string id="30029">Dropbox Geheim</string>
|
||||
<string id="30030">Gebruiker addons</string>
|
||||
<string id="30031">Addon Data</string>
|
||||
<string id="30032">Database</string>
|
||||
<string id="30033">Afspeellijst</string>
|
||||
<string id="30034">Miniaturen/Fanart</string>
|
||||
<string id="30035">Configuratiebestanden</string>
|
||||
<string id="30036">Aangepaste Map 1</string>
|
||||
<string id="30037">Aangepaste Map 2</string>
|
||||
<string id="30038">Geavanceerde instellingen gevonden</string>
|
||||
<string id="30039">Het advancedsettingsbestand moet eerst teruggezet worden</string>
|
||||
<string id="30040">Kies Ja om dit bestand terug te zetten en XBMC te herstarten</string>
|
||||
<string id="30041">Selecteer nee of verder te gaan</string>
|
||||
<string id="30042">Verder gaan met herstellen</string>
|
||||
<string id="30043">XBMC Backup heeft een onafgemaakte herstelling gededecteerd</string>
|
||||
<string id="30044">Will je verder gaan?</string>
|
||||
<string id="30045">Fout: Externe locatie bestaat niet</string>
|
||||
<string id="30046">Starten</string>
|
||||
<string id="30047">Lokale map</string>
|
||||
<string id="30048">Externe map</string>
|
||||
<string id="30049">Ophalen van bestandslijst</string>
|
||||
<string id="30050">Extern Pad bestaat - er kunnen oude bestanden in zitten!</string>
|
||||
<string id="30051">Aanmaken bestandslijst </string>
|
||||
<string id="30052">Bestand schrijven</string>
|
||||
<string id="30053">Start geplande backup</string>
|
||||
<string id="30054">Verwijder backup</string>
|
||||
<string id="30056">Controleer het log voor de Dropbox autoriseer URL</string>
|
||||
<string id="30057">Klik OK wanneer geauthoriseerd</string>
|
||||
<string id="30058">Dropbox Developer Code Nodig</string>
|
||||
<string id="30059">Bezoek https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Planner inschakelen</string>
|
||||
<string id="30061">Planning</string>
|
||||
<string id="30062">Uur van de dag</string>
|
||||
<string id="30063">Dag van de week</string>
|
||||
<string id="30064">Cron Rooster</string>
|
||||
<string id="30065">Zondag</string>
|
||||
<string id="30066">Maandag</string>
|
||||
<string id="30067">Dinsdag</string>
|
||||
<string id="30068">Woensdag</string>
|
||||
<string id="30069">Donderdag</string>
|
||||
<string id="30070">Vrijdag</string>
|
||||
<string id="30071">Zaterdag</string>
|
||||
<string id="30072">Elke dag</string>
|
||||
<string id="30073">Elke week</string>
|
||||
<string id="30074">Eerste dag van de maand</string>
|
||||
<string id="30075">Aangepast Rooster</string>
|
||||
<string id="30076">Afsluiten na voltooiing back-up</string>
|
||||
<string id="30077">Herstarten XBMC</string>
|
||||
<string id="30078">Herstart XBMC om verder te gaan</string>
|
||||
<string id="30079">Alleen Vandaag</string>
|
||||
<string id="30080">Profielen</string>
|
||||
<string id="30081">Scheduler zal opnieuw worden uitgevoerd op</string>
|
||||
<string id="30082">Voortgangsbalk</string>
|
||||
<string id="30083">Achtergrond voortgangsbalk</string>
|
||||
<string id="30084">Geen (Stil)</string>
|
||||
<string id="30085">Versie waarschuwing</string>
|
||||
<string id="30086">Deze versie van XBMC is anders dan de gene die gebruikt is voor het creëren van het archief</string>
|
||||
</strings>
|
||||
|
||||
11
resources/language/English (Australia)/strings.xml
Normal file
11
resources/language/English (Australia)/strings.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- English (Australia) language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/en_AU/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30011">General</string>
|
||||
<string id="30016">Backup</string>
|
||||
<string id="30061">Schedule</string>
|
||||
<string id="30077">Restart XBMC</string>
|
||||
</strings>
|
||||
79
resources/language/English (New Zealand)/strings.xml
Normal file
79
resources/language/English (New Zealand)/strings.xml
Normal file
@@ -0,0 +1,79 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- English (New Zealand) language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/en_NZ/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010">XBMC Backup</string>
|
||||
<string id="30011">General</string>
|
||||
<string id="30012">File Selection</string>
|
||||
<string id="30013">Scheduling</string>
|
||||
<string id="30016">Backup</string>
|
||||
<string id="30017">Restore</string>
|
||||
<string id="30018">Browse Path</string>
|
||||
<string id="30019">Type Path</string>
|
||||
<string id="30020">Browse Remote Path</string>
|
||||
<string id="30021">Backup Folder Name</string>
|
||||
<string id="30022">Progress Display</string>
|
||||
<string id="30023">Mode</string>
|
||||
<string id="30024">Type Remote Path</string>
|
||||
<string id="30025">Remote Path Type</string>
|
||||
<string id="30026">Backups to keep (0 for all)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Dropbox Key</string>
|
||||
<string id="30029">Dropbox Secret</string>
|
||||
<string id="30030">User Addons</string>
|
||||
<string id="30031">Addon Data</string>
|
||||
<string id="30032">Database</string>
|
||||
<string id="30033">Playlist</string>
|
||||
<string id="30034">Thumbnails/Fanart</string>
|
||||
<string id="30035">Config Files</string>
|
||||
<string id="30036">Custom Directory 1</string>
|
||||
<string id="30037">Custom Directory 2</string>
|
||||
<string id="30038">Advanced Settings Detected</string>
|
||||
<string id="30039">The advancedsettings file should be restored first</string>
|
||||
<string id="30040">Select Yes to restore this file and restart XBMC</string>
|
||||
<string id="30041">Select No to continue</string>
|
||||
<string id="30042">Resume Restore</string>
|
||||
<string id="30043">XBMC Backup has detected an unfinished restore</string>
|
||||
<string id="30044">Would you like to continue?</string>
|
||||
<string id="30045">Error: Remote path doesn't exist</string>
|
||||
<string id="30046">Starting</string>
|
||||
<string id="30047">Local Dir</string>
|
||||
<string id="30048">Remote Dir</string>
|
||||
<string id="30049">Gathering file list</string>
|
||||
<string id="30050">Remote Path exists - may have old files in it!</string>
|
||||
<string id="30051">Creating Files List</string>
|
||||
<string id="30052">Writing file</string>
|
||||
<string id="30053">Starting scheduled backup</string>
|
||||
<string id="30054">Removing backup</string>
|
||||
<string id="30056">Check log for Dropbox authorise URL</string>
|
||||
<string id="30057">Click OK when authorised</string>
|
||||
<string id="30058">Dropbox Developer Code Needed</string>
|
||||
<string id="30059">Visit https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Enable Scheduler</string>
|
||||
<string id="30061">Schedule</string>
|
||||
<string id="30062">Hour of Day</string>
|
||||
<string id="30063">Day of Week</string>
|
||||
<string id="30064">Cron Schedule</string>
|
||||
<string id="30065">Sunday</string>
|
||||
<string id="30066">Monday</string>
|
||||
<string id="30067">Tuesday</string>
|
||||
<string id="30068">Wednesday</string>
|
||||
<string id="30069">Thursday</string>
|
||||
<string id="30070">Friday</string>
|
||||
<string id="30071">Saturday</string>
|
||||
<string id="30072">Every Day</string>
|
||||
<string id="30073">Every Week</string>
|
||||
<string id="30074">First Day of Month</string>
|
||||
<string id="30075">Custom Schedule</string>
|
||||
<string id="30076">Shutdown After Backup</string>
|
||||
<string id="30077">Restart XBMC</string>
|
||||
<string id="30078">You should restart XBMC to continue</string>
|
||||
<string id="30079">Just Today</string>
|
||||
<string id="30080">Profiles</string>
|
||||
<string id="30081">Scheduler will run again on</string>
|
||||
<string id="30082">Progress Bar</string>
|
||||
<string id="30083">Background Progress Bar</string>
|
||||
<string id="30084">None (Silent)</string>
|
||||
</strings>
|
||||
@@ -1,48 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- English (US) language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/en_US/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">XBMC Backup</string>
|
||||
<string id="30011">General</string>
|
||||
<string id="30012">File Selection</string>
|
||||
<string id="30013">Scheduling</string>
|
||||
<string id="30016">Backup</string>
|
||||
<string id="30017">Restore</string>
|
||||
<string id="30018">Browse Path</string>
|
||||
<string id="30019">Type Path</string>
|
||||
<string id="30020">Browse Remote Path</string>
|
||||
<string id="30021">Backup Folder Name</string>
|
||||
<string id="30022">Progress Display</string>
|
||||
<string id="30023">Mode</string>
|
||||
<string id="30024">Type Remote Path</string>
|
||||
<string id="30025">Remote Path Type</string>
|
||||
<string id="30026">Backups to keep (0 for all)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Dropbox Key</string>
|
||||
<string id="30029">Dropbox Secret</string>
|
||||
<string id="30030">User Addons</string>
|
||||
<string id="30031">Addon Data</string>
|
||||
<string id="30032">Database</string>
|
||||
<string id="30033">Playlist</string>
|
||||
<string id="30034">Thumbnails/Fanart</string>
|
||||
<string id="30035">Config Files</string>
|
||||
<string id="30036">Custom Directory 1</string>
|
||||
<string id="30037">Custom Directory 2</string>
|
||||
<string id="30038">Advanced Settings Detected</string>
|
||||
<string id="30039">The advancedsettings file should be restored first</string>
|
||||
<string id="30040">Select Yes to restore this file and restart XBMC</string>
|
||||
<string id="30041">Select No to continue</string>
|
||||
<string id="30042">Resume Restore</string>
|
||||
<string id="30043">XBMC Backup has detected an unfinished restore</string>
|
||||
<string id="30044">Would you like to continue?</string>
|
||||
<string id="30045">Error: Remote path doesn't exist</string>
|
||||
<string id="30046">Starting</string>
|
||||
<string id="30047">Local Dir</string>
|
||||
<string id="30048">Remote Dir</string>
|
||||
<string id="30049">Gathering file list</string>
|
||||
<string id="30050">Remote Path exists - may have old files in it!</string>
|
||||
<string id="30051">Creating Files List</string>
|
||||
<string id="30052">Writing file</string>
|
||||
<string id="30053">Starting scheduled backup</string>
|
||||
<string id="30054">Removing backup</string>
|
||||
<string id="30056">Check log for Dropbox authorize URL</string>
|
||||
<string id="30057">Click OK when authorized</string>
|
||||
<string id="30058">Dropbox Developer Code Needed</string>
|
||||
<string id="30059">Visit https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Enable Scheduler</string>
|
||||
<string id="30061">Schedule</string>
|
||||
<string id="30062">Hour of Day</string>
|
||||
<string id="30063">Day of Week</string>
|
||||
<string id="30064">Cron Schedule</string>
|
||||
<string id="30065">Sunday</string>
|
||||
<string id="30066">Monday</string>
|
||||
<string id="30067">Tuesday</string>
|
||||
<string id="30068">Wednesday</string>
|
||||
<string id="30069">Thursday</string>
|
||||
<string id="30070">Friday</string>
|
||||
<string id="30071">Saturday</string>
|
||||
<string id="30072">Every Day</string>
|
||||
<string id="30073">Every Week</string>
|
||||
<string id="30074">First Day of Month</string>
|
||||
<string id="30075">Custom Schedule</string>
|
||||
<string id="30076">Shutdown After Backup</string>
|
||||
<string id="30077">Restart XBMC</string>
|
||||
<string id="30078">You should restart XBMC to continue</string>
|
||||
<string id="30079">Just Today</string>
|
||||
<string id="30080">Profiles</string>
|
||||
<string id="30081">Scheduler will run again on</string>
|
||||
<string id="30082">Progress Bar</string>
|
||||
<string id="30083">Background Progress Bar</string>
|
||||
<string id="30084">None (Silent)</string>
|
||||
<string id="30085">Version Warning</string>
|
||||
<string id="30086">This version of XBMC is different than the one used to create the archive</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,52 +1,87 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- English language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/en/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010">XBMC Backup</string>
|
||||
<string id="30011">General</string>
|
||||
<string id="30012">File Selection</string>
|
||||
<string id="30013">Scheduling</string>
|
||||
|
||||
<string id="30016">Backup</string>
|
||||
<string id="30017">Restore</string>
|
||||
<string id="30018">Browse Path</string>
|
||||
<string id="30019">Type Path</string>
|
||||
<string id="30020">Browse Remote Path</string>
|
||||
<string id="30021">Backup Folder Name</string>
|
||||
<string id="30022">Run Silent</string>
|
||||
<string id="30023">Mode</string>
|
||||
<string id="30024">Type Remote Path</string>
|
||||
<string id="30025">Remote Path Type</string>
|
||||
|
||||
<string id="30030">User Addons</string>
|
||||
<string id="30031">Addon Data</string>
|
||||
<string id="30032">Database</string>
|
||||
<string id="30033">Playlist</string>
|
||||
<string id="30034">Thumbnails/Fanart</string>
|
||||
<string id="30035">Config Files</string>
|
||||
|
||||
<string id="30045">Error: Remote path doesn't exist</string>
|
||||
<string id="30046">Starting</string>
|
||||
<string id="30047">Local Dir</string>
|
||||
<string id="30048">Remote Dir</string>
|
||||
<string id="30049">Gathering file list</string>
|
||||
<string id="30050">Remote Path exists - may have old files in it!</string>
|
||||
<string id="30051">Creating Files List</string>
|
||||
<string id="30052">Writing file</string>
|
||||
<string id="30010">XBMC Backup</string>
|
||||
<string id="30011">General</string>
|
||||
<string id="30012">File Selection</string>
|
||||
<string id="30013">Scheduling</string>
|
||||
<string id="30016">Backup</string>
|
||||
<string id="30017">Restore</string>
|
||||
<string id="30018">Browse Path</string>
|
||||
<string id="30019">Type Path</string>
|
||||
<string id="30020">Browse Remote Path</string>
|
||||
<string id="30021">Backup Folder Name</string>
|
||||
<string id="30022">Progress Display</string>
|
||||
<string id="30023">Mode</string>
|
||||
<string id="30024">Type Remote Path</string>
|
||||
<string id="30025">Remote Path Type</string>
|
||||
<string id="30026">Backups to keep (0 for all)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Dropbox Key</string>
|
||||
<string id="30029">Dropbox Secret</string>
|
||||
<string id="30030">User Addons</string>
|
||||
<string id="30031">Addon Data</string>
|
||||
<string id="30032">Database</string>
|
||||
<string id="30033">Playlist</string>
|
||||
<string id="30034">Thumbnails/Fanart</string>
|
||||
<string id="30035">Config Files</string>
|
||||
<string id="30036">Custom Directory 1</string>
|
||||
<string id="30037">Custom Directory 2</string>
|
||||
<string id="30038">Advanced Settings Detected</string>
|
||||
<string id="30039">The advancedsettings file should be restored first</string>
|
||||
<string id="30040">Select Yes to restore this file and restart XBMC</string>
|
||||
<string id="30041">Select No to continue</string>
|
||||
<string id="30042">Resume Restore</string>
|
||||
<string id="30043">XBMC Backup has detected an unfinished restore</string>
|
||||
<string id="30044">Would you like to continue?</string>
|
||||
<string id="30045">Error: Remote path doesn't exist</string>
|
||||
<string id="30046">Starting</string>
|
||||
<string id="30047">Local Dir</string>
|
||||
<string id="30048">Remote Dir</string>
|
||||
<string id="30049">Gathering file list</string>
|
||||
<string id="30050">Remote Path exists - may have old files in it!</string>
|
||||
<string id="30051">Creating Files List</string>
|
||||
<string id="30052">Writing file</string>
|
||||
<string id="30053">Starting scheduled backup</string>
|
||||
|
||||
<string id="30060">Enable Scheduler</string>
|
||||
<string id="30054">Removing backup</string>
|
||||
<string id="30056">Check log for Dropbox authorize URL</string>
|
||||
<string id="30057">Click OK when authorized</string>
|
||||
<string id="30058">Dropbox Developer Code Needed</string>
|
||||
<string id="30059">Visit https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Enable Scheduler</string>
|
||||
<string id="30061">Schedule</string>
|
||||
<string id="30062">Hour of Day</string>
|
||||
<string id="30063">Day of Week</string>
|
||||
<string id="30064">Cron Schedule</string>
|
||||
<string id="30065">Sunday</string>
|
||||
<string id="30066">Monday</string>
|
||||
<string id="30067">Tuesday</string>
|
||||
<string id="30068">Wednesday</string>
|
||||
<string id="30069">Thursday</string>
|
||||
<string id="30070">Friday</string>
|
||||
<string id="30071">Saturday</string>
|
||||
<string id="30072">Every Day</string>
|
||||
<string id="30073">Every Week</string>
|
||||
<string id="30074">First Day of Month</string>
|
||||
<string id="30075">Custom Schedule</string>
|
||||
<string id="30062">Hour of Day</string>
|
||||
<string id="30063">Day of Week</string>
|
||||
<string id="30064">Cron Schedule</string>
|
||||
<string id="30065">Sunday</string>
|
||||
<string id="30066">Monday</string>
|
||||
<string id="30067">Tuesday</string>
|
||||
<string id="30068">Wednesday</string>
|
||||
<string id="30069">Thursday</string>
|
||||
<string id="30070">Friday</string>
|
||||
<string id="30071">Saturday</string>
|
||||
<string id="30072">Every Day</string>
|
||||
<string id="30073">Every Week</string>
|
||||
<string id="30074">First Day of Month</string>
|
||||
<string id="30075">Custom Schedule</string>
|
||||
<string id="30076">Shutdown After Backup</string>
|
||||
<string id="30077">Restart XBMC</string>
|
||||
<string id="30078">You should restart XBMC to continue</string>
|
||||
<string id="30079">Just Today</string>
|
||||
<string id="30080">Profiles</string>
|
||||
<string id="30081">Scheduler will run again on</string>
|
||||
<string id="30082">Progress Bar</string>
|
||||
<string id="30083">Background Progress Bar</string>
|
||||
<string id="30084">None (Silent)</string>
|
||||
<string id="30085">Version Warning</string>
|
||||
<string id="30086">This version of XBMC is different than the one used to create the archive</string>
|
||||
<string id="30087">Compress Archives</string>
|
||||
<string id="30088">Copying Zip Archive</string>
|
||||
<string id="30089">Write Error Detected</string>
|
||||
<string id="30090">The destination may not be writeable</string>
|
||||
<string id="30091">Zip archive could not be copied</string>
|
||||
<string id="30092">Not all files were copied</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Esperanto language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/eo/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30011">Generalo</string>
|
||||
<string id="30023">Mode</string>
|
||||
<string id="30032">Datinbanko</string>
|
||||
<string id="30065">Dimanĉo</string>
|
||||
<string id="30066">Lundo</string>
|
||||
<string id="30067">Mardo</string>
|
||||
<string id="30068">Merkredo</string>
|
||||
<string id="30069">Ĵaŭdo</string>
|
||||
<string id="30070">Vendredo</string>
|
||||
<string id="30071">Sabato</string>
|
||||
<string id="30080">Provicos</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Estonian language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/et/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30011">Üldine</string>
|
||||
<string id="30023">Režiim</string>
|
||||
<string id="30032">Andmebaas</string>
|
||||
<string id="30033">Mängukava</string>
|
||||
<string id="30061">Ajakava</string>
|
||||
<string id="30065">pühapäev</string>
|
||||
<string id="30066">esmaspäev</string>
|
||||
<string id="30067">teisipäev</string>
|
||||
<string id="30068">kolmapäev</string>
|
||||
<string id="30069">neljapäev</string>
|
||||
<string id="30070">reede</string>
|
||||
<string id="30071">laupäev</string>
|
||||
<string id="30077">Taaskäivita XBMC</string>
|
||||
<string id="30080">Profiilid</string>
|
||||
</strings>
|
||||
|
||||
8
resources/language/Faroese/strings.xml
Normal file
8
resources/language/Faroese/strings.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Faroese language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/fo/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30011">Vanligt</string>
|
||||
</strings>
|
||||
@@ -1,48 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Finnish language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/fi/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30011">Yleiset</string>
|
||||
<string id="30016">Varmuuskopio</string>
|
||||
<string id="30023">Tila</string>
|
||||
<string id="30032">Tietokanta</string>
|
||||
<string id="30033">Toistolista</string>
|
||||
<string id="30061">Ajastus</string>
|
||||
<string id="30065">sunnuntai</string>
|
||||
<string id="30066">maanantai</string>
|
||||
<string id="30067">tiistai</string>
|
||||
<string id="30068">keskiviikko</string>
|
||||
<string id="30069">torstai</string>
|
||||
<string id="30070">perjantai</string>
|
||||
<string id="30071">lauantai</string>
|
||||
<string id="30077">Käynnistä XBMC uudelleen</string>
|
||||
<string id="30080">Käyttäjäprofiilit</string>
|
||||
</strings>
|
||||
|
||||
81
resources/language/French (Canada)/strings.xml
Normal file
81
resources/language/French (Canada)/strings.xml
Normal file
@@ -0,0 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- French (Canada) language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/fr_CA/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010">Sauvegarde XBMC</string>
|
||||
<string id="30011">Général</string>
|
||||
<string id="30012">Choix des fichiers</string>
|
||||
<string id="30013">Planification</string>
|
||||
<string id="30016">Sauvegarder</string>
|
||||
<string id="30017">Restaurer</string>
|
||||
<string id="30018">Parcourir le chemin</string>
|
||||
<string id="30019">Saisir le chemin</string>
|
||||
<string id="30020">Parcourir le chemin distant</string>
|
||||
<string id="30021">Nom du dossier de sauvegarde</string>
|
||||
<string id="30022">Affichage de la progression</string>
|
||||
<string id="30023">Mode</string>
|
||||
<string id="30024">Saisir le chemin distant</string>
|
||||
<string id="30025">Type de chemin distant</string>
|
||||
<string id="30026">Sauvegardes à garder (0 pour toutes)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Clef Dropbox</string>
|
||||
<string id="30029">Secret Dropbox</string>
|
||||
<string id="30030">Addiciels de l'utilisateur</string>
|
||||
<string id="30031">Données de l'addiciel</string>
|
||||
<string id="30032">Base de données</string>
|
||||
<string id="30033">Liste de lecture</string>
|
||||
<string id="30034">Imagettes/Fanart</string>
|
||||
<string id="30035">Fichiers de configuration</string>
|
||||
<string id="30036">Répertoire personnalisé 1</string>
|
||||
<string id="30037">Répertoire personnalisé 2</string>
|
||||
<string id="30038">Paramètres avancés détectés</string>
|
||||
<string id="30039">Le fichier advancedsettings devrait d'abord être restauré</string>
|
||||
<string id="30040">Choisir Oui pour restaurer ce fichier et redémarrer XBMC</string>
|
||||
<string id="30041">Choisir Non pour continuer</string>
|
||||
<string id="30042">Reprendre la restauration</string>
|
||||
<string id="30043">La sauvegarde de XBMC a détecté une restauration incomplète</string>
|
||||
<string id="30044">Voulez-vous continuer?</string>
|
||||
<string id="30045">Erreur : le chemin distant n'existe pas</string>
|
||||
<string id="30046">Démarrage</string>
|
||||
<string id="30047">Répertoire local</string>
|
||||
<string id="30048">Répertoire distant</string>
|
||||
<string id="30049">Recueil de la liste des fichiers</string>
|
||||
<string id="30050">Le chemin distant existe - il peut contenir des anciens fichiers!</string>
|
||||
<string id="30051">Création de la liste des fichiers</string>
|
||||
<string id="30052">Écriture du fichier</string>
|
||||
<string id="30053">Lancement de la sauvegarde planifiée</string>
|
||||
<string id="30054">Suppression de la sauvegarde</string>
|
||||
<string id="30056">Vérifier le journal pour l'URL d'autorisation de Dropbox</string>
|
||||
<string id="30057">Cliquer sur OK après autorisation</string>
|
||||
<string id="30058">Code du développeur Dropbox requis</string>
|
||||
<string id="30059">Visiter https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Activer l'ordonnanceur</string>
|
||||
<string id="30061">Planification</string>
|
||||
<string id="30062">Heure de la journée</string>
|
||||
<string id="30063">Jour de la semaine</string>
|
||||
<string id="30064">Planification cron</string>
|
||||
<string id="30065">Dimanche</string>
|
||||
<string id="30066">Lundi</string>
|
||||
<string id="30067">Mardi</string>
|
||||
<string id="30068">Mercredi</string>
|
||||
<string id="30069">Jeudi</string>
|
||||
<string id="30070">Vendredi</string>
|
||||
<string id="30071">Samedi</string>
|
||||
<string id="30072">Tous les jours</string>
|
||||
<string id="30073">Toutes les semaines</string>
|
||||
<string id="30074">Premier de chaque mois</string>
|
||||
<string id="30075">Planification personnalisée</string>
|
||||
<string id="30076">Extinction après la sauvegarde</string>
|
||||
<string id="30077">Redémarrer XBMC</string>
|
||||
<string id="30078">Vous devriez redémarrer XBMC pour continuer</string>
|
||||
<string id="30079">Seulement aujourd'hui</string>
|
||||
<string id="30080">Profils</string>
|
||||
<string id="30081">L'ordonnanceur s'exécutera à nouveau</string>
|
||||
<string id="30082">Barre de progression</string>
|
||||
<string id="30083">Barre de progression d'arrière-plan</string>
|
||||
<string id="30084">Aucun (silencieux)</string>
|
||||
<string id="30085">Avertissement de version</string>
|
||||
<string id="30086">Cette version de XBMC est différente de celle utilisée pour créer l'archive</string>
|
||||
</strings>
|
||||
@@ -1,4 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- French language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/fr/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010">Sauvegarde XBMC</string>
|
||||
<string id="30011">Général</string>
|
||||
@@ -14,12 +18,25 @@
|
||||
<string id="30023">Mode</string>
|
||||
<string id="30024">Saisir le chemin de sauvegarde</string>
|
||||
<string id="30025">Mode de saisie du chemin</string>
|
||||
<string id="30026">Sauvegardes à conserver (0 pour tous)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Dropbox Clé</string>
|
||||
<string id="30029">Dropbox Secret</string>
|
||||
<string id="30030">Addons de l'utilisaeur</string>
|
||||
<string id="30031">Données des addons</string>
|
||||
<string id="30032">Base de données</string>
|
||||
<string id="30033">Playliste</string>
|
||||
<string id="30034">Miniatures / Fanart</string>
|
||||
<string id="30035">Fichiers de configuration</string>
|
||||
<string id="30036">Répertoire personnalisé 1</string>
|
||||
<string id="30037">Répertoire personnalisé 2</string>
|
||||
<string id="30038">Paramètres avancés détectés</string>
|
||||
<string id="30039">Le fichier advancedsettings doit être restauré d'abord</string>
|
||||
<string id="30040">Sélectionner Oui pour restaurer ce fichier et redémarrer XBMC</string>
|
||||
<string id="30041">Sélectionner Non pour continuer</string>
|
||||
<string id="30042">Reprendre la restauration</string>
|
||||
<string id="30043">XBMC Backup a détecté une restauration inachevée</string>
|
||||
<string id="30044">Voulez-vous continuer ?</string>
|
||||
<string id="30045">Erreur : chemin distant n'existe pas</string>
|
||||
<string id="30046">Démarrage</string>
|
||||
<string id="30047">Dossier Local</string>
|
||||
@@ -29,6 +46,11 @@
|
||||
<string id="30051">Création de la liste des fichiers</string>
|
||||
<string id="30052">Ecriture du fichier</string>
|
||||
<string id="30053">Démarrage de la sauvegarde planifiée</string>
|
||||
<string id="30054">Suppression de la sauvegarde</string>
|
||||
<string id="30056">Vérifiez le journal pour vérifier l'URL de Dropbox</string>
|
||||
<string id="30057">Cliquez sur OK s'il y est autorisé</string>
|
||||
<string id="30058">Code développeur Dropbox nécessaire</string>
|
||||
<string id="30059">Visit https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Activer le planificateur</string>
|
||||
<string id="30061">Planifier</string>
|
||||
<string id="30062">Heure</string>
|
||||
@@ -45,4 +67,10 @@
|
||||
<string id="30073">Chaque semaine</string>
|
||||
<string id="30074">Premier jour du mois</string>
|
||||
<string id="30075">Planification personnalisée</string>
|
||||
<string id="30076">Arrêter après la sauvegarde</string>
|
||||
<string id="30077">Redémarrer XBMC</string>
|
||||
<string id="30078">Vous devez redémarrer XBMC pour continuer</string>
|
||||
<string id="30079">Seulement aujourd'hui</string>
|
||||
<string id="30080">Profils</string>
|
||||
<string id="30081">Le planificateur sera exécuté le</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Galician language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/gl/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">Copia de seguranza de XBMC</string>
|
||||
<string id="30011">Xeral</string>
|
||||
<string id="30012">Selección de ficheiro</string>
|
||||
<string id="30013">Programación</string>
|
||||
<string id="30016">Copia de seguranza</string>
|
||||
<string id="30017">Restaurar</string>
|
||||
<string id="30018">Buscar Camiño</string>
|
||||
<string id="30019">Escribir Camiño</string>
|
||||
<string id="30020">Buscar Camiño Remoto</string>
|
||||
<string id="30021">Nome do cartafol de copias de seguranza</string>
|
||||
<string id="30022">Amosar Progreso</string>
|
||||
<string id="30023">Modo</string>
|
||||
<string id="30024">Escribir Camiño Remoto</string>
|
||||
<string id="30025">Tipo de Camiño Remoto</string>
|
||||
<string id="30026">Copias de seguranza (0 para todas)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Clave de Dropbox</string>
|
||||
<string id="30029">Secreto de Dropbox</string>
|
||||
<string id="30030">Complementos de usuario</string>
|
||||
<string id="30031">Datos dos complementos</string>
|
||||
<string id="30032">Base de datos</string>
|
||||
<string id="30033">Lista de reprodución</string>
|
||||
<string id="30034">Miniaturas/Cartel</string>
|
||||
<string id="30035">Ficheiros de configuración</string>
|
||||
<string id="30036">Cartafol Personalizado 1</string>
|
||||
<string id="30037">Cartafol Personalizado 2</string>
|
||||
<string id="30038">Detectada a Configuración Avanzada</string>
|
||||
<string id="30039">Deberíase restaurar primeiro o ficheiro da configuración avanzada</string>
|
||||
<string id="30040">Seleccione Si para restaurar este ficheiro e reiniciar o XBMC</string>
|
||||
<string id="30041">Seleccione Non para continuar</string>
|
||||
<string id="30042">Continuar a Restauración</string>
|
||||
<string id="30043">O Sistema de Copias do XBMC detectou unha restauración se rematar</string>
|
||||
<string id="30044">Quere continuar?</string>
|
||||
<string id="30045">Erro: O camiño remoto non existe</string>
|
||||
<string id="30046">Iniciando</string>
|
||||
<string id="30047">Cart Local</string>
|
||||
<string id="30048">Cart Remoto</string>
|
||||
<string id="30049">Recollendo listaxe de ficheiros</string>
|
||||
<string id="30050">O Camiño Remoto xa existe e pode conter ficheiros antigos!</string>
|
||||
<string id="30051">Creando listaxe de ficheiros</string>
|
||||
<string id="30052">A escribir o ficheiro</string>
|
||||
<string id="30053">Iniciando copia de seguridade programada</string>
|
||||
<string id="30054">Eliminando copia de seguranza</string>
|
||||
<string id="30056">Verificar o rexistro para o URL de autorización de Dropbox</string>
|
||||
<string id="30057">Prema Aceptar cando teña autorización</string>
|
||||
<string id="30058">É necesario o códido de desenvolvedor de Dropbox</string>
|
||||
<string id="30059">Visite https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Activar Programador</string>
|
||||
<string id="30061">Programación</string>
|
||||
<string id="30062">Hora do día</string>
|
||||
<string id="30063">Día da semana</string>
|
||||
<string id="30064">Programación Cron</string>
|
||||
<string id="30065">Domingo</string>
|
||||
<string id="30066">Luns</string>
|
||||
<string id="30067">Martes</string>
|
||||
<string id="30068">Mércores</string>
|
||||
<string id="30069">Xoves</string>
|
||||
<string id="30070">Venres</string>
|
||||
<string id="30071">Sábado</string>
|
||||
<string id="30072">Cada día</string>
|
||||
<string id="30073">Cada semana</string>
|
||||
<string id="30074">Primeiro día do mes</string>
|
||||
<string id="30075">Programación Personalizada</string>
|
||||
<string id="30076">Apagar despois de realizar a copia de seguranza</string>
|
||||
<string id="30077">Reiniciar XBMC</string>
|
||||
<string id="30078">Ten de restaurar o XBMC para continuar</string>
|
||||
<string id="30079">Só Hoxe</string>
|
||||
<string id="30080">Perfís</string>
|
||||
<string id="30081">O Programador executarase de novo o</string>
|
||||
<string id="30082">Barra de Progreso</string>
|
||||
<string id="30083">Barra de Progreso no Fondo</string>
|
||||
<string id="30084">Ningún (Silencioso)</string>
|
||||
<string id="30085">Advertencia de Versión</string>
|
||||
<string id="30086">Esta versión do XBMC é diferente da utilizada para xerar o ficheiro</string>
|
||||
</strings>
|
||||
|
||||
8
resources/language/Georgian/strings.xml
Normal file
8
resources/language/Georgian/strings.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Georgian language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/ka/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30011">მთავარი</string>
|
||||
</strings>
|
||||
@@ -1,4 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- German language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/de/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010">XBMC Backup</string>
|
||||
<string id="30011">Allgemein</string>
|
||||
@@ -14,12 +18,25 @@
|
||||
<string id="30023">Modus</string>
|
||||
<string id="30024">Entferntes Verzeichnis</string>
|
||||
<string id="30025">Typ Entferntes Verzeichnis</string>
|
||||
<string id="30026">Zu behaltende Sicherheitskopien (0 für alle)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Dropbox Schlüssel</string>
|
||||
<string id="30029">Dropbox Secret</string>
|
||||
<string id="30030">Benutzer Addons</string>
|
||||
<string id="30031">Addon Daten</string>
|
||||
<string id="30032">Datenbanken</string>
|
||||
<string id="30033">Playlisten</string>
|
||||
<string id="30034">Thumbnails/Fanart</string>
|
||||
<string id="30035">Config Dateien</string>
|
||||
<string id="30036">Benutzerdefiniertes Verzeichnis 1</string>
|
||||
<string id="30037">Benutzerdefiniertes Verzeichnis 2</string>
|
||||
<string id="30038">Erweiterte Einstellungen entdeckt</string>
|
||||
<string id="30039">Die Erweiterte Einstellungsdatei sollte zuerst wiederhergestellt werden</string>
|
||||
<string id="30040">Wähle ja um diese Datei wiederherzustellen und XBMC neuzustarten</string>
|
||||
<string id="30041">Wähle Nein um fortzufahren</string>
|
||||
<string id="30042">Wiederherstellung fortsetzen</string>
|
||||
<string id="30043">XBMC Backup hat eine nicht komplette Wiederherstellung entdeckt</string>
|
||||
<string id="30044">Möchtest du fortfahren?</string>
|
||||
<string id="30045">Fehler: Entferntes Verzeichnis nicht konfiguriert</string>
|
||||
<string id="30046">Starte</string>
|
||||
<string id="30047">Lokales Verzeichnis</string>
|
||||
@@ -29,6 +46,11 @@
|
||||
<string id="30051">Dateiliste wird erzeugt</string>
|
||||
<string id="30052">Schreibe Datei</string>
|
||||
<string id="30053">Starte geplantes backup</string>
|
||||
<string id="30054">Sicherheitskopie entfernen</string>
|
||||
<string id="30056">Überprüfe den Log für die Dropbox-Autorisierungs URL.</string>
|
||||
<string id="30057">Klicke OK, sobald du autorisiert bist.</string>
|
||||
<string id="30058">Dropbox Developer Code benötigt</string>
|
||||
<string id="30059">Besuche https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Zeitplaner einschalten</string>
|
||||
<string id="30061">Zeitplan</string>
|
||||
<string id="30062">Stunde</string>
|
||||
@@ -45,4 +67,14 @@
|
||||
<string id="30073">Jede Woche</string>
|
||||
<string id="30074">Erster Tag eines Monats</string>
|
||||
<string id="30075">Benutzerdefiniert</string>
|
||||
<string id="30076">Herunterfahren nach Backup</string>
|
||||
<string id="30077">XBMC neu starten</string>
|
||||
<string id="30078">Du solltest XBMC neu starten, um fortzufahren</string>
|
||||
<string id="30079">Nur heute</string>
|
||||
<string id="30080">Profile</string>
|
||||
<string id="30081">Arbeitsplaner wird nochmal ausgeführt am:</string>
|
||||
<string id="30082">Fortschrittsbalken</string>
|
||||
<string id="30083">Hintergrund Fortsschrittsbalken</string>
|
||||
<string id="30084">Keine (Still)</string>
|
||||
<string id="30085">Versionswarnung</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Greek language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/el/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">Αντίγραφο Ασφαλείας XBMC</string>
|
||||
<string id="30011">Γενικά</string>
|
||||
<string id="30012">Επιλογή Αρχείου</string>
|
||||
<string id="30013">Προγραμματισμός</string>
|
||||
<string id="30016">Δημιουργία Αντιγράφου</string>
|
||||
<string id="30017">Επαναφορά</string>
|
||||
<string id="30018">Εντοπισμός της Διαδρομής</string>
|
||||
<string id="30019">Πληκτρολόγηση της Διαδρομής</string>
|
||||
<string id="30020">Εντοπισμός Απομακρυσμένης Διαδρομής</string>
|
||||
<string id="30021">Όνομα Φακέλου Αντιγράφου Ασφαλείας</string>
|
||||
<string id="30022">Απεικόνιση Εξέλιξης</string>
|
||||
<string id="30023">Μέθοδος</string>
|
||||
<string id="30024">Πληκτρολόγηση Απομακρυσμένης Διαδρομής</string>
|
||||
<string id="30025">Τύπος Απομακρυσμένης Διαδρομής</string>
|
||||
<string id="30026">Πόσα αντίγραφα να διατηρηθούν (0 για όλα)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Κλειδί Dropbox</string>
|
||||
<string id="30029">Μυστικό Dropbox</string>
|
||||
<string id="30030">Πρόσθετα Χρήστη</string>
|
||||
<string id="30031">Δεδομένα Πρόσθετου</string>
|
||||
<string id="30032">Βάση δεδομένων</string>
|
||||
<string id="30033">Λίστα Αναπαραγωγής</string>
|
||||
<string id="30034">Μικρογραφίες/Fanart</string>
|
||||
<string id="30035">Αρχεία Ρυθμίσεων</string>
|
||||
<string id="30036">Προσαρμοσμένος Φάκελος 1</string>
|
||||
<string id="30037">Προσαρμοσμένος Φάκελος 2</string>
|
||||
<string id="30038">Εντοπίστηκαν Προηγμένες Ρυθμίσεις (Advanced Settings)</string>
|
||||
<string id="30039">Το αρχείο advancedsettings πρέπει να επαναφερθεί πρώτο</string>
|
||||
<string id="30040">Select Yes to restore this file and restart XBMC</string>
|
||||
<string id="30041">Επιλέξτε Όχι για να συνεχίσετε</string>
|
||||
<string id="30042">Συνέχιση Επαναφοράς</string>
|
||||
<string id="30043">Το XBMC Backup εντόπισε μια μη ολοκληρωμένη επαναφορά</string>
|
||||
<string id="30044">Επιθυμείτε να συνεχίσετε;</string>
|
||||
<string id="30045">Σφάλμα: Δεν υπάρχει η απομακρυσμένη διαδρομή</string>
|
||||
<string id="30046">Έναρξη</string>
|
||||
<string id="30047">Τοπικός Φάκελος</string>
|
||||
<string id="30048">Απομακρυσμένος Φάκελος</string>
|
||||
<string id="30049">Συγκέντρωση λίστας αρχείων</string>
|
||||
<string id="30050">Η Απομακρυσμένη Διαδρομή υπάρχει - μπορεί να έχει ήδη αρχεία μέσα!</string>
|
||||
<string id="30051">Δημιουργία Λίστας Αρχείων</string>
|
||||
<string id="30052">Εγγραφή αρχείου</string>
|
||||
<string id="30053">Έναρξη προγραμματισμένου αντιγράφου ασφαλείας</string>
|
||||
<string id="30054">Αφαίρεση αντιγράφου</string>
|
||||
<string id="30056">Ελέγξτε το αρχείο καταγραφής για τη διεύθυνση URL έγκρισης του Dropbox</string>
|
||||
<string id="30057">Πιέστε 'Επιλογή' κατά την έγκριση</string>
|
||||
<string id="30058">Απαιτείται Κωδικός Προγραμματιστή Dropbox</string>
|
||||
<string id="30059">Επισκεφθείτε το https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Ενεργοποίηση Προγραμματισμού</string>
|
||||
<string id="30061">Προγραμματισμός</string>
|
||||
<string id="30062">Ώρα της Μέρας</string>
|
||||
<string id="30063">Μέρα της Εβδομάδας</string>
|
||||
<string id="30064">Προγραμματισμός Cron</string>
|
||||
<string id="30065">Κυριακή</string>
|
||||
<string id="30066">Δευτέρα</string>
|
||||
<string id="30067">Τρίτη</string>
|
||||
<string id="30068">Τετάρτη</string>
|
||||
<string id="30069">Πέμπτη</string>
|
||||
<string id="30070">Παρασκευή</string>
|
||||
<string id="30071">Σάββατο</string>
|
||||
<string id="30072">Κάθε Μέρα</string>
|
||||
<string id="30073">Κάθε Εβδομάδα</string>
|
||||
<string id="30074">Πρώτη του Μηνός</string>
|
||||
<string id="30075">Προσαρμοσμένος Προγραμματισμός</string>
|
||||
<string id="30076">Τερματισμός μετά τη δημιουργία Αντιγράφου</string>
|
||||
<string id="30077">Επανεκκίνηση XBMC</string>
|
||||
<string id="30078">Πρέπει να επανεκκινήσετε το XBMC για να συνεχίσετε</string>
|
||||
<string id="30079">Μόνο Σήμερα</string>
|
||||
<string id="30080">Προφίλ</string>
|
||||
<string id="30081">Ο προγραμματισμός θα γίνει ξανά στις</string>
|
||||
<string id="30082">Μπάρα Εξέλιξης</string>
|
||||
<string id="30083">Μπάρα Εξέλιξης Υποβάθρου</string>
|
||||
<string id="30084">Κανένα (Αθόρυβο)</string>
|
||||
<string id="30085">Προειδοποίηση Έκδοσης</string>
|
||||
<string id="30086">Η έκδοση του XBMC δεν είναι αυτή που χρησιμοποιήθηκε για τη δημιουργία του αρχείου</string>
|
||||
</strings>
|
||||
|
||||
14
resources/language/Haitian (Haitian Creole)/strings.xml
Normal file
14
resources/language/Haitian (Haitian Creole)/strings.xml
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Haitian (Haitian Creole) language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/ht/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30065">dimanch</string>
|
||||
<string id="30066">Lindi</string>
|
||||
<string id="30067">Madi</string>
|
||||
<string id="30068">Merkredi</string>
|
||||
<string id="30069">Jedi</string>
|
||||
<string id="30070">Vandredi</string>
|
||||
<string id="30071">Samdi</string>
|
||||
</strings>
|
||||
@@ -1,48 +1,75 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Hebrew language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/he/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">גיבוי XBMC</string>
|
||||
<string id="30011">כללי</string>
|
||||
<string id="30012">בחירת קובץ</string>
|
||||
<string id="30013">תזמון</string>
|
||||
<string id="30016">גיבוי</string>
|
||||
<string id="30017">שחזור</string>
|
||||
<string id="30018">עיון בנתיב</string>
|
||||
<string id="30019">הזן נתיב</string>
|
||||
<string id="30020">עיון בנתיב מרוחק</string>
|
||||
<string id="30021">שם תיקיית גיבוי</string>
|
||||
<string id="30023">מצב</string>
|
||||
<string id="30024">הזן נתיב מרוחק</string>
|
||||
<string id="30025">סוג נתיב מרוחק</string>
|
||||
<string id="30026">מספר גיבוים לשמירה (0 להכול)</string>
|
||||
<string id="30027">דרופבוקס</string>
|
||||
<string id="30028">Dropbox Key</string>
|
||||
<string id="30029">Dropbox Secret</string>
|
||||
<string id="30030">הרחבות משתמש</string>
|
||||
<string id="30031">נתוני הרחבה</string>
|
||||
<string id="30032">מסד נתונים</string>
|
||||
<string id="30033">רשימת השמעה</string>
|
||||
<string id="30034">תמונות ממוזערות/פאנארט</string>
|
||||
<string id="30035">קבצי הגדרות</string>
|
||||
<string id="30036">תיקיה מותאמת 1</string>
|
||||
<string id="30037">תיקיה מותאמת 2</string>
|
||||
<string id="30038">זוהה Advanced Settings</string>
|
||||
<string id="30039">יש לשחזר תחילה את הקובץ advancedsettings</string>
|
||||
<string id="30040">בחר "כן" לשחזור קובץ זה ולהפעלת XBMC מחדש</string>
|
||||
<string id="30041">בחר "לא" להמשך</string>
|
||||
<string id="30042">המשך שחזור</string>
|
||||
<string id="30043">גיבוי XBMC זיהה שחזור שלא הסתיים</string>
|
||||
<string id="30044">האם ברצונך להמשיך?</string>
|
||||
<string id="30045">שגיאה: נתיב מרוחק אינו קיים</string>
|
||||
<string id="30046">מתחיל</string>
|
||||
<string id="30047">תיקיה מקומית</string>
|
||||
<string id="30048">תיקיה מרוחקת</string>
|
||||
<string id="30049">אוסף רשימת קבצים</string>
|
||||
<string id="30050">נתיב מרוחק נמצא - יתכן שיש בתיקיה זו קבצים ישנים!</string>
|
||||
<string id="30051">יוצר רשימת קבצים</string>
|
||||
<string id="30052">כותב קובץ</string>
|
||||
<string id="30053">מתחיל גיבוי מתוזמן</string>
|
||||
<string id="30054">מסיר גיבוי</string>
|
||||
<string id="30056">בדוק יומן רישום לכתובת דרופבוקס מאושרת</string>
|
||||
<string id="30057">לחץ אישור כשמאושר</string>
|
||||
<string id="30058">נדרש קוד מפתח של דרופבוקס</string>
|
||||
<string id="30059">בקר בכתובת https://www.dropbox.com/developers</string>
|
||||
<string id="30060">הפעל מתזמן</string>
|
||||
<string id="30061">תזמון</string>
|
||||
<string id="30062">שעה ביום</string>
|
||||
<string id="30063">יום בשבוע</string>
|
||||
<string id="30064">תזמון Cron</string>
|
||||
<string id="30065">יום ראשון</string>
|
||||
<string id="30066">יום שני</string>
|
||||
<string id="30067">יום שלישי</string>
|
||||
<string id="30068">יום רביעי</string>
|
||||
<string id="30069">יום חמישי</string>
|
||||
<string id="30070">יום שישי</string>
|
||||
<string id="30071">יום שבת</string>
|
||||
<string id="30072">כל יום</string>
|
||||
<string id="30073">כל שבוע</string>
|
||||
<string id="30074">יום ראשון של החודש</string>
|
||||
<string id="30075">תזמון מותאם אישית</string>
|
||||
<string id="30076">כיבוי בתום הגיבוי</string>
|
||||
<string id="30077">הפעל את XBMC מחדש</string>
|
||||
<string id="30078">להמשך הינך צריך להפעיל את XBMC מחדש</string>
|
||||
<string id="30079">היום בלבד</string>
|
||||
<string id="30080">פרופילים</string>
|
||||
<string id="30081">המתזמן יופעל שוב ב-</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Hindi (Devanagiri) language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/hi/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30011">सामान्य</string>
|
||||
<string id="30023">विधि</string>
|
||||
<string id="30033">प्लेलिस्ट</string>
|
||||
<string id="30065">रविवार</string>
|
||||
<string id="30066">सोमवार</string>
|
||||
<string id="30067">मंगलवार</string>
|
||||
<string id="30068">बुधवार</string>
|
||||
<string id="30069">गुरूवार</string>
|
||||
<string id="30070">शुक्रवार</string>
|
||||
<string id="30071">शनिवार</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Hungarian language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/hu/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">XBMC biztonsági mentés</string>
|
||||
<string id="30011">Általános</string>
|
||||
<string id="30012">Fájlok kiválasztás</string>
|
||||
<string id="30013">Időzítés</string>
|
||||
<string id="30016">Biztonsági mentés</string>
|
||||
<string id="30017">Visszaállítás</string>
|
||||
<string id="30018">Útvonal tallózása</string>
|
||||
<string id="30019">Adja meg az útvonalat</string>
|
||||
<string id="30020">Távoli útvonal tallózása</string>
|
||||
<string id="30021">Biztonsási mentés mappa neve</string>
|
||||
<string id="30022">Folyamatkijelzés</string>
|
||||
<string id="30023">Mód</string>
|
||||
<string id="30024">Adja meg a távoli útvonalat</string>
|
||||
<string id="30025">Távoli útvonal típusa</string>
|
||||
<string id="30026">Megtartandó mentések száma (0, ha mindet)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Dropbox key</string>
|
||||
<string id="30029">Dropbox secret</string>
|
||||
<string id="30030">Felhasználói kiegészítők</string>
|
||||
<string id="30031">Kiegészítő adatok</string>
|
||||
<string id="30032">Adatbázis</string>
|
||||
<string id="30033">Lejátszási lista</string>
|
||||
<string id="30034">Bélyegképek / Rajongói képek</string>
|
||||
<string id="30035">Konfigurációs fájlok</string>
|
||||
<string id="30036">Saját könyvtár 1</string>
|
||||
<string id="30037">Saját könyvtár 2</string>
|
||||
<string id="30038">Haladó Beállítások Megtalálva</string>
|
||||
<string id="30039">Az advancedsettings fájl visszaállítása szükséges előbb</string>
|
||||
<string id="30040">Válassza az Igen opciót a fájl visszaállításához és az XBMC újraindításához</string>
|
||||
<string id="30041">Válassza a Nem opciót a folytatáshoz</string>
|
||||
<string id="30042">Visszaállítás folyatatása</string>
|
||||
<string id="30043">Az XBMC Backup befejezetlen visszaállítást érzékelt</string>
|
||||
<string id="30044">Folytassuk?</string>
|
||||
<string id="30045">Hiba: A távoli útvonal nem létezik</string>
|
||||
<string id="30046">Kezdődik</string>
|
||||
<string id="30047">Helyi könyvtár</string>
|
||||
<string id="30048">Távoli könyvtár</string>
|
||||
<string id="30049">Fájl lista összegyüjtése</string>
|
||||
<string id="30050">A távoli útvonal létezik - régi fájlok lehetnek benne!</string>
|
||||
<string id="30051">Fájl lista létrehozása</string>
|
||||
<string id="30052">Fájl írása</string>
|
||||
<string id="30053">Időzített mentés kezdete</string>
|
||||
<string id="30054">Mentés törlése</string>
|
||||
<string id="30056">Ellenőrizze a naplófájlt a Dropbox bejelentkezési URL-hez</string>
|
||||
<string id="30057">Nyomja meg az OK-t ha bejelentkezett</string>
|
||||
<string id="30058">Dropbox fejlesztői kód szükséges</string>
|
||||
<string id="30059">További információ: https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Időzítő engedélyezése</string>
|
||||
<string id="30061">Időzítés</string>
|
||||
<string id="30062">A nap órája</string>
|
||||
<string id="30063">A hét napja</string>
|
||||
<string id="30064">Cron időzítő</string>
|
||||
<string id="30065">Vasárnap</string>
|
||||
<string id="30066">Hétfő</string>
|
||||
<string id="30067">Kedd</string>
|
||||
<string id="30068">Szerda</string>
|
||||
<string id="30069">Csütörtök</string>
|
||||
<string id="30070">Péntek</string>
|
||||
<string id="30071">Szombat</string>
|
||||
<string id="30072">Minden nap</string>
|
||||
<string id="30073">Minden Héten</string>
|
||||
<string id="30074">A hónap első napján</string>
|
||||
<string id="30075">Egyéni időzítő</string>
|
||||
<string id="30076">Leállítás a biztonsági mentés után</string>
|
||||
<string id="30077">XBMC újraindítása</string>
|
||||
<string id="30078">Az XBMC újraindítása szükséges a folytatáshoz</string>
|
||||
<string id="30079">Csak Ma</string>
|
||||
<string id="30080">Profilok</string>
|
||||
<string id="30081">Az ütemező következő futása:</string>
|
||||
<string id="30082">Folyamatkijelző</string>
|
||||
<string id="30083">Háttér Folyamatjelző</string>
|
||||
<string id="30084">Nincs (Néma)</string>
|
||||
<string id="30085">Verzió Figyelmeztetés</string>
|
||||
<string id="30086">Az XBMC verziója különbözik attól mint amelyik létrehozta az archívumot</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Icelandic language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/is/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30011">Almennt</string>
|
||||
<string id="30023">Hamur</string>
|
||||
<string id="30032">Gagnagrunnur</string>
|
||||
<string id="30033">Lagalista</string>
|
||||
<string id="30046">Ræsi</string>
|
||||
<string id="30061">Dagskrá</string>
|
||||
<string id="30065">Sunnudagur</string>
|
||||
<string id="30066">Mánudagur</string>
|
||||
<string id="30067">Þriðjudagur</string>
|
||||
<string id="30068">Miðvikudagur</string>
|
||||
<string id="30069">Fimmtudagur</string>
|
||||
<string id="30070">Föstudagur</string>
|
||||
<string id="30071">Laugardagur</string>
|
||||
<string id="30077">Endurræsa XBMC</string>
|
||||
<string id="30080">Notendur</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,74 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Indonesian language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/id/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">Pencadangan XBMC</string>
|
||||
<string id="30011">Umum</string>
|
||||
<string id="30012">Pilih Berkas</string>
|
||||
<string id="30013">Penjadwalan</string>
|
||||
<string id="30016">Cadangan</string>
|
||||
<string id="30017">Pengembalian</string>
|
||||
<string id="30018">Ramban Lokasi</string>
|
||||
<string id="30019">Lokasi Tipe</string>
|
||||
<string id="30020">Ramban Lokasi Jarak Jauh</string>
|
||||
<string id="30021">Nama Folder Cadangan</string>
|
||||
<string id="30023">Mode</string>
|
||||
<string id="30024">Lokasi Tipe Jarak Jauh</string>
|
||||
<string id="30025">Tipe Lokasi Jarak Jauh</string>
|
||||
<string id="30026">Cadangan untuk disimpan (0 untuk seluruhnya)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Kunci Dropbox</string>
|
||||
<string id="30029">Rahasia Dropbox</string>
|
||||
<string id="30030">Addon Pengguna</string>
|
||||
<string id="30031">Data Addon</string>
|
||||
<string id="30032">Basis Data</string>
|
||||
<string id="30033">Daftar Main</string>
|
||||
<string id="30034">Gambar Kecil/Fanart</string>
|
||||
<string id="30035">Berkas Konfigurasi</string>
|
||||
<string id="30036">Direktori Lain 1</string>
|
||||
<string id="30037">Direktori Lain 2</string>
|
||||
<string id="30038">Terdeteksi Pengaturan Lanjutan</string>
|
||||
<string id="30039">Berkas pengaturan lanjutan perlu dikembalikan terlebih dulu</string>
|
||||
<string id="30040">Pilih Ya untuk mengembalikan berkas ini dan menjalankan ulang XBMC</string>
|
||||
<string id="30041">Pilih Tidak untuk melanjutkan</string>
|
||||
<string id="30042">Lanjutkan pengembalian</string>
|
||||
<string id="30043">Pencadangan XBMC mendeteksi ada pengembalian yang belum selesai</string>
|
||||
<string id="30044">Apakah Anda ingin melanjutkan?</string>
|
||||
<string id="30045">Kesalahan: Lokasi jarak jauh tidak ada</string>
|
||||
<string id="30046">Memulai</string>
|
||||
<string id="30047">Direktori Lokal</string>
|
||||
<string id="30048">Direktori Jarak Jauh</string>
|
||||
<string id="30049">Mengumpulkan daftar berkas</string>
|
||||
<string id="30050">Lokasi jarak jauh ada - mungkin berisi berkas lama di dalamnya!</string>
|
||||
<string id="30051">Membuat Daftar Berkas</string>
|
||||
<string id="30052">Menulis berkas</string>
|
||||
<string id="30053">Memulai pencadangan terjadwal</string>
|
||||
<string id="30054">Menghapus cadangan</string>
|
||||
<string id="30056">Periksa log untuk URL otorisasi Dropbox</string>
|
||||
<string id="30057">Klik OK ketika sudah terotorisasi</string>
|
||||
<string id="30058">Kode Pengembang Dropbox Diperlukan</string>
|
||||
<string id="30059">Kunjungi https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Mengaktifkan Penjadwalan</string>
|
||||
<string id="30061">Jadwal</string>
|
||||
<string id="30062">Jam</string>
|
||||
<string id="30063">Hari</string>
|
||||
<string id="30064">Jadwal Cron</string>
|
||||
<string id="30065">Minggu</string>
|
||||
<string id="30066">Senin</string>
|
||||
<string id="30067">Selasa</string>
|
||||
<string id="30068">Rabu</string>
|
||||
<string id="30069">Kamis</string>
|
||||
<string id="30070">Jumat</string>
|
||||
<string id="30071">Sabtu</string>
|
||||
<string id="30072">Setiap Hari</string>
|
||||
<string id="30073">Setiap Minggu</string>
|
||||
<string id="30074">Hari Pertama Setiap Bulan</string>
|
||||
<string id="30075">Jadwal Lain</string>
|
||||
<string id="30076">Matikan Setelah Pencadangan</string>
|
||||
<string id="30077">Jalankan Ulang XBMC</string>
|
||||
<string id="30078">Anda perlu menjalankan ulang XBMC untuk melanjutkan</string>
|
||||
<string id="30079">Hanya Hari Ini</string>
|
||||
<string id="30080">Profil</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Italian language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/it/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">Backup XBMC</string>
|
||||
<string id="30011">Generale</string>
|
||||
<string id="30012">Selezione File</string>
|
||||
<string id="30013">Pianificazione</string>
|
||||
<string id="30016">Backup</string>
|
||||
<string id="30017">Ripristina</string>
|
||||
<string id="30018">Seleziona percorso</string>
|
||||
<string id="30019">Scrivi percorso</string>
|
||||
<string id="30020">Seleziona percorso remoto</string>
|
||||
<string id="30021">Nome cartella backup</string>
|
||||
<string id="30022">Visualizzazione avanzamento</string>
|
||||
<string id="30023">Modalità</string>
|
||||
<string id="30024">Scrivi percorso remoto</string>
|
||||
<string id="30025">Tipo percorso remoto</string>
|
||||
<string id="30026">Backup da mantenere (0 per conservarli tutti)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Chiave Dropbox</string>
|
||||
<string id="30029">Segreto Dropbox</string>
|
||||
<string id="30030">Add-on dell'utente</string>
|
||||
<string id="30031">Dati add-on</string>
|
||||
<string id="30032">Banca dati</string>
|
||||
<string id="30033">Lista di riproduzione</string>
|
||||
<string id="30034">Anteprime/Fanart</string>
|
||||
<string id="30035">File di Configurazione</string>
|
||||
<string id="30036">Directory Personalizzata 1</string>
|
||||
<string id="30037">Directory Personalizzata 2</string>
|
||||
<string id="30038">Rilevate Impostazioni Avanzate</string>
|
||||
<string id="30039">Il file advancedsettings dovrebbe essere ripristinato prima</string>
|
||||
<string id="30040">Seleziona Si per rirpistinare questo file e riavvia XBMC</string>
|
||||
<string id="30041">Selezione No per contunuare</string>
|
||||
<string id="30042">Riprendi Rirpistino</string>
|
||||
<string id="30043">XBMC Backup ha rilevato un errore</string>
|
||||
<string id="30044">Vuoi continuare?</string>
|
||||
<string id="30045">Error: Percorso remoto inesistente</string>
|
||||
<string id="30046">Avvio in corso</string>
|
||||
<string id="30047">Cartella Locale</string>
|
||||
<string id="30048">Cartella Remota</string>
|
||||
<string id="30049">Ottenimento lista file</string>
|
||||
<string id="30050">Il percorso remoto è già esistente - dei file vecchi potrebbero già essere presenti!</string>
|
||||
<string id="30051">Creazione lista file</string>
|
||||
<string id="30052">Scrittura file</string>
|
||||
<string id="30053">Inizio backup pianificato</string>
|
||||
<string id="30054">Rimozione backup in corso</string>
|
||||
<string id="30056">Controlla log per URL autorizzazione di Dropbox</string>
|
||||
<string id="30057">Premi OK dopo l'autorizzazione</string>
|
||||
<string id="30058">Codice Sviluppatore Dropbox Necessario</string>
|
||||
<string id="30059">Visita https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Abilita pianificazione</string>
|
||||
<string id="30061">Palinsesto</string>
|
||||
<string id="30062">Ora del Giorno</string>
|
||||
<string id="30063">Giorno della Settimana</string>
|
||||
<string id="30064">Pianificazione Cron</string>
|
||||
<string id="30065">Domenica</string>
|
||||
<string id="30066">Lunedì</string>
|
||||
<string id="30067">Martedì</string>
|
||||
<string id="30068">Mercoledì</string>
|
||||
<string id="30069">Giovedì</string>
|
||||
<string id="30070">Venerdì</string>
|
||||
<string id="30071">Sabato</string>
|
||||
<string id="30072">Ogni Giorno</string>
|
||||
<string id="30073">Ogni Settimana</string>
|
||||
<string id="30074">Primo Giorno del Mese</string>
|
||||
<string id="30075">Pianificazione personalizzata</string>
|
||||
<string id="30076">Spegni dopo avere effettuato il backup</string>
|
||||
<string id="30077">Riavvia XBMC</string>
|
||||
<string id="30078">Dovresti riavviare XBMC per continuare</string>
|
||||
<string id="30079">Oggi</string>
|
||||
<string id="30080">Profili</string>
|
||||
<string id="30081">Gli eventi pianificati verrà rieseguita il</string>
|
||||
<string id="30082">Barra di avanzamento</string>
|
||||
<string id="30083">Barra di avanzamento sullo sfondo</string>
|
||||
<string id="30084">Nessuno (silenzioso)</string>
|
||||
<string id="30085">Allerta Versione</string>
|
||||
<string id="30086">Questa versione di XBMC è diversa da quella che è stata usata per creare l'archivio</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,74 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Japanese language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/ja/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">XBMC バックアップ</string>
|
||||
<string id="30011">一般</string>
|
||||
<string id="30012">ファイル選択</string>
|
||||
<string id="30013">スケジューリング</string>
|
||||
<string id="30016">バックアップ</string>
|
||||
<string id="30017">リストア</string>
|
||||
<string id="30018">パスをブラウズ</string>
|
||||
<string id="30019">パスを入力</string>
|
||||
<string id="30020">リモートパスをブラウズ</string>
|
||||
<string id="30021">バックアップフォルダ名</string>
|
||||
<string id="30023">モード</string>
|
||||
<string id="30024">リモートパスを入力</string>
|
||||
<string id="30025">リモートパスのタイプ</string>
|
||||
<string id="30026">保持するバックアップ (0 = 全部)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">ドロップボックスのキー</string>
|
||||
<string id="30029">Dropboxシークレット</string>
|
||||
<string id="30030">ユーザーアドオン</string>
|
||||
<string id="30031">アドオンのデータ</string>
|
||||
<string id="30032">データベース</string>
|
||||
<string id="30033">プレイリスト</string>
|
||||
<string id="30034">サムネール/ファンアート</string>
|
||||
<string id="30035">設定ファイル</string>
|
||||
<string id="30036">カスタムディレクトリ1</string>
|
||||
<string id="30037">カスタムディレクトリ2</string>
|
||||
<string id="30038">詳細設定が検出されました</string>
|
||||
<string id="30039">Advanced設定ファイルは先に復元したほうが良い</string>
|
||||
<string id="30040">このファイル復元とXBMCの再起動する場合は「はい」を選択してください</string>
|
||||
<string id="30041">続けるにはいいえを選択してください</string>
|
||||
<string id="30042">復元を再開する</string>
|
||||
<string id="30043">XBMCバックアップが未完成の復元を検出しました</string>
|
||||
<string id="30044">続行しますか</string>
|
||||
<string id="30045">エラー:リモートパスが存在しません</string>
|
||||
<string id="30046">開始中</string>
|
||||
<string id="30047">ローカルディレクトリ</string>
|
||||
<string id="30048">リモートディレクトリ</string>
|
||||
<string id="30049">ファイル一覧を取得中</string>
|
||||
<string id="30050">リモートパスが存在します - 古いファイルが残っているのかも!</string>
|
||||
<string id="30051">ファイルリストを作成中</string>
|
||||
<string id="30052">ファイル書き込み中</string>
|
||||
<string id="30053">スケジュールバックアップを開始中</string>
|
||||
<string id="30054">バックアップを削除中</string>
|
||||
<string id="30056">Dropbox の認証URL はログを確認してください</string>
|
||||
<string id="30057">認証が済んだらOKをクリックしてください</string>
|
||||
<string id="30058">Dropbox開発用コードが必要</string>
|
||||
<string id="30059">https://www.dropbox.com/developersをご覧ください</string>
|
||||
<string id="30060">スケジューラを有効にする</string>
|
||||
<string id="30061">スケジュール</string>
|
||||
<string id="30062">時刻</string>
|
||||
<string id="30063">曜日</string>
|
||||
<string id="30064">Cron スケジュール</string>
|
||||
<string id="30065">日曜日</string>
|
||||
<string id="30066">月曜日</string>
|
||||
<string id="30067">火曜日</string>
|
||||
<string id="30068">水曜日</string>
|
||||
<string id="30069">木曜日</string>
|
||||
<string id="30070">金曜日</string>
|
||||
<string id="30071">土曜日</string>
|
||||
<string id="30072">毎日</string>
|
||||
<string id="30073">毎週</string>
|
||||
<string id="30074">毎月1日</string>
|
||||
<string id="30075">カスタムスケジュール</string>
|
||||
<string id="30076">バックアップ後にシャットダウン</string>
|
||||
<string id="30077">XBMCを再起動</string>
|
||||
<string id="30078">続けるため、XBMCを再起動したほうがいい</string>
|
||||
<string id="30079">ちょうど今日</string>
|
||||
<string id="30080">プロファイル</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Korean language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/ko/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">XBMC 백업</string>
|
||||
<string id="30011">일반</string>
|
||||
<string id="30012">파일 선택</string>
|
||||
<string id="30013">스케쥴</string>
|
||||
<string id="30016">백업</string>
|
||||
<string id="30017">복구</string>
|
||||
<string id="30018">경로 탐색</string>
|
||||
<string id="30019">경로 입력</string>
|
||||
<string id="30020">원격 경로 탐색</string>
|
||||
<string id="30021">백업 폴더명</string>
|
||||
<string id="30022">진행 표시</string>
|
||||
<string id="30023">모드</string>
|
||||
<string id="30024">원격 경로 입력</string>
|
||||
<string id="30025">원격 경로 유형</string>
|
||||
<string id="30026">유지할 백업 (0은 모두 유지)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Dropbox 아이디</string>
|
||||
<string id="30029">Dropbox 비밀번호</string>
|
||||
<string id="30030">사용자 애드온</string>
|
||||
<string id="30031">애드온 데이터</string>
|
||||
<string id="30032">데이터베이스</string>
|
||||
<string id="30033">재생목록</string>
|
||||
<string id="30034">썸네일/팬아트</string>
|
||||
<string id="30035">설정 파일</string>
|
||||
<string id="30036">사용자 디렉터리 1</string>
|
||||
<string id="30037">사용자 디렉터리 2</string>
|
||||
<string id="30038">Advanced Settings 감지 됨</string>
|
||||
<string id="30039">advancedsettings 파일을 먼저 복원하여야 합니다</string>
|
||||
<string id="30040">이 파일을 복원하고 XBMC를 다시 시작하려면 Yes 를 선택하세요</string>
|
||||
<string id="30041">계속하려면 No 를 선택하세요</string>
|
||||
<string id="30042">복원 재개</string>
|
||||
<string id="30043">XBMC Backup이 완료되지 않은 복원을 감지하였습니다</string>
|
||||
<string id="30044">계속 하겠습니까?</string>
|
||||
<string id="30045">오류: 존재하지 않는 원격 경로</string>
|
||||
<string id="30046">시작</string>
|
||||
<string id="30047">로컬 디렉터리</string>
|
||||
<string id="30048">원격 디렉터리</string>
|
||||
<string id="30049">파일 목록을 가져오는 중</string>
|
||||
<string id="30050">원격 경로 있음 - 오래된 파일이 있습니다!</string>
|
||||
<string id="30051">파일 목록 작성 중</string>
|
||||
<string id="30052">파일을 쓰는 중</string>
|
||||
<string id="30053">예약된 백업 시작</string>
|
||||
<string id="30054">백업 삭제</string>
|
||||
<string id="30056">로그에서 Dropbox 인증 URL을 확인하세요</string>
|
||||
<string id="30057">인증이 완료되면 확인을 누르세요</string>
|
||||
<string id="30058">Dropbox 개발자 코드가 필요합니다</string>
|
||||
<string id="30059">https://www.dropbox.com/developers 을 방문하세요</string>
|
||||
<string id="30060">예약 사용</string>
|
||||
<string id="30061">예약</string>
|
||||
<string id="30062">시간</string>
|
||||
<string id="30063">요일</string>
|
||||
<string id="30064">Cron 예약</string>
|
||||
<string id="30065">일요일</string>
|
||||
<string id="30066">월요일</string>
|
||||
<string id="30067">화요일</string>
|
||||
<string id="30068">수요일</string>
|
||||
<string id="30069">목요일</string>
|
||||
<string id="30070">금요일</string>
|
||||
<string id="30071">토요일</string>
|
||||
<string id="30072">매일</string>
|
||||
<string id="30073">매주</string>
|
||||
<string id="30074">매월 첫 날</string>
|
||||
<string id="30075">사용자 예약</string>
|
||||
<string id="30076">백업후 시스템 종료</string>
|
||||
<string id="30077">XBMC 재시작</string>
|
||||
<string id="30078">계속하려면 XBMC를 다시 시작하여야 합니다</string>
|
||||
<string id="30079">오늘만</string>
|
||||
<string id="30080">프로파일</string>
|
||||
<string id="30081">다음 예약 실행: </string>
|
||||
<string id="30082">진행 막대</string>
|
||||
<string id="30083">백드라운드 진행 막대</string>
|
||||
<string id="30084">없음 (표시 안 함)</string>
|
||||
<string id="30085">버전 경고</string>
|
||||
<string id="30086">이 XBMC 버전은 보관되어 있는 XBMC와 다른 버전입니다.</string>
|
||||
</strings>
|
||||
|
||||
17
resources/language/Latvian/strings.xml
Normal file
17
resources/language/Latvian/strings.xml
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Latvian language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/lv/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30011">Vispārīgi</string>
|
||||
<string id="30036">Pielāgota direktorija 1</string>
|
||||
<string id="30037">Pielāgota direktorija 2</string>
|
||||
<string id="30065">Svētdiena</string>
|
||||
<string id="30066">Pirmdiena</string>
|
||||
<string id="30067">Otrdiena</string>
|
||||
<string id="30068">Trešdiena</string>
|
||||
<string id="30069">Ceturtdiena</string>
|
||||
<string id="30070">Piektdiena</string>
|
||||
<string id="30071">Sestdiena</string>
|
||||
</strings>
|
||||
@@ -1,48 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Lithuanian language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/lt/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">XBMC atsarginė kopija</string>
|
||||
<string id="30011">Pagrindinis</string>
|
||||
<string id="30012">Failo parinkimas</string>
|
||||
<string id="30013">Planavimas</string>
|
||||
<string id="30016">Atsarginė kopija</string>
|
||||
<string id="30017">Atkurti</string>
|
||||
<string id="30018">Naršymo kelias</string>
|
||||
<string id="30019">Tipo/rūšies kelias</string>
|
||||
<string id="30020">Nuotolinio kelio peržiūra</string>
|
||||
<string id="30021">Atsarginių kopijų aplanko pavadinimas</string>
|
||||
<string id="30022">Progreso atvaizdavimas</string>
|
||||
<string id="30023">Režimas</string>
|
||||
<string id="30024">Įveskite nuotolinį vadymo kelią</string>
|
||||
<string id="30025">Nuotolinį vadymo kelio tipas</string>
|
||||
<string id="30026">Atsarginių kopijų saugojimas (0 visiems)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Dropbox raktas</string>
|
||||
<string id="30029">Dropbox paslaptis</string>
|
||||
<string id="30030">Vartotojo komplektacija</string>
|
||||
<string id="30031">Priedo duomenys</string>
|
||||
<string id="30032">Duomenų bazė</string>
|
||||
<string id="30033">Grojaraštis</string>
|
||||
<string id="30034">Miniatiūros/FanArt</string>
|
||||
<string id="30035">Konfigūracijos failai</string>
|
||||
<string id="30036">Pasirinktinis katalogas 1</string>
|
||||
<string id="30037">Pasirinktinis katalogas 2</string>
|
||||
<string id="30038">Papildomi nustatymai aptikti</string>
|
||||
<string id="30039">Nustatymai 'Išplėstinė byla turėtų būti atkurta'</string>
|
||||
<string id="30040">Pasirinkite Taip, jei norite atkurti šį failą ir perkraukite XBMC</string>
|
||||
<string id="30041">Pasirinkite Ne, jei norite tęsti</string>
|
||||
<string id="30042">Atnaujinti Atkurti</string>
|
||||
<string id="30043">XBMC aptiko nebaigtą atkurti atsarginę kopiją</string>
|
||||
<string id="30044">Ar norite tęsti?</string>
|
||||
<string id="30045">Klaida: Nuotolinis kelias neegzistuoja</string>
|
||||
<string id="30046">Paleidimas</string>
|
||||
<string id="30047">Vietos kryptis</string>
|
||||
<string id="30048">Nuotolinio valdymo kryptis</string>
|
||||
<string id="30049">Gauti failų sąrašą</string>
|
||||
<string id="30050">Nuotolinio valdymo Kelias egzistuoja - jame gali būti senų failų!</string>
|
||||
<string id="30051">Sukurti failų sąrašą</string>
|
||||
<string id="30052">Kūrti/rašyti failą</string>
|
||||
<string id="30053">Paleiti suplanuotą atsarginę kopiją</string>
|
||||
<string id="30054">Pa6alinti atsarginę kopiją</string>
|
||||
<string id="30056">Patikrinti URL prisijungimą prie Dropbox</string>
|
||||
<string id="30057">Spauskite OK, kai leidžiama</string>
|
||||
<string id="30058">Dropbox programuotojo kodas</string>
|
||||
<string id="30059">Apsilankykite https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Įjungti planavimą</string>
|
||||
<string id="30061">Planuoti</string>
|
||||
<string id="30062">Diena ir valanda</string>
|
||||
<string id="30063">Savaitės diena</string>
|
||||
<string id="30064">Planuoti 'Cron'</string>
|
||||
<string id="30065">Sekmadienis</string>
|
||||
<string id="30066">Pirmadienis</string>
|
||||
<string id="30067">Antradienis</string>
|
||||
<string id="30068">Trečiadienis</string>
|
||||
<string id="30069">Ketvirtadienis</string>
|
||||
<string id="30070">Penktadienis</string>
|
||||
<string id="30071">Šeštadienis</string>
|
||||
<string id="30072">Kasdien</string>
|
||||
<string id="30073">Kiekvieną savaitę</string>
|
||||
<string id="30074">Pirmą mėnesio dieną</string>
|
||||
<string id="30075">Individualus tvarkaraštis</string>
|
||||
<string id="30076">Išjungti kompiuterį baigus atsarginę kopiją</string>
|
||||
<string id="30077">Perkrauti XBMC</string>
|
||||
<string id="30078">Jūs turite iš naujo paleisti XBMC</string>
|
||||
<string id="30079">Tiesiog šiandien</string>
|
||||
<string id="30080">Profiliai</string>
|
||||
<string id="30081">Tvarkaraštis bus paleisti dar kartą</string>
|
||||
<string id="30082">Progreso juosta</string>
|
||||
<string id="30083">Foninė progreso juosta</string>
|
||||
<string id="30084">Joks (Tylus)</string>
|
||||
<string id="30085">Versijos įspėjimas</string>
|
||||
<string id="30086">Ši XBMC versija skiriasi nuot tos, kuri naudota kuriant archyvą</string>
|
||||
</strings>
|
||||
|
||||
19
resources/language/Macedonian/strings.xml
Normal file
19
resources/language/Macedonian/strings.xml
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Macedonian language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/mk/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30011">Општо</string>
|
||||
<string id="30023">Режим</string>
|
||||
<string id="30032">База на податоци</string>
|
||||
<string id="30033">Список за реп.</string>
|
||||
<string id="30065">Недела</string>
|
||||
<string id="30066">Понеделник</string>
|
||||
<string id="30067">Вторник</string>
|
||||
<string id="30068">Среда</string>
|
||||
<string id="30069">Четврток</string>
|
||||
<string id="30070">Петок</string>
|
||||
<string id="30071">Сабота</string>
|
||||
<string id="30080">Профили</string>
|
||||
</strings>
|
||||
@@ -1,48 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Malay language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/ms/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30011">Am</string>
|
||||
<string id="30033">Senarai Main</string>
|
||||
<string id="30061">Jadual</string>
|
||||
<string id="30065">Ahad</string>
|
||||
<string id="30066">Isnin</string>
|
||||
<string id="30067">Selasa</string>
|
||||
<string id="30068">Rabu</string>
|
||||
<string id="30069">Khamis</string>
|
||||
<string id="30070">Jumaat</string>
|
||||
<string id="30071">Sabtu</string>
|
||||
<string id="30077">Mula Semula XBMC</string>
|
||||
<string id="30080">Profil</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Malayalam language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/ml/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30011">പോതുവായത്</string>
|
||||
<string id="30062">ദിവസത്തില് ഒരു മണിക്കൂര്</string>
|
||||
<string id="30063">ആഴ്ചയില് ഒരു ദിവസം</string>
|
||||
<string id="30065">ഞായര്</string>
|
||||
<string id="30066">തിങ്കള്</string>
|
||||
<string id="30067">ചൊവ്വ</string>
|
||||
<string id="30068">ബുധന്</string>
|
||||
<string id="30069">വ്യാഴം</string>
|
||||
<string id="30070">വെള്ളി</string>
|
||||
<string id="30071">ശനി</string>
|
||||
<string id="30072">എല്ലാ ദിവസവും</string>
|
||||
<string id="30073">എല്ലാ ആഴ്ചയും</string>
|
||||
</strings>
|
||||
|
||||
19
resources/language/Maltese/strings.xml
Normal file
19
resources/language/Maltese/strings.xml
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Maltese language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/mt/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30011">Ġenerali</string>
|
||||
<string id="30023">Mode:</string>
|
||||
<string id="30032">Database</string>
|
||||
<string id="30033">Playlist</string>
|
||||
<string id="30065">Il-Ħadd</string>
|
||||
<string id="30066">It-Tnejn</string>
|
||||
<string id="30067">It-Tlieta</string>
|
||||
<string id="30068">L-Erbgħa</string>
|
||||
<string id="30069">Il-Ħamis</string>
|
||||
<string id="30070">Il-Ġimgħa</string>
|
||||
<string id="30071">Is-Sibt</string>
|
||||
<string id="30080">Profil</string>
|
||||
</strings>
|
||||
@@ -1,48 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Norwegian language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/no/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">XBMC Backup</string>
|
||||
<string id="30011">Generelt</string>
|
||||
<string id="30012">Filvalg</string>
|
||||
<string id="30013">Timeplan</string>
|
||||
<string id="30016">Sikkerhetskopiering</string>
|
||||
<string id="30017">Gjenopprett</string>
|
||||
<string id="30018">Bla etter sti</string>
|
||||
<string id="30019">Skriv inn sti</string>
|
||||
<string id="30020">Bla etter ekstern sti</string>
|
||||
<string id="30021">Mappenavn</string>
|
||||
<string id="30022">Fremdriftsvisning</string>
|
||||
<string id="30023">Modus</string>
|
||||
<string id="30024">Skriv inn ekstern sti</string>
|
||||
<string id="30025">Ekstern stitype</string>
|
||||
<string id="30026">Antall sikkerhetskopier som beholdes (0 for alle)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Dropbox-nøkkel</string>
|
||||
<string id="30029">Dropbox-secret</string>
|
||||
<string id="30030">Utvidelser</string>
|
||||
<string id="30031">Utvidelsesdata</string>
|
||||
<string id="30032">Database</string>
|
||||
<string id="30033">Spilleliste</string>
|
||||
<string id="30034">Miniatyrer/Fanart</string>
|
||||
<string id="30035">Konfigurasjonsfiler</string>
|
||||
<string id="30036">Egendefinert mappe 1</string>
|
||||
<string id="30037">Egendefinert mappe 2</string>
|
||||
<string id="30038">Avanserte innstillinger oppdaget</string>
|
||||
<string id="30039">advancedsettings-filen bør gjenopprettes først</string>
|
||||
<string id="30040">Velg «Ja» for å gjenopprette denne filen og starte XBMC på ny</string>
|
||||
<string id="30041">Velg «Nei» for å fortsette</string>
|
||||
<string id="30042">Gjenoppta gjenoppretting</string>
|
||||
<string id="30043">XBMC Backup har oppdaget en uferdig gjenoppretting</string>
|
||||
<string id="30044">Ønsker du å fortsette?</string>
|
||||
<string id="30045">Feil: Ekstern sti finnes ikke</string>
|
||||
<string id="30046">Starter</string>
|
||||
<string id="30047">Lokal mappe</string>
|
||||
<string id="30048">Ekstern mappe</string>
|
||||
<string id="30049">Samler filliste</string>
|
||||
<string id="30050">Ekstern sti finnes - kan inneholde gamle filer!</string>
|
||||
<string id="30051">Danner filliste</string>
|
||||
<string id="30052">Skriver fil</string>
|
||||
<string id="30053">Starter planlagt sikkerhetskopi</string>
|
||||
<string id="30054">Fjerner sikkerhetskopi</string>
|
||||
<string id="30056">Se loggen for Dropbox sin autorisasjons-URL</string>
|
||||
<string id="30057">Trykk «OK» når autorisert</string>
|
||||
<string id="30058">Dropbox-utviklerkode behøves</string>
|
||||
<string id="30059">Besøk «https://www.dropbox.com/developers»</string>
|
||||
<string id="30060">Aktiver planlegger</string>
|
||||
<string id="30061">Planlegg</string>
|
||||
<string id="30062">Time</string>
|
||||
<string id="30063">Dag</string>
|
||||
<string id="30064">Cron-planlegger</string>
|
||||
<string id="30065">Søndag</string>
|
||||
<string id="30066">Mandag</string>
|
||||
<string id="30067">Tirsdag</string>
|
||||
<string id="30068">Onsdag</string>
|
||||
<string id="30069">Torsdag</string>
|
||||
<string id="30070">Fredag</string>
|
||||
<string id="30071">Lørdag</string>
|
||||
<string id="30072">Hver dag</string>
|
||||
<string id="30073">Hver uke</string>
|
||||
<string id="30074">Første dag i måneden</string>
|
||||
<string id="30075">Egendefinert</string>
|
||||
<string id="30076">Skru av etter sikkerhetskopiering</string>
|
||||
<string id="30077">Start XBMC på nytt</string>
|
||||
<string id="30078">Du bør starte XBMC på nytt for å fortsette</string>
|
||||
<string id="30079">Bare i dag</string>
|
||||
<string id="30080">Profiler</string>
|
||||
<string id="30081">Planleggeren vil kjøre igjen på</string>
|
||||
<string id="30082">Fremdriftslinje</string>
|
||||
<string id="30083">Bakgrunnsfremdriftslinge</string>
|
||||
<string id="30084">Ingen (Stum)</string>
|
||||
<string id="30085">Versjonsadvarsel</string>
|
||||
<string id="30086">Denne versjonen av XBMC er forskjellig fra den som ble benyttet til å lage sikkerhetskopien</string>
|
||||
</strings>
|
||||
|
||||
18
resources/language/Persian (Iran)/strings.xml
Normal file
18
resources/language/Persian (Iran)/strings.xml
Normal file
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Persian (Iran) language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/fa_IR/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30011">عمومی</string>
|
||||
<string id="30032">پایگاه داده</string>
|
||||
<string id="30033">لیست پخش</string>
|
||||
<string id="30065">یکشنبه</string>
|
||||
<string id="30066">دوشنبه</string>
|
||||
<string id="30067">سه شنبه</string>
|
||||
<string id="30068">چهارشنبه</string>
|
||||
<string id="30069">پنجشنبه</string>
|
||||
<string id="30070">جمعه</string>
|
||||
<string id="30071">شنبه</string>
|
||||
<string id="30080">پروفایل ها</string>
|
||||
</strings>
|
||||
16
resources/language/Persian/strings.xml
Normal file
16
resources/language/Persian/strings.xml
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Persian language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/fa/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30011">عمومی</string>
|
||||
<string id="30065">یکشنبه</string>
|
||||
<string id="30066">دوشنبه</string>
|
||||
<string id="30067">سهشنبه</string>
|
||||
<string id="30068">چهارشنبه</string>
|
||||
<string id="30069">پنجشنبه</string>
|
||||
<string id="30070">جمعه</string>
|
||||
<string id="30071">شنبه</string>
|
||||
<string id="30080">پروفایل</string>
|
||||
</strings>
|
||||
@@ -1,48 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Polish language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/pl/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">Kopia bezpieczeństwa XBMC</string>
|
||||
<string id="30011">Ogólne</string>
|
||||
<string id="30012">Wybór pliku</string>
|
||||
<string id="30013">Harmonogram</string>
|
||||
<string id="30016">Kopia bezpieczeństwa</string>
|
||||
<string id="30017">Przywracanie</string>
|
||||
<string id="30018">Przeglądaj ścieżkę</string>
|
||||
<string id="30019">Wpisz ścieżkę</string>
|
||||
<string id="30020">Przeglądaj zdalną ścieżkę</string>
|
||||
<string id="30021">Nazwa folderu Kopii Bezpieczeństwa</string>
|
||||
<string id="30022">Wyświetlaj postęp </string>
|
||||
<string id="30023">Tryb</string>
|
||||
<string id="30024">Wpisz ścieżkę zdalną</string>
|
||||
<string id="30025">Typ zdalnej ścieżki</string>
|
||||
<string id="30026">Kopie bezpieczeństwa do przechowywania (0 dla wszystkich)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Dropbox Key</string>
|
||||
<string id="30029">Dropbox Secret</string>
|
||||
<string id="30030">Dodatki użytkownika</string>
|
||||
<string id="30031">Dane dodatków</string>
|
||||
<string id="30032">Baza danych</string>
|
||||
<string id="30033">Playlista</string>
|
||||
<string id="30034">Miniatury/Tapety</string>
|
||||
<string id="30035">Pliki koniguracyjne</string>
|
||||
<string id="30036">Własny katalog 1</string>
|
||||
<string id="30037">Własny katalog 2</string>
|
||||
<string id="30038">Wykryto Ustawienia Zaawansowane</string>
|
||||
<string id="30039">Plik advancedsettings powinien być najpierw zrestartowany</string>
|
||||
<string id="30040">Zaznacz Tak by odtworzyć ten plik i zrestartować XBMC</string>
|
||||
<string id="30041">Wybierz Nie by kontykuować</string>
|
||||
<string id="30042">Wznów Przywracanie</string>
|
||||
<string id="30043">XBMC Backup wykrył niedokończone przyrwacanie</string>
|
||||
<string id="30044">Czy chciałbyś kontynuować?</string>
|
||||
<string id="30045">Błąd: Zdalna ścieżka nie istnieje</string>
|
||||
<string id="30046">Uruchamiam</string>
|
||||
<string id="30047">Lokalny katalog</string>
|
||||
<string id="30048">Zdalny katalog</string>
|
||||
<string id="30049">Zbieram liste plików</string>
|
||||
<string id="30050">Zdalna ścieżka istnieje - może zawierać stare dane!</string>
|
||||
<string id="30051">Tworzę liste plików</string>
|
||||
<string id="30052">Zapisuję plik</string>
|
||||
<string id="30053">Uruchamiam zaplanowaną kopię bezpieczeństwa</string>
|
||||
<string id="30054">Usuwanie kopii bezpieczeństwa</string>
|
||||
<string id="30056">Sprawdź logi aby zobaczyć adres autoryzacji Dropbox </string>
|
||||
<string id="30057">Po zautoryzowaniu naciśnij OK</string>
|
||||
<string id="30058">Potrzebny Dropbox Developer Code</string>
|
||||
<string id="30059">Odwiedź https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Uruchom planowanie</string>
|
||||
<string id="30061">Plan</string>
|
||||
<string id="30062">Godzina dnia</string>
|
||||
<string id="30063">Dzień tygodnia</string>
|
||||
<string id="30064">Plan chronologiczny</string>
|
||||
<string id="30065">Niedziela</string>
|
||||
<string id="30066">Poniedziałek</string>
|
||||
<string id="30067">Wtorek</string>
|
||||
<string id="30068">Środa</string>
|
||||
<string id="30069">Czwartek</string>
|
||||
<string id="30070">Piątek</string>
|
||||
<string id="30071">Sobota</string>
|
||||
<string id="30072">Każdy dzień</string>
|
||||
<string id="30073">Każdy tydzień</string>
|
||||
<string id="30074">Pierwszy dzień miesiąca</string>
|
||||
<string id="30075">Własny plan</string>
|
||||
<string id="30076">Wyłącz system po zrobieniu kopii zapasowej</string>
|
||||
<string id="30077">Restartuj XBMC</string>
|
||||
<string id="30078">Powinieneś zrestartować XBMC by kontynuować</string>
|
||||
<string id="30079">Tylko Dzisiaj </string>
|
||||
<string id="30080">Profile</string>
|
||||
<string id="30081">Harmonogram zostanie uruchomiony ponownie </string>
|
||||
<string id="30082">Pasek postępu</string>
|
||||
<string id="30083">Pasek postępu w tle</string>
|
||||
<string id="30084">Brak (w tle)</string>
|
||||
<string id="30085"> Ostrzeżenie o wersji</string>
|
||||
<string id="30086">Ta wersja XBMC jest inna niż użyta do utworzenia archiwum</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Portuguese (Brazil) language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/pt_BR/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">XBMC Backup</string>
|
||||
<string id="30011">Geral</string>
|
||||
<string id="30012">Seleção de arquivo</string>
|
||||
<string id="30013">Agendando</string>
|
||||
<string id="30016">Backup</string>
|
||||
<string id="30017">Restauração</string>
|
||||
<string id="30018">Procurar caminho</string>
|
||||
<string id="30019">Digite o caminho</string>
|
||||
<string id="30020">Procurar caminho remoto</string>
|
||||
<string id="30021">Nome da pasta de backup</string>
|
||||
<string id="30022">Mostrar Progresso</string>
|
||||
<string id="30023">Modo</string>
|
||||
<string id="30024">Digite o caminho remoto</string>
|
||||
<string id="30025">Tipo de caminho remoto</string>
|
||||
<string id="30026">Backups para manter (0 para todos)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Chave Dropbox</string>
|
||||
<string id="30029">Segredo Dropbox</string>
|
||||
<string id="30030">Addons do usuário</string>
|
||||
<string id="30031">Dados do addon</string>
|
||||
<string id="30032">Banco de dados</string>
|
||||
<string id="30033">Lista de reprodução</string>
|
||||
<string id="30034">Miniaturas/Fanart</string>
|
||||
<string id="30035">Arquivos de configuração</string>
|
||||
<string id="30036">Diretório personalizado 1</string>
|
||||
<string id="30037">Diretório personalizado 2</string>
|
||||
<string id="30038">Configurações avançadas detectadas</string>
|
||||
<string id="30039">O arquivo advancedsettings deve ser restaurado antes</string>
|
||||
<string id="30040">Selecione Sim para restaurar este arquivo e reiniciar o XBMC</string>
|
||||
<string id="30041">Selecione Não para continuar</string>
|
||||
<string id="30042">Retomar Restauração</string>
|
||||
<string id="30043">O XBMC Backup detectou uma restauração não finalizada</string>
|
||||
<string id="30044">Gostaria de continuar?</string>
|
||||
<string id="30045">Erro: Caminho remoto inexistente</string>
|
||||
<string id="30046">Iniciando</string>
|
||||
<string id="30047">Diretório local</string>
|
||||
<string id="30048">Diretório remoto</string>
|
||||
<string id="30049">Reunindo lista de arquivos</string>
|
||||
<string id="30050">Caminho remoto existente - pode conter arquivos antigos nele!</string>
|
||||
<string id="30051">Criando lista de arquivos</string>
|
||||
<string id="30052">Escrevendo arquivo</string>
|
||||
<string id="30053">Iniciando backup agendado</string>
|
||||
<string id="30054">Removendo backup</string>
|
||||
<string id="30056">Verifique o log da URL de autorização do Dropbox</string>
|
||||
<string id="30057">Clique OK quando autorizado</string>
|
||||
<string id="30058">Necessário código de desenvolvedor Dropbox</string>
|
||||
<string id="30059">Visite https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Habilitar agendamento</string>
|
||||
<string id="30061">Agenda</string>
|
||||
<string id="30062">Hora do Dia</string>
|
||||
<string id="30063">Dia da Semana</string>
|
||||
<string id="30064">Agenda Cron</string>
|
||||
<string id="30065">Domingo</string>
|
||||
<string id="30066">Segunda</string>
|
||||
<string id="30067">Terça</string>
|
||||
<string id="30068">Quarta</string>
|
||||
<string id="30069">Quinta</string>
|
||||
<string id="30070">Sexta</string>
|
||||
<string id="30071">Sábado</string>
|
||||
<string id="30072">Todo dia</string>
|
||||
<string id="30073">Toda semana</string>
|
||||
<string id="30074">Primeiro dia do mês</string>
|
||||
<string id="30075">Agenda customizada</string>
|
||||
<string id="30076">Desligar após backup</string>
|
||||
<string id="30077">Reiniciar XBMC</string>
|
||||
<string id="30078">Você deve reiniciar o XBMC para continuar</string>
|
||||
<string id="30079">Somente Hoje</string>
|
||||
<string id="30080">Perfis</string>
|
||||
<string id="30081">Agendado para rodar novamente em</string>
|
||||
<string id="30082">Barra de Progresso</string>
|
||||
<string id="30083">Barra de Progresso ao Fundo</string>
|
||||
<string id="30084">Nenhum (Silencioso)</string>
|
||||
<string id="30085">Alertas da Versão</string>
|
||||
<string id="30086">Esta versão do XBMC é diferente da que foi usada para criar o arquivo</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Portuguese language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/pt/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">XBMC Backup</string>
|
||||
<string id="30011">Geral</string>
|
||||
<string id="30012">Seleccionar ficheiros</string>
|
||||
<string id="30013">Agendamento</string>
|
||||
<string id="30016">Cópia Segurança</string>
|
||||
<string id="30017">Restaurar</string>
|
||||
<string id="30018">Procurar Localização</string>
|
||||
<string id="30019">Introduzir Localização</string>
|
||||
<string id="30020">Procurar Localização Remota</string>
|
||||
<string id="30021">Nome da pasta de cópia</string>
|
||||
<string id="30022">Indicador de Progresso</string>
|
||||
<string id="30023">Modo</string>
|
||||
<string id="30024">Introduza a localização remota</string>
|
||||
<string id="30025">Tipo de localização remota</string>
|
||||
<string id="30026">Número de cópias a manter (0 para manter todas)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Chave Dropbox</string>
|
||||
<string id="30029">Segredo Dropbox</string>
|
||||
<string id="30030">Add-ons do utilizador</string>
|
||||
<string id="30031">Dados dos add-ons</string>
|
||||
<string id="30032">Base de Dados</string>
|
||||
<string id="30033">Listas de reprodução</string>
|
||||
<string id="30034">Miniaturas/Fanart</string>
|
||||
<string id="30035">Ficheiros de configuração</string>
|
||||
<string id="30036">Pasta Personalizada 1</string>
|
||||
<string id="30037">Pasta Personalizada 2</string>
|
||||
<string id="30038">Definições Avançadas Detectadas</string>
|
||||
<string id="30039">O ficheiro advancedsettings deve ser restaurado em primeiro lugar</string>
|
||||
<string id="30040">Seleccione Sim para restaurar este ficheiro e reiniciar o XBMC</string>
|
||||
<string id="30041">Seleccione Não para continuar</string>
|
||||
<string id="30042">Retomar a Restauração</string>
|
||||
<string id="30043">O XBMC Backup detectou uma restauração incompleta</string>
|
||||
<string id="30044">Quer continuá-la?</string>
|
||||
<string id="30045">Erro: a localização remota não existe</string>
|
||||
<string id="30046">Iniciando</string>
|
||||
<string id="30047">Pasta local</string>
|
||||
<string id="30048">Pasta remota</string>
|
||||
<string id="30049">Reunindo lista de ficheiros</string>
|
||||
<string id="30050">Localização remota já existe - pode contar ficheiros antigos!</string>
|
||||
<string id="30051">Criando lista de ficheiros</string>
|
||||
<string id="30052">Gravando ficheiro</string>
|
||||
<string id="30053">Iniciando cópia agendada</string>
|
||||
<string id="30054">Removendo a cópia de segurança</string>
|
||||
<string id="30056">Verifique o log para o URL de autorização Dropbox</string>
|
||||
<string id="30057">Clique OK quando estiver autorizado</string>
|
||||
<string id="30058">É necessário o código de programador do dropbox</string>
|
||||
<string id="30059">Visite https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Activar Agendamento</string>
|
||||
<string id="30061">Agendamento</string>
|
||||
<string id="30062">Hora do Dia</string>
|
||||
<string id="30063">Dia da Semana</string>
|
||||
<string id="30064">Agendamento Cron</string>
|
||||
<string id="30065">Domingo</string>
|
||||
<string id="30066">Segunda</string>
|
||||
<string id="30067">Terça</string>
|
||||
<string id="30068">Quarta</string>
|
||||
<string id="30069">Quinta</string>
|
||||
<string id="30070">Sexta</string>
|
||||
<string id="30071">Sábado</string>
|
||||
<string id="30072">Diariamente</string>
|
||||
<string id="30073">Semanalmente</string>
|
||||
<string id="30074">Primeiro Dia do Mês</string>
|
||||
<string id="30075">Agendamento Personalizado</string>
|
||||
<string id="30076">Desligar após cópia de segurança</string>
|
||||
<string id="30077">Reiniciar XBMC</string>
|
||||
<string id="30078">Tem de reiniciar o XBMC para continuar</string>
|
||||
<string id="30079">Apenas Hoje</string>
|
||||
<string id="30080">Perfis</string>
|
||||
<string id="30081">O agendamento será reiniciado a</string>
|
||||
<string id="30082">Barra de Progresso</string>
|
||||
<string id="30083">Barra de Progresso em Fundo</string>
|
||||
<string id="30084">Nenhum (silenciosamente)</string>
|
||||
<string id="30085">Aviso de Versão</string>
|
||||
<string id="30086">Esta versão do XBMC é diferente da que foi usada para criar o arquivo</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Romanian language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/ro/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30011">General</string>
|
||||
<string id="30023">Mod</string>
|
||||
<string id="30032">Bază de date</string>
|
||||
<string id="30033">Listă de redare</string>
|
||||
<string id="30065">Duminică</string>
|
||||
<string id="30066">Luni</string>
|
||||
<string id="30067">Marți</string>
|
||||
<string id="30068">Miercuri</string>
|
||||
<string id="30069">Joi</string>
|
||||
<string id="30070">Vineri</string>
|
||||
<string id="30071">Sâmbătă</string>
|
||||
<string id="30080">Profile</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Russian language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/ru/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">Резервная копия XBMC</string>
|
||||
<string id="30011">Основные</string>
|
||||
<string id="30012">Типы файлов</string>
|
||||
<string id="30013">Расписание</string>
|
||||
<string id="30016">Резервная копия</string>
|
||||
<string id="30017">Всстановить</string>
|
||||
<string id="30018">Выбрать путь</string>
|
||||
<string id="30019">Ручной ввод</string>
|
||||
<string id="30020">Выбрать сетевой путь</string>
|
||||
<string id="30021">Имя папки с рез. копиями</string>
|
||||
<string id="30022">Окно с ходом выполнения</string>
|
||||
<string id="30023">Режим</string>
|
||||
<string id="30024">Ввести сетевой путь</string>
|
||||
<string id="30025">Ручной ввод удаленного пути</string>
|
||||
<string id="30026">Кол-во резервных копий (0 - все)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Ключ Dropbox</string>
|
||||
<string id="30029">Секретный ключ Dropbox</string>
|
||||
<string id="30030">Пользовательские дополнения</string>
|
||||
<string id="30031">Данные дополнений</string>
|
||||
<string id="30032">База данных</string>
|
||||
<string id="30033">Плейлист</string>
|
||||
<string id="30034">Миниатюры/Фанарт</string>
|
||||
<string id="30035">Конфигурационные файлы</string>
|
||||
<string id="30036">Пользовательский каталог 1</string>
|
||||
<string id="30037">Пользовательский каталог 2</string>
|
||||
<string id="30038">Обнаружены дополнительные настройки</string>
|
||||
<string id="30039">Файл с дополнительными настройками должен быть восстановлен первым</string>
|
||||
<string id="30040">Нажмите Да, чтоб восстановить этот файл и перезапустить XBMC</string>
|
||||
<string id="30041">Нажмите Нет для продолжения</string>
|
||||
<string id="30042">Возобновить восстановление</string>
|
||||
<string id="30043">XBMC Backup обнаружил неоконченное восстановление из копии</string>
|
||||
<string id="30044">Продолжить?</string>
|
||||
<string id="30045">Ошибка: Сетевой путь не доступен</string>
|
||||
<string id="30046">Начало</string>
|
||||
<string id="30047">Локальная папка</string>
|
||||
<string id="30048">Сетевая папка</string>
|
||||
<string id="30049">Подготавливаем список файлов</string>
|
||||
<string id="30050">Удаленный путь существует - там могут быть старые версии файлов!</string>
|
||||
<string id="30051">Создаём список файлов</string>
|
||||
<string id="30052">Сохраняем файл</string>
|
||||
<string id="30053">Начинаем резервное копирование по расписанию</string>
|
||||
<string id="30054">Удаление резервной копии</string>
|
||||
<string id="30056">Проверьте журнал Dropbox для URL авторизации</string>
|
||||
<string id="30057">Нажмите OK, когда авторизируйтесь</string>
|
||||
<string id="30058">Нужен код разработчика Dropbox</string>
|
||||
<string id="30059">Посетите https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Включить планировщик</string>
|
||||
<string id="30061">Расписание</string>
|
||||
<string id="30062">Час дня</string>
|
||||
<string id="30063">День недели</string>
|
||||
<string id="30064">Планировщик</string>
|
||||
<string id="30065">Воскресенье</string>
|
||||
<string id="30066">Понедельник</string>
|
||||
<string id="30067">Вторник</string>
|
||||
<string id="30068">Среда</string>
|
||||
<string id="30069">Четверг</string>
|
||||
<string id="30070">Пятница</string>
|
||||
<string id="30071">Суббота</string>
|
||||
<string id="30072">Ежедневно</string>
|
||||
<string id="30073">Еженедельно</string>
|
||||
<string id="30074">В первый день месяца</string>
|
||||
<string id="30075">Своё расписание</string>
|
||||
<string id="30076">Завершить работу после резервного копирования</string>
|
||||
<string id="30077">Перезапустить XBMC</string>
|
||||
<string id="30078">Необходимо перезапустить XBMC для продолжения</string>
|
||||
<string id="30079">Только сегодня</string>
|
||||
<string id="30080">Профили</string>
|
||||
<string id="30081">Планировщик будет запущен снова в</string>
|
||||
<string id="30082">Полоса с ходом выполнения</string>
|
||||
<string id="30083">Ход выполнения в фоне</string>
|
||||
<string id="30084">Не выводить (Тихо)</string>
|
||||
<string id="30085">Предупреждение</string>
|
||||
<string id="30086">Используемая версия XBMC отличается от версии, используемой при создании архива</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Serbian (Cyrillic) language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/sr_RS/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30011">Опште</string>
|
||||
<string id="30023">Режим</string>
|
||||
<string id="30032">База података</string>
|
||||
<string id="30033">Списак за реп.</string>
|
||||
<string id="30065">Недеља</string>
|
||||
<string id="30066">Понедељак</string>
|
||||
<string id="30067">Уторак</string>
|
||||
<string id="30068">Среда</string>
|
||||
<string id="30069">Четвртак</string>
|
||||
<string id="30070">Петак</string>
|
||||
<string id="30071">Субота</string>
|
||||
<string id="30080">Профили</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Serbian language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/sr/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30011">Opšte</string>
|
||||
<string id="30023">Režim</string>
|
||||
<string id="30032">Baza podataka</string>
|
||||
<string id="30033">Spisak za rep.</string>
|
||||
<string id="30065">Nedelja</string>
|
||||
<string id="30066">Ponedeljak</string>
|
||||
<string id="30067">Utorak</string>
|
||||
<string id="30068">Sreda</string>
|
||||
<string id="30069">Četvrtak</string>
|
||||
<string id="30070">Petak</string>
|
||||
<string id="30071">Subota</string>
|
||||
<string id="30080">Profili</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,63 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Slovak language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/sk/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">XBMC Backup</string>
|
||||
<string id="30011">Všeobecné</string>
|
||||
<string id="30012">Voľba súboru</string>
|
||||
<string id="30013">Plánovač</string>
|
||||
<string id="30016">Záloha</string>
|
||||
<string id="30017">Obnova</string>
|
||||
<string id="30018">Prehliadať cestu</string>
|
||||
<string id="30019">Zadať cestu</string>
|
||||
<string id="30020">Prehliadať vzdialenú cestu</string>
|
||||
<string id="30021">Meno priečinku zálohy</string>
|
||||
<string id="30023">Režim</string>
|
||||
<string id="30024">Zadať vzdialenú cestu</string>
|
||||
<string id="30025">Druh vzdialenej cesty</string>
|
||||
<string id="30026">Koľko záloh zachovať (0 pre všetky)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Dropbox kľúč</string>
|
||||
<string id="30029">Dropbox Secret</string>
|
||||
<string id="30030">Užívateľské doplnky</string>
|
||||
<string id="30031">Dáta Doplnkov</string>
|
||||
<string id="30032">Databáza</string>
|
||||
<string id="30033">Playlist</string>
|
||||
<string id="30034">Náhlady/Fanarty</string>
|
||||
<string id="30035">Konfiguračné súbory</string>
|
||||
<string id="30045">Chyba: Vzdialená cesta neexistuje</string>
|
||||
<string id="30046">Začiatok</string>
|
||||
<string id="30047">Miestny priečinok</string>
|
||||
<string id="30048">Vzdialený priečinok</string>
|
||||
<string id="30049">Zbieram zoznam súborov</string>
|
||||
<string id="30050">Vzdialená cesta existuje - môže obsahovať staré súbory!</string>
|
||||
<string id="30051">Vytvára sa zoznam súborov</string>
|
||||
<string id="30052">Zapisuje sa súbor</string>
|
||||
<string id="30053">Začiatok plánovanej zálohy</string>
|
||||
<string id="30054">Odstránenie zálohy</string>
|
||||
<string id="30056">Skontrolujte log pre Dropbox autorizačné URL</string>
|
||||
<string id="30057">Kliknite OK po získaní oprávnenia</string>
|
||||
<string id="30058">Potrebný Dropbox vývojársky kód</string>
|
||||
<string id="30059">Navštívte https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Povoliť plánovač</string>
|
||||
<string id="30061">Plán</string>
|
||||
<string id="30062">Hodina v dni</string>
|
||||
<string id="30063">Deň v týždni</string>
|
||||
<string id="30064">'Cron' plán</string>
|
||||
<string id="30065">Nedeľa</string>
|
||||
<string id="30066">Pondelok</string>
|
||||
<string id="30067">Utorok</string>
|
||||
<string id="30068">Streda</string>
|
||||
<string id="30069">Štvrtok</string>
|
||||
<string id="30070">Piatok</string>
|
||||
<string id="30071">Sobota</string>
|
||||
<string id="30072">Každý den</string>
|
||||
<string id="30073">Každý týždeň</string>
|
||||
<string id="30074">Prvý deň mesiaca</string>
|
||||
<string id="30075">Vlastný plán</string>
|
||||
<string id="30076">Vypnúť po skončení zálohy</string>
|
||||
<string id="30077">Reštartovať XBMC</string>
|
||||
<string id="30080">Profily</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Slovenian language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/sl/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30011">Splošno</string>
|
||||
<string id="30023">Način</string>
|
||||
<string id="30032">Podatkovna baza</string>
|
||||
<string id="30033">Seznam predvajanja</string>
|
||||
<string id="30065">Nedelja</string>
|
||||
<string id="30066">Ponedeljek</string>
|
||||
<string id="30067">Torek</string>
|
||||
<string id="30068">Sreda</string>
|
||||
<string id="30069">Četrtek</string>
|
||||
<string id="30070">Petek</string>
|
||||
<string id="30071">Sobota</string>
|
||||
<string id="30080">Profili</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Spanish (Argentina) language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/es_AR/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30011">General</string>
|
||||
<string id="30023">Modo</string>
|
||||
<string id="30032">Base de Datos</string>
|
||||
<string id="30033">Lista de reproducción</string>
|
||||
<string id="30065">Domingo</string>
|
||||
<string id="30066">Lunes</string>
|
||||
<string id="30067">Martes</string>
|
||||
<string id="30068">Miércoles</string>
|
||||
<string id="30069">Jueves</string>
|
||||
<string id="30070">Viernes</string>
|
||||
<string id="30071">Sábado</string>
|
||||
<string id="30080">Perfiles</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,59 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Spanish (Mexico) language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/es_MX/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">Respaldo de XBMC</string>
|
||||
<string id="30011">General</string>
|
||||
<string id="30012">Selección de Archivo</string>
|
||||
<string id="30013">Programación</string>
|
||||
<string id="30016">Respaldo</string>
|
||||
<string id="30017">Restaurar</string>
|
||||
<string id="30018">Explorar Ruta</string>
|
||||
<string id="30019">Ingresar Ruta</string>
|
||||
<string id="30020">Explorar Ruta Remota</string>
|
||||
<string id="30021">Nombre de Carpeta de Respaldo</string>
|
||||
<string id="30023">Modo</string>
|
||||
<string id="30024">Ingresar Ruta Remota</string>
|
||||
<string id="30025">Tipo de Ruta Remota</string>
|
||||
<string id="30026">Respaldos a mantener (0 para todos)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30030">Addons de Usuario</string>
|
||||
<string id="30031">Datos de Addons</string>
|
||||
<string id="30032">Base de datos</string>
|
||||
<string id="30033">Lista de reproducción</string>
|
||||
<string id="30034">Miniaturas/Fanart</string>
|
||||
<string id="30035">Archivos de Configuración</string>
|
||||
<string id="30045">Error: Ruta remota no existe</string>
|
||||
<string id="30046">Comenzando</string>
|
||||
<string id="30047">Directorio Local</string>
|
||||
<string id="30048">Directorio Remoto</string>
|
||||
<string id="30049">Obteniendo lista de archivos</string>
|
||||
<string id="30050">Ruta Remota existe - ¡Puede tener archivos antiguos!</string>
|
||||
<string id="30051">Creando Lista de Archivos</string>
|
||||
<string id="30052">Escribiendo archivo</string>
|
||||
<string id="30053">Empezando respaldo programado</string>
|
||||
<string id="30054">Eliminando respaldo</string>
|
||||
<string id="30056">Revisar el log para la URL de autorización de Dropbox</string>
|
||||
<string id="30057">Hacer click en OK cuando esté autorizado</string>
|
||||
<string id="30060">Habilitar Programación</string>
|
||||
<string id="30061">Programación</string>
|
||||
<string id="30062">Hora del Día</string>
|
||||
<string id="30063">Día de la Semana</string>
|
||||
<string id="30064">Programación Cron</string>
|
||||
<string id="30065">Domingo</string>
|
||||
<string id="30066">Lunes</string>
|
||||
<string id="30067">Martes</string>
|
||||
<string id="30068">Miércoles</string>
|
||||
<string id="30069">Jueves</string>
|
||||
<string id="30070">Viernes</string>
|
||||
<string id="30071">Sábado</string>
|
||||
<string id="30072">Todos los Días</string>
|
||||
<string id="30073">Todas las Semanas</string>
|
||||
<string id="30074">Primer Día del Mes</string>
|
||||
<string id="30075">Programación Perzonalizada</string>
|
||||
<string id="30076">Apagar luego de respaldar</string>
|
||||
<string id="30077">Reiniciar XBMC</string>
|
||||
<string id="30080">Perfiles</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Spanish language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/es/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">XBMC Backup</string>
|
||||
<string id="30011">General</string>
|
||||
<string id="30012">Selección de archivo</string>
|
||||
<string id="30013">Planificando</string>
|
||||
<string id="30016">Backup</string>
|
||||
<string id="30017">Restaurar</string>
|
||||
<string id="30018">Examinar ruta</string>
|
||||
<string id="30019">Escribir ruta</string>
|
||||
<string id="30020">Examinar ruta remota</string>
|
||||
<string id="30021">Nombre de directorio de respaldo</string>
|
||||
<string id="30022">Pantalla de progreso</string>
|
||||
<string id="30023">Modo</string>
|
||||
<string id="30024">Escribir directorio remoto</string>
|
||||
<string id="30025">Tipo de Ruta Remota</string>
|
||||
<string id="30026">Copias de seguridad a mantener (0 para todas)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Clave de Dropbox</string>
|
||||
<string id="30029">Secreto de Dropbox</string>
|
||||
<string id="30030">Addons del usuario</string>
|
||||
<string id="30031">Addon Data</string>
|
||||
<string id="30032">Base de Datos</string>
|
||||
<string id="30033">Lista de reproducción</string>
|
||||
<string id="30034">Thumbnails/Fanart</string>
|
||||
<string id="30035">Ficheros de configuración</string>
|
||||
<string id="30036">Directorio Personalizado 1</string>
|
||||
<string id="30037">Directorio Personalizado 2</string>
|
||||
<string id="30038">Opciones avanzadas detectadas</string>
|
||||
<string id="30039">Primero debería ser restaurado el archivo advancedsettings</string>
|
||||
<string id="30040">Selecciona SI para restaurar este archivo y reiniciar XBMC</string>
|
||||
<string id="30041">Selecciona NO para continuar</string>
|
||||
<string id="30042">Reanudar restauración</string>
|
||||
<string id="30043">XBMC Backup ha detectado una restauración sin terminar</string>
|
||||
<string id="30044">¿Desea continuar?</string>
|
||||
<string id="30045">Error: La ruta Remota no existe</string>
|
||||
<string id="30046">Empezando</string>
|
||||
<string id="30047">Directorio Local</string>
|
||||
<string id="30048">Directorio Remoto</string>
|
||||
<string id="30049">Obteniendo lista de fichero</string>
|
||||
<string id="30050">¡Ruta Remota ya existe - puede haber ficheros antiguos en ella!</string>
|
||||
<string id="30051">Creando lista de ficheros</string>
|
||||
<string id="30052">Escribiendo fichero</string>
|
||||
<string id="30053">Empezando copia de seguridad planificada</string>
|
||||
<string id="30054">Eliminar copia de seguridad</string>
|
||||
<string id="30056">Autoriza la URL en Dropbox</string>
|
||||
<string id="30057">Presiona OK cuando se haya autorizado</string>
|
||||
<string id="30058">Código de Desarrollador Dropbox necesario</string>
|
||||
<string id="30059">Visita https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Habilitar Planificador</string>
|
||||
<string id="30061">Planificador</string>
|
||||
<string id="30062">Hora del Día</string>
|
||||
<string id="30063">Día de la Semana</string>
|
||||
<string id="30064">Cron Schedule</string>
|
||||
<string id="30065">Domingo</string>
|
||||
<string id="30066">Lunes</string>
|
||||
<string id="30067">Martes</string>
|
||||
<string id="30068">Miércoles</string>
|
||||
<string id="30069">Jueves</string>
|
||||
<string id="30070">Viernes</string>
|
||||
<string id="30071">Sábado</string>
|
||||
<string id="30072">Todos los días</string>
|
||||
<string id="30073">Todas las semanas</string>
|
||||
<string id="30074">Primer día de la semana</string>
|
||||
<string id="30075">Planificador Custom</string>
|
||||
<string id="30076">Apagar tras realizar la copia de seguridad</string>
|
||||
<string id="30077">Reiniciar XBMC</string>
|
||||
<string id="30078">Debería reiniciar XBMC para continuar</string>
|
||||
<string id="30079">Hoy mismo</string>
|
||||
<string id="30080">Perfiles</string>
|
||||
<string id="30081">Planificador se ejecutará de nuevo en</string>
|
||||
<string id="30082">Barra de progreso</string>
|
||||
<string id="30083">Fondo de la barra de progreso</string>
|
||||
<string id="30084">Ninguno (Silencio)</string>
|
||||
<string id="30085">Advertencia de versión </string>
|
||||
<string id="30086">Esta versión de XBMC es diferente a la que se utilizó para crear el archivo</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Swedish language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/sv/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30010">XBMC Backupp</string>
|
||||
<string id="30011">Allmänt</string>
|
||||
<string id="30012">Filval</string>
|
||||
<string id="30013">Schemaläggning</string>
|
||||
<string id="30016">Backupp</string>
|
||||
<string id="30017">Återställ</string>
|
||||
<string id="30018">Bläddra efter sökväg</string>
|
||||
<string id="30019">Skriv sökväg</string>
|
||||
<string id="30020">Bläddra efter fjärrsökväg</string>
|
||||
<string id="30021">Backuppmappsnamn</string>
|
||||
<string id="30022">Förlopp</string>
|
||||
<string id="30023">Läge</string>
|
||||
<string id="30024">Skriv fjärrsökväg</string>
|
||||
<string id="30025">Fjärrsökvägstyp</string>
|
||||
<string id="30026">Backupper att behålla (0 för alla)</string>
|
||||
<string id="30027">Dropbox</string>
|
||||
<string id="30028">Dropbox Nyckel</string>
|
||||
<string id="30029">Dropbox Hemlighet</string>
|
||||
<string id="30030">Användartillägg</string>
|
||||
<string id="30031">Tilläggsdata</string>
|
||||
<string id="30032">Databas</string>
|
||||
<string id="30033">Spellista</string>
|
||||
<string id="30034">Miniatyrer/fanart</string>
|
||||
<string id="30035">Konfigurationsfiler</string>
|
||||
<string id="30036">Egen mapp 1</string>
|
||||
<string id="30037">Egen mapp 2</string>
|
||||
<string id="30038">Avancerade inställningar upptäcktes</string>
|
||||
<string id="30039">Filen för avancerade inställningar bör återställas först</string>
|
||||
<string id="30040">Välj Ja för att återställa denna fil och starta om XBMC</string>
|
||||
<string id="30041">Välj Nej för att fortsätta</string>
|
||||
<string id="30042">Återuppta återställning</string>
|
||||
<string id="30043">XBMC Backup har upptäckt en ofärdig återställning</string>
|
||||
<string id="30044">Vill du fortsätta?</string>
|
||||
<string id="30045">Fel: Fjärrsökväg existerar inte</string>
|
||||
<string id="30046">Startar</string>
|
||||
<string id="30047">Lokalmapp</string>
|
||||
<string id="30048">Fjärrmapp</string>
|
||||
<string id="30049">Samlar fillista</string>
|
||||
<string id="30050">Fjärrsökväg existerar - kan innehålla gamla filer!</string>
|
||||
<string id="30051">Skapar fillista</string>
|
||||
<string id="30052">Skriver fil</string>
|
||||
<string id="30053">Startar schemalagd backupp</string>
|
||||
<string id="30054">Tar bort backupper</string>
|
||||
<string id="30056">Kontrollera loggen efter adress för Dropbox-inloggning</string>
|
||||
<string id="30057">Klicka OK när du är inloggad</string>
|
||||
<string id="30058">Dropbox utvecklarkod krävs</string>
|
||||
<string id="30059">Besök https://www.dropbox.com/developers</string>
|
||||
<string id="30060">Aktivera schemaläggare</string>
|
||||
<string id="30061">Schemalägg</string>
|
||||
<string id="30062">Timme av dagen</string>
|
||||
<string id="30063">Dag av veckan</string>
|
||||
<string id="30064">Cronschema</string>
|
||||
<string id="30065">Söndag</string>
|
||||
<string id="30066">Måndag</string>
|
||||
<string id="30067">Tisdag</string>
|
||||
<string id="30068">Onsdag</string>
|
||||
<string id="30069">Torsdag</string>
|
||||
<string id="30070">Fredag</string>
|
||||
<string id="30071">Lördag</string>
|
||||
<string id="30072">Varje dag</string>
|
||||
<string id="30073">Varje vecka</string>
|
||||
<string id="30074">Första dagen i månaden</string>
|
||||
<string id="30075">Eget schema</string>
|
||||
<string id="30076">Stäng av efter Backup</string>
|
||||
<string id="30077">Starta om XBMC</string>
|
||||
<string id="30078">Du borde starta om XBMC för att fortsätta</string>
|
||||
<string id="30079">Bara idag</string>
|
||||
<string id="30080">Profiles</string>
|
||||
<string id="30081">Schemaläggaren kommer köras igen</string>
|
||||
<string id="30082">Förloppsindikator</string>
|
||||
<string id="30083">Bakgroundsförloppsindikator</string>
|
||||
<string id="30084">Ingen (tyst)</string>
|
||||
<string id="30085">Version varning</string>
|
||||
<string id="30086">Den här versionen av XBMC är annorlunda än den som användes vid skapandet av arkivet</string>
|
||||
</strings>
|
||||
|
||||
52
resources/language/Tamil (India)/strings.xml
Normal file
52
resources/language/Tamil (India)/strings.xml
Normal file
@@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Tamil (India) language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/ta_IN/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010">XBMC மறுபிரதி</string>
|
||||
<string id="30011">பொதுவானது</string>
|
||||
<string id="30012">கோப்பு தேர்வு</string>
|
||||
<string id="30013">திட்டமிடல்</string>
|
||||
<string id="30016">மறுபிரதி</string>
|
||||
<string id="30017">மீட்டெடு</string>
|
||||
<string id="30018">பாதை உலாவு</string>
|
||||
<string id="30019">பாதை உள்ளிடு</string>
|
||||
<string id="30020">தொலை பாதை உலாவு</string>
|
||||
<string id="30021">மறுபிரதி கோப்புறை பெயர்</string>
|
||||
<string id="30023">முறை</string>
|
||||
<string id="30024">தொலை பாதை உள்ளிடு</string>
|
||||
<string id="30025">தொலை பாதை உள்ளிடு</string>
|
||||
<string id="30026">வைக்கவேண்டிய மறுபிரதிகள் (0 - அனைத்திற்கும்)</string>
|
||||
<string id="30030">பயனர் துணை பயன்கள்</string>
|
||||
<string id="30031">துணை பயன் தகவல்</string>
|
||||
<string id="30032">தரவுத்தளம்</string>
|
||||
<string id="30033">பட்டியல்</string>
|
||||
<string id="30034">சிறுபடம்/விசிறிபடம்</string>
|
||||
<string id="30035">அமைப்பு கோப்புகள்</string>
|
||||
<string id="30045">பிழை: தொலை பாதை இல்லை</string>
|
||||
<string id="30046">தொடங்குகிறது</string>
|
||||
<string id="30047">உள்ளூர் கோப்புறை</string>
|
||||
<string id="30048">தொலை கோப்புறை</string>
|
||||
<string id="30049">கோப்பு பட்டியலை சேகரித்தல்</string>
|
||||
<string id="30050">தொலை பாதை உள்ளது - அதில் பழைய கோப்புகள் இருக்கலாம்</string>
|
||||
<string id="30051">கோப்பு பட்டியல உருவாக்குதல்</string>
|
||||
<string id="30052">கோப்பில் எழுதப்படுகிறது</string>
|
||||
<string id="30053">திட்டமிட்ட மறுபிரதியை தொடங்குகிறது</string>
|
||||
<string id="30054">மறுபிரதியை நீக்கு</string>
|
||||
<string id="30060">திட்டமிடுநர் செயல்படுத்து</string>
|
||||
<string id="30061">திட்டமிடு</string>
|
||||
<string id="30064">கிரான் திட்டமிடு</string>
|
||||
<string id="30065">ஞாயிறு </string>
|
||||
<string id="30066">திங்கள்</string>
|
||||
<string id="30067">செவ்வாய்</string>
|
||||
<string id="30068">புதன்</string>
|
||||
<string id="30069">வியாழன்</string>
|
||||
<string id="30070">வெள்ளி</string>
|
||||
<string id="30071">சனி</string>
|
||||
<string id="30072">ஒவ்வொரு நாளும்</string>
|
||||
<string id="30073">ஒவ்வொரு வாரமும்</string>
|
||||
<string id="30074">மாதத்தின் முதல் நாள்</string>
|
||||
<string id="30075">தனிப்பயன் திட்டமிடு</string>
|
||||
<string id="30080">சுயவிவரங்கள்</string>
|
||||
</strings>
|
||||
@@ -1,48 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Thai language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/th/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30011">ทั่วไป</string>
|
||||
<string id="30023">โหมด</string>
|
||||
<string id="30032">ฐานข้อมูล</string>
|
||||
<string id="30033">รายการเพลง</string>
|
||||
<string id="30061">ตารางงาน</string>
|
||||
<string id="30065">อาทิตย์</string>
|
||||
<string id="30066">จันทร์</string>
|
||||
<string id="30067">อังคาร</string>
|
||||
<string id="30068">พุธ</string>
|
||||
<string id="30069">พฤหัสบดี</string>
|
||||
<string id="30070">ศกร์</string>
|
||||
<string id="30071">เสาร์</string>
|
||||
<string id="30077">เริ่ม XBMC ใหม่</string>
|
||||
<string id="30080">ข้อมูลส่วนตัว</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Turkish language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/tr/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30011">Genel</string>
|
||||
<string id="30016">Yedekle</string>
|
||||
<string id="30023">Mod</string>
|
||||
<string id="30032">Veritabanı</string>
|
||||
<string id="30033">Çalma listesi</string>
|
||||
<string id="30065">Pazar</string>
|
||||
<string id="30066">Pazartesi</string>
|
||||
<string id="30067">Salı</string>
|
||||
<string id="30068">Çarşamba</string>
|
||||
<string id="30069">Perşembe</string>
|
||||
<string id="30070">Cuma</string>
|
||||
<string id="30071">Cumartesi</string>
|
||||
<string id="30080">Profiller</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,48 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Ukrainian language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/uk/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30011">Загальні</string>
|
||||
<string id="30023">Режим</string>
|
||||
<string id="30032">База даних</string>
|
||||
<string id="30033">Список відтворювання</string>
|
||||
<string id="30065">Неділя</string>
|
||||
<string id="30066">Понеділок</string>
|
||||
<string id="30067">Вівторок</string>
|
||||
<string id="30068">Середа</string>
|
||||
<string id="30069">Четвер</string>
|
||||
<string id="30070">П'ятниця</string>
|
||||
<string id="30071">Субота</string>
|
||||
<string id="30080">Профілі</string>
|
||||
</strings>
|
||||
|
||||
10
resources/language/Uzbek/strings.xml
Normal file
10
resources/language/Uzbek/strings.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Uzbek language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/uz/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30011">Umumiy</string>
|
||||
<string id="30032">Ma'lumot bazasi</string>
|
||||
<string id="30033">Ijro ro'yxati</string>
|
||||
</strings>
|
||||
8
resources/language/Vietnamese (Viet Nam)/strings.xml
Normal file
8
resources/language/Vietnamese (Viet Nam)/strings.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Vietnamese (Viet Nam) language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/vi_VN/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30011">Chung</string>
|
||||
</strings>
|
||||
@@ -1,48 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Vietnamese language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/vi/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30010"></string>
|
||||
<string id="30011"></string>
|
||||
<string id="30012"></string>
|
||||
<string id="30013"></string>
|
||||
<string id="30016"></string>
|
||||
<string id="30017"></string>
|
||||
<string id="30018"></string>
|
||||
<string id="30019"></string>
|
||||
<string id="30020"></string>
|
||||
<string id="30021"></string>
|
||||
<string id="30022"></string>
|
||||
<string id="30023"></string>
|
||||
<string id="30024"></string>
|
||||
<string id="30025"></string>
|
||||
<string id="30030"></string>
|
||||
<string id="30031"></string>
|
||||
<string id="30032"></string>
|
||||
<string id="30033"></string>
|
||||
<string id="30034"></string>
|
||||
<string id="30035"></string>
|
||||
<string id="30045"></string>
|
||||
<string id="30046"></string>
|
||||
<string id="30047"></string>
|
||||
<string id="30048"></string>
|
||||
<string id="30049"></string>
|
||||
<string id="30050"></string>
|
||||
<string id="30051"></string>
|
||||
<string id="30052"></string>
|
||||
<string id="30053"></string>
|
||||
<string id="30060"></string>
|
||||
<string id="30061"></string>
|
||||
<string id="30062"></string>
|
||||
<string id="30063"></string>
|
||||
<string id="30064"></string>
|
||||
<string id="30065"></string>
|
||||
<string id="30066"></string>
|
||||
<string id="30067"></string>
|
||||
<string id="30068"></string>
|
||||
<string id="30069"></string>
|
||||
<string id="30070"></string>
|
||||
<string id="30071"></string>
|
||||
<string id="30072"></string>
|
||||
<string id="30073"></string>
|
||||
<string id="30074"></string>
|
||||
<string id="30075"></string>
|
||||
<string id="30011">Tổng Quan</string>
|
||||
<string id="30023">Chế độ</string>
|
||||
<string id="30032">Cơ sở dữ liệu</string>
|
||||
<string id="30033">Playlist</string>
|
||||
<string id="30065">Chủ Nhật</string>
|
||||
<string id="30066">Thứ Hai</string>
|
||||
<string id="30067">Thứ Ba</string>
|
||||
<string id="30068">Thứ Tư</string>
|
||||
<string id="30069">Thứ Năm</string>
|
||||
<string id="30070">Thứ Sáu</string>
|
||||
<string id="30071">Thứ Bảy</string>
|
||||
<string id="30080">Tài khoản</string>
|
||||
</strings>
|
||||
|
||||
8
resources/language/Welsh/strings.xml
Normal file
8
resources/language/Welsh/strings.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<!-- Translated using Transifex web application. For support, or if you would like to to help out, please visit your language team! -->
|
||||
<!-- Welsh language-Team URL: http://www.transifex.com/projects/p/xbmc-addons/language/cy/ -->
|
||||
<!-- Report language file syntax bugs at: alanwww1@xbmc.org -->
|
||||
|
||||
<strings>
|
||||
<string id="30011">Cyffredinol</string>
|
||||
</strings>
|
||||
2
resources/lib/.gitignore
vendored
Normal file
2
resources/lib/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
|
||||
*.pyo
|
||||
@@ -1,85 +1,33 @@
|
||||
import xbmc
|
||||
import xbmcgui
|
||||
import vfs as vfs
|
||||
import xbmcvfs
|
||||
import utils as utils
|
||||
import os
|
||||
import time
|
||||
import json
|
||||
from vfs import XBMCFileSystem,DropboxFileSystem,ZipFileSystem
|
||||
from resources.lib.guisettings import GuiSettingsManager
|
||||
|
||||
class FileManager:
|
||||
walk_path = ''
|
||||
fileArray = None
|
||||
verbose_log = False
|
||||
def folderSort(aKey):
|
||||
result = aKey[0]
|
||||
|
||||
def __init__(self,path):
|
||||
self.walk_path = path
|
||||
if(len(result) < 8):
|
||||
result = result + "0000"
|
||||
|
||||
def createFileList(self):
|
||||
self.fileArray = []
|
||||
self.verbose_log = utils.getSetting("verbose_log") == 'true'
|
||||
|
||||
#figure out which syncing options to run
|
||||
if(utils.getSetting('backup_addons') == 'true'):
|
||||
self.addFile("-addons")
|
||||
self.walkTree(self.walk_path + "addons/")
|
||||
|
||||
self.addFile("-userdata")
|
||||
|
||||
if(utils.getSetting('backup_addon_data') == 'true'):
|
||||
self.addFile("-userdata/addon_data")
|
||||
self.walkTree(self.walk_path + "userdata/addon_data/")
|
||||
|
||||
if(utils.getSetting('backup_database') == 'true'):
|
||||
self.addFile("-userdata/Database")
|
||||
self.walkTree(self.walk_path + "userdata/Database")
|
||||
|
||||
if(utils.getSetting("backup_playlists") == 'true'):
|
||||
self.addFile("-userdata/playlists")
|
||||
self.walkTree(self.walk_path + "userdata/playlists")
|
||||
|
||||
if(utils.getSetting("backup_thumbnails") == "true"):
|
||||
self.addFile("-userdata/Thumbnails")
|
||||
self.walkTree(self.walk_path + "userdata/Thumbnails")
|
||||
|
||||
if(utils.getSetting("backup_config") == "true"):
|
||||
self.addFile("-userdata/keymaps")
|
||||
self.walkTree(self.walk_path + "userdata/keymaps")
|
||||
|
||||
self.addFile("-userdata/peripheral_data")
|
||||
self.walkTree(self.walk_path + "userdata/peripheral_data")
|
||||
|
||||
#this part is an oddity
|
||||
configFiles = vfs.listdir(self.walk_path + "userdata/",extra_metadata=True)
|
||||
for aFile in configFiles:
|
||||
if(aFile['file'].endswith(".xml")):
|
||||
self.addFile(aFile['file'][len(self.walk_path):])
|
||||
|
||||
def walkTree(self,directory):
|
||||
for (path, dirs, files) in vfs.walk(directory):
|
||||
|
||||
#create all the subdirs first
|
||||
for aDir in dirs:
|
||||
self.addFile("-" + aDir[len(self.walk_path):])
|
||||
#copy all the files
|
||||
for aFile in files:
|
||||
filePath = aFile[len(self.walk_path):]
|
||||
self.addFile(filePath)
|
||||
|
||||
def addFile(self,filename):
|
||||
#write the full remote path name of this file
|
||||
utils.log("Add File: " + filename,xbmc.LOGDEBUG)
|
||||
self.fileArray.append(filename)
|
||||
|
||||
def getFileList(self):
|
||||
return self.fileArray
|
||||
return result
|
||||
|
||||
|
||||
class XbmcBackup:
|
||||
#constants for initiating a back or restore
|
||||
Backup = 0
|
||||
Restore = 1
|
||||
|
||||
#file systems
|
||||
xbmc_vfs = None
|
||||
remote_vfs = None
|
||||
saved_remote_vfs = None
|
||||
|
||||
local_path = ''
|
||||
remote_path = ''
|
||||
restoreFile = None
|
||||
remote_base_path = None
|
||||
|
||||
#for the progress bar
|
||||
progressBar = None
|
||||
@@ -87,124 +35,620 @@ class XbmcBackup:
|
||||
filesTotal = 1
|
||||
|
||||
fileManager = None
|
||||
restore_point = None
|
||||
skip_advanced = False #if we should check for the existance of advancedsettings in the restore
|
||||
|
||||
def __init__(self):
|
||||
self.local_path = xbmc.makeLegalFilename(xbmc.translatePath("special://home"),False);
|
||||
|
||||
if(utils.getSetting('remote_selection') == '1'):
|
||||
self.remote_path = utils.getSetting('remote_path_2')
|
||||
utils.setSetting("remote_path","")
|
||||
elif(utils.getSetting('remote_selection') == '0'):
|
||||
self.remote_path = utils.getSetting("remote_path")
|
||||
self.xbmc_vfs = XBMCFileSystem(xbmc.translatePath('special://home'))
|
||||
|
||||
#fix slashes
|
||||
self.remote_path = self.remote_path.replace("\\","/")
|
||||
|
||||
#check if trailing slash is included
|
||||
if(self.remote_path[-1:] != "/"):
|
||||
self.remote_path = self.remote_path + "/"
|
||||
|
||||
self.configureRemote()
|
||||
utils.log(utils.getString(30046))
|
||||
|
||||
def run(self,mode=-1,runSilent=False):
|
||||
#check if we should use the progress bar
|
||||
if(utils.getSetting('run_silent') == 'false' and not runSilent):
|
||||
self.progressBar = xbmcgui.DialogProgress()
|
||||
self.progressBar.create(utils.getString(30010),utils.getString(30049) + "......")
|
||||
def configureRemote(self):
|
||||
if(utils.getSetting('remote_selection') == '1'):
|
||||
self.remote_base_path = utils.getSetting('remote_path_2');
|
||||
self.remote_vfs = XBMCFileSystem(utils.getSetting('remote_path_2'))
|
||||
utils.setSetting("remote_path","")
|
||||
elif(utils.getSetting('remote_selection') == '0'):
|
||||
self.remote_base_path = utils.getSetting('remote_path');
|
||||
self.remote_vfs = XBMCFileSystem(utils.getSetting("remote_path"))
|
||||
elif(utils.getSetting('remote_selection') == '2'):
|
||||
self.remote_base_path = "/"
|
||||
self.remote_vfs = DropboxFileSystem("/")
|
||||
|
||||
#determine backup mode
|
||||
if(mode == -1):
|
||||
mode = int(utils.getSetting('addon_mode'))
|
||||
def remoteConfigured(self):
|
||||
result = True
|
||||
|
||||
if(self.remote_base_path == ""):
|
||||
result = False
|
||||
|
||||
return result
|
||||
|
||||
def listBackups(self):
|
||||
result = []
|
||||
|
||||
#get all the folders in the current root path
|
||||
dirs,files = self.remote_vfs.listdir(self.remote_base_path)
|
||||
|
||||
for aDir in dirs:
|
||||
if(self.remote_vfs.exists(self.remote_base_path + aDir + "/xbmcbackup.val")):
|
||||
|
||||
#folder may or may not contain time, older versions didn't include this
|
||||
folderName = ''
|
||||
if(len(aDir) > 8):
|
||||
folderName = aDir[6:8] + '-' + aDir[4:6] + '-' + aDir[0:4] + " " + aDir[8:10] + ":" + aDir[10:12]
|
||||
else:
|
||||
folderName = aDir[6:8] + '-' + aDir[4:6] + '-' + aDir[0:4]
|
||||
|
||||
result.append((aDir,folderName))
|
||||
|
||||
for aFile in files:
|
||||
file_ext = aFile.split('.')[-1]
|
||||
folderName = utils.encode(aFile.split('.')[0])
|
||||
|
||||
if(file_ext == 'zip' and (len(folderName) == 12 or len(folderName) == 8) and str.isdigit(folderName)):
|
||||
|
||||
#folder may or may not contain time, older versions didn't include this
|
||||
if(len(aFile ) > 8):
|
||||
folderName = aFile [6:8] + '-' + aFile [4:6] + '-' + aFile [0:4] + " " + aFile [8:10] + ":" + aFile [10:12]
|
||||
else:
|
||||
folderName = aFile [6:8] + '-' + aFile [4:6] + '-' + aFile [0:4]
|
||||
|
||||
result.append((aFile ,folderName))
|
||||
|
||||
|
||||
result.sort(key=folderSort)
|
||||
|
||||
return result
|
||||
|
||||
def selectRestore(self,restore_point):
|
||||
self.restore_point = restore_point
|
||||
|
||||
def skipAdvanced(self):
|
||||
self.skip_advanced = True
|
||||
|
||||
def run(self,mode=-1,progressOverride=False):
|
||||
#set windows setting to true
|
||||
window = xbmcgui.Window(10000)
|
||||
window.setProperty(utils.__addon_id__ + ".running","true")
|
||||
|
||||
#append backup folder name
|
||||
if(mode == self.Backup and self.remote_path != ''):
|
||||
self.remote_path = self.remote_path + time.strftime("%Y%m%d") + "/"
|
||||
elif(mode == self.Restore and utils.getSetting("backup_name") != '' and self.remote_path != ''):
|
||||
self.remote_path = self.remote_path + utils.getSetting("backup_name") + "/"
|
||||
else:
|
||||
self.remote_path = ""
|
||||
progressBarTitle = utils.getString(30010) + " - "
|
||||
if(mode == self.Backup and self.remote_vfs.root_path != ''):
|
||||
if(utils.getSetting("compress_backups") == 'true'):
|
||||
#delete old temp file
|
||||
if(self.xbmc_vfs.exists(xbmc.translatePath('special://temp/xbmc_backup_temp.zip'))):
|
||||
self.xbmc_vfs.rmfile(xbmc.translatePath('special://temp/xbmc_backup_temp.zip'))
|
||||
|
||||
#save the remote file system and use the zip vfs
|
||||
self.saved_remote_vfs = self.remote_vfs
|
||||
self.remote_vfs = ZipFileSystem(xbmc.translatePath("special://temp/xbmc_backup_temp.zip"),"w")
|
||||
|
||||
self.remote_vfs.set_root(self.remote_vfs.root_path + time.strftime("%Y%m%d%H%M") + "/")
|
||||
progressBarTitle = progressBarTitle + utils.getString(30016)
|
||||
elif(mode == self.Restore and self.restore_point != None and self.remote_vfs.root_path != ''):
|
||||
if(self.restore_point.split('.')[-1] != 'zip'):
|
||||
self.remote_vfs.set_root(self.remote_vfs.root_path + self.restore_point + "/")
|
||||
progressBarTitle = progressBarTitle + utils.getString(30017)
|
||||
else:
|
||||
#kill the program here
|
||||
self.remote_vfs = None
|
||||
return
|
||||
|
||||
utils.log(utils.getString(30047) + ": " + self.local_path)
|
||||
utils.log(utils.getString(30048) + ": " + self.remote_path)
|
||||
utils.log(utils.getString(30047) + ": " + self.xbmc_vfs.root_path)
|
||||
utils.log(utils.getString(30048) + ": " + self.remote_vfs.root_path)
|
||||
|
||||
|
||||
#setup the progress bar
|
||||
self.progressBar = BackupProgressBar(progressOverride)
|
||||
self.progressBar.create(progressBarTitle,utils.getString(30049) + "......")
|
||||
|
||||
#run the correct mode
|
||||
if(mode == self.Backup):
|
||||
utils.log(utils.getString(30023) + " - " + utils.getString(30016))
|
||||
self.fileManager = FileManager(self.local_path)
|
||||
|
||||
#for backups check if remote path exists
|
||||
if(vfs.exists(self.remote_path)):
|
||||
#this will fail - need a disclaimer here
|
||||
#check if remote path exists
|
||||
if(self.remote_vfs.exists(self.remote_vfs.root_path)):
|
||||
#may be data in here already
|
||||
utils.log(utils.getString(30050))
|
||||
|
||||
self.syncFiles()
|
||||
else:
|
||||
utils.log(utils.getString(30023) + " - " + utils.getString(30017))
|
||||
self.fileManager = FileManager(self.remote_path)
|
||||
|
||||
#for restores remote path must exist
|
||||
if(vfs.exists(self.remote_path)):
|
||||
self.restoreFiles()
|
||||
else:
|
||||
xbmcgui.Dialog().ok(utils.getString(30010),utils.getString(30045),self.remote_path)
|
||||
#make the remote directory
|
||||
self.remote_vfs.mkdir(self.remote_vfs.root_path)
|
||||
|
||||
if(utils.getSetting('run_silent') == 'false' and not runSilent):
|
||||
self.progressBar.close()
|
||||
|
||||
def syncFiles(self):
|
||||
|
||||
#make the remote directory
|
||||
vfs.mkdir(self.remote_path)
|
||||
|
||||
utils.log(utils.getString(30051))
|
||||
self.fileManager.createFileList()
|
||||
|
||||
allFiles = self.fileManager.getFileList()
|
||||
|
||||
#write list from local to remote
|
||||
self.writeFiles(allFiles,self.local_path,self.remote_path)
|
||||
|
||||
def restoreFiles(self):
|
||||
self.fileManager.createFileList()
|
||||
|
||||
utils.log(utils.getString(30051))
|
||||
allFiles = self.fileManager.getFileList()
|
||||
|
||||
#write list from remote to local
|
||||
self.writeFiles(allFiles,self.remote_path,self.local_path)
|
||||
|
||||
#call update addons to refresh everything
|
||||
xbmc.executebuiltin('UpdateLocalAddons')
|
||||
|
||||
def writeFiles(self,fileList,source,dest):
|
||||
utils.log("Writing files to: " + dest)
|
||||
self.filesTotal = len(fileList)
|
||||
self.filesLeft = self.filesTotal
|
||||
|
||||
#write each file from source to destination
|
||||
for aFile in fileList:
|
||||
if(not self.checkCancel()):
|
||||
utils.log('Writing file: ' + source + aFile,xbmc.LOGDEBUG)
|
||||
self.updateProgress(aFile)
|
||||
if (aFile.startswith("-")):
|
||||
vfs.mkdir(xbmc.makeLegalFilename(dest + aFile[1:],False))
|
||||
else:
|
||||
vfs.copy(xbmc.makeLegalFilename(source + aFile),xbmc.makeLegalFilename(dest + aFile,False))
|
||||
|
||||
def updateProgress(self,message=''):
|
||||
self.filesLeft = self.filesLeft - 1
|
||||
|
||||
#update the progress bar
|
||||
if(self.progressBar != None):
|
||||
self.progressBar.update(int((float(self.filesTotal - self.filesLeft)/float(self.filesTotal)) * 100),message)
|
||||
#create a validation file for backup rotation
|
||||
writeCheck = self._createValidationFile()
|
||||
|
||||
if(not writeCheck):
|
||||
#we may not be able to write to this destination for some reason
|
||||
shouldContinue = xbmcgui.Dialog().yesno(utils.getString(30089),utils.getString(30090), utils.getString(30044),autoclose=25000)
|
||||
|
||||
if(not shouldContinue):
|
||||
return
|
||||
|
||||
utils.log(utils.getString(30051))
|
||||
allFiles = []
|
||||
fileManager = FileManager(self.xbmc_vfs)
|
||||
|
||||
#go through each of the user selected items and write them to the backup store
|
||||
if(utils.getSetting('backup_addons') == 'true'):
|
||||
fileManager.addFile("-" + xbmc.translatePath('special://home/addons'))
|
||||
fileManager.walkTree(xbmc.translatePath('special://home/addons'))
|
||||
|
||||
fileManager.addFile("-" + xbmc.translatePath('special://home/userdata'))
|
||||
|
||||
if(utils.getSetting('backup_addon_data') == 'true'):
|
||||
fileManager.addFile("-" + xbmc.translatePath('special://home/userdata/addon_data'))
|
||||
fileManager.walkTree(xbmc.translatePath('special://home/userdata/addon_data'))
|
||||
|
||||
if(utils.getSetting('backup_database') == 'true'):
|
||||
fileManager.addFile("-" + xbmc.translatePath('special://home/userdata/Database'))
|
||||
fileManager.walkTree(xbmc.translatePath('special://home/userdata/Database'))
|
||||
|
||||
if(utils.getSetting("backup_playlists") == 'true'):
|
||||
fileManager.addFile("-" + xbmc.translatePath('special://home/userdata/playlists'))
|
||||
fileManager.walkTree(xbmc.translatePath('special://home/userdata/playlists'))
|
||||
|
||||
if(utils.getSetting('backup_profiles') == 'true'):
|
||||
fileManager.addFile("-" + xbmc.translatePath('special://home/userdata/profiles'))
|
||||
fileManager.walkTree(xbmc.translatePath('special://home/userdata/profiles'))
|
||||
|
||||
if(utils.getSetting("backup_thumbnails") == "true"):
|
||||
fileManager.addFile("-" + xbmc.translatePath('special://home/userdata/Thumbnails'))
|
||||
fileManager.walkTree(xbmc.translatePath('special://home/userdata/Thumbnails'))
|
||||
|
||||
if(utils.getSetting("backup_config") == "true"):
|
||||
fileManager.addFile("-" + xbmc.translatePath('special://home/userdata/keymaps'))
|
||||
fileManager.walkTree(xbmc.translatePath('special://home/userdata/keymaps'))
|
||||
|
||||
fileManager.addFile("-" + xbmc.translatePath('special://home/userdata/peripheral_data'))
|
||||
fileManager.walkTree(xbmc.translatePath('special://home/userdata/peripheral_data'))
|
||||
|
||||
fileManager.addFile('-' + xbmc.translatePath('special://home/userdata/library'))
|
||||
fileManager.walkTree(xbmc.translatePath('special://home/userdata/library'))
|
||||
|
||||
#this part is an oddity
|
||||
dirs,configFiles = self.xbmc_vfs.listdir(xbmc.translatePath('special://home/userdata/'))
|
||||
for aFile in configFiles:
|
||||
if(aFile.endswith(".xml")):
|
||||
fileManager.addFile(xbmc.translatePath('special://home/userdata/') + aFile)
|
||||
|
||||
#add to array
|
||||
self.filesTotal = fileManager.size()
|
||||
allFiles.append({"source":self.xbmc_vfs.root_path,"dest":self.remote_vfs.root_path,"files":fileManager.getFiles()})
|
||||
|
||||
orig_base_path = self.remote_vfs.root_path
|
||||
|
||||
#check if there are custom directories
|
||||
if(utils.getSetting('custom_dir_1_enable') == 'true' and utils.getSetting('backup_custom_dir_1') != ''):
|
||||
|
||||
#create a special remote path with hash
|
||||
self.xbmc_vfs.set_root(utils.getSetting('backup_custom_dir_1'))
|
||||
fileManager.addFile("-custom_" + self._createCRC(self.xbmc_vfs.root_path))
|
||||
|
||||
#walk the directory
|
||||
fileManager.walkTree(self.xbmc_vfs.root_path)
|
||||
self.filesTotal = self.filesTotal + fileManager.size()
|
||||
allFiles.append({"source":self.xbmc_vfs.root_path,"dest":self.remote_vfs.root_path + "custom_" + self._createCRC(self.xbmc_vfs.root_path),"files":fileManager.getFiles()})
|
||||
|
||||
if(utils.getSetting('custom_dir_2_enable') == 'true' and utils.getSetting('backup_custom_dir_2') != ''):
|
||||
|
||||
#create a special remote path with hash
|
||||
self.xbmc_vfs.set_root(utils.getSetting('backup_custom_dir_2'))
|
||||
fileManager.addFile("-custom_" + self._createCRC(self.xbmc_vfs.root_path))
|
||||
|
||||
#walk the directory
|
||||
fileManager.walkTree(self.xbmc_vfs.root_path)
|
||||
self.filesTotal = self.filesTotal + fileManager.size()
|
||||
allFiles.append({"source":self.xbmc_vfs.root_path,"dest":self.remote_vfs.root_path + "custom_" + self._createCRC(self.xbmc_vfs.root_path),"files":fileManager.getFiles()})
|
||||
|
||||
|
||||
#backup all the files
|
||||
self.filesLeft = self.filesTotal
|
||||
for fileGroup in allFiles:
|
||||
self.xbmc_vfs.set_root(fileGroup['source'])
|
||||
self.remote_vfs.set_root(fileGroup['dest'])
|
||||
filesCopied = self.backupFiles(fileGroup['files'],self.xbmc_vfs,self.remote_vfs)
|
||||
|
||||
if(not filesCopied):
|
||||
utils.showNotification(utils.getString(30092))
|
||||
utils.log(utils.getString(30092))
|
||||
|
||||
#reset remote and xbmc vfs
|
||||
self.xbmc_vfs.set_root("special://home/")
|
||||
self.remote_vfs.set_root(orig_base_path)
|
||||
|
||||
if(utils.getSetting("compress_backups") == 'true'):
|
||||
#send the zip file to the real remote vfs
|
||||
zip_name = self.remote_vfs.root_path[:-1] + ".zip"
|
||||
self.remote_vfs.cleanup()
|
||||
self.xbmc_vfs.rename(xbmc.translatePath("special://temp/xbmc_backup_temp.zip"), xbmc.translatePath("special://temp/" + zip_name))
|
||||
fileManager.addFile(xbmc.translatePath("special://temp/" + zip_name))
|
||||
|
||||
#set root to data dir home
|
||||
self.xbmc_vfs.set_root(xbmc.translatePath("special://temp/"))
|
||||
|
||||
self.remote_vfs = self.saved_remote_vfs
|
||||
self.progressBar.updateProgress(98, utils.getString(30088))
|
||||
fileCopied = self.backupFiles(fileManager.getFiles(),self.xbmc_vfs, self.remote_vfs)
|
||||
|
||||
if(not fileCopied):
|
||||
#zip archive copy filed, inform the user
|
||||
shouldContinue = xbmcgui.Dialog().ok(utils.getString(30089),utils.getString(30090), utils.getString(30091))
|
||||
|
||||
#delete the temp zip file
|
||||
self.xbmc_vfs.rmfile(xbmc.translatePath("special://temp/" + zip_name))
|
||||
|
||||
#remove old backups
|
||||
self._rotateBackups()
|
||||
|
||||
elif (mode == self.Restore):
|
||||
utils.log(utils.getString(30023) + " - " + utils.getString(30017))
|
||||
|
||||
#catch for if the restore point is actually a zip file
|
||||
if(self.restore_point.split('.')[-1] == 'zip'):
|
||||
self.progressBar.updateProgress(2, utils.getString(30088))
|
||||
utils.log("copying zip file: " + self.restore_point)
|
||||
|
||||
#set root to data dir home
|
||||
self.xbmc_vfs.set_root(xbmc.translatePath("special://temp/"))
|
||||
|
||||
if(not self.xbmc_vfs.exists(xbmc.translatePath("special://temp/" + self.restore_point))):
|
||||
#copy just this file from the remote vfs
|
||||
zipFile = []
|
||||
zipFile.append(self.remote_base_path + self.restore_point)
|
||||
|
||||
self.backupFiles(zipFile,self.remote_vfs, self.xbmc_vfs)
|
||||
else:
|
||||
utils.log("zip file exists already")
|
||||
|
||||
#extract the zip file
|
||||
zip_vfs = ZipFileSystem(xbmc.translatePath("special://temp/"+ self.restore_point),'r')
|
||||
zip_vfs.extract(xbmc.translatePath("special://temp/"))
|
||||
zip_vfs.cleanup()
|
||||
|
||||
#set the new remote vfs and fix xbmc path
|
||||
self.remote_vfs = XBMCFileSystem(xbmc.translatePath("special://temp/" + self.restore_point.split(".")[0] + "/"))
|
||||
self.xbmc_vfs.set_root(xbmc.translatePath("special://home/"))
|
||||
|
||||
|
||||
#for restores remote path must exist
|
||||
if(not self.remote_vfs.exists(self.remote_vfs.root_path)):
|
||||
xbmcgui.Dialog().ok(utils.getString(30010),utils.getString(30045),self.remote_vfs.root_path)
|
||||
return
|
||||
|
||||
if(not self._checkValidationFile(self.remote_vfs.root_path)):
|
||||
#don't continue
|
||||
return
|
||||
|
||||
utils.log(utils.getString(30051))
|
||||
allFiles = []
|
||||
fileManager = FileManager(self.remote_vfs)
|
||||
|
||||
#go through each of the user selected items and write them to the backup store
|
||||
|
||||
if(utils.getSetting("backup_config") == "true"):
|
||||
#check for the existance of an advancedsettings file
|
||||
if(self.remote_vfs.exists(self.remote_vfs.root_path + "userdata/advancedsettings.xml") and not self.skip_advanced):
|
||||
#let the user know there is an advanced settings file present
|
||||
restartXbmc = xbmcgui.Dialog().yesno(utils.getString(30038),utils.getString(30039),utils.getString(30040), utils.getString(30041))
|
||||
|
||||
if(restartXbmc):
|
||||
#add only this file to the file list
|
||||
fileManager.addFile(self.remote_vfs.root_path + "userdata/advancedsettings.xml")
|
||||
self.backupFiles(fileManager.getFiles(),self.remote_vfs,self.xbmc_vfs)
|
||||
|
||||
#let the service know to resume this backup on startup
|
||||
self._createResumeBackupFile()
|
||||
|
||||
#do not continue running
|
||||
xbmcgui.Dialog().ok(utils.getString(30077),utils.getString(30078))
|
||||
|
||||
return
|
||||
|
||||
fileManager.addFile('-' + self.remote_vfs.root_path + 'userdata/keymaps')
|
||||
fileManager.walkTree(self.remote_vfs.root_path + "userdata/keymaps")
|
||||
|
||||
fileManager.addFile('-' + self.remote_vfs.root_path + "userdata/peripheral_data")
|
||||
fileManager.walkTree(self.remote_vfs.root_path + "userdata/peripheral_data")
|
||||
|
||||
fileManager.addFile('-' + self.remote_vfs.root_path + "userdata/library")
|
||||
fileManager.walkTree(self.remote_vfs.root_path + "userdata/library")
|
||||
|
||||
#this part is an oddity
|
||||
dirs,configFiles = self.remote_vfs.listdir(self.remote_vfs.root_path + "userdata/")
|
||||
for aFile in configFiles:
|
||||
if(aFile.endswith(".xml")):
|
||||
fileManager.addFile(self.remote_vfs.root_path + "userdata/" + aFile)
|
||||
|
||||
if(utils.getSetting('backup_addons') == 'true'):
|
||||
fileManager.addFile('-' + self.remote_vfs.root_path + "addons")
|
||||
fileManager.walkTree(self.remote_vfs.root_path + "addons")
|
||||
|
||||
self.xbmc_vfs.mkdir(xbmc.translatePath('special://home/userdata'))
|
||||
|
||||
if(utils.getSetting('backup_addon_data') == 'true'):
|
||||
fileManager.addFile('-' + self.remote_vfs.root_path + "userdata/addon_data")
|
||||
fileManager.walkTree(self.remote_vfs.root_path + "userdata/addon_data")
|
||||
|
||||
if(utils.getSetting('backup_database') == 'true'):
|
||||
fileManager.addFile('-' + self.remote_vfs.root_path + "userdata/Database")
|
||||
fileManager.walkTree(self.remote_vfs.root_path + "userdata/Database")
|
||||
|
||||
if(utils.getSetting("backup_playlists") == 'true'):
|
||||
fileManager.addFile('-' + self.remote_vfs.root_path + "userdata/playlists")
|
||||
fileManager.walkTree(self.remote_vfs.root_path + "userdata/playlists")
|
||||
|
||||
if(utils.getSetting('backup_profiles') == 'true'):
|
||||
fileManager.addFile('-' + self.remote_vfs.root_path + "userdata/profiles")
|
||||
fileManager.walkTree(self.remote_vfs.root_path + "userdata/profiles")
|
||||
|
||||
if(utils.getSetting("backup_thumbnails") == "true"):
|
||||
fileManager.addFile('-' + self.remote_vfs.root_path + "userdata/Thumbnails")
|
||||
fileManager.walkTree(self.remote_vfs.root_path + "userdata/Thumbnails")
|
||||
|
||||
#add to array
|
||||
self.filesTotal = fileManager.size()
|
||||
allFiles.append({"source":self.remote_vfs.root_path,"dest":self.xbmc_vfs.root_path,"files":fileManager.getFiles()})
|
||||
|
||||
#check if there are custom directories
|
||||
if(utils.getSetting('custom_dir_1_enable') == 'true' and utils.getSetting('backup_custom_dir_1') != ''):
|
||||
|
||||
self.xbmc_vfs.set_root(utils.getSetting('backup_custom_dir_1'))
|
||||
if(self.remote_vfs.exists(self.remote_vfs.root_path + "custom_" + self._createCRC(self.xbmc_vfs.root_path))):
|
||||
#index files to restore
|
||||
fileManager.walkTree(self.remote_vfs.root_path + "custom_" + self._createCRC(self.xbmc_vfs.root_path))
|
||||
self.filesTotal = self.filesTotal + fileManager.size()
|
||||
allFiles.append({"source":self.remote_vfs.root_path + "custom_" + self._createCRC(self.xbmc_vfs.root_path),"dest":self.xbmc_vfs.root_path,"files":fileManager.getFiles()})
|
||||
else:
|
||||
xbmcgui.Dialog().ok(utils.getString(30010),utils.getString(30045),self.remote_vfs.root_path + "custom_" + self._createCRC(utils.getSetting('backup_custom_dir_1')))
|
||||
|
||||
if(utils.getSetting('custom_dir_2_enable') == 'true' and utils.getSetting('backup_custom_dir_2') != ''):
|
||||
|
||||
self.xbmc_vfs.set_root(utils.getSetting('backup_custom_dir_2'))
|
||||
if(self.remote_vfs.exists(self.remote_vfs.root_path + "custom_" + self._createCRC(self.xbmc_vfs.root_path))):
|
||||
#index files to restore
|
||||
fileManager.walkTree(self.remote_vfs.root_path + "custom_" + self._createCRC(self.xbmc_vfs.root_path))
|
||||
self.filesTotal = self.filesTotal + fileManager.size()
|
||||
allFiles.append({"source":self.remote_vfs.root_path + "custom_" + self._createCRC(self.xbmc_vfs.root_path),"dest":self.xbmc_vfs.root_path,"files":fileManager.getFiles()})
|
||||
else:
|
||||
xbmcgui.Dialog().ok(utils.getString(30010),utils.getString(30045),self.remote_vfs.root_path + "custom_" + self._createCRC(utils.getSetting('backup_custom_dir_2')))
|
||||
|
||||
|
||||
#restore all the files
|
||||
self.filesLeft = self.filesTotal
|
||||
for fileGroup in allFiles:
|
||||
self.remote_vfs.set_root(fileGroup['source'])
|
||||
self.xbmc_vfs.set_root(fileGroup['dest'])
|
||||
self.backupFiles(fileGroup['files'],self.remote_vfs,self.xbmc_vfs)
|
||||
|
||||
if(self.restore_point.split('.')[-1] == 'zip'):
|
||||
#delete the zip file and the extracted directory
|
||||
self.xbmc_vfs.rmfile(xbmc.translatePath("special://temp/" + self.restore_point))
|
||||
self.xbmc_vfs.rmdir(self.remote_vfs.root_path)
|
||||
|
||||
if(utils.getSetting("backup_config") == "true"):
|
||||
#update the guisettings information (or what we can from it)
|
||||
gui_settings = GuiSettingsManager('special://home/userdata/guisettings.xml')
|
||||
gui_settings.run()
|
||||
|
||||
#call update addons to refresh everything
|
||||
xbmc.executebuiltin('UpdateLocalAddons')
|
||||
|
||||
self.xbmc_vfs.cleanup()
|
||||
self.remote_vfs.cleanup()
|
||||
self.progressBar.close()
|
||||
|
||||
#reset the window setting
|
||||
window.setProperty(utils.__addon_id__ + ".running","")
|
||||
|
||||
def backupFiles(self,fileList,source,dest):
|
||||
result = True
|
||||
|
||||
utils.log("Writing files to: " + dest.root_path)
|
||||
utils.log("Source: " + source.root_path)
|
||||
for aFile in fileList:
|
||||
if(not self.progressBar.checkCancel()):
|
||||
utils.log('Writing file: ' + aFile,xbmc.LOGDEBUG)
|
||||
if(aFile.startswith("-")):
|
||||
self._updateProgress(aFile[len(source.root_path) + 1:])
|
||||
dest.mkdir(dest.root_path + aFile[len(source.root_path) + 1:])
|
||||
else:
|
||||
self._updateProgress()
|
||||
wroteFile = True
|
||||
if(isinstance(source,DropboxFileSystem)):
|
||||
#if copying from dropbox we need the file handle, use get_file
|
||||
wroteFile = source.get_file(aFile,dest.root_path + aFile[len(source.root_path):])
|
||||
else:
|
||||
#copy using normal method
|
||||
wroteFile = dest.put(aFile,dest.root_path + aFile[len(source.root_path):])
|
||||
|
||||
#if result is still true but this file failed
|
||||
if(not wroteFile and result):
|
||||
result = False
|
||||
|
||||
|
||||
return result
|
||||
|
||||
def _createCRC(self,string):
|
||||
#create hash from string
|
||||
string = string.lower()
|
||||
bytes = bytearray(string.encode())
|
||||
crc = 0xffffffff;
|
||||
for b in bytes:
|
||||
crc = crc ^ (b << 24)
|
||||
for i in range(8):
|
||||
if (crc & 0x80000000 ):
|
||||
crc = (crc << 1) ^ 0x04C11DB7
|
||||
else:
|
||||
crc = crc << 1;
|
||||
crc = crc & 0xFFFFFFFF
|
||||
|
||||
return '%08x' % crc
|
||||
|
||||
def _updateProgress(self,message=None):
|
||||
self.filesLeft = self.filesLeft - 1
|
||||
self.progressBar.updateProgress(int((float(self.filesTotal - self.filesLeft)/float(self.filesTotal)) * 100),message)
|
||||
|
||||
def _rotateBackups(self):
|
||||
total_backups = int(utils.getSetting('backup_rotation'))
|
||||
if(total_backups > 0):
|
||||
#get a list of valid backup folders
|
||||
dirs = self.listBackups()
|
||||
|
||||
if(len(dirs) > total_backups):
|
||||
#remove backups to equal total wanted
|
||||
remove_num = 0
|
||||
self.filesTotal = self.filesTotal + remove_num + 1
|
||||
|
||||
#update the progress bar if it is available
|
||||
while(remove_num < (len(dirs) - total_backups) and not self.progressBar.checkCancel()):
|
||||
self._updateProgress(utils.getString(30054) + " " + dirs[remove_num][1])
|
||||
utils.log("Removing backup " + dirs[remove_num][0])
|
||||
|
||||
if(dirs[remove_num][0].split('.')[-1] == 'zip'):
|
||||
#this is a file, remove it that way
|
||||
self.remote_vfs.rmfile(self.remote_base_path + dirs[remove_num][0])
|
||||
else:
|
||||
self.remote_vfs.rmdir(self.remote_base_path + dirs[remove_num][0] + "/")
|
||||
|
||||
remove_num = remove_num + 1
|
||||
|
||||
def _createValidationFile(self):
|
||||
vFile = xbmcvfs.File(xbmc.translatePath(utils.data_dir() + "xbmcbackup.val"),'w')
|
||||
vFile.write(json.dumps({"name":"XBMC Backup Validation File","xbmc_version":xbmc.getInfoLabel('System.BuildVersion')}))
|
||||
vFile.write("")
|
||||
vFile.close()
|
||||
|
||||
success = self.remote_vfs.put(xbmc.translatePath(utils.data_dir() + "xbmcbackup.val"),self.remote_vfs.root_path + "xbmcbackup.val")
|
||||
|
||||
return success
|
||||
|
||||
def _checkValidationFile(self,path):
|
||||
result = False
|
||||
|
||||
#copy the file and open it
|
||||
self.xbmc_vfs.put(path + "xbmcbackup.val",xbmc.translatePath(utils.data_dir() + "xbmcbackup.val"))
|
||||
|
||||
vFile = xbmcvfs.File(xbmc.translatePath(utils.data_dir() + "xbmcbackup.val"),'r')
|
||||
jsonString = vFile.read()
|
||||
vFile.close()
|
||||
|
||||
try:
|
||||
json_dict = json.loads(jsonString)
|
||||
|
||||
if(xbmc.getInfoLabel('System.BuildVersion') == json_dict['xbmc_version']):
|
||||
result = True
|
||||
else:
|
||||
result = xbmcgui.Dialog().yesno(utils.getString(30085),utils.getString(30086),utils.getString(30044))
|
||||
|
||||
except ValueError:
|
||||
#may fail on older archives
|
||||
result = True
|
||||
|
||||
return result
|
||||
|
||||
def _createResumeBackupFile(self):
|
||||
rFile = xbmcvfs.File(xbmc.translatePath(utils.data_dir() + "resume.txt"),'w')
|
||||
rFile.write(self.restore_point)
|
||||
rFile.close()
|
||||
|
||||
class FileManager:
|
||||
not_dir = ['.zip','.xsp','.rar']
|
||||
|
||||
def __init__(self,vfs):
|
||||
self.vfs = vfs
|
||||
self.fileArray = []
|
||||
|
||||
def walkTree(self,directory):
|
||||
|
||||
if(self.vfs.exists(directory)):
|
||||
dirs,files = self.vfs.listdir(directory)
|
||||
|
||||
#create all the subdirs first
|
||||
for aDir in dirs:
|
||||
dirPath = xbmc.translatePath(directory + "/" + aDir)
|
||||
file_ext = aDir.split('.')[-1]
|
||||
|
||||
self.addFile("-" + dirPath)
|
||||
|
||||
#catch for "non directory" type files
|
||||
shouldWalk = True
|
||||
|
||||
for s in file_ext:
|
||||
if(s in self.not_dir):
|
||||
shouldWalk = False
|
||||
|
||||
if(shouldWalk):
|
||||
self.walkTree(dirPath)
|
||||
|
||||
#copy all the files
|
||||
for aFile in files:
|
||||
filePath = xbmc.translatePath(directory + "/" + aFile)
|
||||
self.addFile(filePath)
|
||||
|
||||
def addFile(self,filename):
|
||||
try:
|
||||
filename = filename.decode('UTF-8')
|
||||
except UnicodeDecodeError:
|
||||
filename = filename.decode('ISO-8859-2')
|
||||
|
||||
#write the full remote path name of this file
|
||||
utils.log("Add File: " + filename,xbmc.LOGDEBUG)
|
||||
self.fileArray.append(filename)
|
||||
|
||||
def getFiles(self):
|
||||
result = self.fileArray
|
||||
self.fileArray = []
|
||||
return result
|
||||
|
||||
def size(self):
|
||||
return len(self.fileArray)
|
||||
|
||||
class BackupProgressBar:
|
||||
NONE = 2
|
||||
DIALOG = 0
|
||||
BACKGROUND = 1
|
||||
|
||||
mode = 2
|
||||
progressBar = None
|
||||
override = False
|
||||
|
||||
def __init__(self,progressOverride):
|
||||
self.override = progressOverride
|
||||
|
||||
#check if we should use the progress bar
|
||||
if(int(utils.getSetting('progress_mode')) != 2):
|
||||
#check if background or normal
|
||||
if(int(utils.getSetting('progress_mode')) == 0 and not self.override):
|
||||
self.mode = self.DIALOG
|
||||
self.progressBar = xbmcgui.DialogProgress()
|
||||
else:
|
||||
self.mode = self.BACKGROUND
|
||||
self.progressBar = xbmcgui.DialogProgressBG()
|
||||
|
||||
def create(self,heading,message):
|
||||
if(self.mode != self.NONE):
|
||||
self.progressBar.create(heading,message)
|
||||
|
||||
def updateProgress(self,percent,message=None):
|
||||
|
||||
#update the progress bar
|
||||
if(self.mode != self.NONE):
|
||||
if(message != None):
|
||||
#need different calls for dialog and background bars
|
||||
if(self.mode == self.DIALOG):
|
||||
self.progressBar.update(percent,message)
|
||||
else:
|
||||
self.progressBar.update(percent,message=message)
|
||||
else:
|
||||
self.progressBar.update(percent)
|
||||
|
||||
def checkCancel(self):
|
||||
result = False
|
||||
|
||||
if(self.progressBar != None):
|
||||
if(self.mode == self.DIALOG):
|
||||
result = self.progressBar.iscanceled()
|
||||
|
||||
return result
|
||||
|
||||
def isReady(self):
|
||||
return True if self.remote_path != '' else False
|
||||
def close(self):
|
||||
if(self.mode != self.NONE):
|
||||
self.progressBar.close()
|
||||
|
||||
2
resources/lib/dropbox/.gitignore
vendored
Normal file
2
resources/lib/dropbox/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
|
||||
*.pyc
|
||||
3
resources/lib/dropbox/__init__.py
Normal file
3
resources/lib/dropbox/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from . import client, rest, session
|
||||
965
resources/lib/dropbox/client.py
Normal file
965
resources/lib/dropbox/client.py
Normal file
@@ -0,0 +1,965 @@
|
||||
"""
|
||||
The main client API you'll be working with most often. You'll need to
|
||||
configure a dropbox.session.DropboxSession for this to work, but otherwise
|
||||
it's fairly self-explanatory.
|
||||
|
||||
Before you can begin making requests to the dropbox API, you have to
|
||||
authenticate your application with Dropbox and get the user to
|
||||
authorize your application to use dropbox on his behalf. A typical
|
||||
progam, from the initial imports to making a simple request (``account_info``),
|
||||
looks like this:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
# Include the Dropbox SDK libraries
|
||||
from dropbox import client, rest, session
|
||||
|
||||
# Get your app key and secret from the Dropbox developer website
|
||||
APP_KEY = 'INSERT_APP_KEY_HERE'
|
||||
APP_SECRET = 'INSERT_SECRET_HERE'
|
||||
|
||||
# ACCESS_TYPE should be 'dropbox' or 'app_folder' as configured for your app
|
||||
ACCESS_TYPE = 'INSERT_ACCESS_TYPE_HERE'
|
||||
|
||||
sess = session.DropboxSession(APP_KEY, APP_SECRET, ACCESS_TYPE)
|
||||
|
||||
request_token = sess.obtain_request_token()
|
||||
|
||||
url = sess.build_authorize_url(request_token)
|
||||
|
||||
# Make the user sign in and authorize this token
|
||||
print "url:", url
|
||||
print "Please visit this website and press the 'Allow' button, then hit 'Enter' here."
|
||||
raw_input()
|
||||
|
||||
# This will fail if the user didn't visit the above URL and hit 'Allow'
|
||||
access_token = sess.obtain_access_token(request_token)
|
||||
|
||||
client = client.DropboxClient(sess)
|
||||
print "linked account:", client.account_info()
|
||||
|
||||
"""
|
||||
from __future__ import absolute_import
|
||||
|
||||
import re
|
||||
import os
|
||||
from StringIO import StringIO
|
||||
try:
|
||||
import json
|
||||
except ImportError:
|
||||
import simplejson as json
|
||||
|
||||
from .rest import ErrorResponse, RESTClient
|
||||
|
||||
def format_path(path):
|
||||
"""Normalize path for use with the Dropbox API.
|
||||
|
||||
This function turns multiple adjacent slashes into single
|
||||
slashes, then ensures that there's a leading slash but
|
||||
not a trailing slash.
|
||||
"""
|
||||
if not path:
|
||||
return path
|
||||
|
||||
path = re.sub(r'/+', '/', path)
|
||||
|
||||
if path == '/':
|
||||
return (u"" if isinstance(path, unicode) else "")
|
||||
else:
|
||||
return '/' + path.strip('/')
|
||||
|
||||
class DropboxClient(object):
|
||||
"""
|
||||
The main access point of doing REST calls on Dropbox. You should
|
||||
first create and configure a dropbox.session.DropboxSession object,
|
||||
and then pass it into DropboxClient's constructor. DropboxClient
|
||||
then does all the work of properly calling each API method
|
||||
with the correct OAuth authentication.
|
||||
|
||||
You should be aware that any of these methods can raise a
|
||||
rest.ErrorResponse exception if the server returns a non-200
|
||||
or invalid HTTP response. Note that a 401 return status at any
|
||||
point indicates that the user needs to be reauthenticated.
|
||||
"""
|
||||
|
||||
def __init__(self, session, rest_client=RESTClient):
|
||||
"""Initialize the DropboxClient object.
|
||||
|
||||
Args:
|
||||
``session``: A dropbox.session.DropboxSession object to use for making requests.
|
||||
``rest_client``: A dropbox.rest.RESTClient-like object to use for making requests. [optional]
|
||||
"""
|
||||
self.session = session
|
||||
self.rest_client = rest_client
|
||||
|
||||
def request(self, target, params=None, method='POST', content_server=False):
|
||||
"""Make an HTTP request to a target API method.
|
||||
|
||||
This is an internal method used to properly craft the url, headers, and
|
||||
params for a Dropbox API request. It is exposed for you in case you
|
||||
need craft other API calls not in this library or if you want to debug it.
|
||||
|
||||
Args:
|
||||
- ``target``: The target URL with leading slash (e.g. '/files')
|
||||
- ``params``: A dictionary of parameters to add to the request
|
||||
- ``method``: An HTTP method (e.g. 'GET' or 'POST')
|
||||
- ``content_server``: A boolean indicating whether the request is to the
|
||||
API content server, for example to fetch the contents of a file
|
||||
rather than its metadata.
|
||||
|
||||
Returns:
|
||||
- A tuple of (url, params, headers) that should be used to make the request.
|
||||
OAuth authentication information will be added as needed within these fields.
|
||||
"""
|
||||
assert method in ['GET','POST', 'PUT'], "Only 'GET', 'POST', and 'PUT' are allowed."
|
||||
if params is None:
|
||||
params = {}
|
||||
|
||||
host = self.session.API_CONTENT_HOST if content_server else self.session.API_HOST
|
||||
base = self.session.build_url(host, target)
|
||||
headers, params = self.session.build_access_headers(method, base, params)
|
||||
|
||||
if method in ('GET', 'PUT'):
|
||||
url = self.session.build_url(host, target, params)
|
||||
else:
|
||||
url = self.session.build_url(host, target)
|
||||
|
||||
return url, params, headers
|
||||
|
||||
|
||||
def account_info(self):
|
||||
"""Retrieve information about the user's account.
|
||||
|
||||
Returns:
|
||||
- A dictionary containing account information.
|
||||
|
||||
For a detailed description of what this call returns, visit:
|
||||
https://www.dropbox.com/developers/reference/api#account-info
|
||||
"""
|
||||
url, params, headers = self.request("/account/info", method='GET')
|
||||
|
||||
return self.rest_client.GET(url, headers)
|
||||
|
||||
def get_chunked_uploader(self, file_obj, length):
|
||||
"""Creates a ChunkedUploader to upload the given file-like object.
|
||||
|
||||
Args:
|
||||
- ``file_obj``: The file-like object which is the source of the data
|
||||
being uploaded.
|
||||
- ``length``: The number of bytes to upload.
|
||||
|
||||
The expected use of this function is as follows:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
bigFile = open("data.txt", 'rb')
|
||||
|
||||
uploader = myclient.get_chunked_uploader(bigFile, size)
|
||||
print "uploading: ", size
|
||||
while uploader.offset < size:
|
||||
try:
|
||||
upload = uploader.upload_chunked()
|
||||
except rest.ErrorResponse, e:
|
||||
# perform error handling and retry logic
|
||||
|
||||
The SDK leaves the error handling and retry logic to the developer
|
||||
to implement, as the exact requirements will depend on the application
|
||||
involved.
|
||||
"""
|
||||
return DropboxClient.ChunkedUploader(self, file_obj, length)
|
||||
|
||||
|
||||
|
||||
|
||||
class ChunkedUploader(object):
|
||||
"""Contains the logic around a chunked upload, which uploads a
|
||||
large file to Dropbox via the /chunked_upload endpoint
|
||||
"""
|
||||
def __init__(self, client, file_obj, length):
|
||||
self.client = client
|
||||
self.offset = 0
|
||||
self.upload_id = None
|
||||
|
||||
self.last_block = None
|
||||
self.file_obj = file_obj
|
||||
self.target_length = length
|
||||
|
||||
|
||||
def upload_chunked(self, chunk_size = 4 * 1024 * 1024):
|
||||
"""Uploads data from this ChunkedUploader's file_obj in chunks, until
|
||||
an error occurs. Throws an exception when an error occurs, and can
|
||||
be called again to resume the upload.
|
||||
|
||||
Args:
|
||||
- ``chunk_size``: The number of bytes to put in each chunk. [default 4 MB]
|
||||
"""
|
||||
|
||||
while self.offset < self.target_length:
|
||||
next_chunk_size = min(chunk_size, self.target_length - self.offset)
|
||||
if self.last_block == None:
|
||||
self.last_block = self.file_obj.read(next_chunk_size)
|
||||
|
||||
try:
|
||||
(self.offset, self.upload_id) = self.client.upload_chunk(StringIO(self.last_block), next_chunk_size, self.offset, self.upload_id)
|
||||
self.last_block = None
|
||||
except ErrorResponse, e:
|
||||
reply = e.body
|
||||
if "offset" in reply and reply['offset'] != 0:
|
||||
if reply['offset'] > self.offset:
|
||||
self.last_block = None
|
||||
self.offset = reply['offset']
|
||||
|
||||
def finish(self, path, overwrite=False, parent_rev=None):
|
||||
"""Commits the bytes uploaded by this ChunkedUploader to a file
|
||||
in the users dropbox.
|
||||
|
||||
Args:
|
||||
- ``path``: The full path of the file in the Dropbox.
|
||||
- ``overwrite``: Whether to overwrite an existing file at the given path. [default False]
|
||||
If overwrite is False and a file already exists there, Dropbox
|
||||
will rename the upload to make sure it doesn't overwrite anything.
|
||||
You need to check the metadata returned for the new name.
|
||||
This field should only be True if your intent is to potentially
|
||||
clobber changes to a file that you don't know about.
|
||||
- ``parent_rev``: The rev field from the 'parent' of this upload. [optional]
|
||||
If your intent is to update the file at the given path, you should
|
||||
pass the parent_rev parameter set to the rev value from the most recent
|
||||
metadata you have of the existing file at that path. If the server
|
||||
has a more recent version of the file at the specified path, it will
|
||||
automatically rename your uploaded file, spinning off a conflict.
|
||||
Using this parameter effectively causes the overwrite parameter to be ignored.
|
||||
The file will always be overwritten if you send the most-recent parent_rev,
|
||||
and it will never be overwritten if you send a less-recent one.
|
||||
"""
|
||||
|
||||
path = "/commit_chunked_upload/%s%s" % (self.client.session.root, format_path(path))
|
||||
|
||||
params = dict(
|
||||
overwrite = bool(overwrite),
|
||||
upload_id = self.upload_id
|
||||
)
|
||||
|
||||
if parent_rev is not None:
|
||||
params['parent_rev'] = parent_rev
|
||||
|
||||
url, params, headers = self.client.request(path, params, content_server=True)
|
||||
|
||||
return self.client.rest_client.POST(url, params, headers)
|
||||
|
||||
def upload_chunk(self, file_obj, length, offset=0, upload_id=None):
|
||||
"""Uploads a single chunk of data from the given file like object. The majority of users
|
||||
should use the ChunkedUploader object, which provides a simpler interface to the
|
||||
chunked_upload API endpoint.
|
||||
|
||||
Args:
|
||||
- ``file_obj``: The source of the data to upload
|
||||
- ``length``: The number of bytes to upload in one chunk.
|
||||
|
||||
Returns:
|
||||
- The reply from the server, as a dictionary
|
||||
"""
|
||||
|
||||
params = dict()
|
||||
|
||||
if upload_id:
|
||||
params['upload_id'] = upload_id
|
||||
params['offset'] = offset
|
||||
|
||||
url, ignored_params, headers = self.request("/chunked_upload", params, method='PUT', content_server=True)
|
||||
|
||||
try:
|
||||
reply = self.rest_client.PUT(url, file_obj, headers)
|
||||
return reply['offset'], reply['upload_id']
|
||||
except ErrorResponse, e:
|
||||
raise e
|
||||
|
||||
|
||||
def put_file(self, full_path, file_obj, overwrite=False, parent_rev=None):
|
||||
"""Upload a file.
|
||||
|
||||
A typical use case would be as follows:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
f = open('working-draft.txt')
|
||||
response = client.put_file('/magnum-opus.txt', f)
|
||||
print "uploaded:", response
|
||||
|
||||
which would return the metadata of the uploaded file, similar to:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
{
|
||||
'bytes': 77,
|
||||
'icon': 'page_white_text',
|
||||
'is_dir': False,
|
||||
'mime_type': 'text/plain',
|
||||
'modified': 'Wed, 20 Jul 2011 22:04:50 +0000',
|
||||
'path': '/magnum-opus.txt',
|
||||
'rev': '362e2029684fe',
|
||||
'revision': 221922,
|
||||
'root': 'dropbox',
|
||||
'size': '77 bytes',
|
||||
'thumb_exists': False
|
||||
}
|
||||
|
||||
Args:
|
||||
- ``full_path``: The full path to upload the file to, *including the file name*.
|
||||
If the destination directory does not yet exist, it will be created.
|
||||
- ``file_obj``: A file-like object to upload. If you would like, you can pass a string as file_obj.
|
||||
- ``overwrite``: Whether to overwrite an existing file at the given path. [default False]
|
||||
If overwrite is False and a file already exists there, Dropbox
|
||||
will rename the upload to make sure it doesn't overwrite anything.
|
||||
You need to check the metadata returned for the new name.
|
||||
This field should only be True if your intent is to potentially
|
||||
clobber changes to a file that you don't know about.
|
||||
- ``parent_rev``: The rev field from the 'parent' of this upload. [optional]
|
||||
If your intent is to update the file at the given path, you should
|
||||
pass the parent_rev parameter set to the rev value from the most recent
|
||||
metadata you have of the existing file at that path. If the server
|
||||
has a more recent version of the file at the specified path, it will
|
||||
automatically rename your uploaded file, spinning off a conflict.
|
||||
Using this parameter effectively causes the overwrite parameter to be ignored.
|
||||
The file will always be overwritten if you send the most-recent parent_rev,
|
||||
and it will never be overwritten if you send a less-recent one.
|
||||
|
||||
Returns:
|
||||
- A dictionary containing the metadata of the newly uploaded file.
|
||||
|
||||
For a detailed description of what this call returns, visit:
|
||||
https://www.dropbox.com/developers/reference/api#files-put
|
||||
|
||||
Raises:
|
||||
- A dropbox.rest.ErrorResponse with an HTTP status of
|
||||
- 400: Bad request (may be due to many things; check e.error for details)
|
||||
- 503: User over quota
|
||||
|
||||
Note: In Python versions below version 2.6, httplib doesn't handle file-like objects.
|
||||
In that case, this code will read the entire file into memory (!).
|
||||
"""
|
||||
path = "/files_put/%s%s" % (self.session.root, format_path(full_path))
|
||||
|
||||
params = {
|
||||
'overwrite': bool(overwrite),
|
||||
}
|
||||
|
||||
if parent_rev is not None:
|
||||
params['parent_rev'] = parent_rev
|
||||
|
||||
|
||||
url, params, headers = self.request(path, params, method='PUT', content_server=True)
|
||||
|
||||
return self.rest_client.PUT(url, file_obj, headers)
|
||||
|
||||
def get_file(self, from_path, rev=None):
|
||||
"""Download a file.
|
||||
|
||||
Unlike most other calls, get_file returns a raw HTTPResponse with the connection open.
|
||||
You should call .read() and perform any processing you need, then close the HTTPResponse.
|
||||
|
||||
A typical usage looks like this:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
out = open('magnum-opus.txt', 'w')
|
||||
f, metadata = client.get_file_and_metadata('/magnum-opus.txt').read()
|
||||
out.write(f)
|
||||
|
||||
which would download the file ``magnum-opus.txt`` and write the contents into
|
||||
the file ``magnum-opus.txt`` on the local filesystem.
|
||||
|
||||
Args:
|
||||
- ``from_path``: The path to the file to be downloaded.
|
||||
- ``rev``: A previous rev value of the file to be downloaded. [optional]
|
||||
|
||||
Returns:
|
||||
- An httplib.HTTPResponse that is the result of the request.
|
||||
|
||||
Raises:
|
||||
- A dropbox.rest.ErrorResponse with an HTTP status of
|
||||
- 400: Bad request (may be due to many things; check e.error for details)
|
||||
- 404: No file was found at the given path, or the file that was there was deleted.
|
||||
- 200: Request was okay but response was malformed in some way.
|
||||
"""
|
||||
path = "/files/%s%s" % (self.session.root, format_path(from_path))
|
||||
|
||||
params = {}
|
||||
if rev is not None:
|
||||
params['rev'] = rev
|
||||
|
||||
url, params, headers = self.request(path, params, method='GET', content_server=True)
|
||||
return self.rest_client.request("GET", url, headers=headers, raw_response=True)
|
||||
|
||||
def get_file_and_metadata(self, from_path, rev=None):
|
||||
"""Download a file alongwith its metadata.
|
||||
|
||||
Acts as a thin wrapper around get_file() (see get_file() comments for
|
||||
more details)
|
||||
|
||||
Args:
|
||||
- ``from_path``: The path to the file to be downloaded.
|
||||
- ``rev``: A previous rev value of the file to be downloaded. [optional]
|
||||
|
||||
Returns:
|
||||
- An httplib.HTTPResponse that is the result of the request.
|
||||
- A dictionary containing the metadata of the file (see
|
||||
https://www.dropbox.com/developers/reference/api#metadata for details).
|
||||
|
||||
Raises:
|
||||
- A dropbox.rest.ErrorResponse with an HTTP status of
|
||||
- 400: Bad request (may be due to many things; check e.error for details)
|
||||
- 404: No file was found at the given path, or the file that was there was deleted.
|
||||
- 200: Request was okay but response was malformed in some way.
|
||||
"""
|
||||
file_res = self.get_file(from_path, rev)
|
||||
metadata = DropboxClient.__parse_metadata_as_dict(file_res)
|
||||
|
||||
return file_res, metadata
|
||||
|
||||
@staticmethod
|
||||
def __parse_metadata_as_dict(dropbox_raw_response):
|
||||
"""Parses file metadata from a raw dropbox HTTP response, raising a
|
||||
dropbox.rest.ErrorResponse if parsing fails.
|
||||
"""
|
||||
metadata = None
|
||||
for header, header_val in dropbox_raw_response.getheaders():
|
||||
if header.lower() == 'x-dropbox-metadata':
|
||||
try:
|
||||
metadata = json.loads(header_val)
|
||||
except ValueError:
|
||||
raise ErrorResponse(dropbox_raw_response)
|
||||
if not metadata: raise ErrorResponse(dropbox_raw_response)
|
||||
return metadata
|
||||
|
||||
def delta(self, cursor=None):
|
||||
"""A way of letting you keep up with changes to files and folders in a
|
||||
user's Dropbox. You can periodically call delta() to get a list of "delta
|
||||
entries", which are instructions on how to update your local state to
|
||||
match the server's state.
|
||||
|
||||
Arguments:
|
||||
- ``cursor``: On the first call, omit this argument (or pass in ``None``). On
|
||||
subsequent calls, pass in the ``cursor`` string returned by the previous
|
||||
call.
|
||||
|
||||
Returns: A dict with three fields.
|
||||
- ``entries``: A list of "delta entries" (described below)
|
||||
- ``reset``: If ``True``, you should your local state to be an empty folder
|
||||
before processing the list of delta entries. This is only ``True`` only
|
||||
in rare situations.
|
||||
- ``cursor``: A string that is used to keep track of your current state.
|
||||
On the next call to delta(), pass in this value to return entries
|
||||
that were recorded since the cursor was returned.
|
||||
- ``has_more``: If ``True``, then there are more entries available; you can
|
||||
call delta() again immediately to retrieve those entries. If ``False``,
|
||||
then wait at least 5 minutes (preferably longer) before checking again.
|
||||
|
||||
Delta Entries: Each entry is a 2-item list of one of following forms:
|
||||
- [*path*, *metadata*]: Indicates that there is a file/folder at the given
|
||||
path. You should add the entry to your local path. (The *metadata*
|
||||
value is the same as what would be returned by the ``metadata()`` call.)
|
||||
|
||||
- If the new entry includes parent folders that don't yet exist in your
|
||||
local state, create those parent folders in your local state. You
|
||||
will eventually get entries for those parent folders.
|
||||
- If the new entry is a file, replace whatever your local state has at
|
||||
*path* with the new entry.
|
||||
- If the new entry is a folder, check what your local state has at
|
||||
*path*. If it's a file, replace it with the new entry. If it's a
|
||||
folder, apply the new *metadata* to the folder, but do not modify
|
||||
the folder's children.
|
||||
- [*path*, ``nil``]: Indicates that there is no file/folder at the *path* on
|
||||
Dropbox. To update your local state to match, delete whatever is at *path*,
|
||||
including any children (you will sometimes also get "delete" delta entries
|
||||
for the children, but this is not guaranteed). If your local state doesn't
|
||||
have anything at *path*, ignore this entry.
|
||||
|
||||
Remember: Dropbox treats file names in a case-insensitive but case-preserving
|
||||
way. To facilitate this, the *path* strings above are lower-cased versions of
|
||||
the actual path. The *metadata* dicts have the original, case-preserved path.
|
||||
"""
|
||||
path = "/delta"
|
||||
|
||||
params = {}
|
||||
if cursor is not None:
|
||||
params['cursor'] = cursor
|
||||
|
||||
url, params, headers = self.request(path, params)
|
||||
|
||||
return self.rest_client.POST(url, params, headers)
|
||||
|
||||
|
||||
def create_copy_ref(self, from_path):
|
||||
"""Creates and returns a copy ref for a specific file. The copy ref can be
|
||||
used to instantly copy that file to the Dropbox of another account.
|
||||
|
||||
Args:
|
||||
- ``path``: The path to the file for a copy ref to be created on.
|
||||
|
||||
Returns:
|
||||
- A dictionary that looks like the following example:
|
||||
|
||||
``{"expires":"Fri, 31 Jan 2042 21:01:05 +0000", "copy_ref":"z1X6ATl6aWtzOGq0c3g5Ng"}``
|
||||
|
||||
"""
|
||||
path = "/copy_ref/%s%s" % (self.session.root, format_path(from_path))
|
||||
|
||||
url, params, headers = self.request(path, {}, method='GET')
|
||||
|
||||
return self.rest_client.GET(url, headers)
|
||||
|
||||
def add_copy_ref(self, copy_ref, to_path):
|
||||
"""Adds the file referenced by the copy ref to the specified path
|
||||
|
||||
Args:
|
||||
- ``copy_ref``: A copy ref string that was returned from a create_copy_ref call.
|
||||
The copy_ref can be created from any other Dropbox account, or from the same account.
|
||||
- ``path``: The path to where the file will be created.
|
||||
|
||||
Returns:
|
||||
- A dictionary containing the metadata of the new copy of the file.
|
||||
"""
|
||||
path = "/fileops/copy"
|
||||
|
||||
params = {'from_copy_ref': copy_ref,
|
||||
'to_path': format_path(to_path),
|
||||
'root': self.session.root}
|
||||
|
||||
url, params, headers = self.request(path, params)
|
||||
|
||||
return self.rest_client.POST(url, params, headers)
|
||||
|
||||
def file_copy(self, from_path, to_path):
|
||||
"""Copy a file or folder to a new location.
|
||||
|
||||
Args:
|
||||
- ``from_path``: The path to the file or folder to be copied.
|
||||
- ``to_path``: The destination path of the file or folder to be copied.
|
||||
This parameter should include the destination filename (e.g.
|
||||
from_path: '/test.txt', to_path: '/dir/test.txt'). If there's
|
||||
already a file at the to_path, this copy will be renamed to
|
||||
be unique.
|
||||
|
||||
Returns:
|
||||
- A dictionary containing the metadata of the new copy of the file or folder.
|
||||
|
||||
For a detailed description of what this call returns, visit:
|
||||
https://www.dropbox.com/developers/reference/api#fileops-copy
|
||||
|
||||
Raises:
|
||||
- A dropbox.rest.ErrorResponse with an HTTP status of:
|
||||
|
||||
- 400: Bad request (may be due to many things; check e.error for details)
|
||||
- 404: No file was found at given from_path.
|
||||
- 503: User over storage quota.
|
||||
"""
|
||||
params = {'root': self.session.root,
|
||||
'from_path': format_path(from_path),
|
||||
'to_path': format_path(to_path),
|
||||
}
|
||||
|
||||
url, params, headers = self.request("/fileops/copy", params)
|
||||
|
||||
return self.rest_client.POST(url, params, headers)
|
||||
|
||||
|
||||
def file_create_folder(self, path):
|
||||
"""Create a folder.
|
||||
|
||||
Args:
|
||||
- ``path``: The path of the new folder.
|
||||
|
||||
Returns:
|
||||
- A dictionary containing the metadata of the newly created folder.
|
||||
|
||||
For a detailed description of what this call returns, visit:
|
||||
https://www.dropbox.com/developers/reference/api#fileops-create-folder
|
||||
|
||||
Raises:
|
||||
- A dropbox.rest.ErrorResponse with an HTTP status of
|
||||
- 400: Bad request (may be due to many things; check e.error for details)
|
||||
- 403: A folder at that path already exists.
|
||||
"""
|
||||
params = {'root': self.session.root, 'path': format_path(path)}
|
||||
|
||||
url, params, headers = self.request("/fileops/create_folder", params)
|
||||
|
||||
return self.rest_client.POST(url, params, headers)
|
||||
|
||||
|
||||
def file_delete(self, path):
|
||||
"""Delete a file or folder.
|
||||
|
||||
Args:
|
||||
- ``path``: The path of the file or folder.
|
||||
|
||||
Returns:
|
||||
- A dictionary containing the metadata of the just deleted file.
|
||||
|
||||
For a detailed description of what this call returns, visit:
|
||||
https://www.dropbox.com/developers/reference/api#fileops-delete
|
||||
|
||||
Raises:
|
||||
- A dropbox.rest.ErrorResponse with an HTTP status of
|
||||
|
||||
- 400: Bad request (may be due to many things; check e.error for details)
|
||||
- 404: No file was found at the given path.
|
||||
"""
|
||||
params = {'root': self.session.root, 'path': format_path(path)}
|
||||
|
||||
url, params, headers = self.request("/fileops/delete", params)
|
||||
|
||||
return self.rest_client.POST(url, params, headers)
|
||||
|
||||
|
||||
def file_move(self, from_path, to_path):
|
||||
"""Move a file or folder to a new location.
|
||||
|
||||
Args:
|
||||
- ``from_path``: The path to the file or folder to be moved.
|
||||
- ``to_path``: The destination path of the file or folder to be moved.
|
||||
This parameter should include the destination filename (e.g.
|
||||
- ``from_path``: '/test.txt', to_path: '/dir/test.txt'). If there's
|
||||
already a file at the to_path, this file or folder will be renamed to
|
||||
be unique.
|
||||
|
||||
Returns:
|
||||
- A dictionary containing the metadata of the new copy of the file or folder.
|
||||
|
||||
For a detailed description of what this call returns, visit:
|
||||
https://www.dropbox.com/developers/reference/api#fileops-move
|
||||
|
||||
Raises:
|
||||
- A dropbox.rest.ErrorResponse with an HTTP status of
|
||||
|
||||
- 400: Bad request (may be due to many things; check e.error for details)
|
||||
- 404: No file was found at given from_path.
|
||||
- 503: User over storage quota.
|
||||
"""
|
||||
params = {'root': self.session.root, 'from_path': format_path(from_path), 'to_path': format_path(to_path)}
|
||||
|
||||
url, params, headers = self.request("/fileops/move", params)
|
||||
|
||||
return self.rest_client.POST(url, params, headers)
|
||||
|
||||
|
||||
def metadata(self, path, list=True, file_limit=25000, hash=None, rev=None, include_deleted=False):
|
||||
"""Retrieve metadata for a file or folder.
|
||||
|
||||
A typical use would be:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
folder_metadata = client.metadata('/')
|
||||
print "metadata:", folder_metadata
|
||||
|
||||
which would return the metadata of the root directory. This
|
||||
will look something like:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
{
|
||||
'bytes': 0,
|
||||
'contents': [
|
||||
{
|
||||
'bytes': 0,
|
||||
'icon': 'folder',
|
||||
'is_dir': True,
|
||||
'modified': 'Thu, 25 Aug 2011 00:03:15 +0000',
|
||||
'path': '/Sample Folder',
|
||||
'rev': '803beb471',
|
||||
'revision': 8,
|
||||
'root': 'dropbox',
|
||||
'size': '0 bytes',
|
||||
'thumb_exists': False
|
||||
},
|
||||
{
|
||||
'bytes': 77,
|
||||
'icon': 'page_white_text',
|
||||
'is_dir': False,
|
||||
'mime_type': 'text/plain',
|
||||
'modified': 'Wed, 20 Jul 2011 22:04:50 +0000',
|
||||
'path': '/magnum-opus.txt',
|
||||
'rev': '362e2029684fe',
|
||||
'revision': 221922,
|
||||
'root': 'dropbox',
|
||||
'size': '77 bytes',
|
||||
'thumb_exists': False
|
||||
}
|
||||
],
|
||||
'hash': 'efdac89c4da886a9cece1927e6c22977',
|
||||
'icon': 'folder',
|
||||
'is_dir': True,
|
||||
'path': '/',
|
||||
'root': 'app_folder',
|
||||
'size': '0 bytes',
|
||||
'thumb_exists': False
|
||||
}
|
||||
|
||||
In this example, the root directory contains two things: ``Sample Folder``,
|
||||
which is a folder, and ``/magnum-opus.txt``, which is a text file 77 bytes long
|
||||
|
||||
Args:
|
||||
- ``path``: The path to the file or folder.
|
||||
- ``list``: Whether to list all contained files (only applies when
|
||||
path refers to a folder).
|
||||
- ``file_limit``: The maximum number of file entries to return within
|
||||
a folder. If the number of files in the directory exceeds this
|
||||
limit, an exception is raised. The server will return at max
|
||||
25,000 files within a folder.
|
||||
- ``hash``: Every directory listing has a hash parameter attached that
|
||||
can then be passed back into this function later to save on\
|
||||
bandwidth. Rather than returning an unchanged folder's contents,\
|
||||
the server will instead return a 304.\
|
||||
- ``rev``: The revision of the file to retrieve the metadata for. [optional]
|
||||
This parameter only applies for files. If omitted, you'll receive
|
||||
the most recent revision metadata.
|
||||
|
||||
Returns:
|
||||
- A dictionary containing the metadata of the file or folder
|
||||
(and contained files if appropriate).
|
||||
|
||||
For a detailed description of what this call returns, visit:
|
||||
https://www.dropbox.com/developers/reference/api#metadata
|
||||
|
||||
Raises:
|
||||
- A dropbox.rest.ErrorResponse with an HTTP status of
|
||||
|
||||
- 304: Current directory hash matches hash parameters, so contents are unchanged.
|
||||
- 400: Bad request (may be due to many things; check e.error for details)
|
||||
- 404: No file was found at given path.
|
||||
- 406: Too many file entries to return.
|
||||
"""
|
||||
path = "/metadata/%s%s" % (self.session.root, format_path(path))
|
||||
|
||||
params = {'file_limit': file_limit,
|
||||
'list': 'true',
|
||||
'include_deleted': include_deleted,
|
||||
}
|
||||
|
||||
if not list:
|
||||
params['list'] = 'false'
|
||||
if hash is not None:
|
||||
params['hash'] = hash
|
||||
if rev:
|
||||
params['rev'] = rev
|
||||
|
||||
url, params, headers = self.request(path, params, method='GET')
|
||||
|
||||
return self.rest_client.GET(url, headers)
|
||||
|
||||
def thumbnail(self, from_path, size='large', format='JPEG'):
|
||||
"""Download a thumbnail for an image.
|
||||
|
||||
Unlike most other calls, thumbnail returns a raw HTTPResponse with the connection open.
|
||||
You should call .read() and perform any processing you need, then close the HTTPResponse.
|
||||
|
||||
Args:
|
||||
- ``from_path``: The path to the file to be thumbnailed.
|
||||
- ``size``: A string describing the desired thumbnail size.
|
||||
At this time, 'small', 'medium', and 'large' are
|
||||
officially supported sizes (32x32, 64x64, and 128x128
|
||||
respectively), though others may be available. Check
|
||||
https://www.dropbox.com/developers/reference/api#thumbnails for
|
||||
more details.
|
||||
|
||||
Returns:
|
||||
- An httplib.HTTPResponse that is the result of the request.
|
||||
|
||||
Raises:
|
||||
- A dropbox.rest.ErrorResponse with an HTTP status of
|
||||
- 400: Bad request (may be due to many things; check e.error for details)
|
||||
- 404: No file was found at the given from_path, or files of that type cannot be thumbnailed.
|
||||
- 415: Image is invalid and cannot be thumbnailed.
|
||||
"""
|
||||
assert format in ['JPEG', 'PNG'], "expected a thumbnail format of 'JPEG' or 'PNG', got %s" % format
|
||||
|
||||
path = "/thumbnails/%s%s" % (self.session.root, format_path(from_path))
|
||||
|
||||
url, params, headers = self.request(path, {'size': size, 'format': format}, method='GET', content_server=True)
|
||||
return self.rest_client.request("GET", url, headers=headers, raw_response=True)
|
||||
|
||||
def thumbnail_and_metadata(self, from_path, size='large', format='JPEG'):
|
||||
"""Download a thumbnail for an image alongwith its metadata.
|
||||
|
||||
Acts as a thin wrapper around thumbnail() (see thumbnail() comments for
|
||||
more details)
|
||||
|
||||
Args:
|
||||
- ``from_path``: The path to the file to be thumbnailed.
|
||||
- ``size``: A string describing the desired thumbnail size. See thumbnail()
|
||||
for details.
|
||||
|
||||
Returns:
|
||||
- An httplib.HTTPResponse that is the result of the request.
|
||||
- A dictionary containing the metadata of the file whose thumbnail
|
||||
was downloaded (see https://www.dropbox.com/developers/reference/api#metadata
|
||||
for details).
|
||||
|
||||
Raises:
|
||||
- A dropbox.rest.ErrorResponse with an HTTP status of
|
||||
|
||||
- 400: Bad request (may be due to many things; check e.error for details)
|
||||
- 404: No file was found at the given from_path, or files of that type cannot be thumbnailed.
|
||||
- 415: Image is invalid and cannot be thumbnailed.
|
||||
- 200: Request was okay but response was malformed in some way.
|
||||
"""
|
||||
thumbnail_res = self.thumbnail(from_path, size, format)
|
||||
metadata = DropboxClient.__parse_metadata_as_dict(thumbnail_res)
|
||||
|
||||
return thumbnail_res, metadata
|
||||
|
||||
def search(self, path, query, file_limit=1000, include_deleted=False):
|
||||
"""Search directory for filenames matching query.
|
||||
|
||||
Args:
|
||||
- ``path``: The directory to search within.
|
||||
- ``query``: The query to search on (minimum 3 characters).
|
||||
- ``file_limit``: The maximum number of file entries to return within a folder.
|
||||
The server will return at max 1,000 files.
|
||||
- ``include_deleted``: Whether to include deleted files in search results.
|
||||
|
||||
Returns:
|
||||
- A list of the metadata of all matching files (up to
|
||||
file_limit entries). For a detailed description of what
|
||||
this call returns, visit:
|
||||
https://www.dropbox.com/developers/reference/api#search
|
||||
|
||||
Raises:
|
||||
- A dropbox.rest.ErrorResponse with an HTTP status of
|
||||
- 400: Bad request (may be due to many things; check e.error for details)
|
||||
"""
|
||||
path = "/search/%s%s" % (self.session.root, format_path(path))
|
||||
|
||||
params = {
|
||||
'query': query,
|
||||
'file_limit': file_limit,
|
||||
'include_deleted': include_deleted,
|
||||
}
|
||||
|
||||
url, params, headers = self.request(path, params)
|
||||
|
||||
return self.rest_client.POST(url, params, headers)
|
||||
|
||||
def revisions(self, path, rev_limit=1000):
|
||||
"""Retrieve revisions of a file.
|
||||
|
||||
Args:
|
||||
- ``path``: The file to fetch revisions for. Note that revisions
|
||||
are not available for folders.
|
||||
- ``rev_limit``: The maximum number of file entries to return within
|
||||
a folder. The server will return at max 1,000 revisions.
|
||||
|
||||
Returns:
|
||||
- A list of the metadata of all matching files (up to rev_limit entries).
|
||||
|
||||
For a detailed description of what this call returns, visit:
|
||||
https://www.dropbox.com/developers/reference/api#revisions
|
||||
|
||||
Raises:
|
||||
- A dropbox.rest.ErrorResponse with an HTTP status of
|
||||
|
||||
- 400: Bad request (may be due to many things; check e.error for details)
|
||||
- 404: No revisions were found at the given path.
|
||||
"""
|
||||
path = "/revisions/%s%s" % (self.session.root, format_path(path))
|
||||
|
||||
params = {
|
||||
'rev_limit': rev_limit,
|
||||
}
|
||||
|
||||
url, params, headers = self.request(path, params, method='GET')
|
||||
|
||||
return self.rest_client.GET(url, headers)
|
||||
|
||||
def restore(self, path, rev):
|
||||
"""Restore a file to a previous revision.
|
||||
|
||||
Args:
|
||||
- ``path``: The file to restore. Note that folders can't be restored.
|
||||
- ``rev``: A previous rev value of the file to be restored to.
|
||||
|
||||
Returns:
|
||||
- A dictionary containing the metadata of the newly restored file.
|
||||
|
||||
For a detailed description of what this call returns, visit:
|
||||
https://www.dropbox.com/developers/reference/api#restore
|
||||
|
||||
Raises:
|
||||
- A dropbox.rest.ErrorResponse with an HTTP status of
|
||||
|
||||
- 400: Bad request (may be due to many things; check e.error for details)
|
||||
- 404: Unable to find the file at the given revision.
|
||||
"""
|
||||
path = "/restore/%s%s" % (self.session.root, format_path(path))
|
||||
|
||||
params = {
|
||||
'rev': rev,
|
||||
}
|
||||
|
||||
url, params, headers = self.request(path, params)
|
||||
|
||||
return self.rest_client.POST(url, params, headers)
|
||||
|
||||
def media(self, path):
|
||||
"""Get a temporary unauthenticated URL for a media file.
|
||||
|
||||
All of Dropbox's API methods require OAuth, which may cause problems in
|
||||
situations where an application expects to be able to hit a URL multiple times
|
||||
(for example, a media player seeking around a video file). This method
|
||||
creates a time-limited URL that can be accessed without any authentication,
|
||||
and returns that to you, along with an expiration time.
|
||||
|
||||
Args:
|
||||
- ``path``: The file to return a URL for. Folders are not supported.
|
||||
|
||||
Returns:
|
||||
- A dictionary that looks like the following example:
|
||||
|
||||
``{'url': 'https://dl.dropbox.com/0/view/wvxv1fw6on24qw7/file.mov', 'expires': 'Thu, 16 Sep 2011 01:01:25 +0000'}``
|
||||
|
||||
For a detailed description of what this call returns, visit:
|
||||
https://www.dropbox.com/developers/reference/api#media
|
||||
|
||||
Raises:
|
||||
- A dropbox.rest.ErrorResponse with an HTTP status of
|
||||
|
||||
- 400: Bad request (may be due to many things; check e.error for details)
|
||||
- 404: Unable to find the file at the given path.
|
||||
"""
|
||||
path = "/media/%s%s" % (self.session.root, format_path(path))
|
||||
|
||||
url, params, headers = self.request(path, method='GET')
|
||||
|
||||
return self.rest_client.GET(url, headers)
|
||||
|
||||
def share(self, path):
|
||||
"""Create a shareable link to a file or folder.
|
||||
|
||||
Shareable links created on Dropbox are time-limited, but don't require any
|
||||
authentication, so they can be given out freely. The time limit should allow
|
||||
at least a day of shareability, though users have the ability to disable
|
||||
a link from their account if they like.
|
||||
|
||||
Args:
|
||||
- ``path``: The file or folder to share.
|
||||
|
||||
Returns:
|
||||
- A dictionary that looks like the following example:
|
||||
|
||||
``{'url': 'http://www.dropbox.com/s/m/a2mbDa2', 'expires': 'Thu, 16 Sep 2011 01:01:25 +0000'}``
|
||||
|
||||
For a detailed description of what this call returns, visit:
|
||||
https://www.dropbox.com/developers/reference/api#shares
|
||||
|
||||
Raises:
|
||||
- A dropbox.rest.ErrorResponse with an HTTP status of
|
||||
|
||||
- 400: Bad request (may be due to many things; check e.error for details)
|
||||
- 404: Unable to find the file at the given path.
|
||||
"""
|
||||
path = "/shares/%s%s" % (self.session.root, format_path(path))
|
||||
|
||||
url, params, headers = self.request(path, method='GET')
|
||||
|
||||
return self.rest_client.GET(url, headers)
|
||||
4
resources/lib/dropbox/pkg_resources.py
Normal file
4
resources/lib/dropbox/pkg_resources.py
Normal file
@@ -0,0 +1,4 @@
|
||||
import resources.lib.utils as utils
|
||||
|
||||
def resource_filename(*args):
|
||||
return utils.addon_dir() + "/resources/lib/dropbox/trusted-certs.crt"
|
||||
317
resources/lib/dropbox/rest.py
Normal file
317
resources/lib/dropbox/rest.py
Normal file
@@ -0,0 +1,317 @@
|
||||
"""
|
||||
A simple JSON REST request abstraction layer that is used by the
|
||||
dropbox.client and dropbox.session modules. You shouldn't need to use this.
|
||||
"""
|
||||
|
||||
import httplib
|
||||
import os
|
||||
import pkg_resources
|
||||
import re
|
||||
import socket
|
||||
import ssl
|
||||
import sys
|
||||
import urllib
|
||||
import urlparse
|
||||
from . import util
|
||||
|
||||
try:
|
||||
import json
|
||||
except ImportError:
|
||||
import simplejson as json
|
||||
|
||||
SDK_VERSION = "1.5.1"
|
||||
|
||||
TRUSTED_CERT_FILE = pkg_resources.resource_filename(__name__, 'trusted-certs.crt')
|
||||
|
||||
class ProperHTTPSConnection(httplib.HTTPConnection):
|
||||
"""
|
||||
httplib.HTTPSConnection is broken because it doesn't do server certificate
|
||||
validation. This class does certificate validation by ensuring:
|
||||
1. The certificate sent down by the server has a signature chain to one of
|
||||
the certs in our 'trusted-certs.crt' (this is mostly handled by the 'ssl'
|
||||
module).
|
||||
2. The hostname in the certificate matches the hostname we're connecting to.
|
||||
"""
|
||||
|
||||
def __init__(self, host, port, trusted_cert_file=TRUSTED_CERT_FILE):
|
||||
httplib.HTTPConnection.__init__(self, host, port)
|
||||
self.ca_certs = trusted_cert_file
|
||||
self.cert_reqs = ssl.CERT_REQUIRED
|
||||
|
||||
def connect(self):
|
||||
sock = create_connection((self.host, self.port))
|
||||
self.sock = ssl.wrap_socket(sock, cert_reqs=self.cert_reqs, ca_certs=self.ca_certs)
|
||||
cert = self.sock.getpeercert()
|
||||
hostname = self.host.split(':', 0)[0]
|
||||
match_hostname(cert, hostname)
|
||||
|
||||
class CertificateError(ValueError):
|
||||
pass
|
||||
|
||||
def _dnsname_to_pat(dn):
|
||||
pats = []
|
||||
for frag in dn.split(r'.'):
|
||||
if frag == '*':
|
||||
# When '*' is a fragment by itself, it matches a non-empty dotless
|
||||
# fragment.
|
||||
pats.append('[^.]+')
|
||||
else:
|
||||
# Otherwise, '*' matches any dotless fragment.
|
||||
frag = re.escape(frag)
|
||||
pats.append(frag.replace(r'\*', '[^.]*'))
|
||||
return re.compile(r'\A' + r'\.'.join(pats) + r'\Z', re.IGNORECASE)
|
||||
|
||||
# This was ripped from Python 3.2 so it's not tested
|
||||
def match_hostname(cert, hostname):
|
||||
"""Verify that *cert* (in decoded format as returned by
|
||||
SSLSocket.getpeercert()) matches the *hostname*. RFC 2818 rules
|
||||
are mostly followed, but IP addresses are not accepted for *hostname*.
|
||||
|
||||
CertificateError is raised on failure. On success, the function
|
||||
returns nothing.
|
||||
"""
|
||||
if not cert:
|
||||
raise ValueError("empty or no certificate")
|
||||
dnsnames = []
|
||||
san = cert.get('subjectAltName', ())
|
||||
for key, value in san:
|
||||
if key == 'DNS':
|
||||
if _dnsname_to_pat(value).match(hostname):
|
||||
return
|
||||
dnsnames.append(value)
|
||||
if not san:
|
||||
# The subject is only checked when subjectAltName is empty
|
||||
for sub in cert.get('subject', ()):
|
||||
for key, value in sub:
|
||||
# XXX according to RFC 2818, the most specific Common Name
|
||||
# must be used.
|
||||
if key == 'commonName':
|
||||
if _dnsname_to_pat(value).match(hostname):
|
||||
return
|
||||
dnsnames.append(value)
|
||||
if len(dnsnames) > 1:
|
||||
raise CertificateError("hostname %r doesn't match either of %s" % (hostname, ', '.join(map(repr, dnsnames))))
|
||||
elif len(dnsnames) == 1:
|
||||
raise CertificateError("hostname %r doesn't match %r" % (hostname, dnsnames[0]))
|
||||
else:
|
||||
raise CertificateError("no appropriate commonName or subjectAltName fields were found")
|
||||
|
||||
def create_connection(address):
|
||||
host, port = address
|
||||
err = None
|
||||
for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM):
|
||||
af, socktype, proto, canonname, sa = res
|
||||
sock = None
|
||||
try:
|
||||
sock = socket.socket(af, socktype, proto)
|
||||
sock.connect(sa)
|
||||
return sock
|
||||
|
||||
except socket.error, _:
|
||||
err = _
|
||||
if sock is not None:
|
||||
sock.close()
|
||||
|
||||
if err is not None:
|
||||
raise err
|
||||
else:
|
||||
raise socket.error("getaddrinfo returns an empty list")
|
||||
|
||||
def json_loadb(data):
|
||||
if sys.version_info >= (3,):
|
||||
data = data.decode('utf8')
|
||||
return json.loads(data)
|
||||
|
||||
class RESTClientObject(object):
|
||||
def __init__(self, http_connect=None):
|
||||
self.http_connect = http_connect
|
||||
|
||||
def request(self, method, url, post_params=None, body=None, headers=None, raw_response=False):
|
||||
post_params = post_params or {}
|
||||
headers = headers or {}
|
||||
headers['User-Agent'] = 'OfficialDropboxPythonSDK/' + SDK_VERSION
|
||||
|
||||
if post_params:
|
||||
if body:
|
||||
raise ValueError("body parameter cannot be used with post_params parameter")
|
||||
body = urllib.urlencode(post_params)
|
||||
headers["Content-type"] = "application/x-www-form-urlencoded"
|
||||
|
||||
# maintain dynamic lookup of ProperHTTPConnection
|
||||
http_connect = self.http_connect
|
||||
if http_connect is None:
|
||||
http_connect = ProperHTTPSConnection
|
||||
|
||||
host = urlparse.urlparse(url).hostname
|
||||
conn = http_connect(host, 443)
|
||||
|
||||
try:
|
||||
# This code is here because httplib in pre-2.6 Pythons
|
||||
# doesn't handle file-like objects as HTTP bodies and
|
||||
# thus requires manual buffering
|
||||
if not hasattr(body, 'read'):
|
||||
conn.request(method, url, body, headers)
|
||||
else:
|
||||
# Content-Length should be set to prevent upload truncation errors.
|
||||
clen, raw_data = util.analyze_file_obj(body)
|
||||
headers["Content-Length"] = str(clen)
|
||||
conn.request(method, url, "", headers)
|
||||
if raw_data is not None:
|
||||
conn.send(raw_data)
|
||||
else:
|
||||
BLOCKSIZE = 4 * 1024 * 1024 # 4MB buffering just because
|
||||
bytes_read = 0
|
||||
while True:
|
||||
data = body.read(BLOCKSIZE)
|
||||
if not data:
|
||||
break
|
||||
# Catch Content-Length overflow before the HTTP server does
|
||||
bytes_read += len(data)
|
||||
if bytes_read > clen:
|
||||
raise util.AnalyzeFileObjBug(clen, bytes_read)
|
||||
conn.send(data)
|
||||
if bytes_read != clen:
|
||||
raise util.AnalyzeFileObjBug(clen, bytes_read)
|
||||
|
||||
except socket.error, e:
|
||||
raise RESTSocketError(host, e)
|
||||
except CertificateError, e:
|
||||
raise RESTSocketError(host, "SSL certificate error: " + e)
|
||||
|
||||
r = conn.getresponse()
|
||||
if r.status != 200:
|
||||
raise ErrorResponse(r)
|
||||
|
||||
if raw_response:
|
||||
return r
|
||||
else:
|
||||
try:
|
||||
resp = json_loadb(r.read())
|
||||
except ValueError:
|
||||
raise ErrorResponse(r)
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
return resp
|
||||
|
||||
def GET(self, url, headers=None, raw_response=False):
|
||||
assert type(raw_response) == bool
|
||||
return self.request("GET", url, headers=headers, raw_response=raw_response)
|
||||
|
||||
def POST(self, url, params=None, headers=None, raw_response=False):
|
||||
assert type(raw_response) == bool
|
||||
if params is None:
|
||||
params = {}
|
||||
|
||||
return self.request("POST", url,
|
||||
post_params=params, headers=headers, raw_response=raw_response)
|
||||
|
||||
def PUT(self, url, body, headers=None, raw_response=False):
|
||||
assert type(raw_response) == bool
|
||||
return self.request("PUT", url, body=body, headers=headers, raw_response=raw_response)
|
||||
|
||||
class RESTClient(object):
|
||||
IMPL = RESTClientObject()
|
||||
|
||||
"""
|
||||
An class with all static methods to perform JSON REST requests that is used internally
|
||||
by the Dropbox Client API. It provides just enough gear to make requests
|
||||
and get responses as JSON data (when applicable). All requests happen over SSL.
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
def request(cls, *n, **kw):
|
||||
"""Perform a REST request and parse the response.
|
||||
|
||||
Args:
|
||||
- ``method``: An HTTP method (e.g. 'GET' or 'POST').
|
||||
- ``url``: The URL to make a request to.
|
||||
- ``post_params``: A dictionary of parameters to put in the body of the request.
|
||||
This option may not be used if the body parameter is given.
|
||||
- ``body``: The body of the request. Typically, this value will be a string.
|
||||
It may also be a file-like object in Python 2.6 and above. The body
|
||||
parameter may not be used with the post_params parameter.
|
||||
- ``headers``: A dictionary of headers to send with the request.
|
||||
- ``raw_response``: Whether to return the raw httplib.HTTPReponse object. [default False]
|
||||
It's best enabled for requests that return large amounts of data that you
|
||||
would want to .read() incrementally rather than loading into memory. Also
|
||||
use this for calls where you need to read metadata like status or headers,
|
||||
or if the body is not JSON.
|
||||
|
||||
Returns:
|
||||
- The JSON-decoded data from the server, unless raw_response is
|
||||
specified, in which case an httplib.HTTPReponse object is returned instead.
|
||||
|
||||
Raises:
|
||||
- dropbox.rest.ErrorResponse: The returned HTTP status is not 200, or the body was
|
||||
not parsed from JSON successfully.
|
||||
- dropbox.rest.RESTSocketError: A socket.error was raised while contacting Dropbox.
|
||||
"""
|
||||
return cls.IMPL.request(*n, **kw)
|
||||
|
||||
@classmethod
|
||||
def GET(cls, *n, **kw):
|
||||
"""Perform a GET request using RESTClient.request"""
|
||||
return cls.IMPL.GET(*n, **kw)
|
||||
|
||||
@classmethod
|
||||
def POST(cls, *n, **kw):
|
||||
"""Perform a POST request using RESTClient.request"""
|
||||
return cls.IMPL.POST(*n, **kw)
|
||||
|
||||
@classmethod
|
||||
def PUT(cls, *n, **kw):
|
||||
"""Perform a PUT request using RESTClient.request"""
|
||||
return cls.IMPL.PUT(*n, **kw)
|
||||
|
||||
class RESTSocketError(socket.error):
|
||||
"""
|
||||
A light wrapper for socket.errors raised by dropbox.rest.RESTClient.request
|
||||
that adds more information to the socket.error.
|
||||
"""
|
||||
|
||||
def __init__(self, host, e):
|
||||
msg = "Error connecting to \"%s\": %s" % (host, str(e))
|
||||
socket.error.__init__(self, msg)
|
||||
|
||||
class ErrorResponse(Exception):
|
||||
"""
|
||||
Raised by dropbox.rest.RESTClient.request for requests that:
|
||||
- Return a non-200 HTTP response, or
|
||||
- Have a non-JSON response body, or
|
||||
- Have a malformed/missing header in the response.
|
||||
|
||||
Most errors that Dropbox returns will have a error field that is unpacked and
|
||||
placed on the ErrorResponse exception. In some situations, a user_error field
|
||||
will also come back. Messages under user_error are worth showing to an end-user
|
||||
of your app, while other errors are likely only useful for you as the developer.
|
||||
"""
|
||||
|
||||
def __init__(self, http_resp):
|
||||
self.status = http_resp.status
|
||||
self.reason = http_resp.reason
|
||||
self.body = http_resp.read()
|
||||
self.headers = http_resp.getheaders()
|
||||
|
||||
try:
|
||||
self.body = json_loadb(self.body)
|
||||
self.error_msg = self.body.get('error')
|
||||
self.user_error_msg = self.body.get('user_error')
|
||||
except ValueError:
|
||||
self.error_msg = None
|
||||
self.user_error_msg = None
|
||||
|
||||
def __str__(self):
|
||||
if self.user_error_msg and self.user_error_msg != self.error_msg:
|
||||
# one is translated and the other is English
|
||||
msg = "%s (%s)" % (self.user_error_msg, self.error_msg)
|
||||
elif self.error_msg:
|
||||
msg = self.error_msg
|
||||
elif not self.body:
|
||||
msg = self.reason
|
||||
else:
|
||||
msg = "Error parsing response body or headers: " +\
|
||||
"Body - %s Headers - %s" % (self.body, self.headers)
|
||||
|
||||
return "[%d] %s" % (self.status, repr(msg))
|
||||
|
||||
286
resources/lib/dropbox/session.py
Normal file
286
resources/lib/dropbox/session.py
Normal file
@@ -0,0 +1,286 @@
|
||||
"""
|
||||
dropbox.session.DropboxSession is responsible for holding OAuth authentication info
|
||||
(app key/secret, request key/secret, access key/secret) as well as configuration information for your app
|
||||
('app_folder' or 'dropbox' access type, optional locale preference). It knows how to
|
||||
use all of this information to craft properly constructed requests to Dropbox.
|
||||
|
||||
A DropboxSession object must be passed to a dropbox.client.DropboxClient object upon
|
||||
initialization.
|
||||
"""
|
||||
from __future__ import absolute_import
|
||||
|
||||
import random
|
||||
import sys
|
||||
import time
|
||||
import urllib
|
||||
|
||||
try:
|
||||
from urlparse import parse_qs
|
||||
except ImportError:
|
||||
# fall back for Python 2.5
|
||||
from cgi import parse_qs
|
||||
|
||||
from . import rest
|
||||
|
||||
class OAuthToken(object):
|
||||
__slots__ = ('key', 'secret')
|
||||
def __init__(self, key, secret):
|
||||
self.key = key
|
||||
self.secret = secret
|
||||
|
||||
class DropboxSession(object):
|
||||
API_VERSION = 1
|
||||
|
||||
API_HOST = "api.dropbox.com"
|
||||
WEB_HOST = "www.dropbox.com"
|
||||
API_CONTENT_HOST = "api-content.dropbox.com"
|
||||
|
||||
def __init__(self, consumer_key, consumer_secret, access_type, locale=None, rest_client=rest.RESTClient):
|
||||
"""Initialize a DropboxSession object.
|
||||
|
||||
Your consumer key and secret are available
|
||||
at https://www.dropbox.com/developers/apps
|
||||
|
||||
Args:
|
||||
- ``access_type``: Either 'dropbox' or 'app_folder'. All path-based operations
|
||||
will occur relative to either the user's Dropbox root directory
|
||||
or your application's app folder.
|
||||
- ``locale``: A locale string ('en', 'pt_PT', etc.) [optional]
|
||||
The locale setting will be used to translate any user-facing error
|
||||
messages that the server generates. At this time Dropbox supports
|
||||
'en', 'es', 'fr', 'de', and 'ja', though we will be supporting more
|
||||
languages in the future. If you send a language the server doesn't
|
||||
support, messages will remain in English. Look for these translated
|
||||
messages in rest.ErrorResponse exceptions as e.user_error_msg.
|
||||
"""
|
||||
assert access_type in ['dropbox', 'app_folder'], "expected access_type of 'dropbox' or 'app_folder'"
|
||||
self.consumer_creds = OAuthToken(consumer_key, consumer_secret)
|
||||
self.token = None
|
||||
self.request_token = None
|
||||
self.root = 'sandbox' if access_type == 'app_folder' else 'dropbox'
|
||||
self.locale = locale
|
||||
self.rest_client = rest_client
|
||||
|
||||
def is_linked(self):
|
||||
"""Return whether the DropboxSession has an access token attached."""
|
||||
return bool(self.token)
|
||||
|
||||
def unlink(self):
|
||||
"""Remove any attached access token from the DropboxSession."""
|
||||
self.token = None
|
||||
|
||||
def set_token(self, access_token, access_token_secret):
|
||||
"""Attach an access token to the DropboxSession.
|
||||
|
||||
Note that the access 'token' is made up of both a token string
|
||||
and a secret string.
|
||||
"""
|
||||
self.token = OAuthToken(access_token, access_token_secret)
|
||||
|
||||
def set_request_token(self, request_token, request_token_secret):
|
||||
"""Attach an request token to the DropboxSession.
|
||||
|
||||
Note that the request 'token' is made up of both a token string
|
||||
and a secret string.
|
||||
"""
|
||||
self.request_token = OAuthToken(request_token, request_token_secret)
|
||||
|
||||
def build_path(self, target, params=None):
|
||||
"""Build the path component for an API URL.
|
||||
|
||||
This method urlencodes the parameters, adds them
|
||||
to the end of the target url, and puts a marker for the API
|
||||
version in front.
|
||||
|
||||
Args:
|
||||
- ``target``: A target url (e.g. '/files') to build upon.
|
||||
- ``params``: A dictionary of parameters (name to value). [optional]
|
||||
|
||||
Returns:
|
||||
- The path and parameters components of an API URL.
|
||||
"""
|
||||
if sys.version_info < (3,) and type(target) == unicode:
|
||||
target = target.encode("utf8")
|
||||
|
||||
target_path = urllib.quote(target)
|
||||
|
||||
params = params or {}
|
||||
params = params.copy()
|
||||
|
||||
if self.locale:
|
||||
params['locale'] = self.locale
|
||||
|
||||
if params:
|
||||
return "/%d%s?%s" % (self.API_VERSION, target_path, urllib.urlencode(params))
|
||||
else:
|
||||
return "/%d%s" % (self.API_VERSION, target_path)
|
||||
|
||||
def build_url(self, host, target, params=None):
|
||||
"""Build an API URL.
|
||||
|
||||
This method adds scheme and hostname to the path
|
||||
returned from build_path.
|
||||
|
||||
Args:
|
||||
- ``target``: A target url (e.g. '/files') to build upon.
|
||||
- ``params``: A dictionary of parameters (name to value). [optional]
|
||||
|
||||
Returns:
|
||||
- The full API URL.
|
||||
"""
|
||||
return "https://%s%s" % (host, self.build_path(target, params))
|
||||
|
||||
def build_authorize_url(self, request_token, oauth_callback=None):
|
||||
"""Build a request token authorization URL.
|
||||
|
||||
After obtaining a request token, you'll need to send the user to
|
||||
the URL returned from this function so that they can confirm that
|
||||
they want to connect their account to your app.
|
||||
|
||||
Args:
|
||||
- ``request_token``: A request token from obtain_request_token.
|
||||
- ``oauth_callback``: A url to redirect back to with the authorized
|
||||
request token.
|
||||
|
||||
Returns:
|
||||
- An authorization for the given request token.
|
||||
"""
|
||||
params = {'oauth_token': request_token.key,
|
||||
}
|
||||
|
||||
if oauth_callback:
|
||||
params['oauth_callback'] = oauth_callback
|
||||
|
||||
return self.build_url(self.WEB_HOST, '/oauth/authorize', params)
|
||||
|
||||
def obtain_request_token(self):
|
||||
"""Obtain a request token from the Dropbox API.
|
||||
|
||||
This is your first step in the OAuth process. You call this to get a
|
||||
request_token from the Dropbox server that you can then use with
|
||||
DropboxSession.build_authorize_url() to get the user to authorize it.
|
||||
After it's authorized you use this token with
|
||||
DropboxSession.obtain_access_token() to get an access token.
|
||||
|
||||
NOTE: You should only need to do this once for each user, and then you
|
||||
can store the access token for that user for later operations.
|
||||
|
||||
Returns:
|
||||
- An dropbox.session.OAuthToken representing the request token Dropbox assigned
|
||||
to this app. Also attaches the request token as self.request_token.
|
||||
"""
|
||||
self.token = None # clear any token currently on the request
|
||||
url = self.build_url(self.API_HOST, '/oauth/request_token')
|
||||
headers, params = self.build_access_headers('POST', url)
|
||||
|
||||
response = self.rest_client.POST(url, headers=headers, params=params, raw_response=True)
|
||||
self.request_token = self._parse_token(response.read())
|
||||
return self.request_token
|
||||
|
||||
def obtain_access_token(self, request_token=None):
|
||||
"""Obtain an access token for a user.
|
||||
|
||||
After you get a request token, and then send the user to the authorize
|
||||
URL, you can use the authorized request token with this method to get the
|
||||
access token to use for future operations. The access token is stored on
|
||||
the session object.
|
||||
|
||||
Args:
|
||||
- ``request_token``: A request token from obtain_request_token. [optional]
|
||||
The request_token should have been authorized via the
|
||||
authorization url from build_authorize_url. If you don't pass
|
||||
a request_token, the fallback is self.request_token, which
|
||||
will exist if you previously called obtain_request_token on this
|
||||
DropboxSession instance.
|
||||
|
||||
Returns:
|
||||
- An tuple of (key, secret) representing the access token Dropbox assigned
|
||||
to this app and user. Also attaches the access token as self.token.
|
||||
"""
|
||||
request_token = request_token or self.request_token
|
||||
assert request_token, "No request_token available on the session. Please pass one."
|
||||
url = self.build_url(self.API_HOST, '/oauth/access_token')
|
||||
headers, params = self.build_access_headers('POST', url, request_token=request_token)
|
||||
|
||||
response = self.rest_client.POST(url, headers=headers, params=params, raw_response=True)
|
||||
self.token = self._parse_token(response.read())
|
||||
return self.token
|
||||
|
||||
def build_access_headers(self, method, resource_url, params=None, request_token=None):
|
||||
"""Build OAuth access headers for a future request.
|
||||
|
||||
Args:
|
||||
- ``method``: The HTTP method being used (e.g. 'GET' or 'POST').
|
||||
- ``resource_url``: The full url the request will be made to.
|
||||
- ``params``: A dictionary of parameters to add to what's already on the url.
|
||||
Typically, this would consist of POST parameters.
|
||||
|
||||
Returns:
|
||||
- A tuple of (header_dict, params) where header_dict is a dictionary
|
||||
of header names and values appropriate for passing into dropbox.rest.RESTClient
|
||||
and params is a dictionary like the one that was passed in, but augmented with
|
||||
oauth-related parameters as appropriate.
|
||||
"""
|
||||
if params is None:
|
||||
params = {}
|
||||
else:
|
||||
params = params.copy()
|
||||
|
||||
oauth_params = {
|
||||
'oauth_consumer_key' : self.consumer_creds.key,
|
||||
'oauth_timestamp' : self._generate_oauth_timestamp(),
|
||||
'oauth_nonce' : self._generate_oauth_nonce(),
|
||||
'oauth_version' : self._oauth_version(),
|
||||
}
|
||||
|
||||
token = request_token if request_token is not None else self.token
|
||||
|
||||
if token:
|
||||
oauth_params['oauth_token'] = token.key
|
||||
|
||||
self._oauth_sign_request(oauth_params, self.consumer_creds, token)
|
||||
|
||||
params.update(oauth_params)
|
||||
|
||||
return {}, params
|
||||
|
||||
@classmethod
|
||||
def _oauth_sign_request(cls, params, consumer_pair, token_pair):
|
||||
params.update({'oauth_signature_method' : 'PLAINTEXT',
|
||||
'oauth_signature' : ('%s&%s' % (consumer_pair.secret, token_pair.secret)
|
||||
if token_pair is not None else
|
||||
'%s&' % (consumer_pair.secret,))})
|
||||
|
||||
@classmethod
|
||||
def _generate_oauth_timestamp(cls):
|
||||
return int(time.time())
|
||||
|
||||
@classmethod
|
||||
def _generate_oauth_nonce(cls, length=8):
|
||||
return ''.join([str(random.randint(0, 9)) for i in range(length)])
|
||||
|
||||
@classmethod
|
||||
def _oauth_version(cls):
|
||||
return '1.0'
|
||||
|
||||
@classmethod
|
||||
def _parse_token(cls, s):
|
||||
if not s:
|
||||
raise ValueError("Invalid parameter string.")
|
||||
|
||||
params = parse_qs(s, keep_blank_values=False)
|
||||
if not params:
|
||||
raise ValueError("Invalid parameter string: %r" % s)
|
||||
|
||||
try:
|
||||
key = params['oauth_token'][0]
|
||||
except Exception:
|
||||
raise ValueError("'oauth_token' not found in OAuth request.")
|
||||
|
||||
try:
|
||||
secret = params['oauth_token_secret'][0]
|
||||
except Exception:
|
||||
raise ValueError("'oauth_token_secret' not found in "
|
||||
"OAuth request.")
|
||||
|
||||
return OAuthToken(key, secret)
|
||||
11
resources/lib/dropbox/six.py
Normal file
11
resources/lib/dropbox/six.py
Normal file
@@ -0,0 +1,11 @@
|
||||
import sys
|
||||
|
||||
def b(str_):
|
||||
if sys.version_info >= (3,):
|
||||
str_ = str_.encode('latin1')
|
||||
return str_
|
||||
|
||||
def u(str_):
|
||||
if sys.version_info < (3,):
|
||||
str_ = str_.decode('latin1')
|
||||
return str_
|
||||
341
resources/lib/dropbox/trusted-certs.crt
Normal file
341
resources/lib/dropbox/trusted-certs.crt
Normal file
@@ -0,0 +1,341 @@
|
||||
# Subject: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=Certification Services Division, CN=Thawte Server CA/emailAddress=server-certs@thawte.com <server-certs@thawte.com>
|
||||
# Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=Certification Services Division, CN=Thawte Server CA/emailAddress= server-certs@thawte.com
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx
|
||||
FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD
|
||||
VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv
|
||||
biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm
|
||||
MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx
|
||||
MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
||||
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3
|
||||
dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl
|
||||
cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3
|
||||
DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD
|
||||
gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91
|
||||
yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX
|
||||
L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj
|
||||
EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG
|
||||
7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e
|
||||
QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ
|
||||
qdq5snUb9kLy78fyGPmJvKP/iiMucEc=
|
||||
-----END CERTIFICATE-----
|
||||
# Subject: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=Certification Services Division, CN=Thawte Premium Server CA/emailAddress=premium-server@thawte.com <premium-server@thawte.com>
|
||||
# Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=Certification Services Division, CN=Thawte Premium Server CA/emailAddress=premium-server@thawte.com <premium-server@thawte.com>
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx
|
||||
FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD
|
||||
VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv
|
||||
biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy
|
||||
dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t
|
||||
MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB
|
||||
MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG
|
||||
A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp
|
||||
b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl
|
||||
cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv
|
||||
bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE
|
||||
VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ
|
||||
ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR
|
||||
uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG
|
||||
9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI
|
||||
hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM
|
||||
pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg==
|
||||
-----END CERTIFICATE-----
|
||||
# Subject: C=US, O=VeriSign, Inc., OU=Class 1 Public Primary Certification Authority
|
||||
# Issuer: C=US, O=VeriSign, Inc., OU=Class 1 Public Primary Certification Authority
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICPDCCAaUCEDJQM89Q0VbzXIGtZVxPyCUwDQYJKoZIhvcNAQECBQAwXzELMAkG
|
||||
A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz
|
||||
cyAxIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2
|
||||
MDEyOTAwMDAwMFoXDTIwMDEwNzIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV
|
||||
BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAxIFB1YmxpYyBQcmlt
|
||||
YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN
|
||||
ADCBiQKBgQDlGb9to1ZhLZlIcfZn3rmN67eehoAKkQ76OCWvRoiC5XOooJskXQ0f
|
||||
zGVuDLDQVoQYh5oGmxChc9+0WDlrbsH2FdWoqD+qEgaNMax/sDTXjzRniAnNFBHi
|
||||
TkVWaR94AoDa3EeRKbs2yWNcxeDXLYd7obcysHswuiovMaruo2fa2wIDAQABMA0G
|
||||
CSqGSIb3DQEBAgUAA4GBAEtEZmBoZOSYG/OwcuaViXzde7OVwB0u2NgZ0C00PcZQ
|
||||
mhCGjKo/O6gE/DdSlcPZydvN8oYGxLEb8IKIMEKOF1AcZHq4PplJdJf8rAJD+5YM
|
||||
VgQlDHx8h50kp9jwMim1pN9dokzFFjKoQvZFprY2ueC/ZTaTwtLXa9zeWdaiNfhF
|
||||
-----END CERTIFICATE-----
|
||||
# Subject: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority
|
||||
# Issuer: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG
|
||||
A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz
|
||||
cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2
|
||||
MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV
|
||||
BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt
|
||||
YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN
|
||||
ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE
|
||||
BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is
|
||||
I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G
|
||||
CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do
|
||||
lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc
|
||||
AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k
|
||||
-----END CERTIFICATE-----
|
||||
# Subject: C=US, O=RSA Data Security, Inc., OU=Secure Server Certification Authority
|
||||
# Issuer: C=US, O=RSA Data Security, Inc., OU=Secure Server Certification Authority
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICNDCCAaECEAKtZn5ORf5eV288mBle3cAwDQYJKoZIhvcNAQECBQAwXzELMAkG
|
||||
A1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYD
|
||||
VQQLEyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk0
|
||||
MTEwOTAwMDAwMFoXDTEwMDEwNzIzNTk1OVowXzELMAkGA1UEBhMCVVMxIDAeBgNV
|
||||
BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2Vy
|
||||
dmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGbMA0GCSqGSIb3DQEBAQUAA4GJ
|
||||
ADCBhQJ+AJLOesGugz5aqomDV6wlAXYMra6OLDfO6zV4ZFQD5YRAUcm/jwjiioII
|
||||
0haGN1XpsSECrXZogZoFokvJSyVmIlZsiAeP94FZbYQHZXATcXY+m3dM41CJVphI
|
||||
uR2nKRoTLkoRWZweFdVJVCxzOmmCsZc5nG1wZ0jl3S3WyB57AgMBAAEwDQYJKoZI
|
||||
hvcNAQECBQADfgBl3X7hsuyw4jrg7HFGmhkRuNPHoLQDQCYCPgmc4RKz0Vr2N6W3
|
||||
YQO2WxZpO8ZECAyIUwxrl0nHPjXcbLm7qt9cuzovk2C2qUtN8iD3zV9/ZHuO3ABc
|
||||
1/p3yjkWWW8O6tO1g39NTUJWdrTJXwT4OPjr0l91X817/OWOgHz8UA==
|
||||
-----END CERTIFICATE-----
|
||||
# Subject: C=US, O=Equifax Secure Inc., CN=Equifax Secure Global eBusiness CA-1
|
||||
# Issuer: C=US, O=Equifax Secure Inc., CN=Equifax Secure Global eBusiness CA-1
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc
|
||||
MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT
|
||||
ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw
|
||||
MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj
|
||||
dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l
|
||||
c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC
|
||||
UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc
|
||||
58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/
|
||||
o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH
|
||||
MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr
|
||||
aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA
|
||||
A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA
|
||||
Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv
|
||||
8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
|
||||
-----END CERTIFICATE-----
|
||||
# Subject: C=US, ST=UT, L=Salt Lake City, O=The USERTRUST Network, OU=http://www.usertrust.com, CN=UTN-USERFirst-Hardware
|
||||
# Issuer: C=US, ST=UT, L=Salt Lake City, O=The USERTRUST Network, OU=http://www.usertrust.com, CN=UTN-USERFirst-Hardware
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB
|
||||
lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug
|
||||
Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho
|
||||
dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt
|
||||
SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG
|
||||
A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe
|
||||
MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v
|
||||
d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh
|
||||
cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn
|
||||
0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ
|
||||
M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a
|
||||
MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd
|
||||
oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI
|
||||
DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy
|
||||
oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD
|
||||
VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0
|
||||
dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy
|
||||
bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF
|
||||
BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
|
||||
//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli
|
||||
CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE
|
||||
CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t
|
||||
3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS
|
||||
KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA==
|
||||
-----END CERTIFICATE-----
|
||||
# Subject: C=US, O=Network Solutions L.L.C., CN=Network Solutions Certificate Authority
|
||||
# Issuer: C=US, O=Network Solutions L.L.C., CN=Network Solutions Certificate Authority
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBi
|
||||
MQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
|
||||
MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3Jp
|
||||
dHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMxMjM1OTU5WjBiMQswCQYDVQQGEwJV
|
||||
UzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydO
|
||||
ZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG
|
||||
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwz
|
||||
c7MEL7xxjOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPP
|
||||
OCwGJgl6cvf6UDL4wpPTaaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rl
|
||||
mGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXTcrA/vGp97Eh/jcOrqnErU2lBUzS1sLnF
|
||||
BgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc/Qzpf14Dl847ABSHJ3A4
|
||||
qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMBAAGjgZcw
|
||||
gZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIB
|
||||
BjAPBgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwu
|
||||
bmV0c29sc3NsLmNvbS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3Jp
|
||||
dHkuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc8
|
||||
6fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q4LqILPxFzBiwmZVRDuwduIj/
|
||||
h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/GGUsyfJj4akH
|
||||
/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
|
||||
wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHN
|
||||
pGxlaKFJdlxDydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
|
||||
-----END CERTIFICATE-----
|
||||
# Subject: C=US, O=The Go Daddy Group, Inc., OU=Go Daddy Class 2 Certification Authority
|
||||
# Issuer: C=US, O=The Go Daddy Group, Inc., OU=Go Daddy Class 2 Certification Authority
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh
|
||||
MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE
|
||||
YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3
|
||||
MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo
|
||||
ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg
|
||||
MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN
|
||||
ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA
|
||||
PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w
|
||||
wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi
|
||||
EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY
|
||||
avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+
|
||||
YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE
|
||||
sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h
|
||||
/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5
|
||||
IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj
|
||||
YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD
|
||||
ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy
|
||||
OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P
|
||||
TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
|
||||
HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER
|
||||
dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf
|
||||
ReYNnyicsbkqWletNw+vHX/bvZ8=
|
||||
-----END CERTIFICATE-----
|
||||
# Subject: C=US, ST=Arizona, L=Scottsdale, O=GoDaddy.com, Inc., OU=http://certificates.godaddy.com/repository<http://certificates.godaddy.com/repository>, CN=Go Daddy Secure Certification Authority/serialNumber=07969287
|
||||
# Issuer: C=US, O=The Go Daddy Group, Inc., OU=Go Daddy Class 2 Certification Authority
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIE3jCCA8agAwIBAgICAwEwDQYJKoZIhvcNAQEFBQAwYzELMAkGA1UEBhMCVVMx
|
||||
ITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g
|
||||
RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMTYw
|
||||
MTU0MzdaFw0yNjExMTYwMTU0MzdaMIHKMQswCQYDVQQGEwJVUzEQMA4GA1UECBMH
|
||||
QXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTEaMBgGA1UEChMRR29EYWRkeS5j
|
||||
b20sIEluYy4xMzAxBgNVBAsTKmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5j
|
||||
b20vcmVwb3NpdG9yeTEwMC4GA1UEAxMnR28gRGFkZHkgU2VjdXJlIENlcnRpZmlj
|
||||
YXRpb24gQXV0aG9yaXR5MREwDwYDVQQFEwgwNzk2OTI4NzCCASIwDQYJKoZIhvcN
|
||||
AQEBBQADggEPADCCAQoCggEBAMQt1RWMnCZM7DI161+4WQFapmGBWTtwY6vj3D3H
|
||||
KrjJM9N55DrtPDAjhI6zMBS2sofDPZVUBJ7fmd0LJR4h3mUpfjWoqVTr9vcyOdQm
|
||||
VZWt7/v+WIbXnvQAjYwqDL1CBM6nPwT27oDyqu9SoWlm2r4arV3aLGbqGmu75RpR
|
||||
SgAvSMeYddi5Kcju+GZtCpyz8/x4fKL4o/K1w/O5epHBp+YlLpyo7RJlbmr2EkRT
|
||||
cDCVw5wrWCs9CHRK8r5RsL+H0EwnWGu1NcWdrxcx+AuP7q2BNgWJCJjPOq8lh8BJ
|
||||
6qf9Z/dFjpfMFDniNoW1fho3/Rb2cRGadDAW/hOUoz+EDU8CAwEAAaOCATIwggEu
|
||||
MB0GA1UdDgQWBBT9rGEyk2xF1uLuhV+auud2mWjM5zAfBgNVHSMEGDAWgBTSxLDS
|
||||
kdRMEXGzYcs9of7dqGrU4zASBgNVHRMBAf8ECDAGAQH/AgEAMDMGCCsGAQUFBwEB
|
||||
BCcwJTAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZ29kYWRkeS5jb20wRgYDVR0f
|
||||
BD8wPTA7oDmgN4Y1aHR0cDovL2NlcnRpZmljYXRlcy5nb2RhZGR5LmNvbS9yZXBv
|
||||
c2l0b3J5L2dkcm9vdC5jcmwwSwYDVR0gBEQwQjBABgRVHSAAMDgwNgYIKwYBBQUH
|
||||
AgEWKmh0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5jb20vcmVwb3NpdG9yeTAO
|
||||
BgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBANKGwOy9+aG2Z+5mC6IG
|
||||
OgRQjhVyrEp0lVPLN8tESe8HkGsz2ZbwlFalEzAFPIUyIXvJxwqoJKSQ3kbTJSMU
|
||||
A2fCENZvD117esyfxVgqwcSeIaha86ykRvOe5GPLL5CkKSkB2XIsKd83ASe8T+5o
|
||||
0yGPwLPk9Qnt0hCqU7S+8MxZC9Y7lhyVJEnfzuz9p0iRFEUOOjZv2kWzRaJBydTX
|
||||
RE4+uXR21aITVSzGh6O1mawGhId/dQb8vxRMDsxuxN89txJx9OjxUUAiKEngHUuH
|
||||
qDTMBqLdElrRhjZkAzVvb3du6/KFUJheqwNTrZEjYx8WnM25sgVjOuH0aBsXBTWV
|
||||
U+4=
|
||||
-----END CERTIFICATE-----
|
||||
# Subject: C=US, ST=Arizona, L=Scottsdale, O=GoDaddy.com, Inc., CN=Go Daddy Root Certificate Authority - G2
|
||||
# Issuer: C=US, ST=Arizona, L=Scottsdale, O=GoDaddy.com, Inc., CN=Go Daddy Root Certificate Authority - G2
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx
|
||||
EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT
|
||||
EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp
|
||||
ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz
|
||||
NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH
|
||||
EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE
|
||||
AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw
|
||||
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD
|
||||
E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH
|
||||
/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy
|
||||
DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh
|
||||
GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR
|
||||
tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA
|
||||
AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE
|
||||
FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX
|
||||
WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu
|
||||
9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr
|
||||
gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo
|
||||
2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
|
||||
LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI
|
||||
4uJEvlz36hz1
|
||||
-----END CERTIFICATE-----
|
||||
# Subject: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA
|
||||
# Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT
|
||||
MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i
|
||||
YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG
|
||||
EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg
|
||||
R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9
|
||||
9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq
|
||||
fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv
|
||||
iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU
|
||||
1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+
|
||||
bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW
|
||||
MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA
|
||||
ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l
|
||||
uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn
|
||||
Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS
|
||||
tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF
|
||||
PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un
|
||||
hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV
|
||||
5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw==
|
||||
-----END CERTIFICATE-----
|
||||
# Subject: C=US, O=GeoTrust Inc., CN=GeoTrust Primary Certification Authority
|
||||
# Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Primary Certification Authority
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBY
|
||||
MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMo
|
||||
R2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEx
|
||||
MjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
|
||||
Ew1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQcmltYXJ5IENlcnRp
|
||||
ZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
||||
AQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9
|
||||
AWbK7hWNb6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjA
|
||||
ZIVcFU2Ix7e64HXprQU9nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE0
|
||||
7e9GceBrAqg1cmuXm2bgyxx5X9gaBGgeRwLmnWDiNpcB3841kt++Z8dtd1k7j53W
|
||||
kBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGttm/81w7a4DSwDRp35+MI
|
||||
mO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G
|
||||
A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJ
|
||||
KoZIhvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ1
|
||||
6CePbJC/kRYkRj5KTs4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl
|
||||
4b7UVXGYNTq+k+qurUKykG/g/CFNNWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6K
|
||||
oKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHaFloxt/m0cYASSJlyc1pZU8Fj
|
||||
UjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG1riR/aYNKxoU
|
||||
AT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
|
||||
-----END CERTIFICATE-----
|
||||
# Subject: C=US, O=The Go Daddy Group, Inc., OU=Go Daddy Class 2 Certification Authority
|
||||
# Issuer: L=ValiCert Validation Network, O=ValiCert, Inc., OU=ValiCert Class 2 Policy Validation Authority, CN=http://www.valicert.com//emailAddress=info@valicert.com<http://www.valicert.com//emailAddress=info@valicert.com>
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIE+zCCBGSgAwIBAgICAQ0wDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1Zh
|
||||
bGlDZXJ0IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIElu
|
||||
Yy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24g
|
||||
QXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAe
|
||||
BgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTA0MDYyOTE3MDYyMFoX
|
||||
DTI0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBE
|
||||
YWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3MgMiBDZXJ0
|
||||
aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgC
|
||||
ggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv
|
||||
2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+q
|
||||
N1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiO
|
||||
r18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lN
|
||||
f4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+YihfukEH
|
||||
U1jPEX44dMX4/7VpkI+EdOqXG68CAQOjggHhMIIB3TAdBgNVHQ4EFgQU0sSw0pHU
|
||||
TBFxs2HLPaH+3ahq1OMwgdIGA1UdIwSByjCBx6GBwaSBvjCBuzEkMCIGA1UEBxMb
|
||||
VmFsaUNlcnQgVmFsaWRhdGlvbiBOZXR3b3JrMRcwFQYDVQQKEw5WYWxpQ2VydCwg
|
||||
SW5jLjE1MDMGA1UECxMsVmFsaUNlcnQgQ2xhc3MgMiBQb2xpY3kgVmFsaWRhdGlv
|
||||
biBBdXRob3JpdHkxITAfBgNVBAMTGGh0dHA6Ly93d3cudmFsaWNlcnQuY29tLzEg
|
||||
MB4GCSqGSIb3DQEJARYRaW5mb0B2YWxpY2VydC5jb22CAQEwDwYDVR0TAQH/BAUw
|
||||
AwEB/zAzBggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmdv
|
||||
ZGFkZHkuY29tMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jZXJ0aWZpY2F0ZXMu
|
||||
Z29kYWRkeS5jb20vcmVwb3NpdG9yeS9yb290LmNybDBLBgNVHSAERDBCMEAGBFUd
|
||||
IAAwODA2BggrBgEFBQcCARYqaHR0cDovL2NlcnRpZmljYXRlcy5nb2RhZGR5LmNv
|
||||
bS9yZXBvc2l0b3J5MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOBgQC1
|
||||
QPmnHfbq/qQaQlpE9xXUhUaJwL6e4+PrxeNYiY+Sn1eocSxI0YGyeR+sBjUZsE4O
|
||||
WBsUs5iB0QQeyAfJg594RAoYC5jcdnplDQ1tgMQLARzLrUc+cb53S8wGd9D0Vmsf
|
||||
SxOaFIqII6hR8INMqzW/Rn453HWkrugp++85j09VZw==
|
||||
-----END CERTIFICATE-----
|
||||
# Subject: L=ValiCert Validation Network, O=ValiCert, Inc., OU=ValiCert Class 2 Policy Validation Authority, CN=http://www.valicert.com//emailAddress=info@valicert.com<http://www.valicert.com//emailAddress=info@valicert.com>
|
||||
# Issuer: L=ValiCert Validation Network, O=ValiCert, Inc., OU=ValiCert Class 2 Policy Validation Authority, CN=http://www.valicert.com//emailAddress=info@valicert.com<http://www.valicert.com//emailAddress=info@valicert.com>
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0
|
||||
IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz
|
||||
BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y
|
||||
aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG
|
||||
9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy
|
||||
NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y
|
||||
azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
||||
YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw
|
||||
Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl
|
||||
cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY
|
||||
dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9
|
||||
WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS
|
||||
v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v
|
||||
UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu
|
||||
IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC
|
||||
W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
|
||||
53
resources/lib/dropbox/util.py
Normal file
53
resources/lib/dropbox/util.py
Normal file
@@ -0,0 +1,53 @@
|
||||
import os
|
||||
|
||||
class AnalyzeFileObjBug(Exception):
|
||||
msg = ("\n"
|
||||
"Expected file object to have %d bytes, instead we read %d bytes.\n"
|
||||
"File size detection may have failed (see dropbox.util.AnalyzeFileObj)\n")
|
||||
def __init__(self, expected, actual):
|
||||
self.expected = expected
|
||||
self.actual = actual
|
||||
|
||||
def __str__(self):
|
||||
return self.msg % (self.expected, self.actual)
|
||||
|
||||
def analyze_file_obj(obj):
|
||||
""" Get the size and contents of a file-like object.
|
||||
Returns: (size, raw_data)
|
||||
size: The amount of data waiting to be read
|
||||
raw_data: If not None, the entire contents of the stream (as a string).
|
||||
None if the stream should be read() in chunks.
|
||||
"""
|
||||
pos = 0
|
||||
if hasattr(obj, 'tell'):
|
||||
pos = obj.tell()
|
||||
|
||||
# Handle cStringIO and StringIO
|
||||
if hasattr(obj, 'getvalue'):
|
||||
# Why using getvalue() makes sense:
|
||||
# For StringIO, this string is pre-computed anyway by read().
|
||||
# For cStringIO, getvalue() is the only way
|
||||
# to determine the length without read()'ing the whole thing.
|
||||
raw_data = obj.getvalue()
|
||||
if pos == 0:
|
||||
return (len(raw_data), raw_data)
|
||||
else:
|
||||
# We could return raw_data[pos:], but that could drastically
|
||||
# increase memory usage. Better to read it block at a time.
|
||||
size = max(0, len(raw_data) - pos)
|
||||
return (size, None)
|
||||
|
||||
# Handle real files
|
||||
if hasattr(obj, 'fileno'):
|
||||
size = max(0, os.fstat(obj.fileno()).st_size - pos)
|
||||
return (size, None)
|
||||
|
||||
# User-defined object with len()
|
||||
if hasattr(obj, '__len__'):
|
||||
size = max(0, len(obj) - pos)
|
||||
return (size, None)
|
||||
|
||||
# We don't know what kind of stream this is.
|
||||
# To determine the size, we must read the whole thing.
|
||||
raw_data = obj.read()
|
||||
return (len(raw_data), raw_data)
|
||||
99
resources/lib/guisettings.py
Normal file
99
resources/lib/guisettings.py
Normal file
@@ -0,0 +1,99 @@
|
||||
import utils as utils
|
||||
from xml.dom import minidom
|
||||
from xml.parsers.expat import ExpatError
|
||||
import json
|
||||
import xbmc,xbmcvfs
|
||||
|
||||
|
||||
class GuiSettingsManager:
|
||||
settingsFile = None
|
||||
doc = None
|
||||
settings_allowed = list()
|
||||
found_settings = list()
|
||||
|
||||
def __init__(self,settingsFile):
|
||||
self._readFile(xbmc.translatePath(settingsFile))
|
||||
|
||||
def run(self):
|
||||
#get a list of all the settings we can manipulate via json
|
||||
json_response = json.loads(xbmc.executeJSONRPC('{"jsonrpc":"2.0", "id":1, "method":"Settings.GetSettings","params":{"level":"advanced"}}'))
|
||||
|
||||
settings = json_response['result']['settings']
|
||||
|
||||
for aSetting in settings:
|
||||
self.settings_allowed.append(aSetting['id'])
|
||||
|
||||
#parse the existing xml file and get all the settings
|
||||
root_nodes = self.__parseNodes(self.doc.documentElement)
|
||||
|
||||
for aNode in root_nodes:
|
||||
secondary_list = self.__parseNodes(self.doc.getElementsByTagName(aNode.name)[0])
|
||||
|
||||
for secondNode in secondary_list:
|
||||
#if the node does not have children and is not default
|
||||
if(not secondNode.hasChildren and not secondNode.isDefault):
|
||||
|
||||
if(secondNode.json_name() in self.settings_allowed):
|
||||
self.found_settings.append(secondNode)
|
||||
|
||||
#go through all the found settings and update them
|
||||
for aSetting in self.found_settings:
|
||||
utils.log("updating: " + aSetting.json_name() + ", value: " + aSetting.value)
|
||||
|
||||
#check for boolean and numeric values
|
||||
if(aSetting.value.isdigit() or (aSetting.value == 'true' or aSetting.value == 'false')):
|
||||
xbmc.executeJSONRPC('{"jsonrpc":"2.0", "id":1, "method":"Settings.SetSettingValue","params":{"setting":"' + aSetting.json_name() + '","value":' + aSetting.value + '}}')
|
||||
else:
|
||||
xbmc.executeJSONRPC('{"jsonrpc":"2.0", "id":1, "method":"Settings.SetSettingValue","params":{"setting":"' + aSetting.json_name() + '","value":"' + aSetting.value + '"}}')
|
||||
|
||||
#make a copy of the guisettings file to make user based restores easier
|
||||
xbmcvfs.copy(self.settingsFile, xbmc.translatePath("special://home/userdata/guisettings.xml.restored"))
|
||||
|
||||
def __parseNodes(self,nodeList):
|
||||
result = []
|
||||
|
||||
for node in nodeList.childNodes:
|
||||
if(node.nodeType == self.doc.ELEMENT_NODE):
|
||||
aSetting = SettingNode(node.nodeName)
|
||||
|
||||
#detect if there are any element nodes
|
||||
if(len(node.childNodes) > 0):
|
||||
for child_node in node.childNodes:
|
||||
if(child_node.nodeType == self.doc.ELEMENT_NODE):
|
||||
aSetting.hasChildren = True
|
||||
|
||||
if(not aSetting.hasChildren and len(node.childNodes) > 0):
|
||||
aSetting.value = node.firstChild.nodeValue
|
||||
|
||||
if('default' not in node.attributes.keys()):
|
||||
aSetting.isDefault = False
|
||||
|
||||
aSetting.parent = node.parentNode.nodeName
|
||||
|
||||
result.append(aSetting)
|
||||
return result
|
||||
|
||||
|
||||
def _readFile(self,fileLoc):
|
||||
|
||||
if(xbmcvfs.exists(fileLoc)):
|
||||
try:
|
||||
self.doc = minidom.parse(fileLoc)
|
||||
self.settingsFile = fileLoc
|
||||
except ExpatError:
|
||||
utils.log("Can't read " + fileLoc)
|
||||
|
||||
class SettingNode:
|
||||
name = ''
|
||||
value = ''
|
||||
hasChildren = False
|
||||
isDefault = True
|
||||
parent = ''
|
||||
|
||||
def __init__(self,name):
|
||||
self.name = name
|
||||
|
||||
def json_name(self):
|
||||
return self.parent + "." + self.name
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import xbmc
|
||||
import xbmcgui
|
||||
import xbmcaddon
|
||||
|
||||
__addon_id__= 'script.xbmcbackup'
|
||||
@@ -7,11 +8,17 @@ __Addon = xbmcaddon.Addon(__addon_id__)
|
||||
def data_dir():
|
||||
return __Addon.getAddonInfo('profile')
|
||||
|
||||
def addon_dir():
|
||||
return __Addon.getAddonInfo('path')
|
||||
|
||||
def openSettings():
|
||||
__Addon.openSettings()
|
||||
|
||||
def log(message,loglevel=xbmc.LOGNOTICE):
|
||||
xbmc.log(encode(__addon_id__ + ": " + message),level=loglevel)
|
||||
xbmc.log(encode(__addon_id__ + "-" + __Addon.getAddonInfo('version') + ": " + message),level=loglevel)
|
||||
|
||||
def showNotification(message):
|
||||
xbmc.executebuiltin("Notification(" + getString(30010) + "," + message + ",4000," + xbmc.translatePath(__Addon.getAddonInfo('path') + "/icon.png") + ")")
|
||||
xbmcgui.Dialog().notification(encode(getString(30010)),encode(message),time=4000,icon=xbmc.translatePath(__Addon.getAddonInfo('path') + "/icon.png"))
|
||||
|
||||
def getSetting(name):
|
||||
return __Addon.getSetting(name)
|
||||
@@ -23,4 +30,11 @@ def getString(string_id):
|
||||
return __Addon.getLocalizedString(string_id)
|
||||
|
||||
def encode(string):
|
||||
return string.encode('UTF-8','replace')
|
||||
result = ''
|
||||
|
||||
try:
|
||||
result = string.encode('UTF-8','replace')
|
||||
except UnicodeDecodeError:
|
||||
result = 'Unicode Error'
|
||||
|
||||
return result
|
||||
|
||||
@@ -1,256 +1,274 @@
|
||||
'''
|
||||
Convenience wrappers and extensions for some commonly used VFS functions
|
||||
in XBMC addons. This module exposes all the functionality of xbmcvfs plus
|
||||
some extra functions.
|
||||
|
||||
Copyright (C) 2012 Patrick Carey
|
||||
|
||||
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 json
|
||||
import os
|
||||
import utils as utils
|
||||
import xbmc
|
||||
import xbmcvfs
|
||||
import urllib
|
||||
import xbmcgui
|
||||
import zipfile
|
||||
import zlib
|
||||
from dropbox import client, rest, session
|
||||
|
||||
def walk(path):
|
||||
APP_KEY = utils.getSetting('dropbox_key')
|
||||
APP_SECRET = utils.getSetting('dropbox_secret')
|
||||
|
||||
'''
|
||||
Reimplementation of os.walk using XBMC's jsonrpc API.
|
||||
class Vfs:
|
||||
root_path = None
|
||||
|
||||
This has the nice added benefits of being able to walk remote
|
||||
directories and inside compressed files such as rars/zips.
|
||||
'''
|
||||
def __init__(self,rootString):
|
||||
self.set_root(rootString)
|
||||
|
||||
def set_root(self,rootString):
|
||||
old_root = self.root_path
|
||||
self.root_path = rootString
|
||||
|
||||
#fix slashes
|
||||
self.root_path = self.root_path.replace("\\","/")
|
||||
|
||||
#check if trailing slash is included
|
||||
if(self.root_path[-1:] != "/"):
|
||||
self.root_path = self.root_path + "/"
|
||||
|
||||
dir_tree = [[path]]
|
||||
#return the old root
|
||||
return old_root
|
||||
|
||||
def listdir(self,directory):
|
||||
return {}
|
||||
|
||||
current_depth = 0
|
||||
def mkdir(self,directory):
|
||||
return True
|
||||
|
||||
not_dir = ['.zip','.xsp','.rar']
|
||||
def put(self,source,dest):
|
||||
return True
|
||||
|
||||
while True:
|
||||
def getFile(self,source):
|
||||
return True
|
||||
|
||||
def rmdir(self,directory):
|
||||
return True
|
||||
|
||||
if current_depth > -1:
|
||||
def rmfile(self,aFile):
|
||||
return True
|
||||
|
||||
try:
|
||||
def exists(self,aFile):
|
||||
return True
|
||||
|
||||
def rename(self,aFile,newName):
|
||||
return True
|
||||
|
||||
def cleanup(self):
|
||||
return True
|
||||
|
||||
class XBMCFileSystem(Vfs):
|
||||
|
||||
current_path = dir_tree[current_depth].pop(0)
|
||||
current_dirs, current_files = [], []
|
||||
def listdir(self,directory):
|
||||
return xbmcvfs.listdir(directory)
|
||||
|
||||
for x in listdir(current_path, extra_metadata=True):
|
||||
def mkdir(self,directory):
|
||||
return xbmcvfs.mkdir(xbmc.translatePath(directory))
|
||||
|
||||
file_ext = x['file'].split('.')[-1]
|
||||
|
||||
if x['filetype'] == 'directory' and not any(file_ext in s for s in not_dir):
|
||||
def put(self,source,dest):
|
||||
return xbmcvfs.copy(xbmc.translatePath(source),xbmc.translatePath(dest))
|
||||
|
||||
def rmdir(self,directory):
|
||||
return xbmcvfs.rmdir(directory,True)
|
||||
|
||||
current_dirs.append(urllib.unquote(x['file']))
|
||||
def rmfile(self,aFile):
|
||||
return xbmcvfs.delete(aFile)
|
||||
|
||||
else:
|
||||
|
||||
current_files.append(urllib.unquote(x['file']))
|
||||
def rename(self,aFile,newName):
|
||||
return xbmcvfs.rename(aFile, newName)
|
||||
|
||||
except IndexError:
|
||||
def exists(self,aFile):
|
||||
return xbmcvfs.exists(aFile)
|
||||
|
||||
current_depth -= 1
|
||||
class ZipFileSystem(Vfs):
|
||||
zip = None
|
||||
|
||||
def __init__(self,rootString,mode):
|
||||
self.root_path = ""
|
||||
self.zip = zipfile.ZipFile(rootString,mode=mode,allowZip64=True)
|
||||
|
||||
def listdir(self,directory):
|
||||
return [[],[]]
|
||||
|
||||
def mkdir(self,directory):
|
||||
#self.zip.write(directory[len(self.root_path):])
|
||||
return False
|
||||
|
||||
def put(self,source,dest):
|
||||
|
||||
aFile = xbmcvfs.File(xbmc.translatePath(source),'r')
|
||||
|
||||
self.zip.writestr(utils.encode(dest),aFile.read(),compress_type=zipfile.ZIP_DEFLATED)
|
||||
|
||||
return True
|
||||
|
||||
def rmdir(self,directory):
|
||||
return False
|
||||
|
||||
def exists(self,aFile):
|
||||
return False
|
||||
|
||||
def cleanup(self):
|
||||
self.zip.close()
|
||||
|
||||
def extract(self,path):
|
||||
#extract zip file to path
|
||||
self.zip.extractall(path)
|
||||
|
||||
dir_tree.pop()
|
||||
class DropboxFileSystem(Vfs):
|
||||
client = None
|
||||
|
||||
def __init__(self,rootString):
|
||||
self.set_root(rootString)
|
||||
self.setup()
|
||||
|
||||
else:
|
||||
def setup(self):
|
||||
if(APP_KEY == '' or APP_SECRET == ''):
|
||||
xbmcgui.Dialog().ok(utils.getString(30010),utils.getString(30058),utils.getString(30059))
|
||||
return
|
||||
|
||||
user_token_key,user_token_secret = self.getToken()
|
||||
|
||||
sess = session.DropboxSession(APP_KEY,APP_SECRET,"app_folder")
|
||||
|
||||
yield (current_path, current_dirs, current_files)
|
||||
|
||||
if current_dirs:
|
||||
|
||||
current_depth += 1
|
||||
|
||||
dir_tree.append(current_dirs)
|
||||
if(user_token_key == '' and user_token_secret == ''):
|
||||
token = sess.obtain_request_token()
|
||||
url = sess.build_authorize_url(token)
|
||||
|
||||
#print url in log
|
||||
utils.log("Authorize URL: " + url)
|
||||
xbmcgui.Dialog().ok(utils.getString(30010),utils.getString(30056),utils.getString(30057))
|
||||
|
||||
#if user authorized this will work
|
||||
user_token = sess.obtain_access_token(token)
|
||||
self.setToken(user_token.key,user_token.secret)
|
||||
|
||||
else:
|
||||
|
||||
break
|
||||
|
||||
|
||||
def listdir(path, extra_metadata=False):
|
||||
|
||||
'''
|
||||
Reimplementation of os.listdir using XBMC's jsonrpc API.
|
||||
|
||||
Returns a list of file/directory names from the specified path
|
||||
|
||||
Accepts an optional boolean 'extra_metadata' as the second argument
|
||||
which will cause the function to instead return a list of dictionaries
|
||||
containing all of the metadata about each file that was retrieved from
|
||||
XBMC.
|
||||
'''
|
||||
|
||||
fileList = []
|
||||
|
||||
json_response = xbmc.executeJSONRPC('{ "jsonrpc" : "2.0" , "method" : "Files.GetDirectory" , "params" : { "directory" : "%s" , "sort" : { "method" : "file" } } , "id" : 1 }' % path.encode('utf-8').replace('\\', '\\\\'))
|
||||
|
||||
jsonobject = json.loads(json_response)
|
||||
|
||||
if jsonobject.has_key('result') and jsonobject['result']['files']:
|
||||
|
||||
for item in jsonobject['result']['files']:
|
||||
|
||||
if extra_metadata:
|
||||
|
||||
fileList.append(item)
|
||||
|
||||
else:
|
||||
|
||||
fileList.append(item['file'])
|
||||
|
||||
return fileList
|
||||
|
||||
|
||||
def copy(source, destination):
|
||||
|
||||
"""
|
||||
copy(source, destination) -- Copy file to destination, returns true/false.
|
||||
|
||||
source : file to copy.
|
||||
destination : destination file
|
||||
|
||||
example:
|
||||
- success = vfs.copy(source, destination)
|
||||
"""
|
||||
|
||||
return xbmcvfs.copy(source, destination)
|
||||
|
||||
|
||||
def delete(path):
|
||||
|
||||
"""
|
||||
delete(file) -- Delete file
|
||||
|
||||
file : file to delete
|
||||
|
||||
example:
|
||||
- vfs.delete(file)
|
||||
"""
|
||||
|
||||
return xbmcvfs.delete(path)
|
||||
|
||||
|
||||
def exists(path):
|
||||
|
||||
"""
|
||||
exists(path) -- Check if file exists, returns true/false.
|
||||
|
||||
path : file or folder
|
||||
|
||||
example:
|
||||
- success = vfs.exists(path)
|
||||
"""
|
||||
|
||||
return xbmcvfs.exists(path)
|
||||
|
||||
|
||||
def mkdir(path):
|
||||
|
||||
"""
|
||||
mkdir(path) -- Create a folder.
|
||||
|
||||
path : folder
|
||||
|
||||
example:
|
||||
- success = vfs.mkdir(path)
|
||||
"""
|
||||
|
||||
return xbmcvfs.mkdir(path)
|
||||
|
||||
|
||||
def rename(source, target):
|
||||
|
||||
"""
|
||||
rename(file, newFileName) -- Rename file, returns true/false.
|
||||
|
||||
file : file to reaname
|
||||
newFileName : new filename, including the full path
|
||||
|
||||
example:
|
||||
- success = vfs.rename(file, newFileName)
|
||||
"""
|
||||
|
||||
return xbmcvfs.rename(source, target)
|
||||
|
||||
|
||||
def rmdir(path):
|
||||
|
||||
"""
|
||||
rmdir(path) -- Remove a folder.
|
||||
|
||||
path : folder
|
||||
|
||||
example:
|
||||
- success = vfs.rmdir(path)
|
||||
"""
|
||||
|
||||
return xbmcvfs.rmdir(path)
|
||||
|
||||
|
||||
def comparepathlists(list1, list2, fullpath=False):
|
||||
|
||||
"""
|
||||
comparepathlists(list1, list2) -- Compare two lists of paths
|
||||
|
||||
list1 : list, contains paths (local or remote, absolute or relative)
|
||||
list2 : list, contains paths (local or remote, absolute or relative)
|
||||
fullpath : boolean, set True to compare perform straight comparison of lists
|
||||
set False (default) to compare on filename portions of each list
|
||||
|
||||
returns: dictionary:
|
||||
common_items: list, contains paths of items common to both lists
|
||||
list1_items: list, contains paths of items found only in list1
|
||||
list2_items: list, contains paths of items found only in list2
|
||||
|
||||
example:
|
||||
- compare = comparepathlists(list1, list2)
|
||||
"""
|
||||
|
||||
# initialise dict to store results and temp data
|
||||
results = {}
|
||||
temp_data = {}
|
||||
|
||||
if fullpath:
|
||||
|
||||
temp_path = lambda x: x
|
||||
|
||||
else:
|
||||
|
||||
temp_path = lambda x: os.path.split(x)[1]
|
||||
|
||||
for path in list1:
|
||||
|
||||
temp_data['list1'].append(temp_path(path))
|
||||
|
||||
for path in list2:
|
||||
|
||||
temp_data['list2'].append(temp_path(path))
|
||||
|
||||
# get items not in list 2
|
||||
results['list1_items'] = []
|
||||
gen = (i for i, x in enumerate(temp_data['list1']) if not x in temp_data['list2'])
|
||||
for i in gen:
|
||||
results['list1_items'].append(list1[i])
|
||||
|
||||
# get items not in list 1
|
||||
results['list2_items'] = []
|
||||
gen = (i for i, x in enumerate(temp_data['list2']) if not x in temp_data['list1'])
|
||||
for i in gen:
|
||||
results['list2_items'].append(list2[i])
|
||||
|
||||
return results
|
||||
sess.set_token(user_token_key,user_token_secret)
|
||||
|
||||
self.client = client.DropboxClient(sess)
|
||||
|
||||
try:
|
||||
utils.log(str(self.client.account_info()))
|
||||
except:
|
||||
#this didn't work, delete the token file
|
||||
self.deleteToken()
|
||||
|
||||
def listdir(self,directory):
|
||||
if(self.client != None and self.exists(directory)):
|
||||
files = []
|
||||
dirs = []
|
||||
metadata = self.client.metadata(directory)
|
||||
|
||||
for aFile in metadata['contents']:
|
||||
if(aFile['is_dir']):
|
||||
dirs.append(aFile['path'][len(directory):])
|
||||
else:
|
||||
files.append(aFile['path'][len(directory):])
|
||||
|
||||
return [dirs,files]
|
||||
else:
|
||||
return [[],[]]
|
||||
|
||||
|
||||
def mkdir(self,directory):
|
||||
directory = self._fix_slashes(directory)
|
||||
if(self.client != None):
|
||||
if(not self.exists(directory)):
|
||||
self.client.file_create_folder(directory)
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def rmdir(self,directory):
|
||||
directory = self._fix_slashes(directory)
|
||||
if(self.client != None and self.exists(directory)):
|
||||
#dropbox is stupid and will refuse to do this sometimes, need to delete recursively
|
||||
dirs,files = self.listdir(directory)
|
||||
|
||||
for aDir in dirs:
|
||||
self.rmdir(aDir)
|
||||
|
||||
#finally remove the root directory
|
||||
self.client.file_delete(directory)
|
||||
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def rmfile(self,aFile):
|
||||
aFile = self._fix_slashes(aFile)
|
||||
if(self.client != None and self.exists(aFile)):
|
||||
self.client.file_delete(aFile)
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def exists(self,aFile):
|
||||
aFile = self._fix_slashes(aFile)
|
||||
if(self.client != None):
|
||||
try:
|
||||
meta_data = self.client.metadata(aFile)
|
||||
#if we make it here the file does exist
|
||||
return True
|
||||
except:
|
||||
return False
|
||||
else:
|
||||
return False
|
||||
|
||||
def put(self,source,dest,retry=True):
|
||||
dest = self._fix_slashes(dest)
|
||||
|
||||
if(self.client != None):
|
||||
f = open(source,'rb')
|
||||
try:
|
||||
response = self.client.put_file(dest,f,True)
|
||||
return True
|
||||
except:
|
||||
#if we have an exception retry
|
||||
if(retry):
|
||||
return self.put(source,dest,False)
|
||||
else:
|
||||
#tried once already, just quit
|
||||
return False
|
||||
else:
|
||||
return False
|
||||
|
||||
def get_file(self,source,dest):
|
||||
if(self.client != None):
|
||||
#write the file locally
|
||||
out = open(dest,'wb')
|
||||
f = self.client.get_file(source).read()
|
||||
out.write(f)
|
||||
out.close()
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def _fix_slashes(self,filename):
|
||||
return filename.replace('\\','/')
|
||||
|
||||
def setToken(self,key,secret):
|
||||
#write the token files
|
||||
token_file = open(xbmc.translatePath(utils.data_dir() + "tokens.txt"),'w')
|
||||
token_file.write("%s|%s" % (key,secret))
|
||||
token_file.close()
|
||||
|
||||
def getToken(self):
|
||||
#get tokens, if they exist
|
||||
if(xbmcvfs.exists(xbmc.translatePath(utils.data_dir() + "tokens.txt"))):
|
||||
token_file = open(xbmc.translatePath(utils.data_dir() + "tokens.txt"))
|
||||
key,secret = token_file.read().split('|')
|
||||
token_file.close()
|
||||
|
||||
return [key,secret]
|
||||
else:
|
||||
return ["",""]
|
||||
|
||||
def deleteToken(self):
|
||||
if(xbmcvfs.exists(xbmc.translatePath(utils.data_dir() + "tokens.txt"))):
|
||||
xbmcvfs.delete(xbmc.translatePath(utils.data_dir() + "tokens.txt"))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,26 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<settings>
|
||||
<category id="general" label="30011">
|
||||
<setting id="addon_mode" type="enum" lvalues="30016|30017" default="0" label="30023" />
|
||||
<setting id="remote_selection" type="enum" lvalues="30018|30019" default="0" label="30025"/>
|
||||
<setting id="remote_selection" type="enum" lvalues="30018|30019|30027" default="0" label="30025"/>
|
||||
<setting id="remote_path_2" type="text" label="30024" default="" visible="eq(-1,1)" />
|
||||
<setting id="remote_path" type="folder" label="30020" visible="eq(-2,0)" />
|
||||
<setting id="backup_name" type="text" label="30021" default="backup_date" visible="eq(-4,1)"/>
|
||||
<setting id="run_silent" type="bool" label="30022" default="false" />
|
||||
<setting id="dropbox_key" type="text" label="30028" visible="eq(-3,2)" default="" />
|
||||
<setting id="dropbox_secret" type="text" label="30029" visible="eq(-4,2)" default="" />
|
||||
<setting id="compress_backups" type="bool" label="30087" default="false" />
|
||||
<setting id="backup_rotation" type="number" label="30026" default="0" />
|
||||
<setting id="progress_mode" type="enum" label="30022" lvalues="30082|30083|30084" default="0" />
|
||||
</category>
|
||||
<category id="selection" label="30012">
|
||||
<setting id="backup_addons" type="bool" label="30030" default="true" />
|
||||
<setting id="backup_addon_data" type="bool" label="30031" default="false" />
|
||||
<setting id="backup_database" type="bool" label="30032" default="true" />
|
||||
<setting id="backup_playlists" type="bool" label="30033" default="true" />
|
||||
<setting id="backup_profiles" type="bool" label="30080" default="false" />
|
||||
<setting id="backup_thumbnails" type="bool" label="30034" default="true" />
|
||||
<setting id="backup_config" type="bool" label="30035" default="true" />
|
||||
<setting id="custom_dir_1_enable" type="bool" label="30036" default="false" />
|
||||
<setting id="backup_custom_dir_1" type="folder" label="30018" default="" visible="eq(-1,true)"/>
|
||||
<setting id="custom_dir_2_enable" type="bool" label="30037" default="false" />
|
||||
<setting id="backup_custom_dir_2" type="folder" label="30018" default="" visible="eq(-1,true)"/>
|
||||
</category>
|
||||
<category id="scheduling" label="30013">
|
||||
<setting id="enable_scheduler" type="bool" label="30060" default="false" />
|
||||
<setting id="schedule_interval" type="enum" label="30061" lvalues="30072|30073|30074|30075" default="0" enable="eq(-1,true)"/>
|
||||
<setting id="schedule_time" type="labelenum" label="30062" values="00:00|01:00|02:00|03:00|04:00|05:00|06:00|07:00|08:00|09:00|10:00|11:00|12:00|13:00|14:00|15:00|16:00|17:00|18:00|19:00|20:00|21:00|22:00|23:00" default="00:00" visible="!eq(-1,3)" enable="eq(-2,true)"/>
|
||||
<setting id="day_of_week" type="enum" label="30063" lvalues="30065|30066|30067|30068|30069|30070|30071" default="0" visible="eq(-2,1)" enable="eq(-3,true)"/>
|
||||
<setting id="cron_schedule" type="text" label="30064" default="0 0 * * *" visible="eq(-3,3)" enable="eq(-4,true)"/>
|
||||
<setting id="schedule_interval" type="enum" label="30061" lvalues="30079|30072|30073|30074|30075" default="1" enable="eq(-1,true)"/>
|
||||
<setting id="schedule_time" type="labelenum" label="30062" values="00:00|01:00|02:00|03:00|04:00|05:00|06:00|07:00|08:00|09:00|10:00|11:00|12:00|13:00|14:00|15:00|16:00|17:00|18:00|19:00|20:00|21:00|22:00|23:00" default="00:00" visible="!eq(-1,4)" enable="eq(-2,true)"/>
|
||||
<setting id="day_of_week" type="enum" label="30063" lvalues="30065|30066|30067|30068|30069|30070|30071" default="0" visible="eq(-2,2)" enable="eq(-3,true)"/>
|
||||
<setting id="cron_schedule" type="text" label="30064" default="0 0 * * *" visible="eq(-3,4)" enable="eq(-4,true)"/>
|
||||
<setting id="cron_shutdown" type="bool" label="30076" default="false" enable="eq(-5,true)" />
|
||||
</category>
|
||||
</settings>
|
||||
|
||||
144
scheduler.py
144
scheduler.py
@@ -1,4 +1,6 @@
|
||||
import xbmc
|
||||
import xbmcvfs
|
||||
import xbmcgui
|
||||
import datetime
|
||||
import time
|
||||
import os
|
||||
@@ -7,11 +9,13 @@ from resources.lib.croniter import croniter
|
||||
from resources.lib.backup import XbmcBackup
|
||||
|
||||
class BackupScheduler:
|
||||
monitor = None
|
||||
enabled = "false"
|
||||
next_run = 0
|
||||
settings_update_time = 0
|
||||
restore_point = None
|
||||
|
||||
def __init__(self):
|
||||
self.monitor = UpdateMonitor(update_method = self.settingsChanged)
|
||||
self.enabled = utils.getSetting("enable_scheduler")
|
||||
|
||||
if(self.enabled == "true"):
|
||||
@@ -20,59 +24,88 @@ class BackupScheduler:
|
||||
def setup(self):
|
||||
#scheduler was turned on, find next run time
|
||||
utils.log("scheduler enabled, finding next run time")
|
||||
self.findNextRun(time.time(),True)
|
||||
utils.log("scheduler will run again on " + datetime.datetime.fromtimestamp(self.next_run).strftime('%m-%d-%Y %H:%M'))
|
||||
self.findNextRun(time.time())
|
||||
|
||||
def start(self):
|
||||
|
||||
#check if a backup should be resumed
|
||||
resumeRestore = self._resumeCheck()
|
||||
|
||||
if(resumeRestore):
|
||||
restore = XbmcBackup()
|
||||
restore.selectRestore(self.restore_point)
|
||||
#skip the advanced settings check
|
||||
restore.skipAdvanced()
|
||||
restore.run(XbmcBackup.Restore)
|
||||
|
||||
while(not xbmc.abortRequested):
|
||||
current_enabled = utils.getSetting("enable_scheduler")
|
||||
|
||||
if(current_enabled == "true" and self.enabled == "false"):
|
||||
#scheduler was just turned on
|
||||
self.enabled = current_enabled
|
||||
self.setup()
|
||||
elif (current_enabled == "false" and self.enabled == "true"):
|
||||
#schedule was turn off
|
||||
self.enabled = current_enabled
|
||||
elif(self.enabled == "true"):
|
||||
if(self.enabled == "true"):
|
||||
#scheduler is still on
|
||||
now = time.time()
|
||||
|
||||
if(self.next_run <= now):
|
||||
if(utils.getSetting('run_silent') == 'false'):
|
||||
progress_mode = int(utils.getSetting('progress_mode'))
|
||||
if(progress_mode != 2):
|
||||
utils.showNotification(utils.getString(30053))
|
||||
#run the job in backup mode, hiding the dialog box
|
||||
|
||||
backup = XbmcBackup()
|
||||
backup.run(XbmcBackup.Backup,True)
|
||||
self.findNextRun(now,True)
|
||||
else:
|
||||
self.findNextRun(now)
|
||||
|
||||
time.sleep(10)
|
||||
if(backup.remoteConfigured()):
|
||||
|
||||
def findNextRun(self,now,forceUpdate = False):
|
||||
mod_time = self.settings_update_time
|
||||
if(int(utils.getSetting('progress_mode')) in [0,1]):
|
||||
backup.run(XbmcBackup.Backup,True)
|
||||
else:
|
||||
backup.run(XbmcBackup.Backup,False)
|
||||
|
||||
#check if this is a "one-off"
|
||||
if(int(utils.getSetting("schedule_interval")) == 0):
|
||||
#disable the scheduler after this run
|
||||
self.enabled = "false"
|
||||
utils.setSetting('enable_scheduler','false')
|
||||
else:
|
||||
utils.showNotification(utils.getString(30045))
|
||||
|
||||
#check if we should shut the computer down
|
||||
if(utils.getSetting("cron_shutdown") == 'true'):
|
||||
#wait 10 seconds to make sure all backup processes and files are completed
|
||||
time.sleep(10)
|
||||
xbmc.executebuiltin('ShutDown()')
|
||||
else:
|
||||
#find the next run time like normal
|
||||
self.findNextRun(now)
|
||||
|
||||
xbmc.sleep(500)
|
||||
|
||||
#delete monitor to free up memory
|
||||
del self.monitor
|
||||
|
||||
def findNextRun(self,now):
|
||||
#find the cron expression and get the next run time
|
||||
cron_exp = self.parseSchedule()
|
||||
|
||||
cron_ob = croniter(cron_exp,datetime.datetime.fromtimestamp(now))
|
||||
new_run_time = cron_ob.get_next(float)
|
||||
|
||||
if(new_run_time != self.next_run):
|
||||
self.next_run = new_run_time
|
||||
utils.showNotification(utils.getString(30081) + " " + datetime.datetime.fromtimestamp(self.next_run).strftime('%m-%d-%Y %H:%M'))
|
||||
utils.log("scheduler will run again on " + datetime.datetime.fromtimestamp(self.next_run).strftime('%m-%d-%Y %H:%M'))
|
||||
|
||||
def settingsChanged(self):
|
||||
current_enabled = utils.getSetting("enable_scheduler")
|
||||
|
||||
#check if the schedule has been modified
|
||||
try:
|
||||
#get the last modified time of the file
|
||||
mod_time = os.path.getmtime(xbmc.translatePath(utils.data_dir()) + "settings.xml")
|
||||
except:
|
||||
#don't do anything here
|
||||
mod_time = self.settings_update_time
|
||||
if(current_enabled == "true" and self.enabled == "false"):
|
||||
#scheduler was just turned on
|
||||
self.enabled = current_enabled
|
||||
self.setup()
|
||||
elif (current_enabled == "false" and self.enabled == "true"):
|
||||
#schedule was turn off
|
||||
self.enabled = current_enabled
|
||||
|
||||
if(mod_time > self.settings_update_time or forceUpdate):
|
||||
self.settings_update_time = mod_time
|
||||
|
||||
#find the cron expression and get the next run time
|
||||
cron_exp = self.parseSchedule()
|
||||
|
||||
cron_ob = croniter(cron_exp,datetime.datetime.fromtimestamp(now))
|
||||
new_run_time = cron_ob.get_next(float)
|
||||
|
||||
if(new_run_time != self.next_run):
|
||||
self.next_run = new_run_time
|
||||
utils.log("scheduler will run again on " + datetime.datetime.fromtimestamp(self.next_run).strftime('%m-%d-%Y %H:%M'))
|
||||
if(self.enabled == "true"):
|
||||
#always recheck the next run time after an update
|
||||
self.findNextRun(time.time())
|
||||
|
||||
def parseSchedule(self):
|
||||
schedule_type = int(utils.getSetting("schedule_interval"))
|
||||
@@ -80,18 +113,39 @@ class BackupScheduler:
|
||||
|
||||
hour_of_day = utils.getSetting("schedule_time")
|
||||
hour_of_day = int(hour_of_day[0:2])
|
||||
if(schedule_type == 0):
|
||||
if(schedule_type == 0 or schedule_type == 1):
|
||||
#every day
|
||||
|
||||
cron_exp = "0 " + str(hour_of_day) + " * * *"
|
||||
elif(schedule_type == 1):
|
||||
elif(schedule_type == 2):
|
||||
#once a week
|
||||
day_of_week = utils.getSetting("day_of_week")
|
||||
cron_exp = "0 " + str(hour_of_day) + " * * " + day_of_week
|
||||
elif(schedule_type == 2):
|
||||
elif(schedule_type == 3):
|
||||
#first day of month
|
||||
cron_exp = "0 " + str(hour_of_day) + " 1 * *"
|
||||
|
||||
return cron_exp
|
||||
return cron_exp
|
||||
|
||||
def _resumeCheck(self):
|
||||
shouldContinue = False
|
||||
if(xbmcvfs.exists(xbmc.translatePath(utils.data_dir() + "resume.txt"))):
|
||||
rFile = xbmcvfs.File(xbmc.translatePath(utils.data_dir() + "resume.txt"),'r')
|
||||
self.restore_point = rFile.read()
|
||||
rFile.close()
|
||||
xbmcvfs.delete(xbmc.translatePath(utils.data_dir() + "resume.txt"))
|
||||
shouldContinue = xbmcgui.Dialog().yesno(utils.getString(30042),utils.getString(30043),utils.getString(30044))
|
||||
|
||||
return shouldContinue
|
||||
|
||||
|
||||
class UpdateMonitor(xbmc.Monitor):
|
||||
update_method = None
|
||||
|
||||
def __init__(self,*args, **kwargs):
|
||||
xbmc.Monitor.__init__(self)
|
||||
self.update_method = kwargs['update_method']
|
||||
|
||||
def onSettingsChanged(self):
|
||||
self.update_method()
|
||||
|
||||
BackupScheduler().start()
|
||||
|
||||
Reference in New Issue
Block a user