Merge branch 'master' into files_encryption
This commit is contained in:
commit
619780a67d
331 changed files with 3554 additions and 3183 deletions
37
CONTRIBUTING.md
Normal file
37
CONTRIBUTING.md
Normal file
|
@ -0,0 +1,37 @@
|
|||
## Submitting issues
|
||||
|
||||
If you have questions about how to use ownCloud, please direct these to the [mailing list][mailinglist] or our [forum][forum]. We are also available on [IRC][irc].
|
||||
|
||||
### Guidelines
|
||||
* Report the issue using our [template][template], it includes all the informations we need to track down the issue.
|
||||
* This repository is *only* for issues within the ownCloud core code. Issues in other compontents should be reported in their own repositores:
|
||||
- [Android client](https://github.com/owncloud/android/issues)
|
||||
- [iOS client](https://github.com/owncloud/ios-issues/issues)
|
||||
- [Desktop client](https://github.com/owncloud/mirall/issues)
|
||||
- [ownCloud apps](https://github.com/owncloud/apps/issues) (e.g. Calendar, Contacts...)
|
||||
* Search the existing issues first, it's likely that your issue was already reported.
|
||||
|
||||
If your issue appears to be a bug, and hasn't been reported, open a new issue.
|
||||
|
||||
Help us to maximize the effort we can spend fixing issues and adding new features, by not reporting duplicate issues.
|
||||
|
||||
[template]: https://raw.github.com/owncloud/core/master/issue_template.md
|
||||
[mailinglist]: https://mail.kde.org/mailman/listinfo/owncloud
|
||||
[forum]: http://forum.owncloud.org/
|
||||
[irc]: http://webchat.freenode.net/?channels=owncloud&uio=d4
|
||||
|
||||
## Contributing to Source Code
|
||||
|
||||
Thanks for wanting to contribute source code to ownCloud. That's great!
|
||||
|
||||
Before we're able to merge your code into the ownCloud core, you need to sign our [Contributor Agreement][agreement].
|
||||
|
||||
Please read the [Developer Manuals][devmanual] to get useful infos like how to create your first application or how to test the ownCloud code with phpunit.
|
||||
|
||||
[agreement]: http://owncloud.org/about/contributor-agreement/
|
||||
[devmanual]: http://owncloud.org/dev/
|
||||
|
||||
## Translations
|
||||
Please submit translations via [Transifex][transifex].
|
||||
|
||||
[transifex]: https://www.transifex.com/projects/p/owncloud/
|
|
@ -1,46 +1,71 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Could not move %s - File with this name already exists" => "%s কে স্থানান্তর করা সম্ভব হলো না - এই নামের ফাইল বিদ্যমান",
|
||||
"Could not move %s" => "%s কে স্থানান্তর করা সম্ভব হলো না",
|
||||
"Unable to rename file" => "ফাইলের নাম পরিবর্তন করা সম্ভব হলো না",
|
||||
"No file was uploaded. Unknown error" => "কোন ফাইল আপলোড করা হয় নি। সমস্যা অজ্ঞাত।",
|
||||
"There is no error, the file uploaded with success" => "কোন সমস্যা নেই, ফাইল আপলোড সুসম্পন্ন হয়েছে",
|
||||
"The uploaded file was only partially uploaded" => "আপলোড করা ফাইলটি আংশিক আপলোড হয়েছে",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "আপলোড করা ফাইলটি php.ini তে বর্ণিত upload_max_filesize নির্দেশিত আয়তন অতিক্রম করছেঃ",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "আপলোড করা ফাইলটি HTML ফর্মে নির্ধারিত MAX_FILE_SIZE নির্দেশিত সর্বোচ্চ আকার অতিক্রম করেছে ",
|
||||
"The uploaded file was only partially uploaded" => "আপলোড করা ফাইলটি আংশিক আপলোড করা হয়েছে",
|
||||
"No file was uploaded" => "কোন ফাইল আপলোড করা হয় নি",
|
||||
"Missing a temporary folder" => "অস্থায়ী ফোল্ডারটি খোয়া গিয়েছে ",
|
||||
"Failed to write to disk" => "ডিস্কে লিখতে পারা গেল না",
|
||||
"Missing a temporary folder" => "অস্থায়ী ফোল্ডার খোয়া গিয়েছে",
|
||||
"Failed to write to disk" => "ডিস্কে লিখতে ব্যর্থ",
|
||||
"Not enough space available" => "যথেষ্ঠ পরিমাণ স্থান নেই",
|
||||
"Invalid directory." => "ভুল ডিরেক্টরি",
|
||||
"Files" => "ফাইল",
|
||||
"Unshare" => "ভাগাভাগি বাতিল",
|
||||
"Unshare" => "ভাগাভাগি বাতিল ",
|
||||
"Delete" => "মুছে ফেল",
|
||||
"Rename" => "পূনঃনামকরণ",
|
||||
"{new_name} already exists" => "{new_name} টি বিদ্যমান",
|
||||
"replace" => "প্রতিস্থাপন",
|
||||
"suggest name" => "নাম সুপারিশ কর",
|
||||
"suggest name" => "নাম সুপারিশ করুন",
|
||||
"cancel" => "বাতিল",
|
||||
"replaced {new_name}" => "{new_name} প্রতিস্থাপন করা হয়েছে",
|
||||
"undo" => "ক্রিয়া প্রত্যাহার",
|
||||
"replaced {new_name} with {old_name}" => "{new_name} কে {old_name} নামে প্রতিস্থাপন করা হয়েছে",
|
||||
"unshared {files}" => "{files} ভাগাভাগি বাতিল কর",
|
||||
"deleted {files}" => "{files} মুছে ফেলা হয়েছে",
|
||||
"Upload Error" => "আপলোড করতে সমস্যা",
|
||||
"'.' is an invalid file name." => "টি একটি অননুমোদিত নাম।",
|
||||
"File name cannot be empty." => "ফাইলের নামটি ফাঁকা রাখা যাবে না।",
|
||||
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "নামটি সঠিক নয়, '\\', '/', '<', '>', ':', '\"', '|', '?' এবং '*' অনুমোদিত নয়।",
|
||||
"generating ZIP-file, it may take some time." => "ZIP- ফাইল তৈরী করা হচ্ছে, এজন্য কিছু সময় আবশ্যক।",
|
||||
"Unable to upload your file as it is a directory or has 0 bytes" => "আপনার ফাইলটি আপলোড করা সম্ভব হলো না, কেননা এটি হয় একটি ফোল্ডার কিংবা এর আকার ০ বাইট",
|
||||
"Upload Error" => "আপলোড করতে সমস্যা ",
|
||||
"Close" => "বন্ধ",
|
||||
"Pending" => "মুলতুবি",
|
||||
"1 file uploading" => "১ টি ফাইল আপলোড করা হচ্ছে",
|
||||
"Upload cancelled." => "আপলোড বাতিল করা হয়েছে ।",
|
||||
"1 file uploading" => "১টি ফাইল আপলোড করা হচ্ছে",
|
||||
"{count} files uploading" => "{count} টি ফাইল আপলোড করা হচ্ছে",
|
||||
"Upload cancelled." => "আপলোড বাতিল করা হয়েছে।",
|
||||
"File upload is in progress. Leaving the page now will cancel the upload." => "ফাইল আপলোড চলমান। এই পৃষ্ঠা পরিত্যাগ করলে আপলোড বাতিল করা হবে।",
|
||||
"URL cannot be empty." => "URL ফাঁকা রাখা যাবে না।",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "ফোল্ডারের নামটি সঠিক নয়। 'ভাগাভাগি করা' শুধুমাত্র Owncloud এর জন্য সংরক্ষিত।",
|
||||
"{count} files scanned" => "{count} টি ফাইল স্ক্যান করা হয়েছে",
|
||||
"error while scanning" => "স্ক্যান করার সময় সমস্যা দেখা দিয়েছে",
|
||||
"Name" => "নাম",
|
||||
"Size" => "আকার",
|
||||
"Modified" => "পরিবর্তিত",
|
||||
"File handling" => "ফাইল হ্যান্ডলিং",
|
||||
"1 folder" => "১টি ফোল্ডার",
|
||||
"{count} folders" => "{count} টি ফোল্ডার",
|
||||
"1 file" => "১টি ফাইল",
|
||||
"{count} files" => "{count} টি ফাইল",
|
||||
"File handling" => "ফাইল হ্যার্ডলিং",
|
||||
"Maximum upload size" => "আপলোডের সর্বোচ্চ আকার",
|
||||
"max. possible: " => "সম্ভাব্য সর্বোচ্চঃ",
|
||||
"Needed for multi-file and folder downloads." => "একাধিক ফাইল এবং ফোল্ডার ডাউনলোড করার ক্ষেত্রে আবশ্যক।",
|
||||
"Enable ZIP-download" => "জিপ ডাউনলোড সক্রিয় কর",
|
||||
"0 is unlimited" => "০ এর অর্থ হলো অসীম",
|
||||
"Maximum input size for ZIP files" => "জিপ ফাইলের জন্য সর্বোচ্চ ইনপুট",
|
||||
"Save" => "সংরক্ষণ কর",
|
||||
"max. possible: " => "অনুমোদিত সর্বোচ্চ আকার",
|
||||
"Needed for multi-file and folder downloads." => "একাধিক ফাইল এবং ফোল্ডার ডাউনলোড করার জন্য আবশ্যক।",
|
||||
"Enable ZIP-download" => "ZIP ডাউনলোড সক্রিয় কর",
|
||||
"0 is unlimited" => "০ এর অর্থ অসীম",
|
||||
"Maximum input size for ZIP files" => "ZIP ফাইলের ইনপুটের সর্বোচ্চ আকার",
|
||||
"Save" => "সংরক্ষন কর",
|
||||
"New" => "নতুন",
|
||||
"Text file" => "টেক্সট ফাইল",
|
||||
"Folder" => "ফোল্ডার",
|
||||
"From link" => " লিংক থেকে",
|
||||
"Upload" => "আপলোড",
|
||||
"Cancel upload" => "আপলোড বাতিল কর",
|
||||
"Nothing in here. Upload something!" => "এখানে কোন কিছুই নেই। কিছু আপলোড করুন !",
|
||||
"Nothing in here. Upload something!" => "এখানে কিছুই নেই। কিছু আপলোড করুন !",
|
||||
"Download" => "ডাউনলোড",
|
||||
"Upload too large" => "আপলোডের আকার অনেক বড়",
|
||||
"Files are being scanned, please wait." => "ফাইল স্ক্যান করা হচ্ছে, দয়া করে অপেক্ষা করুন।",
|
||||
"Upload too large" => "আপলোডের আকারটি অনেক বড়",
|
||||
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "আপনি এই সার্ভারে আপলোড করার জন্য অনুমোদিত ফাইলের সর্বোচ্চ আকারের চেয়ে বৃহদাকার ফাইল আপলোড করার চেষ্টা করছেন ",
|
||||
"Files are being scanned, please wait." => "ফাইলগুলো স্ক্যান করা হচ্ছে, দয়া করে অপেক্ষা করুন।",
|
||||
"Current scanning" => "বর্তমান স্ক্যানিং"
|
||||
);
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Could not move %s - File with this name already exists" => "No s'ha pogut moure %s - Ja hi ha un fitxer amb aquest nom",
|
||||
"Could not move %s" => " No s'ha pogut moure %s",
|
||||
"Unable to rename file" => "No es pot canviar el nom del fitxer",
|
||||
"No file was uploaded. Unknown error" => "No s'ha carregat cap fitxer. Error desconegut",
|
||||
"There is no error, the file uploaded with success" => "El fitxer s'ha pujat correctament",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "L’arxiu que voleu carregar supera el màxim definit en la directiva upload_max_filesize del php.ini:",
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Could not move %s - File with this name already exists" => "Nelze přesunout %s - existuje soubor se stejným názvem",
|
||||
"Could not move %s" => "Nelze přesunout %s",
|
||||
"Unable to rename file" => "Nelze přejmenovat soubor",
|
||||
"No file was uploaded. Unknown error" => "Soubor nebyl odeslán. Neznámá chyba",
|
||||
"There is no error, the file uploaded with success" => "Soubor byl odeslán úspěšně",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Odesílaný soubor přesahuje velikost upload_max_filesize povolenou v php.ini:",
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Could not move %s - File with this name already exists" => "Konnte %s nicht verschieben - Datei mit diesem Namen existiert bereits.",
|
||||
"Could not move %s" => "Konnte %s nicht verschieben",
|
||||
"Unable to rename file" => "Konnte Datei nicht umbenennen",
|
||||
"No file was uploaded. Unknown error" => "Keine Datei hochgeladen. Unbekannter Fehler",
|
||||
"There is no error, the file uploaded with success" => "Datei fehlerfrei hochgeladen.",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Die hochgeladene Datei überschreitet die upload_max_filesize Vorgabe in php.ini",
|
||||
|
@ -8,7 +11,7 @@
|
|||
"Missing a temporary folder" => "Temporärer Ordner fehlt.",
|
||||
"Failed to write to disk" => "Fehler beim Schreiben auf die Festplatte",
|
||||
"Not enough space available" => "Nicht genug Speicherplatz verfügbar",
|
||||
"Invalid directory." => "Ungültiges Verzeichnis.",
|
||||
"Invalid directory." => "Ungültiges Verzeichnis",
|
||||
"Files" => "Dateien",
|
||||
"Unshare" => "Nicht mehr freigeben",
|
||||
"Delete" => "Löschen",
|
||||
|
@ -22,8 +25,8 @@
|
|||
"replaced {new_name} with {old_name}" => "{old_name} ersetzt durch {new_name}",
|
||||
"unshared {files}" => "Freigabe von {files} aufgehoben",
|
||||
"deleted {files}" => "{files} gelöscht",
|
||||
"'.' is an invalid file name." => "'.' ist kein gültiger Dateiname.",
|
||||
"File name cannot be empty." => "Der Dateiname darf nicht leer sein.",
|
||||
"'.' is an invalid file name." => "'.' ist kein gültiger Dateiname",
|
||||
"File name cannot be empty." => "Der Dateiname darf nicht leer sein",
|
||||
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ungültiger Name, '\\', '/', '<', '>', ':', '\"', '|', '?' und '*' sind nicht zulässig.",
|
||||
"generating ZIP-file, it may take some time." => "Erstelle ZIP-Datei. Dies kann eine Weile dauern.",
|
||||
"Unable to upload your file as it is a directory or has 0 bytes" => "Deine Datei kann nicht hochgeladen werden, da sie entweder ein Verzeichnis oder 0 Bytes groß ist.",
|
||||
|
@ -34,7 +37,8 @@
|
|||
"{count} files uploading" => "{count} Dateien werden hochgeladen",
|
||||
"Upload cancelled." => "Upload abgebrochen.",
|
||||
"File upload is in progress. Leaving the page now will cancel the upload." => "Dateiupload läuft. Wenn Du die Seite jetzt verlässt, wird der Upload abgebrochen.",
|
||||
"URL cannot be empty." => "Die URL darf nicht leer sein.",
|
||||
"URL cannot be empty." => "Die URL darf nicht leer sein",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ungültiger Verzeichnisname. Die Nutzung von \"Shared\" ist ownCloud vorbehalten.",
|
||||
"{count} files scanned" => "{count} Dateien wurden gescannt",
|
||||
"error while scanning" => "Fehler beim Scannen",
|
||||
"Name" => "Name",
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Could not move %s - File with this name already exists" => "Konnte %s nicht verschieben - Datei mit diesem Namen existiert bereits",
|
||||
"Could not move %s" => "Konnte %s nicht verschieben",
|
||||
"Unable to rename file" => "Konnte Datei nicht umbenennen",
|
||||
"No file was uploaded. Unknown error" => "Keine Datei hochgeladen. Unbekannter Fehler",
|
||||
"There is no error, the file uploaded with success" => "Es sind keine Fehler aufgetreten. Die Datei wurde erfolgreich hochgeladen.",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Die hochgeladene Datei überschreitet die upload_max_filesize Vorgabe in php.ini",
|
||||
|
@ -35,6 +38,7 @@
|
|||
"Upload cancelled." => "Upload abgebrochen.",
|
||||
"File upload is in progress. Leaving the page now will cancel the upload." => "Der Dateiupload läuft. Wenn Sie die Seite jetzt verlassen, wird der Upload abgebrochen.",
|
||||
"URL cannot be empty." => "Die URL darf nicht leer sein.",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ungültiger Verzeichnisname. Die Nutzung von \"Shared\" ist ownCloud vorbehalten",
|
||||
"{count} files scanned" => "{count} Dateien wurden gescannt",
|
||||
"error while scanning" => "Fehler beim Scannen",
|
||||
"Name" => "Name",
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Could not move %s - File with this name already exists" => "No se puede mover %s - Ya existe un archivo con ese nombre",
|
||||
"Could not move %s" => "No se puede mover %s",
|
||||
"Unable to rename file" => "No se puede renombrar el archivo",
|
||||
"No file was uploaded. Unknown error" => "Fallo no se subió el fichero",
|
||||
"There is no error, the file uploaded with success" => "No se ha producido ningún error, el archivo se ha subido con éxito",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "El archivo que intentas subir sobrepasa el tamaño definido por la variable upload_max_filesize en php.ini",
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Could not move %s - File with this name already exists" => "Kohteen %s siirto ei onnistunut - Tiedosto samalla nimellä on jo olemassa",
|
||||
"Could not move %s" => "Kohteen %s siirto ei onnistunut",
|
||||
"Unable to rename file" => "Tiedoston nimeäminen uudelleen ei onnistunut",
|
||||
"No file was uploaded. Unknown error" => "Tiedostoa ei lähetetty. Tuntematon virhe",
|
||||
"There is no error, the file uploaded with success" => "Ei virheitä, tiedosto lähetettiin onnistuneesti",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Lähetetty tiedosto ylittää HTML-lomakkeessa määritetyn MAX_FILE_SIZE-arvon ylärajan",
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Could not move %s - File with this name already exists" => "Impossible de déplacer %s - Un fichier possédant ce nom existe déjà",
|
||||
"Could not move %s" => "Impossible de déplacer %s",
|
||||
"Unable to rename file" => "Impossible de renommer le fichier",
|
||||
"No file was uploaded. Unknown error" => "Aucun fichier n'a été chargé. Erreur inconnue",
|
||||
"There is no error, the file uploaded with success" => "Aucune erreur, le fichier a été téléversé avec succès",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Le fichier envoyé dépasse la valeur upload_max_filesize située dans le fichier php.ini:",
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Could not move %s - File with this name already exists" => "Non se moveu %s - Xa existe un ficheiro con ese nome.",
|
||||
"Could not move %s" => "Non se puido mover %s",
|
||||
"Unable to rename file" => "Non se pode renomear o ficheiro",
|
||||
"No file was uploaded. Unknown error" => "Non se subiu ningún ficheiro. Erro descoñecido.",
|
||||
"There is no error, the file uploaded with success" => "Non hai erros. O ficheiro enviouse correctamente",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "O ficheiro subido excede a directiva indicada polo tamaño_máximo_de_subida de php.ini",
|
||||
|
@ -22,6 +25,8 @@
|
|||
"replaced {new_name} with {old_name}" => "substituír {new_name} polo {old_name}",
|
||||
"unshared {files}" => "{files} sen compartir",
|
||||
"deleted {files}" => "{files} eliminados",
|
||||
"'.' is an invalid file name." => "'.' é un nonme de ficheiro non válido",
|
||||
"File name cannot be empty." => "O nome de ficheiro non pode estar baldeiro",
|
||||
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nome non válido, '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' non se permiten.",
|
||||
"generating ZIP-file, it may take some time." => "xerando un ficheiro ZIP, o que pode levar un anaco.",
|
||||
"Unable to upload your file as it is a directory or has 0 bytes" => "Non se puido subir o ficheiro pois ou é un directorio ou ten 0 bytes",
|
||||
|
@ -33,6 +38,7 @@
|
|||
"Upload cancelled." => "Subida cancelada.",
|
||||
"File upload is in progress. Leaving the page now will cancel the upload." => "A subida do ficheiro está en curso. Saír agora da páxina cancelará a subida.",
|
||||
"URL cannot be empty." => "URL non pode quedar baleiro.",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nome de cartafol non válido. O uso de 'Shared' está reservado por Owncloud",
|
||||
"{count} files scanned" => "{count} ficheiros escaneados",
|
||||
"error while scanning" => "erro mentres analizaba",
|
||||
"Name" => "Nome",
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Could not move %s - File with this name already exists" => "Gat ekki fært %s - Skrá með þessu nafni er þegar til",
|
||||
"Could not move %s" => "Gat ekki fært %s",
|
||||
"Unable to rename file" => "Gat ekki endurskýrt skrá",
|
||||
"No file was uploaded. Unknown error" => "Engin skrá var send inn. Óþekkt villa.",
|
||||
"There is no error, the file uploaded with success" => "Engin villa, innsending heppnaðist",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Innsend skrá er stærri en upload_max stillingin í php.ini:",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Innsenda skráin er stærri en MAX_FILE_SIZE sem skilgreint er í HTML sniðinu.",
|
||||
|
@ -6,6 +10,8 @@
|
|||
"No file was uploaded" => "Engin skrá skilaði sér",
|
||||
"Missing a temporary folder" => "Vantar bráðabirgðamöppu",
|
||||
"Failed to write to disk" => "Tókst ekki að skrifa á disk",
|
||||
"Not enough space available" => "Ekki nægt pláss tiltækt",
|
||||
"Invalid directory." => "Ógild mappa.",
|
||||
"Files" => "Skrár",
|
||||
"Unshare" => "Hætta deilingu",
|
||||
"Delete" => "Eyða",
|
||||
|
@ -19,6 +25,8 @@
|
|||
"replaced {new_name} with {old_name}" => "yfirskrifaði {new_name} með {old_name}",
|
||||
"unshared {files}" => "Hætti við deilingu á {files}",
|
||||
"deleted {files}" => "eyddi {files}",
|
||||
"'.' is an invalid file name." => "'.' er ekki leyfilegt nafn.",
|
||||
"File name cannot be empty." => "Nafn skráar má ekki vera tómt",
|
||||
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ógilt nafn, táknin '\\', '/', '<', '>', ':', '\"', '|', '?' og '*' eru ekki leyfð.",
|
||||
"generating ZIP-file, it may take some time." => "bý til ZIP skrá, það gæti tekið smá stund.",
|
||||
"Unable to upload your file as it is a directory or has 0 bytes" => "Innsending á skrá mistókst, hugsanlega sendir þú möppu eða skráin er 0 bæti.",
|
||||
|
@ -30,6 +38,7 @@
|
|||
"Upload cancelled." => "Hætt við innsendingu.",
|
||||
"File upload is in progress. Leaving the page now will cancel the upload." => "Innsending í gangi. Ef þú ferð af þessari síðu mun innsending misheppnast.",
|
||||
"URL cannot be empty." => "Vefslóð má ekki vera tóm.",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Óleyfilegt nafn á möppu. Nafnið 'Shared' er frátekið fyrir Owncloud",
|
||||
"{count} files scanned" => "{count} skrár skimaðar",
|
||||
"error while scanning" => "villa við skimun",
|
||||
"Name" => "Nafn",
|
||||
|
@ -53,9 +62,9 @@
|
|||
"From link" => "Af tengli",
|
||||
"Upload" => "Senda inn",
|
||||
"Cancel upload" => "Hætta við innsendingu",
|
||||
"Nothing in here. Upload something!" => "Ekkert hér. Sendu eitthvað inn!",
|
||||
"Nothing in here. Upload something!" => "Ekkert hér. Settu eitthvað inn!",
|
||||
"Download" => "Niðurhal",
|
||||
"Upload too large" => "Innsend skrá of stór",
|
||||
"Upload too large" => "Innsend skrá er of stór",
|
||||
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Skrárnar sem þú ert að senda inn eru stærri en hámarks innsendingarstærð á þessum netþjóni.",
|
||||
"Files are being scanned, please wait." => "Verið er að skima skrár, vinsamlegast hinkraðu.",
|
||||
"Current scanning" => "Er að skima"
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Could not move %s - File with this name already exists" => "Impossibile spostare %s - un file con questo nome esiste già",
|
||||
"Could not move %s" => "Impossibile spostare %s",
|
||||
"Unable to rename file" => "Impossibile rinominare il file",
|
||||
"No file was uploaded. Unknown error" => "Nessun file è stato inviato. Errore sconosciuto",
|
||||
"There is no error, the file uploaded with success" => "Non ci sono errori, file caricato con successo",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Il file caricato supera la direttiva upload_max_filesize in php.ini:",
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Could not move %s - File with this name already exists" => "%s を移動できませんでした ― この名前のファイルはすでに存在します",
|
||||
"Could not move %s" => "%s を移動できませんでした",
|
||||
"Unable to rename file" => "ファイル名の変更ができません",
|
||||
"No file was uploaded. Unknown error" => "ファイルは何もアップロードされていません。不明なエラー",
|
||||
"There is no error, the file uploaded with success" => "エラーはありません。ファイルのアップロードは成功しました",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "アップロードされたファイルはphp.ini の upload_max_filesize に設定されたサイズを超えています:",
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Could not move %s - File with this name already exists" => "%s 항목을 이동시키지 못하였음 - 파일 이름이 이미 존재함",
|
||||
"Could not move %s" => "%s 항목을 이딩시키지 못하였음",
|
||||
"Unable to rename file" => "파일 이름바꾸기 할 수 없음",
|
||||
"No file was uploaded. Unknown error" => "파일이 업로드되지 않았습니다. 알 수 없는 오류입니다",
|
||||
"There is no error, the file uploaded with success" => "업로드에 성공하였습니다.",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "업로드한 파일이 php.ini의 upload_max_filesize보다 큽니다:",
|
||||
|
@ -35,6 +38,7 @@
|
|||
"Upload cancelled." => "업로드가 취소되었습니다.",
|
||||
"File upload is in progress. Leaving the page now will cancel the upload." => "파일 업로드가 진행 중입니다. 이 페이지를 벗어나면 업로드가 취소됩니다.",
|
||||
"URL cannot be empty." => "URL을 입력해야 합니다.",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "폴더 이름이 유효하지 않습니다. ",
|
||||
"{count} files scanned" => "파일 {count}개 검색됨",
|
||||
"error while scanning" => "검색 중 오류 발생",
|
||||
"Name" => "이름",
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Could not move %s - File with this name already exists" => "Não foi possível mover o ficheiro %s - Já existe um ficheiro com esse nome",
|
||||
"Could not move %s" => "Não foi possível move o ficheiro %s",
|
||||
"Unable to rename file" => "Não foi possível renomear o ficheiro",
|
||||
"No file was uploaded. Unknown error" => "Nenhum ficheiro foi carregado. Erro desconhecido",
|
||||
"There is no error, the file uploaded with success" => "Sem erro, ficheiro enviado com sucesso",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "O ficheiro enviado excede o limite permitido na directiva do php.ini upload_max_filesize",
|
||||
|
@ -35,6 +38,7 @@
|
|||
"Upload cancelled." => "O envio foi cancelado.",
|
||||
"File upload is in progress. Leaving the page now will cancel the upload." => "Envio de ficheiro em progresso. Irá cancelar o envio se sair da página agora.",
|
||||
"URL cannot be empty." => "O URL não pode estar vazio.",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nome de pasta inválido. O Uso de 'shared' é reservado para o ownCloud",
|
||||
"{count} files scanned" => "{count} ficheiros analisados",
|
||||
"error while scanning" => "erro ao analisar",
|
||||
"Name" => "Nome",
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Could not move %s" => "Nu s-a putut muta %s",
|
||||
"Unable to rename file" => "Nu s-a putut redenumi fișierul",
|
||||
"No file was uploaded. Unknown error" => "Nici un fișier nu a fost încărcat. Eroare necunoscută",
|
||||
"There is no error, the file uploaded with success" => "Nicio eroare, fișierul a fost încărcat cu succes",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Fisierul incarcat depaseste upload_max_filesize permisi in php.ini: ",
|
||||
|
@ -7,6 +9,8 @@
|
|||
"No file was uploaded" => "Niciun fișier încărcat",
|
||||
"Missing a temporary folder" => "Lipsește un dosar temporar",
|
||||
"Failed to write to disk" => "Eroare la scriere pe disc",
|
||||
"Not enough space available" => "Nu este suficient spațiu disponibil",
|
||||
"Invalid directory." => "Director invalid.",
|
||||
"Files" => "Fișiere",
|
||||
"Unshare" => "Anulează partajarea",
|
||||
"Delete" => "Șterge",
|
||||
|
@ -20,6 +24,8 @@
|
|||
"replaced {new_name} with {old_name}" => "{new_name} inlocuit cu {old_name}",
|
||||
"unshared {files}" => "nedistribuit {files}",
|
||||
"deleted {files}" => "Sterse {files}",
|
||||
"'.' is an invalid file name." => "'.' este un nume invalid de fișier.",
|
||||
"File name cannot be empty." => "Numele fișierului nu poate rămâne gol.",
|
||||
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nume invalid, '\\', '/', '<', '>', ':', '\"', '|', '?' si '*' nu sunt permise.",
|
||||
"generating ZIP-file, it may take some time." => "se generază fișierul ZIP, va dura ceva timp.",
|
||||
"Unable to upload your file as it is a directory or has 0 bytes" => "Nu s-a putut încărca fișierul tău deoarece pare să fie un director sau are 0 bytes.",
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Could not move %s - File with this name already exists" => "Невозможно переместить %s - файл с таким именем уже существует",
|
||||
"Could not move %s" => "Невозможно переместить %s",
|
||||
"Unable to rename file" => "Невозможно переименовать файл",
|
||||
"No file was uploaded. Unknown error" => "Файл не был загружен. Неизвестная ошибка",
|
||||
"There is no error, the file uploaded with success" => "Файл успешно загружен",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Файл превышает размер установленный upload_max_filesize в php.ini:",
|
||||
|
@ -7,6 +10,8 @@
|
|||
"No file was uploaded" => "Файл не был загружен",
|
||||
"Missing a temporary folder" => "Невозможно найти временную папку",
|
||||
"Failed to write to disk" => "Ошибка записи на диск",
|
||||
"Not enough space available" => "Недостаточно свободного места",
|
||||
"Invalid directory." => "Неправильный каталог.",
|
||||
"Files" => "Файлы",
|
||||
"Unshare" => "Отменить публикацию",
|
||||
"Delete" => "Удалить",
|
||||
|
@ -20,6 +25,8 @@
|
|||
"replaced {new_name} with {old_name}" => "заменено {new_name} на {old_name}",
|
||||
"unshared {files}" => "не опубликованные {files}",
|
||||
"deleted {files}" => "удаленные {files}",
|
||||
"'.' is an invalid file name." => "'.' - неправильное имя файла.",
|
||||
"File name cannot be empty." => "Имя файла не может быть пустым.",
|
||||
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Неправильное имя, '\\', '/', '<', '>', ':', '\"', '|', '?' и '*' недопустимы.",
|
||||
"generating ZIP-file, it may take some time." => "создание ZIP-файла, это может занять некоторое время.",
|
||||
"Unable to upload your file as it is a directory or has 0 bytes" => "Не удается загрузить файл размером 0 байт в каталог",
|
||||
|
@ -31,6 +38,7 @@
|
|||
"Upload cancelled." => "Загрузка отменена.",
|
||||
"File upload is in progress. Leaving the page now will cancel the upload." => "Файл в процессе загрузки. Покинув страницу вы прервёте загрузку.",
|
||||
"URL cannot be empty." => "Ссылка не может быть пустой.",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Неправильное имя каталога. Имя 'Shared' зарезервировано.",
|
||||
"{count} files scanned" => "{count} файлов просканировано",
|
||||
"error while scanning" => "ошибка во время санирования",
|
||||
"Name" => "Название",
|
||||
|
|
|
@ -1,9 +1,12 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"No file was uploaded. Unknown error" => "沒有檔案被上傳. 未知的錯誤.",
|
||||
"Could not move %s - File with this name already exists" => "無法移動 %s - 同名的檔案已經存在",
|
||||
"Could not move %s" => "無法移動 %s",
|
||||
"Unable to rename file" => "無法重新命名檔案",
|
||||
"No file was uploaded. Unknown error" => "沒有檔案被上傳。未知的錯誤。",
|
||||
"There is no error, the file uploaded with success" => "無錯誤,檔案上傳成功",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "上傳的檔案大小超過 php.ini 當中 upload_max_filesize 參數的設定:",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "上傳黨案的超過 HTML 表單中指定 MAX_FILE_SIZE 限制",
|
||||
"The uploaded file was only partially uploaded" => "只有部分檔案被上傳",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "上傳的檔案大小超過 HTML 表單中 MAX_FILE_SIZE 的限制",
|
||||
"The uploaded file was only partially uploaded" => "只有檔案的一部分被上傳",
|
||||
"No file was uploaded" => "無已上傳檔案",
|
||||
"Missing a temporary folder" => "遺失暫存資料夾",
|
||||
"Failed to write to disk" => "寫入硬碟失敗",
|
||||
|
@ -20,12 +23,12 @@
|
|||
"replaced {new_name}" => "已取代 {new_name}",
|
||||
"undo" => "復原",
|
||||
"replaced {new_name} with {old_name}" => "使用 {new_name} 取代 {old_name}",
|
||||
"unshared {files}" => "停止分享 {files}",
|
||||
"unshared {files}" => "已取消分享 {files}",
|
||||
"deleted {files}" => "已刪除 {files}",
|
||||
"'.' is an invalid file name." => "'.' 是不合法的檔名。",
|
||||
"File name cannot be empty." => "檔名不能為空。",
|
||||
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "檔名不合法,不允許 '\\', '/', '<', '>', ':', '\"', '|', '?' 和 '*' 。",
|
||||
"generating ZIP-file, it may take some time." => "產生壓縮檔, 它可能需要一段時間.",
|
||||
"generating ZIP-file, it may take some time." => "產生 ZIP 壓縮檔,這可能需要一段時間。",
|
||||
"Unable to upload your file as it is a directory or has 0 bytes" => "無法上傳您的檔案因為它可能是一個目錄或檔案大小為0",
|
||||
"Upload Error" => "上傳發生錯誤",
|
||||
"Close" => "關閉",
|
||||
|
@ -33,8 +36,8 @@
|
|||
"1 file uploading" => "1 個檔案正在上傳",
|
||||
"{count} files uploading" => "{count} 個檔案正在上傳",
|
||||
"Upload cancelled." => "上傳取消",
|
||||
"File upload is in progress. Leaving the page now will cancel the upload." => "檔案上傳中. 離開此頁面將會取消上傳.",
|
||||
"URL cannot be empty." => "URL不能為空白.",
|
||||
"File upload is in progress. Leaving the page now will cancel the upload." => "檔案上傳中。離開此頁面將會取消上傳。",
|
||||
"URL cannot be empty." => "URL 不能為空白.",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "無效的資料夾名稱,'Shared' 的使用被 Owncloud 保留",
|
||||
"{count} files scanned" => "{count} 個檔案已掃描",
|
||||
"error while scanning" => "掃描時發生錯誤",
|
||||
|
@ -46,12 +49,12 @@
|
|||
"1 file" => "1 個檔案",
|
||||
"{count} files" => "{count} 個檔案",
|
||||
"File handling" => "檔案處理",
|
||||
"Maximum upload size" => "最大上傳容量",
|
||||
"max. possible: " => "最大允許: ",
|
||||
"Needed for multi-file and folder downloads." => "針對多檔案和目錄下載是必填的",
|
||||
"Maximum upload size" => "最大上傳檔案大小",
|
||||
"max. possible: " => "最大允許:",
|
||||
"Needed for multi-file and folder downloads." => "針對多檔案和目錄下載是必填的。",
|
||||
"Enable ZIP-download" => "啟用 Zip 下載",
|
||||
"0 is unlimited" => "0代表沒有限制",
|
||||
"Maximum input size for ZIP files" => "針對ZIP檔案最大輸入大小",
|
||||
"Maximum input size for ZIP files" => "針對 ZIP 檔案最大輸入大小",
|
||||
"Save" => "儲存",
|
||||
"New" => "新增",
|
||||
"Text file" => "文字檔",
|
||||
|
@ -59,10 +62,10 @@
|
|||
"From link" => "從連結",
|
||||
"Upload" => "上傳",
|
||||
"Cancel upload" => "取消上傳",
|
||||
"Nothing in here. Upload something!" => "沒有任何東西。請上傳內容!",
|
||||
"Nothing in here. Upload something!" => "沒有任何東西。請上傳內容!",
|
||||
"Download" => "下載",
|
||||
"Upload too large" => "上傳過大",
|
||||
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "你試圖上傳的檔案已超過伺服器的最大容量限制。 ",
|
||||
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "您試圖上傳的檔案已超過伺服器的最大檔案大小限制。 ",
|
||||
"Files are being scanned, please wait." => "正在掃描檔案,請稍等。",
|
||||
"Current scanning" => "目前掃描"
|
||||
);
|
||||
|
|
6
apps/files_encryption/l10n/bn_BD.php
Normal file
6
apps/files_encryption/l10n/bn_BD.php
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Encryption" => "সংকেতায়ন",
|
||||
"Enable Encryption" => "সংকেতায়ন সক্রিয় কর",
|
||||
"None" => "কোনটিই নয়",
|
||||
"Exclude the following file types from encryption" => "সংকেতায়ন থেকে নিম্নোক্ত ধরণসমূহ বাদ দাও"
|
||||
);
|
|
@ -1,6 +1,24 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Backend" => "প্রশাসক",
|
||||
"Groups" => "গোষ্ঠী",
|
||||
"Users" => "ব্যবহারকারিবৃন্দ",
|
||||
"Delete" => "মুছে ফেল"
|
||||
"Access granted" => "অধিগমনের অনুমতি প্রদান করা হলো",
|
||||
"Error configuring Dropbox storage" => "Dropbox সংরক্ষণাগার নির্ধারণ করতে সমস্যা ",
|
||||
"Grant access" => "অধিগমনের অনুমতি প্রদান কর",
|
||||
"Fill out all required fields" => "আবশ্যিক সমস্ত ক্ষেত্র পূরণ করুন",
|
||||
"Please provide a valid Dropbox app key and secret." => "দয়া করে সঠিক এবং বৈধ Dropbox app key and secret প্রদান করুন।",
|
||||
"Error configuring Google Drive storage" => "Google Drive সংরক্ষণাগার নির্ধারণ করতে সমস্যা ",
|
||||
"External Storage" => "বাহ্যিক সংরক্ষণাগার",
|
||||
"Mount point" => "মাউন্ট পয়েন্ট",
|
||||
"Backend" => "পশ্চাদপট",
|
||||
"Configuration" => "কনফিগারেসন",
|
||||
"Options" => "বিকল্পসমূহ",
|
||||
"Applicable" => "প্রযোজ্য",
|
||||
"Add mount point" => "মাউন্ট পয়েন্ট যোগ কর",
|
||||
"None set" => "কোনটিই নির্ধারণ করা হয় নি",
|
||||
"All Users" => "সমস্ত ব্যবহারকারী",
|
||||
"Groups" => "গোষ্ঠীসমূহ",
|
||||
"Users" => "ব্যবহারকারী",
|
||||
"Delete" => "মুছে ফেল",
|
||||
"Enable User External Storage" => "ব্যবহারকারীর বাহ্যিক সংরক্ষণাগার সক্রিয় কর",
|
||||
"Allow users to mount their own external storage" => "ব্যবহারকারীদেরকে তাদের নিজস্ব বাহ্যিক সংরক্ষনাগার সাউন্ট করতে অনুমোদন দাও",
|
||||
"SSL root certificates" => "SSL রুট সনদপত্র",
|
||||
"Import Root Certificate" => "রুট সনদপত্রটি আমদানি করুন"
|
||||
);
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Password" => "কূটশব্দ",
|
||||
"Submit" => "পাঠাও",
|
||||
"Submit" => "জমা দাও",
|
||||
"%s shared the folder %s with you" => "%s আপনার সাথে %s ফোল্ডারটি ভাগাভাগি করেছেন",
|
||||
"%s shared the file %s with you" => "%s আপনার সাথে %s ফাইলটি ভাগাভাগি করেছেন",
|
||||
"Download" => "ডাউনলোড",
|
||||
"web services under your control" => "ওয়েব সেবাসমূহ এখন আপনার হাতের মুঠোয়"
|
||||
"No preview available for" => "এর জন্য কোন প্রাকবীক্ষণ সুলভ নয়",
|
||||
"web services under your control" => "ওয়েব সার্ভিস আপনার হাতের মুঠোয়"
|
||||
);
|
||||
|
|
|
@ -7,7 +7,7 @@ OC_App::loadApps();
|
|||
// support will be removed in OC 5.0,a
|
||||
if (isset($_GET['token'])) {
|
||||
unset($_GET['file']);
|
||||
$qry = \OC_DB::prepare('SELECT `source` FROM `*PREFIX*sharing` WHERE `target` = ? LIMIT 1');
|
||||
$qry = \OC_DB::prepare('SELECT `source` FROM `*PREFIX*sharing` WHERE `target` = ?', 1);
|
||||
$filepath = $qry->execute(array($_GET['token']))->fetchOne();
|
||||
if(isset($filepath)) {
|
||||
$info = OC_FileCache_Cached::get($filepath, '');
|
||||
|
@ -16,7 +16,9 @@ if (isset($_GET['token'])) {
|
|||
} else {
|
||||
$_GET['file'] = $filepath;
|
||||
}
|
||||
\OCP\Util::writeLog('files_sharing', 'You have files that are shared by link originating from ownCloud 4.0. Redistribute the new links, because backwards compatibility will be removed in ownCloud 5.', \OCP\Util::WARN);
|
||||
\OCP\Util::writeLog('files_sharing', 'You have files that are shared by link originating from ownCloud 4.0.'
|
||||
.' Redistribute the new links, because backwards compatibility will be removed in ownCloud 5.',
|
||||
\OCP\Util::WARN);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -27,7 +29,10 @@ function getID($path) {
|
|||
$path_parts = explode('/', $path, 5);
|
||||
$user = $path_parts[1];
|
||||
$intPath = '/'.$path_parts[4];
|
||||
$query = \OC_DB::prepare('SELECT `item_source` FROM `*PREFIX*share` WHERE `uid_owner` = ? AND `file_target` = ? ');
|
||||
$query = \OC_DB::prepare('SELECT `item_source`'
|
||||
.' FROM `*PREFIX*share`'
|
||||
.' WHERE `uid_owner` = ?'
|
||||
.' AND `file_target` = ? ');
|
||||
$result = $query->execute(array($user, $intPath));
|
||||
$row = $result->fetchRow();
|
||||
$fileSource = $row['item_source'];
|
||||
|
@ -69,7 +74,8 @@ if (isset($_GET['t'])) {
|
|||
|
||||
//if this is a reshare check the file owner also exists
|
||||
if ($shareOwner != $fileOwner && ! OCP\User::userExists($fileOwner)) {
|
||||
OCP\Util::writeLog('share', 'original file owner '.$fileOwner.' does not exist for share '.$linkItem['id'], \OCP\Util::ERROR);
|
||||
OCP\Util::writeLog('share', 'original file owner '.$fileOwner
|
||||
.' does not exist for share '.$linkItem['id'], \OCP\Util::ERROR);
|
||||
header('HTTP/1.0 404 Not Found');
|
||||
$tmpl = new OCP\Template('', '404', 'guest');
|
||||
$tmpl->printPage();
|
||||
|
@ -134,7 +140,8 @@ if ($linkItem) {
|
|||
// Check Password
|
||||
$forcePortable = (CRYPT_BLOWFISH != 1);
|
||||
$hasher = new PasswordHash(8, $forcePortable);
|
||||
if (!($hasher->CheckPassword($password.OC_Config::getValue('passwordsalt', ''), $linkItem['share_with']))) {
|
||||
if (!($hasher->CheckPassword($password.OC_Config::getValue('passwordsalt', ''),
|
||||
$linkItem['share_with']))) {
|
||||
$tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest');
|
||||
$tmpl->assign('URL', $url);
|
||||
$tmpl->assign('error', true);
|
||||
|
@ -145,19 +152,25 @@ if ($linkItem) {
|
|||
$_SESSION['public_link_authenticated'] = $linkItem['id'];
|
||||
}
|
||||
} else {
|
||||
OCP\Util::writeLog('share', 'Unknown share type '.$linkItem['share_type'].' for share id '.$linkItem['id'], \OCP\Util::ERROR);
|
||||
OCP\Util::writeLog('share', 'Unknown share type '.$linkItem['share_type']
|
||||
.' for share id '.$linkItem['id'], \OCP\Util::ERROR);
|
||||
header('HTTP/1.0 404 Not Found');
|
||||
$tmpl = new OCP\Template('', '404', 'guest');
|
||||
$tmpl->printPage();
|
||||
exit();
|
||||
}
|
||||
// Check if item id is set in session
|
||||
} else if (!isset($_SESSION['public_link_authenticated']) || $_SESSION['public_link_authenticated'] !== $linkItem['id']) {
|
||||
// Prompt for password
|
||||
$tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest');
|
||||
$tmpl->assign('URL', $url);
|
||||
$tmpl->printPage();
|
||||
exit();
|
||||
|
||||
} else {
|
||||
// Check if item id is set in session
|
||||
if (!isset($_SESSION['public_link_authenticated'])
|
||||
|| $_SESSION['public_link_authenticated'] !== $linkItem['id']
|
||||
) {
|
||||
// Prompt for password
|
||||
$tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest');
|
||||
$tmpl->assign('URL', $url);
|
||||
$tmpl->printPage();
|
||||
exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
$basePath = substr($pathAndUser['path'], strlen('/'.$fileOwner.'/files'));
|
||||
|
@ -203,7 +216,9 @@ if ($linkItem) {
|
|||
$getPath = '';
|
||||
}
|
||||
//
|
||||
$urlLinkIdentifiers= (isset($token)?'&t='.$token:'').(isset($_GET['dir'])?'&dir='.$_GET['dir']:'').(isset($_GET['file'])?'&file='.$_GET['file']:'');
|
||||
$urlLinkIdentifiers= (isset($token)?'&t='.$token:'')
|
||||
.(isset($_GET['dir'])?'&dir='.$_GET['dir']:'')
|
||||
.(isset($_GET['file'])?'&file='.$_GET['file']:'');
|
||||
// Show file list
|
||||
if (OC_Filesystem::is_dir($path)) {
|
||||
OCP\Util::addStyle('files', 'files');
|
||||
|
@ -260,13 +275,16 @@ if ($linkItem) {
|
|||
$folder->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
|
||||
$tmpl->assign('folder', $folder->fetchPage(), false);
|
||||
$tmpl->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
|
||||
$tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').$urlLinkIdentifiers.'&download&path='.urlencode($getPath));
|
||||
$tmpl->assign('downloadURL', OCP\Util::linkToPublic('files')
|
||||
.$urlLinkIdentifiers.'&download&path='.urlencode($getPath));
|
||||
} else {
|
||||
// Show file preview if viewer is available
|
||||
if ($type == 'file') {
|
||||
$tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').$urlLinkIdentifiers.'&download');
|
||||
$tmpl->assign('downloadURL', OCP\Util::linkToPublic('files')
|
||||
.$urlLinkIdentifiers.'&download');
|
||||
} else {
|
||||
$tmpl->assign('downloadURL', OCP\Util::linkToPublic('files').$urlLinkIdentifiers.'&download&path='.urlencode($getPath));
|
||||
$tmpl->assign('downloadURL', OCP\Util::linkToPublic('files')
|
||||
.$urlLinkIdentifiers.'&download&path='.urlencode($getPath));
|
||||
}
|
||||
}
|
||||
$tmpl->printPage();
|
||||
|
|
|
@ -1,44 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* ownCloud - user_migrate
|
||||
*
|
||||
* @author Sam Tuke
|
||||
* @copyright 2012 Sam Tuke samtuke@owncloud.com
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3 of the License, or any later version.
|
||||
*
|
||||
* This library 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 AFFERO GENERAL PUBLIC LICENSE for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
// TODO: Allow admins to expire versions of any user
|
||||
// TODO: Provide feedback as to how many versions were deleted
|
||||
|
||||
// Check user and app status
|
||||
OCP\JSON::checkLoggedIn();
|
||||
OCP\App::checkAppEnabled('files_versions');
|
||||
OCP\JSON::callCheck();
|
||||
|
||||
$versions = new OCA_Versions\Storage();
|
||||
|
||||
if( $versions->expireAll() ) {
|
||||
|
||||
OCP\JSON::success();
|
||||
die();
|
||||
|
||||
} else {
|
||||
|
||||
OCP\JSON::error();
|
||||
die();
|
||||
|
||||
}
|
|
@ -4,10 +4,9 @@ OCP\JSON::checkAppEnabled('files_versions');
|
|||
$userDirectory = "/".OCP\USER::getUser()."/files";
|
||||
$source = $_GET['source'];
|
||||
|
||||
if( OCA_Versions\Storage::isversioned( $source ) ) {
|
||||
$count = 5; //show the newest revisions
|
||||
if( ($versions = OCA_Versions\Storage::getVersions( $source, $count)) ) {
|
||||
|
||||
$count=5; //show the newest revisions
|
||||
$versions = OCA_Versions\Storage::getVersions( $source, $count);
|
||||
$versionsFormatted = array();
|
||||
|
||||
foreach ( $versions AS $version ) {
|
||||
|
|
|
@ -8,10 +8,9 @@ $userDirectory = "/".OCP\USER::getUser()."/files";
|
|||
$file = $_GET['file'];
|
||||
$revision=(int)$_GET['revision'];
|
||||
|
||||
if( OCA_Versions\Storage::isversioned( $file ) ) {
|
||||
if(OCA_Versions\Storage::rollback( $file, $revision )) {
|
||||
OCP\JSON::success(array("data" => array( "revision" => $revision, "file" => $file )));
|
||||
}else{
|
||||
OCP\JSON::error(array("data" => array( "message" => "Could not revert:" . $file )));
|
||||
}
|
||||
if(OCA_Versions\Storage::rollback( $file, $revision )) {
|
||||
OCP\JSON::success(array("data" => array( "revision" => $revision, "file" => $file )));
|
||||
}else{
|
||||
OCP\JSON::error(array("data" => array( "message" => "Could not revert:" . $file )));
|
||||
}
|
||||
|
||||
|
|
|
@ -52,10 +52,8 @@ if ( isset( $_GET['path'] ) ) {
|
|||
}
|
||||
|
||||
// show the history only if there is something to show
|
||||
if( OCA_Versions\Storage::isversioned( $path ) ) {
|
||||
|
||||
$count = 999; //show the newest revisions
|
||||
$versions = OCA_Versions\Storage::getVersions( $path, $count);
|
||||
$count = 999; //show the newest revisions
|
||||
if( ($versions = OCA_Versions\Storage::getVersions( $path, $count)) ) {
|
||||
|
||||
$tmpl->assign( 'versions', array_reverse( $versions ) );
|
||||
|
||||
|
|
|
@ -1,39 +0,0 @@
|
|||
// TODO: allow the button to be clicked only once
|
||||
|
||||
$( document ).ready(function(){
|
||||
//
|
||||
$( '#expireAllBtn' ).click(
|
||||
|
||||
function( event ) {
|
||||
|
||||
// Prevent page from reloading
|
||||
event.preventDefault();
|
||||
|
||||
// Show loading gif
|
||||
$('.expireAllLoading').show();
|
||||
|
||||
$.getJSON(
|
||||
OC.filePath('files_versions','ajax','expireAll.php'),
|
||||
function(result){
|
||||
if (result.status == 'success') {
|
||||
$('.expireAllLoading').hide();
|
||||
$('#expireAllBtn').html('Expiration successful');
|
||||
} else {
|
||||
|
||||
// Cancel loading
|
||||
$('#expireAllBtn').html('Expiration failed');
|
||||
|
||||
// Show Dialog
|
||||
OC.dialogs.alert(
|
||||
'Something went wrong, your files may not have been expired',
|
||||
'An error has occurred',
|
||||
function(){
|
||||
$('#expireAllBtn').html(t('files_versions', 'Expire all versions')+'<img style="display: none;" class="loading" src="'+OC.filePath('core','img','loading.gif')+'" />');
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
});
|
|
@ -1,3 +1,8 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Enable" => "সক্রিয়"
|
||||
"Expire all versions" => "সমস্ত ভার্সন মেয়াদোত্তীর্ণ",
|
||||
"History" => "ইতিহাস",
|
||||
"Versions" => "ভার্সন",
|
||||
"This will delete all existing backup versions of your files" => "এটি আপনার বিদ্যমান ফাইলের সমস্ত ব্যাক-আপ ভার্সন মুছে ফেলবে।",
|
||||
"Files Versioning" => "ফাইল ভার্সন করা",
|
||||
"Enable" => "সক্রিয় "
|
||||
);
|
||||
|
|
|
@ -39,14 +39,14 @@ class Hooks {
|
|||
* cleanup the versions directory if the actual file gets deleted
|
||||
*/
|
||||
public static function remove_hook($params) {
|
||||
$versions_fileview = \OCP\Files::getStorage('files_versions');
|
||||
$rel_path = $params['path'];
|
||||
$abs_path = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('').$rel_path.'.v';
|
||||
if(Storage::isversioned($rel_path)) {
|
||||
$versions = Storage::getVersions($rel_path);
|
||||
foreach ($versions as $v) {
|
||||
unlink($abs_path . $v['version']);
|
||||
}
|
||||
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
|
||||
|
||||
$versions = new Storage( new \OC_FilesystemView('') );
|
||||
|
||||
$path = $params[\OC_Filesystem::signal_param_path];
|
||||
|
||||
if($path<>'') $versions->delete( $path );
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -58,17 +58,15 @@ class Hooks {
|
|||
* of the stored versions along the actual file
|
||||
*/
|
||||
public static function rename_hook($params) {
|
||||
$versions_fileview = \OCP\Files::getStorage('files_versions');
|
||||
$rel_oldpath = $params['oldpath'];
|
||||
$abs_oldpath = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('').$rel_oldpath.'.v';
|
||||
$abs_newpath = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('').$params['newpath'].'.v';
|
||||
if(Storage::isversioned($rel_oldpath)) {
|
||||
$info=pathinfo($abs_newpath);
|
||||
if(!file_exists($info['dirname'])) mkdir($info['dirname'], 0750, true);
|
||||
$versions = Storage::getVersions($rel_oldpath);
|
||||
foreach ($versions as $v) {
|
||||
rename($abs_oldpath.$v['version'], $abs_newpath.$v['version']);
|
||||
}
|
||||
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
|
||||
|
||||
$versions = new Storage( new \OC_FilesystemView('') );
|
||||
|
||||
$oldpath = $params['oldpath'];
|
||||
$newpath = $params['newpath'];
|
||||
|
||||
if($oldpath<>'' && $newpath<>'') $versions->rename( $oldpath, $newpath );
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<?php
|
||||
/**
|
||||
* Copyright (c) 2012 Frank Karlitschek <frank@owncloud.org>
|
||||
* 2013 Bjoern Schiessle <schiessle@owncloud.com>
|
||||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later.
|
||||
* See the COPYING-README file.
|
||||
|
@ -16,24 +17,23 @@ namespace OCA_Versions;
|
|||
|
||||
class Storage {
|
||||
|
||||
|
||||
// config.php configuration:
|
||||
// - files_versions
|
||||
// - files_versionsfolder
|
||||
// - files_versionsblacklist
|
||||
// - files_versionsmaxfilesize
|
||||
// - files_versionsinterval
|
||||
// - files_versionmaxversions
|
||||
//
|
||||
// todo:
|
||||
// - finish porting to OC_FilesystemView to enable network transparency
|
||||
// - add transparent compression. first test if it´s worth it.
|
||||
|
||||
const DEFAULTENABLED=true;
|
||||
const DEFAULTBLACKLIST='avi mp3 mpg mp4 ctmp';
|
||||
const DEFAULTMAXFILESIZE=1048576; // 10MB
|
||||
const DEFAULTMININTERVAL=60; // 1 min
|
||||
const DEFAULTMAXVERSIONS=50;
|
||||
const DEFAULTMAXSIZE=50; // unit: percentage; 50% of available disk space/quota
|
||||
|
||||
private static $max_versions_per_interval = array(
|
||||
1 => array('intervalEndsAfter' => 10, //first 10sec, one version every 2sec
|
||||
'step' => 2),
|
||||
2 => array('intervalEndsAfter' => 60, //next minute, one version every 10sec
|
||||
'step' => 10),
|
||||
3 => array('intervalEndsAfter' => 3600, //next hour, one version every minute
|
||||
'step' => 60),
|
||||
4 => array('intervalEndsAfter' => 86400, //next 24h, one version every hour
|
||||
'step' => 3600),
|
||||
5 => array('intervalEndsAfter' => 2592000, //next 30days, one version per day
|
||||
'step' => 86400),
|
||||
6 => array('intervalEndsAfter' => -1, //until the end one version per week
|
||||
'step' => 604800),
|
||||
);
|
||||
|
||||
private static function getUidAndFilename($filename)
|
||||
{
|
||||
|
@ -72,40 +72,11 @@ class Storage {
|
|||
return false;
|
||||
}
|
||||
|
||||
// check filetype blacklist
|
||||
$blacklist=explode(' ', \OCP\Config::getSystemValue('files_versionsblacklist', Storage::DEFAULTBLACKLIST));
|
||||
foreach($blacklist as $bl) {
|
||||
$parts=explode('.', $filename);
|
||||
$ext=end($parts);
|
||||
if(strtolower($ext)==$bl) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// we should have a source file to work with
|
||||
if (!$files_view->file_exists($filename)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// check filesize
|
||||
if($files_view->filesize($filename)>\OCP\Config::getSystemValue('files_versionsmaxfilesize', Storage::DEFAULTMAXFILESIZE)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// check mininterval if the file is being modified by the owner (all shared files should be versioned despite mininterval)
|
||||
if ($uid == \OCP\User::getUser()) {
|
||||
$versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
|
||||
$versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
|
||||
$versionsFolderName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('');
|
||||
$matches=glob($versionsName.'.v*');
|
||||
sort($matches);
|
||||
$parts=explode('.v', end($matches));
|
||||
if((end($parts)+Storage::DEFAULTMININTERVAL)>time()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// create all parent folders
|
||||
$info=pathinfo($filename);
|
||||
if(!file_exists($versionsFolderName.'/'.$info['dirname'])) {
|
||||
|
@ -113,14 +84,63 @@ class Storage {
|
|||
}
|
||||
|
||||
// store a new version of a file
|
||||
$users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.time());
|
||||
$result = $users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename));
|
||||
if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) {
|
||||
$versionsSize = self::calculateSize($uid);
|
||||
}
|
||||
$versionsSize += $users_view->filesize('files'.$filename);
|
||||
|
||||
// expire old revisions if necessary
|
||||
Storage::expire($filename);
|
||||
$newSize = self::expire($filename, $versionsSize);
|
||||
|
||||
if ( $newSize != $versionsSize ) {
|
||||
\OCP\Config::setAppValue('files_versions', 'size', $versionsSize);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Delete versions of a file
|
||||
*/
|
||||
public static function delete($filename) {
|
||||
list($uid, $filename) = self::getUidAndFilename($filename);
|
||||
$versions_fileview = new \OC_FilesystemView('/'.$uid .'/files_versions');
|
||||
|
||||
$abs_path = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('').$filename.'.v';
|
||||
if( ($versions = self::getVersions($filename)) ) {
|
||||
if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) {
|
||||
$versionsSize = self::calculateSize($uid);
|
||||
}
|
||||
foreach ($versions as $v) {
|
||||
unlink($abs_path . $v['version']);
|
||||
$versionsSize -= $v['size'];
|
||||
}
|
||||
\OCP\Config::setAppValue('files_versions', 'size', $versionsSize);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* rename versions of a file
|
||||
*/
|
||||
public static function rename($oldpath, $newpath) {
|
||||
list($uid, $oldpath) = self::getUidAndFilename($oldpath);
|
||||
list($uidn, $newpath) = self::getUidAndFilename($newpath);
|
||||
$versions_view = new \OC_FilesystemView('/'.$uid .'/files_versions');
|
||||
$files_view = new \OC_FilesystemView('/'.$uid .'/files');
|
||||
|
||||
if ( $files_view->is_dir($oldpath) && $versions_view->is_dir($oldpath) ) {
|
||||
$versions_view->rename($oldpath, $newpath);
|
||||
} else if ( ($versions = Storage::getVersions($oldpath)) ) {
|
||||
$info=pathinfo($abs_newpath);
|
||||
if(!file_exists($info['dirname'])) mkdir($info['dirname'], 0750, true);
|
||||
$versions = Storage::getVersions($oldpath);
|
||||
foreach ($versions as $v) {
|
||||
$versions_view->rename($oldpath.'.v'.$v['version'], $newpath.'.v'.$v['version']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* rollback to an old version of a file.
|
||||
*/
|
||||
|
@ -130,44 +150,27 @@ class Storage {
|
|||
list($uid, $filename) = self::getUidAndFilename($filename);
|
||||
$users_view = new \OC_FilesystemView('/'.$uid);
|
||||
|
||||
//first create a new version
|
||||
$version = 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename);
|
||||
if ( !$users_view->file_exists($version)) {
|
||||
$users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename));
|
||||
$versionCreated = true;
|
||||
}
|
||||
|
||||
// rollback
|
||||
if( @$users_view->copy('files_versions'.$filename.'.v'.$revision, 'files'.$filename) ) {
|
||||
|
||||
$users_view->touch('files'.$filename, $revision);
|
||||
Storage::expire($filename);
|
||||
return true;
|
||||
|
||||
}else{
|
||||
|
||||
return false;
|
||||
|
||||
}else if ( $versionCreated ) {
|
||||
$users_view->unlink($version);
|
||||
}
|
||||
|
||||
}
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* check if old versions of a file exist.
|
||||
*/
|
||||
public static function isversioned($filename) {
|
||||
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
|
||||
list($uid, $filename) = self::getUidAndFilename($filename);
|
||||
$versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
|
||||
|
||||
$versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
|
||||
|
||||
// check for old versions
|
||||
$matches=glob($versionsName.'.v*');
|
||||
if(count($matches)>0) {
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}else{
|
||||
return(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief get a list of all available versions of a file in descending chronological order
|
||||
|
@ -187,92 +190,232 @@ class Storage {
|
|||
|
||||
sort( $matches );
|
||||
|
||||
$i = 0;
|
||||
|
||||
$files_view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files');
|
||||
$files_view = new \OC_FilesystemView('/'.$uid.'/files');
|
||||
$local_file = $files_view->getLocalFile($filename);
|
||||
foreach( $matches as $ma ) {
|
||||
|
||||
$i++;
|
||||
$versions[$i]['cur'] = 0;
|
||||
foreach( $matches as $ma ) {
|
||||
$parts = explode( '.v', $ma );
|
||||
$versions[$i]['version'] = ( end( $parts ) );
|
||||
$version = ( end( $parts ) );
|
||||
$key = $version.'#'.$filename;
|
||||
$versions[$key]['cur'] = 0;
|
||||
$versions[$key]['version'] = $version;
|
||||
$versions[$key]['path'] = $filename;
|
||||
$versions[$key]['size'] = $versions_fileview->filesize($filename.'.v'.$version);
|
||||
|
||||
// if file with modified date exists, flag it in array as currently enabled version
|
||||
( \md5_file( $ma ) == \md5_file( $local_file ) ? $versions[$i]['fileMatch'] = 1 : $versions[$i]['fileMatch'] = 0 );
|
||||
( \md5_file( $ma ) == \md5_file( $local_file ) ? $versions[$key]['fileMatch'] = 1 : $versions[$key]['fileMatch'] = 0 );
|
||||
|
||||
}
|
||||
|
||||
$versions = array_reverse( $versions );
|
||||
|
||||
foreach( $versions as $key => $value ) {
|
||||
|
||||
// flag the first matched file in array (which will have latest modification date) as current version
|
||||
if ( $value['fileMatch'] ) {
|
||||
|
||||
$value['cur'] = 1;
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$versions = array_reverse( $versions );
|
||||
|
||||
// only show the newest commits
|
||||
if( $count != 0 and ( count( $versions )>$count ) ) {
|
||||
|
||||
$versions = array_slice( $versions, count( $versions ) - $count );
|
||||
|
||||
}
|
||||
|
||||
return( $versions );
|
||||
|
||||
|
||||
} else {
|
||||
|
||||
// if versioning isn't enabled then return an empty array
|
||||
return( array() );
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief get the size of all stored versions from a given user
|
||||
* @param $uid id from the user
|
||||
* @return size of vesions
|
||||
*/
|
||||
private static function calculateSize($uid) {
|
||||
if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
|
||||
$versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
|
||||
$versionsRoot = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('');
|
||||
|
||||
$iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($versionsRoot), \RecursiveIteratorIterator::CHILD_FIRST);
|
||||
|
||||
$size = 0;
|
||||
|
||||
foreach ($iterator as $path) {
|
||||
if ( preg_match('/^.+\.v(\d+)$/', $path, $match) ) {
|
||||
$relpath = substr($path, strlen($versionsRoot)-1);
|
||||
$size += $versions_fileview->filesize($relpath);
|
||||
}
|
||||
}
|
||||
|
||||
return $size;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief returns all stored file versions from a given user
|
||||
* @param $uid id to the user
|
||||
* @return array with contains two arrays 'all' which contains all versions sorted by age and 'by_file' which contains all versions sorted by filename
|
||||
*/
|
||||
private static function getAllVersions($uid) {
|
||||
if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
|
||||
$versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
|
||||
$versionsRoot = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('');
|
||||
|
||||
$iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($versionsRoot), \RecursiveIteratorIterator::CHILD_FIRST);
|
||||
|
||||
$versions = array();
|
||||
|
||||
foreach ($iterator as $path) {
|
||||
if ( preg_match('/^.+\.v(\d+)$/', $path, $match) ) {
|
||||
$relpath = substr($path, strlen($versionsRoot)-1);
|
||||
$versions[$match[1].'#'.$relpath] = array('path' => $relpath, 'timestamp' => $match[1]);
|
||||
}
|
||||
}
|
||||
|
||||
ksort($versions);
|
||||
|
||||
$i = 0;
|
||||
|
||||
$result = array();
|
||||
|
||||
foreach( $versions as $key => $value ) {
|
||||
$i++;
|
||||
$size = $versions_fileview->filesize($value['path']);
|
||||
$filename = substr($value['path'], 0, -strlen($value['timestamp'])-2);
|
||||
|
||||
$result['all'][$key]['version'] = $value['timestamp'];
|
||||
$result['all'][$key]['path'] = $filename;
|
||||
$result['all'][$key]['size'] = $size;
|
||||
|
||||
$filename = substr($value['path'], 0, -strlen($value['timestamp'])-2);
|
||||
$result['by_file'][$filename][$key]['version'] = $value['timestamp'];
|
||||
$result['by_file'][$filename][$key]['path'] = $filename;
|
||||
$result['by_file'][$filename][$key]['size'] = $size;
|
||||
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Erase a file's versions which exceed the set quota
|
||||
*/
|
||||
public static function expire($filename) {
|
||||
private static function expire($filename, $versionsSize = null) {
|
||||
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
|
||||
list($uid, $filename) = self::getUidAndFilename($filename);
|
||||
$versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
|
||||
|
||||
$versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
|
||||
|
||||
// check for old versions
|
||||
$matches = glob( $versionsName.'.v*' );
|
||||
|
||||
if( count( $matches ) > \OCP\Config::getSystemValue( 'files_versionmaxversions', Storage::DEFAULTMAXVERSIONS ) ) {
|
||||
|
||||
$numberToDelete = count($matches) - \OCP\Config::getSystemValue( 'files_versionmaxversions', Storage::DEFAULTMAXVERSIONS );
|
||||
|
||||
// delete old versions of a file
|
||||
$deleteItems = array_slice( $matches, 0, $numberToDelete );
|
||||
|
||||
foreach( $deleteItems as $de ) {
|
||||
|
||||
unlink( $versionsName.'.v'.$de );
|
||||
// get available disk space for user
|
||||
$quota = \OCP\Util::computerFileSize(\OC_Preferences::getValue($uid, 'files', 'quota'));
|
||||
if ( $quota == null ) {
|
||||
$quota = \OCP\Util::computerFileSize(\OC_Appconfig::getValue('files', 'default_quota'));
|
||||
}
|
||||
if ( $quota == null ) {
|
||||
$quota = \OC_Filesystem::free_space('/');
|
||||
}
|
||||
|
||||
// make sure that we have the current size of the version history
|
||||
if ( $versionsSize === null ) {
|
||||
if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) {
|
||||
$versionsSize = self::calculateSize($uid);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Erase all old versions of all user files
|
||||
* @return true/false
|
||||
*/
|
||||
public function expireAll() {
|
||||
$view = \OCP\Files::getStorage('files_versions');
|
||||
return $view->deleteAll('', true);
|
||||
// calculate available space for version history
|
||||
$rootInfo = \OC_FileCache::get('', '/'. $uid . '/files');
|
||||
$free = $quota-$rootInfo['size']; // remaining free space for user
|
||||
if ( $free > 0 ) {
|
||||
$availableSpace = ($free * self::DEFAULTMAXSIZE / 100) - $versionsSize; // how much space can be used for versions
|
||||
} else {
|
||||
$availableSpace = $free-$versionsSize;
|
||||
}
|
||||
|
||||
// after every 1000s run reduce the number of all versions not only for the current file
|
||||
$random = rand(0, 1000);
|
||||
if ($random == 0) {
|
||||
$result = Storage::getAllVersions($uid);
|
||||
$versions_by_file = $result['by_file'];
|
||||
$all_versions = $result['all'];
|
||||
} else {
|
||||
$all_versions = Storage::getVersions($filename);
|
||||
$versions_by_file[$filename] = $all_versions;
|
||||
}
|
||||
|
||||
$time = time();
|
||||
|
||||
// it is possible to expire versions from more than one file
|
||||
// iterate through all given files
|
||||
foreach ($versions_by_file as $filename => $versions) {
|
||||
$versions = array_reverse($versions); // newest version first
|
||||
|
||||
$interval = 1;
|
||||
$step = Storage::$max_versions_per_interval[$interval]['step'];
|
||||
if (Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'] == -1) {
|
||||
$nextInterval = -1;
|
||||
} else {
|
||||
$nextInterval = $time - Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'];
|
||||
}
|
||||
|
||||
$firstVersion = reset($versions);
|
||||
$firstKey = key($versions);
|
||||
$prevTimestamp = $firstVersion['version'];
|
||||
$nextVersion = $firstVersion['version'] - $step;
|
||||
$remaining_versions[$firstKey] = $firstVersion;
|
||||
unset($versions[$firstKey]);
|
||||
|
||||
foreach ($versions as $key => $version) {
|
||||
$newInterval = true;
|
||||
while ( $newInterval ) {
|
||||
if ( $nextInterval == -1 || $version['version'] >= $nextInterval ) {
|
||||
if ( $version['version'] > $nextVersion ) {
|
||||
//distance between two version too small, delete version
|
||||
$versions_fileview->unlink($version['path'].'.v'.$version['version']);
|
||||
$availableSpace += $version['size'];
|
||||
$versionsSize -= $version['size'];
|
||||
unset($all_versions[$key]); // update array with all versions
|
||||
} else {
|
||||
$nextVersion = $version['version'] - $step;
|
||||
}
|
||||
$newInterval = false; // version checked so we can move to the next one
|
||||
} else { // time to move on to the next interval
|
||||
$interval++;
|
||||
$step = Storage::$max_versions_per_interval[$interval]['step'];
|
||||
$nextVersion = $prevTimestamp - $step;
|
||||
if ( Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'] == -1 ) {
|
||||
$nextInterval = -1;
|
||||
} else {
|
||||
$nextInterval = $time - Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'];
|
||||
}
|
||||
$newInterval = true; // we changed the interval -> check same version with new interval
|
||||
}
|
||||
}
|
||||
$prevTimestamp = $version['version'];
|
||||
}
|
||||
}
|
||||
|
||||
// check if enough space is available after versions are rearranged.
|
||||
// if not we delete the oldest versions until we meet the size limit for versions
|
||||
$numOfVersions = count($all_versions);
|
||||
$i = 0;
|
||||
while ($availableSpace < 0) {
|
||||
if ($i = $numOfVersions-2) break; // keep at least the last version
|
||||
$versions_fileview->unlink($all_versions[$i]['path'].'.v'.$all_versions[$i]['version']);
|
||||
$versionsSize -= $all_versions[$i]['size'];
|
||||
$availableSpace += $all_versions[$i]['size'];
|
||||
$i++;
|
||||
}
|
||||
|
||||
return $versionsSize; // finally return the new size of the version history
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
<?php
|
||||
|
||||
$tmpl = new OCP\Template( 'files_versions', 'settings-personal');
|
||||
|
||||
OCP\Util::addscript('files_versions', 'settings-personal');
|
||||
|
||||
return $tmpl->fetchPage();
|
|
@ -1,12 +0,0 @@
|
|||
<form id="versions">
|
||||
<fieldset class="personalblock">
|
||||
<legend>
|
||||
<strong><?php echo $l->t('Versions'); ?></strong>
|
||||
</legend>
|
||||
<button id="expireAllBtn">
|
||||
<?php echo $l->t('Expire all versions'); ?>
|
||||
<img style="display: none;" class="expireAllLoading" src="<?php echo OCP\Util::imagePath('core', 'loading.gif'); ?>" />
|
||||
</button>
|
||||
<br /><em><?php echo $l->t('This will delete all existing backup versions of your files'); ?></em>
|
||||
</fieldset>
|
||||
</form>
|
|
@ -1,4 +1,37 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Host" => "হোস্ট",
|
||||
"You can omit the protocol, except you require SSL. Then start with ldaps://" => "SSL আবশ্যক না হলে আপনি এই প্রটোকলটি মুছে ফেলতে পারেন । এরপর শুরু করুন এটা দিয়ে ldaps://",
|
||||
"Base DN" => "ভিত্তি DN",
|
||||
"You can specify Base DN for users and groups in the Advanced tab" => "সুচারু ট্যঅবে গিয়ে আপনি ব্যবহারকারি এবং গোষ্ঠীসমূহের জন্য ভিত্তি DN নির্ধারণ করতে পারেন।",
|
||||
"User DN" => "ব্যবহারকারি DN",
|
||||
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. পরিচয় গোপন রেখে অধিগমনের জন্য DN এবং কূটশব্দটি ফাঁকা রাখুন।",
|
||||
"Password" => "কূটশব্দ",
|
||||
"For anonymous access, leave DN and Password empty." => "অজ্ঞাতকুলশীল অধিগমনের জন্য DN এবং কূটশব্দটি ফাঁকা রাখুন।",
|
||||
"User Login Filter" => "ব্যবহারকারির প্রবেশ ছাঁকনী",
|
||||
"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action." => "প্রবেশের চেষ্টা করার সময় প্রযোজ্য ছাঁকনীটি নির্ধারণ করবে। প্রবেশের সময় ব্যবহারকারী নামটি %%uid দিয়ে প্রতিস্থাপিত হবে।",
|
||||
"use %%uid placeholder, e.g. \"uid=%%uid\"" => "%%uid স্থানধারক ব্যবহার করুন, উদাহরণঃ \"uid=%%uid\"",
|
||||
"User List Filter" => "ব্যবহারকারী তালিকা ছাঁকনী",
|
||||
"Defines the filter to apply, when retrieving users." => "ব্যবহারকারী উদ্ধার করার সময় প্রয়োগের জন্য ছাঁকনী নির্ধারণ করবে।",
|
||||
"without any placeholder, e.g. \"objectClass=person\"." => "কোন স্থানধারক ব্যতীত, যেমনঃ \"objectClass=person\"।",
|
||||
"Group Filter" => "গোষ্ঠী ছাঁকনী",
|
||||
"Defines the filter to apply, when retrieving groups." => "গোষ্ঠীসমূহ উদ্ধার করার সময় প্রয়োগের জন্য ছাঁকনী নির্ধারণ করবে।",
|
||||
"without any placeholder, e.g. \"objectClass=posixGroup\"." => "কোন স্থান ধারক ব্যতীত, উদাহরণঃ\"objectClass=posixGroup\"।",
|
||||
"Port" => "পোর্ট",
|
||||
"Base User Tree" => "ভিত্তি ব্যবহারকারি বৃক্ষাকারে",
|
||||
"Base Group Tree" => "ভিত্তি গোষ্ঠী বৃক্ষাকারে",
|
||||
"Group-Member association" => "গোষ্ঠী-সদস্য সংস্থাপন",
|
||||
"Use TLS" => "TLS ব্যবহার কর",
|
||||
"Do not use it for SSL connections, it will fail." => "SSL সংযোগের জন্য এটি ব্যবহার করবেন না, তাহলে ব্যর্থ হবেনই।",
|
||||
"Case insensitve LDAP server (Windows)" => "বর্ণ অসংবেদী LDAP সার্ভার (উইন্ডোজ)",
|
||||
"Turn off SSL certificate validation." => "SSL সনদপত্র যাচাইকরণ বন্ধ রাক।",
|
||||
"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "শুধুমাত্র যদি এই বিকল্পটি ব্যবহার করেই সংযোগ কার্যকরী হয় তবে আপনার ownCloud সার্ভারে LDAP সার্ভারের SSL সনদপত্রটি আমদানি করুন।",
|
||||
"Not recommended, use for testing only." => "অনুমোদিত নয়, শুধুমাত্র পরীক্ষামূলক ব্যবহারের জন্য।",
|
||||
"User Display Name Field" => "ব্যবহারকারীর প্রদর্শিতব্য নামের ক্ষেত্র",
|
||||
"The LDAP attribute to use to generate the user`s ownCloud name." => "ব্যবহারকারীর ownCloud নাম তৈরি করার জন্য ব্যভহৃত LDAP বৈশিষ্ট্য।",
|
||||
"Group Display Name Field" => "গোষ্ঠীর প্রদর্শিতব্য নামের ক্ষেত্র",
|
||||
"The LDAP attribute to use to generate the groups`s ownCloud name." => "গোষ্ঠীর ownCloud নাম তৈরি করার জন্য ব্যভহৃত LDAP বৈশিষ্ট্য।",
|
||||
"in bytes" => "বাইটে",
|
||||
"in seconds. A change empties the cache." => "সেকেন্ডে। কোন পরিবর্তন ক্যাসে খালি করবে।",
|
||||
"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "ব্যবহারকারী নামের জন্য ফাঁকা রাখুন (পূর্বনির্ধারিত)। অন্যথায়, LDAP/AD বৈশিষ্ট্য নির্ধারণ করুন।",
|
||||
"Help" => "সহায়িকা"
|
||||
);
|
||||
|
|
12
apps/user_ldap/l10n/he.php
Normal file
12
apps/user_ldap/l10n/he.php
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Host" => "מארח",
|
||||
"User DN" => "DN משתמש",
|
||||
"Password" => "סיסמא",
|
||||
"For anonymous access, leave DN and Password empty." => "לגישה אנונימית, השאר את הDM והסיסמא ריקים.",
|
||||
"User Login Filter" => "סנן כניסת משתמש",
|
||||
"User List Filter" => "סנן רשימת משתמשים",
|
||||
"Group Filter" => "סנן קבוצה",
|
||||
"in bytes" => "בבתים",
|
||||
"in seconds. A change empties the cache." => "בשניות. שינוי מרוקן את המטמון.",
|
||||
"Help" => "עזרה"
|
||||
);
|
4
apps/user_webdavauth/l10n/bn_BD.php
Normal file
4
apps/user_webdavauth/l10n/bn_BD.php
Normal file
|
@ -0,0 +1,4 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"URL: http://" => "URL:http://",
|
||||
"ownCloud will send the user credentials to this URL is interpret http 401 and http 403 as credentials wrong and all other codes as credentials correct." => "ownCloud will send the user credentials to this URL is interpret http 401 and http 403 as credentials wrong and all other codes as credentials correct."
|
||||
);
|
|
@ -1,4 +1,4 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"URL: http://" => "URL : http://",
|
||||
"ownCloud will send the user credentials to this URL is interpret http 401 and http 403 as credentials wrong and all other codes as credentials correct." => "Owncloud enverra les identifiants de sécurité de l'utilisateur à cet URL et interprète les http 401 et 403 comme des erreurs d'identification et tous les autres codes seront considérés comme une identification valide."
|
||||
"ownCloud will send the user credentials to this URL is interpret http 401 and http 403 as credentials wrong and all other codes as credentials correct." => "ownCloud "
|
||||
);
|
||||
|
|
|
@ -5,15 +5,25 @@
|
|||
ul.multiselectoptions {
|
||||
background-color:#fff;
|
||||
border:1px solid #ddd;
|
||||
border-bottom-left-radius:.5em;
|
||||
border-bottom-right-radius:.5em;
|
||||
border-top:none;
|
||||
box-shadow:0 1px 1px #ddd;
|
||||
padding-top:.5em;
|
||||
position:absolute;
|
||||
max-height: 20em;
|
||||
overflow-y: auto;
|
||||
z-index:49;
|
||||
}
|
||||
|
||||
ul.multiselectoptions.down {
|
||||
border-bottom-left-radius:.5em;
|
||||
border-bottom-right-radius:.5em;
|
||||
}
|
||||
|
||||
ul.multiselectoptions.up {
|
||||
border-top-left-radius:.5em;
|
||||
border-top-right-radius:.5em;
|
||||
}
|
||||
|
||||
ul.multiselectoptions>li {
|
||||
overflow:hidden;
|
||||
white-space:nowrap;
|
||||
|
@ -30,11 +40,20 @@
|
|||
|
||||
div.multiselect.active {
|
||||
background-color:#fff;
|
||||
position:relative;
|
||||
z-index:50;
|
||||
}
|
||||
|
||||
div.multiselect.up {
|
||||
border-top:0 none;
|
||||
border-top-left-radius:0;
|
||||
border-top-right-radius:0;
|
||||
}
|
||||
|
||||
div.multiselect.down {
|
||||
border-bottom:none;
|
||||
border-bottom-left-radius:0;
|
||||
border-bottom-right-radius:0;
|
||||
position:relative;
|
||||
z-index:50;
|
||||
}
|
||||
|
||||
div.multiselect>span:first-child {
|
||||
|
|
|
@ -1,20 +1,44 @@
|
|||
/**
|
||||
* @param 'createCallback' A function to be called when a new entry is created. Two arguments are supplied to this function:
|
||||
* The select element used and the value of the option. If the function returns false addition will be cancelled. If it returns
|
||||
* anything else it will be used as the value of the newly added option.
|
||||
* @param 'createText' The placeholder text for the create action.
|
||||
* @param 'title' The title to show if no options are selected.
|
||||
* @param 'checked' An array containing values for options that should be checked. Any options which are already selected will be added to this array.
|
||||
* @param 'labels' The corresponding labels to show for the checked items.
|
||||
* @param 'oncheck' Callback function which will be called when a checkbox/radiobutton is selected. If the function returns false the input will be unchecked.
|
||||
* @param 'onuncheck' @see 'oncheck'.
|
||||
* @param 'singleSelect' If true radiobuttons will be used instead of checkboxes.
|
||||
*/
|
||||
(function( $ ){
|
||||
var multiSelectId=-1;
|
||||
$.fn.multiSelect=function(options){
|
||||
$.fn.multiSelect=function(options) {
|
||||
multiSelectId++;
|
||||
var settings = {
|
||||
'createCallback':false,
|
||||
'createText':false,
|
||||
'singleSelect':false,
|
||||
'selectedFirst':false,
|
||||
'sort':true,
|
||||
'title':this.attr('title'),
|
||||
'checked':[],
|
||||
'labels':[],
|
||||
'oncheck':false,
|
||||
'onuncheck':false,
|
||||
'minWidth': 'default;',
|
||||
};
|
||||
$(this).attr('data-msid', multiSelectId);
|
||||
$.extend(settings,options);
|
||||
$.each(this.children(),function(i,option){
|
||||
if($(option).attr('selected') && settings.checked.indexOf($(option).val())==-1){
|
||||
$.each(this.children(),function(i,option) {
|
||||
// If the option is selected, but not in the checked array, add it.
|
||||
if($(option).attr('selected') && settings.checked.indexOf($(option).val()) === -1) {
|
||||
settings.checked.push($(option).val());
|
||||
settings.labels.push($(option).text().trim());
|
||||
}
|
||||
// If the option is in the checked array but not selected, select it.
|
||||
else if(settings.checked.indexOf($(option).val()) !== -1 && !$(option).attr('selected')) {
|
||||
$(option).attr('selected', 'selected');
|
||||
settings.labels.push($(option).text().trim());
|
||||
}
|
||||
});
|
||||
var button=$('<div class="multiselect button"><span>'+settings.title+'</span><span>▾</span></div>');
|
||||
|
@ -24,24 +48,36 @@
|
|||
button.selectedItems=[];
|
||||
this.hide();
|
||||
this.before(span);
|
||||
if(settings.minWidth=='default'){
|
||||
if(settings.minWidth=='default') {
|
||||
settings.minWidth=button.width();
|
||||
}
|
||||
button.css('min-width',settings.minWidth);
|
||||
settings.minOuterWidth=button.outerWidth()-2;
|
||||
button.data('settings',settings);
|
||||
if(settings.checked.length>0){
|
||||
button.children('span').first().text(settings.checked.join(', '));
|
||||
|
||||
if(!settings.singleSelect && settings.checked.length>0) {
|
||||
button.children('span').first().text(settings.labels.join(', '));
|
||||
} else if(settings.singleSelect) {
|
||||
button.children('span').first().text(this.find(':selected').text());
|
||||
}
|
||||
|
||||
var self = this;
|
||||
self.menuDirection = 'down';
|
||||
button.click(function(event){
|
||||
|
||||
var button=$(this);
|
||||
if(button.parent().children('ul').length>0){
|
||||
button.parent().children('ul').slideUp(400,function(){
|
||||
button.parent().children('ul').remove();
|
||||
button.removeClass('active');
|
||||
});
|
||||
if(button.parent().children('ul').length>0) {
|
||||
if(self.menuDirection === 'down') {
|
||||
button.parent().children('ul').slideUp(400,function() {
|
||||
button.parent().children('ul').remove();
|
||||
button.removeClass('active down');
|
||||
});
|
||||
} else {
|
||||
button.parent().children('ul').fadeOut(400,function() {
|
||||
button.parent().children('ul').remove();
|
||||
button.removeClass('active up');
|
||||
});
|
||||
}
|
||||
return;
|
||||
}
|
||||
var lists=$('ul.multiselectoptions');
|
||||
|
@ -54,49 +90,69 @@
|
|||
event.stopPropagation();
|
||||
var options=$(this).parent().next().children();
|
||||
var list=$('<ul class="multiselectoptions"/>').hide().appendTo($(this).parent());
|
||||
function createItem(element,checked){
|
||||
var inputType = settings.singleSelect ? 'radio' : 'checkbox';
|
||||
function createItem(element, checked){
|
||||
element=$(element);
|
||||
var item=element.val();
|
||||
var id='ms'+multiSelectId+'-option-'+item;
|
||||
var input=$('<input type="checkbox"/>');
|
||||
var input=$('<input type="' + inputType + '"/>');
|
||||
input.attr('id',id);
|
||||
if(settings.singleSelect) {
|
||||
input.attr('name', 'ms'+multiSelectId+'-option');
|
||||
}
|
||||
var label=$('<label/>');
|
||||
label.attr('for',id);
|
||||
label.text(item);
|
||||
if(settings.checked.indexOf(item)!=-1 || checked){
|
||||
input.attr('checked',true);
|
||||
label.text(element.text() || item);
|
||||
if(settings.checked.indexOf(item)!=-1 || checked) {
|
||||
input.attr('checked', true);
|
||||
}
|
||||
if(checked){
|
||||
settings.checked.push(item);
|
||||
if(settings.singleSelect) {
|
||||
settings.checked = [item];
|
||||
settings.labels = [item];
|
||||
} else {
|
||||
settings.checked.push(item);
|
||||
settings.labels.push(item);
|
||||
}
|
||||
}
|
||||
input.change(function(){
|
||||
var groupname=$(this).next().text();
|
||||
if($(this).is(':checked')){
|
||||
var value = $(this).attr('id').substring(String('ms'+multiSelectId+'-option').length+1);
|
||||
var label = $(this).next().text().trim();
|
||||
if($(this).is(':checked')) {
|
||||
if(settings.singleSelect) {
|
||||
settings.checked = [];
|
||||
settings.labels = [];
|
||||
$.each(self.find('option'), function() {
|
||||
$(this).removeAttr('selected');
|
||||
});
|
||||
}
|
||||
element.attr('selected','selected');
|
||||
if(settings.oncheck){
|
||||
if(settings.oncheck(groupname)===false){
|
||||
if(typeof settings.oncheck === 'function') {
|
||||
if(settings.oncheck(value)===false) {
|
||||
$(this).attr('checked', false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
settings.checked.push(groupname);
|
||||
}else{
|
||||
var index=settings.checked.indexOf(groupname);
|
||||
settings.checked.push(value);
|
||||
settings.labels.push(label);
|
||||
$(this).parent().addClass('checked');
|
||||
} else {
|
||||
var index=settings.checked.indexOf(value);
|
||||
element.attr('selected',null);
|
||||
if(settings.onuncheck){
|
||||
if(settings.onuncheck(groupname)===false){
|
||||
if(typeof settings.onuncheck === 'function') {
|
||||
if(settings.onuncheck(value)===false) {
|
||||
$(this).attr('checked',true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
$(this).parent().removeClass('checked');
|
||||
settings.checked.splice(index,1);
|
||||
settings.labels.splice(index,1);
|
||||
}
|
||||
var oldWidth=button.width();
|
||||
if(settings.checked.length>0){
|
||||
button.children('span').first().text(settings.checked.join(', '));
|
||||
}else{
|
||||
button.children('span').first().text(settings.title);
|
||||
}
|
||||
button.children('span').first().text(settings.labels.length > 0
|
||||
? settings.labels.join(', ')
|
||||
: settings.title);
|
||||
var newOuterWidth=Math.max((button.outerWidth()-2),settings.minOuterWidth)+'px';
|
||||
var newWidth=Math.max(button.width(),settings.minWidth);
|
||||
var pos=button.position();
|
||||
|
@ -110,6 +166,9 @@
|
|||
});
|
||||
var li=$('<li></li>');
|
||||
li.append(input).append(label);
|
||||
if(input.is(':checked')) {
|
||||
li.addClass('checked');
|
||||
}
|
||||
return li;
|
||||
}
|
||||
$.each(options,function(index,item){
|
||||
|
@ -117,13 +176,13 @@
|
|||
});
|
||||
button.parent().data('preventHide',false);
|
||||
if(settings.createText){
|
||||
var li=$('<li>+ <em>'+settings.createText+'<em></li>');
|
||||
var li=$('<li class="creator">+ <em>'+settings.createText+'<em></li>');
|
||||
li.click(function(event){
|
||||
li.empty();
|
||||
var input=$('<input class="new">');
|
||||
li.append(input);
|
||||
input.focus();
|
||||
input.css('width',button.width());
|
||||
input.css('width',button.innerWidth());
|
||||
button.parent().data('preventHide',true);
|
||||
input.keypress(function(event) {
|
||||
if(event.keyCode == 13) {
|
||||
|
@ -132,7 +191,7 @@
|
|||
var value = $(this).val();
|
||||
var exists = false;
|
||||
$.each(options,function(index, item) {
|
||||
if ($(item).val() == value) {
|
||||
if ($(item).val() == value || $(item).text() == value) {
|
||||
exists = true;
|
||||
return false;
|
||||
}
|
||||
|
@ -141,22 +200,39 @@
|
|||
return false;
|
||||
}
|
||||
var li=$(this).parent();
|
||||
var val = $(this).val()
|
||||
var select=button.parent().next();
|
||||
if(typeof settings.createCallback === 'function') {
|
||||
var response = settings.createCallback(select, val);
|
||||
if(response === false) {
|
||||
return false;
|
||||
} else if(typeof response !== 'undefined') {
|
||||
val = response;
|
||||
}
|
||||
}
|
||||
if(settings.singleSelect) {
|
||||
$.each(select.find('option:selected'), function() {
|
||||
$(this).removeAttr('selected');
|
||||
});
|
||||
}
|
||||
$(this).remove();
|
||||
li.text('+ '+settings.createText);
|
||||
li.before(createItem(this));
|
||||
var select=button.parent().next();
|
||||
var option=$('<option selected="selected"/>');
|
||||
option.attr('value',value);
|
||||
option.text($(this).val());
|
||||
option.text($(this).val()).val(val).attr('selected', 'selected');
|
||||
select.append(option);
|
||||
li.prev().children('input').trigger('click');
|
||||
li.prev().children('input').prop('checked', true).trigger('change');
|
||||
button.parent().data('preventHide',false);
|
||||
if(settings.createCallback){
|
||||
settings.createCallback($(this).val());
|
||||
button.children('span').first().text(settings.labels.length > 0
|
||||
? settings.labels.join(', ')
|
||||
: settings.title);
|
||||
if(self.menuDirection === 'up') {
|
||||
var list = li.parent();
|
||||
list.css('top', list.position().top-li.outerHeight());
|
||||
}
|
||||
}
|
||||
});
|
||||
input.blur(function(){
|
||||
input.blur(function() {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
$(this).remove();
|
||||
|
@ -168,21 +244,72 @@
|
|||
});
|
||||
list.append(li);
|
||||
}
|
||||
|
||||
var doSort = function(list, selector) {
|
||||
var rows = list.find('li'+selector).get();
|
||||
|
||||
if(settings.sort) {
|
||||
rows.sort(function(a, b) {
|
||||
return $(a).text().toUpperCase().localeCompare($(b).text().toUpperCase());
|
||||
});
|
||||
}
|
||||
|
||||
$.each(rows, function(index, row) {
|
||||
list.append(row);
|
||||
});
|
||||
};
|
||||
if(settings.sort && settings.selectedFirst) {
|
||||
doSort(list, '.checked');
|
||||
doSort(list, ':not(.checked)');
|
||||
} else if(settings.sort && !settings.selectedFirst) {
|
||||
doSort(list, '');
|
||||
}
|
||||
list.append(list.find('li.creator'));
|
||||
var pos=button.position();
|
||||
list.css('top',pos.top+button.outerHeight()-5);
|
||||
list.css('left',pos.left+3);
|
||||
list.css('width',(button.outerWidth()-2)+'px');
|
||||
list.slideDown();
|
||||
list.click(function(event){
|
||||
if($(document).height() > (button.offset().top+button.outerHeight() + list.children().length * button.height())
|
||||
|| $(document).height()/2 > pos.top
|
||||
) {
|
||||
list.css({
|
||||
top:pos.top+button.outerHeight()-5,
|
||||
left:pos.left+3,
|
||||
width:(button.outerWidth()-2)+'px',
|
||||
'max-height':($(document).height()-(button.offset().top+button.outerHeight()+10))+'px'
|
||||
});
|
||||
list.addClass('down');
|
||||
button.addClass('down');
|
||||
list.slideDown();
|
||||
} else {
|
||||
list.css('max-height', $(document).height()-($(document).height()-(pos.top)+50)+'px');
|
||||
list.css({
|
||||
top:pos.top - list.height(),
|
||||
left:pos.left+3,
|
||||
width:(button.outerWidth()-2)+'px'
|
||||
|
||||
});
|
||||
list.detach().insertBefore($(this));
|
||||
list.addClass('up');
|
||||
button.addClass('up');
|
||||
list.fadeIn();
|
||||
self.menuDirection = 'up';
|
||||
}
|
||||
list.click(function(event) {
|
||||
event.stopPropagation();
|
||||
});
|
||||
});
|
||||
$(window).click(function(){
|
||||
if(!button.parent().data('preventHide')){
|
||||
button.parent().children('ul').slideUp(400,function(){
|
||||
button.parent().children('ul').remove();
|
||||
button.removeClass('active');
|
||||
});
|
||||
$(window).click(function() {
|
||||
if(!button.parent().data('preventHide')) {
|
||||
// How can I save the effect in a var?
|
||||
if(self.menuDirection === 'down') {
|
||||
button.parent().children('ul').slideUp(400,function() {
|
||||
button.parent().children('ul').remove();
|
||||
button.removeClass('active down');
|
||||
});
|
||||
} else {
|
||||
button.parent().children('ul').fadeOut(400,function() {
|
||||
button.parent().children('ul').remove();
|
||||
button.removeClass('active up');
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -98,7 +98,6 @@
|
|||
"Lost your password?" => "هل نسيت كلمة السر؟",
|
||||
"remember" => "تذكر",
|
||||
"Log in" => "أدخل",
|
||||
"You are logged out." => "تم الخروج بنجاح.",
|
||||
"prev" => "السابق",
|
||||
"next" => "التالي",
|
||||
"Security Warning!" => "تحذير أمان!",
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"User %s shared a file with you" => "%s নামের ব্যবহারকারি আপনার সাথে একটা ফাইল ভাগাভাগি করেছেন",
|
||||
"User %s shared a folder with you" => "%s নামের ব্যবহারকারি আপনার সাথে একটা ফোল্ডার ভাগাভাগি করেছেন",
|
||||
"User %s shared the file \"%s\" with you. It is available for download here: %s" => "%s নামের ব্যবহারকারী \"%s\" ফাইলটি আপনার সাথে ভাগাভাগি করেছেন। এটি এখন এখানে ডাউনলোড করার জন্য সুলভঃ %s",
|
||||
"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "%s নামের ব্যবহারকারী \"%s\" ফোল্ডারটি আপনার সাথে ভাগাভাগি করেছেন। এটি এখন এখানে ডাউনলোড করার জন্য সুলভঃ %s",
|
||||
"Category type not provided." => "ক্যাটেগরির ধরণটি প্রদান করা হয় নি।",
|
||||
"No category to add?" => "যোগ করার মত কোন ক্যাটেগরি নেই ?",
|
||||
"This category already exists: " => "এই ক্যাটেগরিটি বিদ্যমানঃ",
|
||||
"This category already exists: " => "এই ক্যাটেগরিটি পূর্ব থেকেই বিদ্যমানঃ",
|
||||
"Object type not provided." => "অবজেক্টের ধরণটি প্রদান করা হয় নি।",
|
||||
"%s ID not provided." => "%s ID প্রদান করা হয় নি।",
|
||||
"Error adding %s to favorites." => "প্রিয়তে %s যোগ করতে সমস্যা দেখা দিয়েছে।",
|
||||
"No categories selected for deletion." => "মুছে ফেলার জন্য কোন ক্যাটেগরি নির্বাচন করা হয় নি।",
|
||||
"No categories selected for deletion." => "মুছে ফেলার জন্য কোন ক্যাটেগরি নির্বাচন করা হয় নি ।",
|
||||
"Error removing %s from favorites." => "প্রিয় থেকে %s সরিয়ে ফেলতে সমস্যা দেখা দিয়েছে।",
|
||||
"Settings" => "নিয়ামকসমূহ",
|
||||
"seconds ago" => "সেকেন্ড পূর্বে",
|
||||
|
@ -22,8 +25,8 @@
|
|||
"months ago" => "মাস পূর্বে",
|
||||
"last year" => "গত বছর",
|
||||
"years ago" => "বছর পূর্বে",
|
||||
"Choose" => "নির্বাচন",
|
||||
"Cancel" => "বাতিল",
|
||||
"Choose" => "বেছে নিন",
|
||||
"Cancel" => "বাতির",
|
||||
"No" => "না",
|
||||
"Yes" => "হ্যাঁ",
|
||||
"Ok" => "তথাস্তু",
|
||||
|
@ -31,64 +34,67 @@
|
|||
"Error" => "সমস্যা",
|
||||
"The app name is not specified." => "অ্যাপের নামটি সুনির্দিষ্ট নয়।",
|
||||
"The required file {file} is not installed!" => "আবশ্যিক {file} টি সংস্থাপিত নেই !",
|
||||
"Error while sharing" => "ভাগাভাগি করার সময় সমস্যা দেখা দিয়েছে",
|
||||
"Error while unsharing" => "ভাগাভাগি বাতিল করার সময় সমস্যা দেখা দিয়েছে",
|
||||
"Error while changing permissions" => "অনুমতি পরিবর্তন করার সময় সমস্যা দেখা দিয়েছে",
|
||||
"Share with" => "যাদের সাথে ভাগাভাগি করবে",
|
||||
"Share with link" => "লিংক সহযোগে ভাগাভাগি",
|
||||
"Password protect" => "কূটশব্দদ্বারা সুরক্ষিত",
|
||||
"Error while sharing" => "ভাগাভাগি করতে সমস্যা দেখা দিয়েছে ",
|
||||
"Error while unsharing" => "ভাগাভাগি বাতিল করতে সমস্যা দেখা দিয়েছে",
|
||||
"Error while changing permissions" => "অনুমতিসমূহ পরিবর্তন করতে সমস্যা দেখা দিয়েছে",
|
||||
"Shared with you and the group {group} by {owner}" => "{owner} আপনার এবং {group} গোষ্ঠীর সাথে ভাগাভাগি করেছেন",
|
||||
"Shared with you by {owner}" => "{owner} আপনার সাথে ভাগাভাগি করেছেন",
|
||||
"Share with" => "যাদের সাথে ভাগাভাগি করা হয়েছে",
|
||||
"Share with link" => "লিংকের সাথে ভাগাভাগি কর",
|
||||
"Password protect" => "কূটশব্দ সুরক্ষিত",
|
||||
"Password" => "কূটশব্দ",
|
||||
"Email link to person" => "ব্যক্তির সাথে ই-মেইল যুক্ত কর",
|
||||
"Send" => "পাঠাও",
|
||||
"Set expiration date" => "মেয়াদোত্তীর্ণ হওয়ার তারিখ নির্ধারণ করুন",
|
||||
"Expiration date" => "মেয়াদোত্তীর্ণ হওয়ার তারিখ",
|
||||
"Share via email:" => "ই-মেইলের মাধ্যমে ভাগাভাগি করঃ",
|
||||
"Share via email:" => "ই-মেইলের মাধ্যমে ভাগাভাগি করুনঃ",
|
||||
"No people found" => "কোন ব্যক্তি খুঁজে পাওয়া গেল না",
|
||||
"Resharing is not allowed" => "পূনরায় ভাগাভাগি করার অনুমতি নেই",
|
||||
"Unshare" => "ভাগাভাগি বাতিল",
|
||||
"can edit" => "সম্পাদনা করতে পারবে",
|
||||
"access control" => "অধিগম্যতার নিয়ন্ত্রণ",
|
||||
"create" => "তৈরি কর",
|
||||
"Resharing is not allowed" => "পূনঃরায় ভাগাভাগি অনুমোদিত নয়",
|
||||
"Shared in {item} with {user}" => "{user} এর সাথে {item} ভাগাভাগি করা হয়েছে",
|
||||
"Unshare" => "ভাগাভাগি বাতিল কর",
|
||||
"can edit" => "সম্পাদনা করতে পারবেন",
|
||||
"access control" => "অধিগম্যতা নিয়ন্ত্রণ",
|
||||
"create" => "তৈরী করুন",
|
||||
"update" => "পরিবর্ধন কর",
|
||||
"delete" => "মুছে ফেল",
|
||||
"share" => "ভাগাভাগি কর",
|
||||
"Password protected" => "কূটশব্দদ্বারা সুরক্ষিত",
|
||||
"Error unsetting expiration date" => "মেয়াদোত্তীর্ণ হওয়ার তারিখ নির্ধারণ বাতিল করতে সমস্যা",
|
||||
"Error setting expiration date" => "মেয়াদোত্তীর্ণ হওয়ার তারিখ নির্ধারণ করতে সমস্যা",
|
||||
"Error unsetting expiration date" => "মেয়াদোত্তীর্ণ হওয়ার তারিখ নির্ধারণ বাতিল করতে সমস্যা দেখা দিয়েছে",
|
||||
"Error setting expiration date" => "মেয়াদোত্তীর্ণ হওয়ার তারিখ নির্ধারণ করতে সমস্যা দেখা দিয়েছে",
|
||||
"Sending ..." => "পাঠানো হচ্ছে......",
|
||||
"Email sent" => "ই-মেইল পাঠানো হয়েছে",
|
||||
"ownCloud password reset" => "ownCloud কূটশব্দ পূনঃনির্ধারণ",
|
||||
"Use the following link to reset your password: {link}" => "কূটশব্দ পূনঃনির্ধারণ করতে নিম্নোক্ত লিংকে ক্লিক করুন:{link}",
|
||||
"You will receive a link to reset your password via Email." => "কূটশব্দ পূনঃনির্ধারণের জন্য একটি লিংক ই-মেইলের মাধ্যমে পাঠানো হয়েছে।",
|
||||
"Use the following link to reset your password: {link}" => "আপনার কূটশব্দটি পূনঃনির্ধারণ করার জন্য নিম্নোক্ত লিংকটি ব্যবহার করুনঃ {link}",
|
||||
"You will receive a link to reset your password via Email." => "কূটশব্দ পূনঃনির্ধারণের জন্য একটি টূনঃনির্ধারণ লিংকটি আপনাকে ই-মেইলে পাঠানো হয়েছে ।",
|
||||
"Reset email send." => "পূনঃনির্ধারণ ই-মেইল পাঠানো হয়েছে।",
|
||||
"Request failed!" => "অনুরোধ ব্যর্থ !",
|
||||
"Username" => "ব্যবহারকারি",
|
||||
"Request reset" => "পূনঃনির্ধারণের জন্য অনুরোধ",
|
||||
"Your password was reset" => "আপনার কূটশব্দটি পূনঃনির্ধারণ করা হয়েছে",
|
||||
"To login page" => "প্রবেশ পাতায়",
|
||||
"Username" => "ব্যবহারকারী",
|
||||
"Request reset" => "অনুরোধ পূনঃনির্ধারণ",
|
||||
"Your password was reset" => "আপনার কূটশব্দটি পূনঃনির্ধারণ করা হয়েছে",
|
||||
"To login page" => "প্রবেশ পৃষ্ঠায়",
|
||||
"New password" => "নতুন কূটশব্দ",
|
||||
"Reset password" => "কূটশব্দ পূনঃনির্ধারণ",
|
||||
"Reset password" => "কূটশব্দ পূনঃনির্ধারণ কর",
|
||||
"Personal" => "ব্যক্তিগত",
|
||||
"Users" => "ব্যবহারকারিবৃন্দ",
|
||||
"Users" => "ব্যবহারকারী",
|
||||
"Apps" => "অ্যাপস",
|
||||
"Admin" => "প্রশাসক",
|
||||
"Admin" => "প্রশাসন",
|
||||
"Help" => "সহায়িকা",
|
||||
"Access forbidden" => "অধিগমনের অনুমতি নেই",
|
||||
"Cloud not found" => "ক্লাউড খুঁজে পাওয়া গেল না",
|
||||
"Edit categories" => "ক্যাটেগরি সম্পাদনা",
|
||||
"Add" => "যোগ কর",
|
||||
"Security Warning" => "নিরাপত্তাজনিত সতর্কতা",
|
||||
"Create an <strong>admin account</strong>" => "<strong>প্রশাসক একাউন্ট</strong> তৈরি কর",
|
||||
"Create an <strong>admin account</strong>" => "<strong>প্রশাসক একাউন্ট</strong> তৈরী করুন",
|
||||
"Advanced" => "সুচারু",
|
||||
"Data folder" => "ডাটা ফোল্ডার",
|
||||
"Configure the database" => "ডাটাবেজ কনফিগার কর",
|
||||
"Data folder" => "ডাটা ফোল্ডার ",
|
||||
"Configure the database" => "ডাটাবেচ কনফিগার করুন",
|
||||
"will be used" => "ব্যবহৃত হবে",
|
||||
"Database user" => "ডাটাবেজ ব্যবহারকারি",
|
||||
"Database user" => "ডাটাবেজ ব্যবহারকারী",
|
||||
"Database password" => "ডাটাবেজ কূটশব্দ",
|
||||
"Database name" => "ডাটাবেজের নাম",
|
||||
"Database tablespace" => "ডাটাবেজ টেবিলস্পেস",
|
||||
"Database tablespace" => "ডাটাবেজ টেবলস্পেস",
|
||||
"Database host" => "ডাটাবেজ হোস্ট",
|
||||
"Finish setup" => "সেট-আপ সুসম্পন্ন কর",
|
||||
"Finish setup" => "সেটআপ সুসম্পন্ন কর",
|
||||
"Sunday" => "রবিবার",
|
||||
"Monday" => "সোমবার",
|
||||
"Tuesday" => "মঙ্গলবার",
|
||||
|
@ -103,19 +109,19 @@
|
|||
"May" => "মে",
|
||||
"June" => "জুন",
|
||||
"July" => "জুলাই",
|
||||
"August" => "অগাস্ট",
|
||||
"August" => "অগাষ্ট",
|
||||
"September" => "সেপ্টেম্বর",
|
||||
"October" => "অক্টোবর",
|
||||
"November" => "নভেম্বর",
|
||||
"December" => "ডিসেম্বর",
|
||||
"web services under your control" => "ওয়েব সেবাসমূহ এখন আপনার হাতের মুঠোয়",
|
||||
"web services under your control" => "ওয়েব সার্ভিসের নিয়ন্ত্রণ আপনার হাতের মুঠোয়",
|
||||
"Log out" => "প্রস্থান",
|
||||
"Lost your password?" => "আপনার কূটশব্দটি হারিয়েছেন ?",
|
||||
"Lost your password?" => "কূটশব্দ হারিয়েছেন?",
|
||||
"remember" => "মনে রাখ",
|
||||
"Log in" => "প্রবেশ",
|
||||
"You are logged out." => "আপনি প্রস্থান করেছেন",
|
||||
"prev" => "পূর্ববর্তী",
|
||||
"next" => "পরবর্তী",
|
||||
"Updating ownCloud to version %s, this may take a while." => "%s ভার্সনে ownCloud পরিবর্ধন করা হচ্ছে, এজন্য কিছু সময় প্রয়োজন।",
|
||||
"Security Warning!" => "নিরাপত্তাবিষয়ক সতর্কবাণী",
|
||||
"Verify" => "যাচাই কর"
|
||||
);
|
||||
|
|
|
@ -125,7 +125,6 @@
|
|||
"Lost your password?" => "Heu perdut la contrasenya?",
|
||||
"remember" => "recorda'm",
|
||||
"Log in" => "Inici de sessió",
|
||||
"You are logged out." => "Heu tancat la sessió.",
|
||||
"prev" => "anterior",
|
||||
"next" => "següent",
|
||||
"Updating ownCloud to version %s, this may take a while." => "S'està actualitzant ownCloud a la versió %s, pot trigar una estona.",
|
||||
|
|
|
@ -125,7 +125,6 @@
|
|||
"Lost your password?" => "Ztratili jste své heslo?",
|
||||
"remember" => "zapamatovat si",
|
||||
"Log in" => "Přihlásit",
|
||||
"You are logged out." => "Jste odhlášeni.",
|
||||
"prev" => "předchozí",
|
||||
"next" => "následující",
|
||||
"Updating ownCloud to version %s, this may take a while." => "Aktualizuji ownCloud na verzi %s, bude to chvíli trvat.",
|
||||
|
|
|
@ -125,7 +125,6 @@
|
|||
"Lost your password?" => "Mistet dit kodeord?",
|
||||
"remember" => "husk",
|
||||
"Log in" => "Log ind",
|
||||
"You are logged out." => "Du er nu logget ud.",
|
||||
"prev" => "forrige",
|
||||
"next" => "næste",
|
||||
"Security Warning!" => "Sikkerhedsadvarsel!",
|
||||
|
|
|
@ -125,7 +125,6 @@
|
|||
"Lost your password?" => "Passwort vergessen?",
|
||||
"remember" => "merken",
|
||||
"Log in" => "Einloggen",
|
||||
"You are logged out." => "Du wurdest abgemeldet.",
|
||||
"prev" => "Zurück",
|
||||
"next" => "Weiter",
|
||||
"Updating ownCloud to version %s, this may take a while." => "Aktualisiere ownCloud auf Version %s. Dies könnte eine Weile dauern.",
|
||||
|
|
|
@ -125,7 +125,6 @@
|
|||
"Lost your password?" => "Passwort vergessen?",
|
||||
"remember" => "merken",
|
||||
"Log in" => "Einloggen",
|
||||
"You are logged out." => "Sie wurden abgemeldet.",
|
||||
"prev" => "Zurück",
|
||||
"next" => "Weiter",
|
||||
"Updating ownCloud to version %s, this may take a while." => "Aktualisiere ownCloud auf Version %s. Dies könnte eine Weile dauern.",
|
||||
|
|
|
@ -125,7 +125,6 @@
|
|||
"Lost your password?" => "Ξεχάσατε το συνθηματικό σας;",
|
||||
"remember" => "απομνημόνευση",
|
||||
"Log in" => "Είσοδος",
|
||||
"You are logged out." => "Έχετε αποσυνδεθεί.",
|
||||
"prev" => "προηγούμενο",
|
||||
"next" => "επόμενο",
|
||||
"Security Warning!" => "Προειδοποίηση Ασφαλείας!",
|
||||
|
|
|
@ -121,7 +121,6 @@
|
|||
"Lost your password?" => "Ĉu vi perdis vian pasvorton?",
|
||||
"remember" => "memori",
|
||||
"Log in" => "Ensaluti",
|
||||
"You are logged out." => "Vi estas elsalutita.",
|
||||
"prev" => "maljena",
|
||||
"next" => "jena",
|
||||
"Security Warning!" => "Sekureca averto!",
|
||||
|
|
|
@ -125,7 +125,6 @@
|
|||
"Lost your password?" => "¿Has perdido tu contraseña?",
|
||||
"remember" => "recuérdame",
|
||||
"Log in" => "Entrar",
|
||||
"You are logged out." => "Has cerrado la sesión.",
|
||||
"prev" => "anterior",
|
||||
"next" => "siguiente",
|
||||
"Updating ownCloud to version %s, this may take a while." => "Actualizando ownCloud a la versión %s, esto puede demorar un tiempo.",
|
||||
|
|
|
@ -125,7 +125,6 @@
|
|||
"Lost your password?" => "¿Perdiste tu contraseña?",
|
||||
"remember" => "recordame",
|
||||
"Log in" => "Entrar",
|
||||
"You are logged out." => "Terminaste la sesión.",
|
||||
"prev" => "anterior",
|
||||
"next" => "siguiente",
|
||||
"Security Warning!" => "¡Advertencia de seguridad!",
|
||||
|
|
|
@ -101,7 +101,6 @@
|
|||
"Lost your password?" => "Kaotasid oma parooli?",
|
||||
"remember" => "pea meeles",
|
||||
"Log in" => "Logi sisse",
|
||||
"You are logged out." => "Sa oled välja loginud",
|
||||
"prev" => "eelm",
|
||||
"next" => "järgm",
|
||||
"Security Warning!" => "turvahoiatus!",
|
||||
|
|
|
@ -125,7 +125,6 @@
|
|||
"Lost your password?" => "Galdu duzu pasahitza?",
|
||||
"remember" => "gogoratu",
|
||||
"Log in" => "Hasi saioa",
|
||||
"You are logged out." => "Zure saioa bukatu da.",
|
||||
"prev" => "aurrekoa",
|
||||
"next" => "hurrengoa",
|
||||
"Security Warning!" => "Segurtasun abisua",
|
||||
|
|
|
@ -71,7 +71,6 @@
|
|||
"Lost your password?" => "آیا گذرواژه تان را به یاد نمی آورید؟",
|
||||
"remember" => "بیاد آوری",
|
||||
"Log in" => "ورود",
|
||||
"You are logged out." => "شما خارج شدید",
|
||||
"prev" => "بازگشت",
|
||||
"next" => "بعدی"
|
||||
);
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"User %s shared a file with you" => "Käyttäjä %s jakoi tiedoston kanssasi",
|
||||
"User %s shared a folder with you" => "Käyttäjä %s jakoi kansion kanssasi",
|
||||
"User %s shared the file \"%s\" with you. It is available for download here: %s" => "Käyttäjä %s jakoi tiedoston \"%s\" kanssasi. Se on ladattavissa täältä: %s",
|
||||
"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Käyttäjä %s jakoi kansion \"%s\" kanssasi. Se on ladattavissa täältä: %s",
|
||||
"No category to add?" => "Ei lisättävää luokkaa?",
|
||||
"This category already exists: " => "Tämä luokka on jo olemassa: ",
|
||||
"No categories selected for deletion." => "Luokkia ei valittu poistettavaksi.",
|
||||
|
@ -52,6 +56,7 @@
|
|||
"ownCloud password reset" => "ownCloud-salasanan nollaus",
|
||||
"Use the following link to reset your password: {link}" => "Voit palauttaa salasanasi seuraavassa osoitteessa: {link}",
|
||||
"You will receive a link to reset your password via Email." => "Saat sähköpostitse linkin nollataksesi salasanan.",
|
||||
"Reset email send." => "Salasanan nollausviesti lähetetty.",
|
||||
"Request failed!" => "Pyyntö epäonnistui!",
|
||||
"Username" => "Käyttäjätunnus",
|
||||
"Request reset" => "Tilaus lähetetty",
|
||||
|
@ -108,9 +113,9 @@
|
|||
"Lost your password?" => "Unohditko salasanasi?",
|
||||
"remember" => "muista",
|
||||
"Log in" => "Kirjaudu sisään",
|
||||
"You are logged out." => "Olet kirjautunut ulos.",
|
||||
"prev" => "edellinen",
|
||||
"next" => "seuraava",
|
||||
"Updating ownCloud to version %s, this may take a while." => "Päivitetään ownCloud versioon %s, tämä saattaa kestää hetken.",
|
||||
"Security Warning!" => "Turvallisuusvaroitus!",
|
||||
"Please verify your password. <br/>For security reasons you may be occasionally asked to enter your password again." => "Vahvista salasanasi. <br/>Turvallisuussyistä sinulta saatetaan ajoittain kysyä salasanasi uudelleen.",
|
||||
"Verify" => "Vahvista"
|
||||
|
|
|
@ -125,7 +125,6 @@
|
|||
"Lost your password?" => "Mot de passe perdu ?",
|
||||
"remember" => "se souvenir de moi",
|
||||
"Log in" => "Connexion",
|
||||
"You are logged out." => "Vous êtes désormais déconnecté.",
|
||||
"prev" => "précédent",
|
||||
"next" => "suivant",
|
||||
"Updating ownCloud to version %s, this may take a while." => "Mise à jour en cours d'ownCloud vers la version %s, cela peut prendre du temps.",
|
||||
|
|
|
@ -125,9 +125,9 @@
|
|||
"Lost your password?" => "Perdeu o contrasinal?",
|
||||
"remember" => "lembrar",
|
||||
"Log in" => "Conectar",
|
||||
"You are logged out." => "Está desconectado",
|
||||
"prev" => "anterior",
|
||||
"next" => "seguinte",
|
||||
"Updating ownCloud to version %s, this may take a while." => "Actualizando ownCloud a versión %s, esto pode levar un anaco.",
|
||||
"Security Warning!" => "Advertencia de seguranza",
|
||||
"Please verify your password. <br/>For security reasons you may be occasionally asked to enter your password again." => "Verifique o seu contrasinal.<br/>Por motivos de seguranza pode que ocasionalmente se lle pregunte de novo polo seu contrasinal.",
|
||||
"Verify" => "Verificar"
|
||||
|
|
|
@ -125,9 +125,9 @@
|
|||
"Lost your password?" => "שכחת את ססמתך?",
|
||||
"remember" => "שמירת הססמה",
|
||||
"Log in" => "כניסה",
|
||||
"You are logged out." => "לא התחברת.",
|
||||
"prev" => "הקודם",
|
||||
"next" => "הבא",
|
||||
"Updating ownCloud to version %s, this may take a while." => "מעדכן את ownCloud אל גרסא %s, זה עלול לקחת זמן מה.",
|
||||
"Security Warning!" => "אזהרת אבטחה!",
|
||||
"Please verify your password. <br/>For security reasons you may be occasionally asked to enter your password again." => "נא לאמת את הססמה שלך. <br/>מטעמי אבטחה יתכן שתופיע בקשה להזין את הססמה שוב.",
|
||||
"Verify" => "אימות"
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
"Database user" => "डेटाबेस उपयोगकर्ता",
|
||||
"Database password" => "डेटाबेस पासवर्ड",
|
||||
"Finish setup" => "सेटअप समाप्त करे",
|
||||
"You are logged out." => "आप लोग आउट कर दिए गए हैं.",
|
||||
"prev" => "पिछला",
|
||||
"next" => "अगला"
|
||||
);
|
||||
|
|
|
@ -91,7 +91,6 @@
|
|||
"Lost your password?" => "Izgubili ste lozinku?",
|
||||
"remember" => "zapamtiti",
|
||||
"Log in" => "Prijava",
|
||||
"You are logged out." => "Odjavljeni ste.",
|
||||
"prev" => "prethodan",
|
||||
"next" => "sljedeći"
|
||||
);
|
||||
|
|
|
@ -125,7 +125,6 @@
|
|||
"Lost your password?" => "Elfelejtette a jelszavát?",
|
||||
"remember" => "emlékezzen",
|
||||
"Log in" => "Bejelentkezés",
|
||||
"You are logged out." => "Kilépett.",
|
||||
"prev" => "előző",
|
||||
"next" => "következő",
|
||||
"Security Warning!" => "Biztonsági figyelmeztetés!",
|
||||
|
|
|
@ -52,7 +52,6 @@
|
|||
"Lost your password?" => "Tu perdeva le contrasigno?",
|
||||
"remember" => "memora",
|
||||
"Log in" => "Aperir session",
|
||||
"You are logged out." => "Tu session ha essite claudite.",
|
||||
"prev" => "prev",
|
||||
"next" => "prox"
|
||||
);
|
||||
|
|
|
@ -100,7 +100,6 @@
|
|||
"Lost your password?" => "Lupa password anda?",
|
||||
"remember" => "selalu login",
|
||||
"Log in" => "Masuk",
|
||||
"You are logged out." => "Anda telah keluar.",
|
||||
"prev" => "sebelum",
|
||||
"next" => "selanjutnya",
|
||||
"Security Warning!" => "peringatan keamanan!",
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"User %s shared the file \"%s\" with you. It is available for download here: %s" => "Notandinn %s deildi skránni \"%s\" með þér. Hægt er að hlaða henni niður hér: %s",
|
||||
"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Notandinn %s deildi möppunni \"%s\" með þér. Hægt er að hlaða henni niður hér: %s",
|
||||
"Category type not provided." => "Flokkur ekki gefin",
|
||||
"No category to add?" => "Enginn flokkur til að <strong>bæta við</strong>?",
|
||||
"No category to add?" => "Enginn flokkur til að bæta við?",
|
||||
"This category already exists: " => "Þessi flokkur er þegar til:",
|
||||
"Object type not provided." => "Tegund ekki í boði.",
|
||||
"%s ID not provided." => "%s ID ekki í boði.",
|
||||
|
@ -31,7 +31,7 @@
|
|||
"Yes" => "Já",
|
||||
"Ok" => "Í lagi",
|
||||
"The object type is not specified." => "Tegund ekki tilgreind",
|
||||
"Error" => "<strong>Villa</strong>",
|
||||
"Error" => "Villa",
|
||||
"The app name is not specified." => "Nafn forrits ekki tilgreint",
|
||||
"The required file {file} is not installed!" => "Umbeðina skráin {file} ekki tiltæk!",
|
||||
"Error while sharing" => "Villa við deilingu",
|
||||
|
@ -63,7 +63,7 @@
|
|||
"Error setting expiration date" => "Villa við að setja gildistíma",
|
||||
"Sending ..." => "Sendi ...",
|
||||
"Email sent" => "Tölvupóstur sendur",
|
||||
"ownCloud password reset" => "endursetja ownCloud <strong>lykilorð</strong>",
|
||||
"ownCloud password reset" => "endursetja ownCloud lykilorð",
|
||||
"Use the following link to reset your password: {link}" => "Notað eftirfarandi veftengil til að endursetja lykilorðið þitt: {link}",
|
||||
"You will receive a link to reset your password via Email." => "Þú munt fá veftengil í tölvupósti til að endursetja lykilorðið.",
|
||||
"Reset email send." => "Beiðni um endursetningu send.",
|
||||
|
@ -78,9 +78,9 @@
|
|||
"Users" => "Notendur",
|
||||
"Apps" => "Forrit",
|
||||
"Admin" => "Vefstjórn",
|
||||
"Help" => "Help",
|
||||
"Help" => "Hjálp",
|
||||
"Access forbidden" => "Aðgangur bannaður",
|
||||
"Cloud not found" => "Skýið finnst eigi",
|
||||
"Cloud not found" => "Ský finnst ekki",
|
||||
"Edit categories" => "Breyta flokkum",
|
||||
"Add" => "Bæta",
|
||||
"Security Warning" => "Öryggis aðvörun",
|
||||
|
@ -92,12 +92,12 @@
|
|||
"Data folder" => "Gagnamappa",
|
||||
"Configure the database" => "Stilla gagnagrunn",
|
||||
"will be used" => "verður notað",
|
||||
"Database user" => "Notandi gagnagrunns",
|
||||
"Database password" => "Lykilorð gagnagrunns",
|
||||
"Database user" => "Gagnagrunns notandi",
|
||||
"Database password" => "Gagnagrunns lykilorð",
|
||||
"Database name" => "Nafn gagnagrunns",
|
||||
"Database tablespace" => "Töflusvæði gagnagrunns",
|
||||
"Database host" => "Netþjónn gagnagrunns",
|
||||
"Finish setup" => "Ljúka uppsetningu",
|
||||
"Finish setup" => "Virkja uppsetningu",
|
||||
"Sunday" => "Sunnudagur",
|
||||
"Monday" => "Mánudagur",
|
||||
"Tuesday" => "Þriðjudagur",
|
||||
|
@ -125,9 +125,9 @@
|
|||
"Lost your password?" => "Týndir þú lykilorðinu?",
|
||||
"remember" => "muna eftir mér",
|
||||
"Log in" => "<strong>Skrá inn</strong>",
|
||||
"You are logged out." => "Þú ert útskráð(ur).",
|
||||
"prev" => "fyrra",
|
||||
"next" => "næsta",
|
||||
"Updating ownCloud to version %s, this may take a while." => "Uppfæri ownCloud í útgáfu %s, það gæti tekið smá stund.",
|
||||
"Security Warning!" => "Öryggis aðvörun!",
|
||||
"Please verify your password. <br/>For security reasons you may be occasionally asked to enter your password again." => "Vinsamlegast staðfestu lykilorðið þitt.<br/>Í öryggisskyni munum við biðja þig um að skipta um lykilorð af og til.",
|
||||
"Verify" => "Staðfesta"
|
||||
|
|
|
@ -125,7 +125,6 @@
|
|||
"Lost your password?" => "Hai perso la password?",
|
||||
"remember" => "ricorda",
|
||||
"Log in" => "Accedi",
|
||||
"You are logged out." => "Sei uscito.",
|
||||
"prev" => "precedente",
|
||||
"next" => "successivo",
|
||||
"Updating ownCloud to version %s, this may take a while." => "Aggiornamento di ownCloud alla versione %s in corso, potrebbe richiedere del tempo.",
|
||||
|
|
|
@ -125,7 +125,6 @@
|
|||
"Lost your password?" => "パスワードを忘れましたか?",
|
||||
"remember" => "パスワードを記憶する",
|
||||
"Log in" => "ログイン",
|
||||
"You are logged out." => "ログアウトしました。",
|
||||
"prev" => "前",
|
||||
"next" => "次",
|
||||
"Updating ownCloud to version %s, this may take a while." => "ownCloud をバージョン %s に更新しています、しばらくお待ち下さい。",
|
||||
|
|
|
@ -98,7 +98,6 @@
|
|||
"Lost your password?" => "დაგავიწყდათ პაროლი?",
|
||||
"remember" => "დამახსოვრება",
|
||||
"Log in" => "შესვლა",
|
||||
"You are logged out." => "თქვენ გამოხვედით სისტემიდან",
|
||||
"prev" => "წინა",
|
||||
"next" => "შემდეგი",
|
||||
"Security Warning!" => "უსაფრთხოების გაფრთხილება!",
|
||||
|
|
|
@ -125,7 +125,6 @@
|
|||
"Lost your password?" => "암호를 잊으셨습니까?",
|
||||
"remember" => "기억하기",
|
||||
"Log in" => "로그인",
|
||||
"You are logged out." => "로그아웃되었습니다.",
|
||||
"prev" => "이전",
|
||||
"next" => "다음",
|
||||
"Updating ownCloud to version %s, this may take a while." => "ownCloud 를 버젼 %s로 업데이트 하는 중, 시간이 소요됩니다.",
|
||||
|
|
|
@ -64,7 +64,6 @@
|
|||
"Lost your password?" => "Passwuert vergiess?",
|
||||
"remember" => "verhalen",
|
||||
"Log in" => "Log dech an",
|
||||
"You are logged out." => "Du bass ausgeloggt.",
|
||||
"prev" => "zeréck",
|
||||
"next" => "weider"
|
||||
);
|
||||
|
|
|
@ -104,7 +104,6 @@
|
|||
"Lost your password?" => "Pamiršote slaptažodį?",
|
||||
"remember" => "prisiminti",
|
||||
"Log in" => "Prisijungti",
|
||||
"You are logged out." => "Jūs atsijungėte.",
|
||||
"prev" => "atgal",
|
||||
"next" => "kitas",
|
||||
"Security Warning!" => "Saugumo pranešimas!",
|
||||
|
|
|
@ -30,7 +30,6 @@
|
|||
"Lost your password?" => "Aizmirsāt paroli?",
|
||||
"remember" => "atcerēties",
|
||||
"Log in" => "Ielogoties",
|
||||
"You are logged out." => "Jūs esat veiksmīgi izlogojies.",
|
||||
"prev" => "iepriekšējā",
|
||||
"next" => "nākamā"
|
||||
);
|
||||
|
|
|
@ -125,7 +125,6 @@
|
|||
"Lost your password?" => "Ја заборавивте лозинката?",
|
||||
"remember" => "запамти",
|
||||
"Log in" => "Најава",
|
||||
"You are logged out." => "Одјавени сте.",
|
||||
"prev" => "претходно",
|
||||
"next" => "следно",
|
||||
"Security Warning!" => "Безбедносно предупредување.",
|
||||
|
|
|
@ -62,7 +62,6 @@
|
|||
"Lost your password?" => "Hilang kata laluan?",
|
||||
"remember" => "ingat",
|
||||
"Log in" => "Log masuk",
|
||||
"You are logged out." => "Anda telah log keluar.",
|
||||
"prev" => "sebelum",
|
||||
"next" => "seterus"
|
||||
);
|
||||
|
|
|
@ -100,7 +100,6 @@
|
|||
"Lost your password?" => "Mistet passordet ditt?",
|
||||
"remember" => "husk",
|
||||
"Log in" => "Logg inn",
|
||||
"You are logged out." => "Du er logget ut",
|
||||
"prev" => "forrige",
|
||||
"next" => "neste",
|
||||
"Security Warning!" => "Sikkerhetsadvarsel!",
|
||||
|
|
|
@ -125,7 +125,6 @@
|
|||
"Lost your password?" => "Uw wachtwoord vergeten?",
|
||||
"remember" => "onthoud gegevens",
|
||||
"Log in" => "Meld je aan",
|
||||
"You are logged out." => "U bent afgemeld.",
|
||||
"prev" => "vorige",
|
||||
"next" => "volgende",
|
||||
"Updating ownCloud to version %s, this may take a while." => "Updaten ownCloud naar versie %s, dit kan even duren.",
|
||||
|
|
|
@ -52,7 +52,6 @@
|
|||
"Lost your password?" => "Gløymt passordet?",
|
||||
"remember" => "hugs",
|
||||
"Log in" => "Logg inn",
|
||||
"You are logged out." => "Du er logga ut.",
|
||||
"prev" => "førre",
|
||||
"next" => "neste"
|
||||
);
|
||||
|
|
|
@ -93,7 +93,6 @@
|
|||
"Lost your password?" => "L'as perdut lo senhal ?",
|
||||
"remember" => "bremba-te",
|
||||
"Log in" => "Dintrada",
|
||||
"You are logged out." => "Sias pas dintra (t/ada)",
|
||||
"prev" => "dariièr",
|
||||
"next" => "venent"
|
||||
);
|
||||
|
|
|
@ -125,7 +125,6 @@
|
|||
"Lost your password?" => "Nie pamiętasz hasła?",
|
||||
"remember" => "Zapamiętanie",
|
||||
"Log in" => "Zaloguj",
|
||||
"You are logged out." => "Wylogowano użytkownika.",
|
||||
"prev" => "wstecz",
|
||||
"next" => "naprzód",
|
||||
"Updating ownCloud to version %s, this may take a while." => "Aktualizowanie ownCloud do wersji %s, może to potrwać chwilę.",
|
||||
|
|
|
@ -117,7 +117,6 @@
|
|||
"Lost your password?" => "Esqueçeu sua senha?",
|
||||
"remember" => "lembrete",
|
||||
"Log in" => "Log in",
|
||||
"You are logged out." => "Você está desconectado.",
|
||||
"prev" => "anterior",
|
||||
"next" => "próximo",
|
||||
"Security Warning!" => "Aviso de Segurança!",
|
||||
|
|
|
@ -125,7 +125,6 @@
|
|||
"Lost your password?" => "Esqueceu a sua password?",
|
||||
"remember" => "lembrar",
|
||||
"Log in" => "Entrar",
|
||||
"You are logged out." => "Estás desconetado.",
|
||||
"prev" => "anterior",
|
||||
"next" => "seguinte",
|
||||
"Updating ownCloud to version %s, this may take a while." => "A Actualizar o ownCloud para a versão %s, esta operação pode demorar.",
|
||||
|
|
|
@ -109,7 +109,6 @@
|
|||
"Lost your password?" => "Ai uitat parola?",
|
||||
"remember" => "amintește",
|
||||
"Log in" => "Autentificare",
|
||||
"You are logged out." => "Ai ieșit",
|
||||
"prev" => "precedentul",
|
||||
"next" => "următorul",
|
||||
"Security Warning!" => "Advertisment de Securitate",
|
||||
|
|
|
@ -125,9 +125,9 @@
|
|||
"Lost your password?" => "Забыли пароль?",
|
||||
"remember" => "запомнить",
|
||||
"Log in" => "Войти",
|
||||
"You are logged out." => "Вы вышли.",
|
||||
"prev" => "пред",
|
||||
"next" => "след",
|
||||
"Updating ownCloud to version %s, this may take a while." => "Производится обновление ownCloud до версии %s. Это может занять некоторое время.",
|
||||
"Security Warning!" => "Предупреждение безопасности!",
|
||||
"Please verify your password. <br/>For security reasons you may be occasionally asked to enter your password again." => "Пожалуйста, проверьте свой пароль. <br/>По соображениям безопасности, Вам иногда придется вводить свой пароль снова.",
|
||||
"Verify" => "Подтвердить"
|
||||
|
|
|
@ -125,7 +125,6 @@
|
|||
"Lost your password?" => "Забыли пароль?",
|
||||
"remember" => "запомнить",
|
||||
"Log in" => "Войти",
|
||||
"You are logged out." => "Вы вышли из системы.",
|
||||
"prev" => "предыдущий",
|
||||
"next" => "следующий",
|
||||
"Security Warning!" => "Предупреждение системы безопасности!",
|
||||
|
|
|
@ -85,7 +85,6 @@
|
|||
"Lost your password?" => "මුරපදය අමතකද?",
|
||||
"remember" => "මතක තබාගන්න",
|
||||
"Log in" => "ප්රවේශවන්න",
|
||||
"You are logged out." => "ඔබ නික්මී ඇත.",
|
||||
"prev" => "පෙර",
|
||||
"next" => "ඊළඟ"
|
||||
);
|
||||
|
|
|
@ -117,7 +117,6 @@
|
|||
"Lost your password?" => "Zabudli ste heslo?",
|
||||
"remember" => "zapamätať",
|
||||
"Log in" => "Prihlásiť sa",
|
||||
"You are logged out." => "Ste odhlásený.",
|
||||
"prev" => "späť",
|
||||
"next" => "ďalej",
|
||||
"Security Warning!" => "Bezpečnostné varovanie!",
|
||||
|
|
|
@ -125,7 +125,6 @@
|
|||
"Lost your password?" => "Ali ste pozabili geslo?",
|
||||
"remember" => "Zapomni si me",
|
||||
"Log in" => "Prijava",
|
||||
"You are logged out." => "Sta odjavljeni.",
|
||||
"prev" => "nazaj",
|
||||
"next" => "naprej",
|
||||
"Security Warning!" => "Varnostno opozorilo!",
|
||||
|
|
|
@ -117,7 +117,6 @@
|
|||
"Lost your password?" => "Изгубили сте лозинку?",
|
||||
"remember" => "упамти",
|
||||
"Log in" => "Пријава",
|
||||
"You are logged out." => "Одјављени сте.",
|
||||
"prev" => "претходно",
|
||||
"next" => "следеће",
|
||||
"Security Warning!" => "Сигурносно упозорење!",
|
||||
|
|
|
@ -46,7 +46,6 @@
|
|||
"Log out" => "Odjava",
|
||||
"Lost your password?" => "Izgubili ste lozinku?",
|
||||
"remember" => "upamti",
|
||||
"You are logged out." => "Odjavljeni ste.",
|
||||
"prev" => "prethodno",
|
||||
"next" => "sledeće"
|
||||
);
|
||||
|
|
|
@ -125,7 +125,6 @@
|
|||
"Lost your password?" => "Glömt ditt lösenord?",
|
||||
"remember" => "kom ihåg",
|
||||
"Log in" => "Logga in",
|
||||
"You are logged out." => "Du är utloggad.",
|
||||
"prev" => "föregående",
|
||||
"next" => "nästa",
|
||||
"Updating ownCloud to version %s, this may take a while." => "Uppdaterar ownCloud till version %s, detta kan ta en stund.",
|
||||
|
|
|
@ -117,7 +117,6 @@
|
|||
"Lost your password?" => "உங்கள் கடவுச்சொல்லை தொலைத்துவிட்டீர்களா?",
|
||||
"remember" => "ஞாபகப்படுத்துக",
|
||||
"Log in" => "புகுபதிகை",
|
||||
"You are logged out." => "நீங்கள் விடுபதிகை செய்துவிட்டீர்கள்.",
|
||||
"prev" => "முந்தைய",
|
||||
"next" => "அடுத்து",
|
||||
"Security Warning!" => "பாதுகாப்பு எச்சரிக்கை!",
|
||||
|
|
|
@ -117,7 +117,6 @@
|
|||
"Lost your password?" => "ลืมรหัสผ่าน?",
|
||||
"remember" => "จำรหัสผ่าน",
|
||||
"Log in" => "เข้าสู่ระบบ",
|
||||
"You are logged out." => "คุณออกจากระบบเรียบร้อยแล้ว",
|
||||
"prev" => "ก่อนหน้า",
|
||||
"next" => "ถัดไป",
|
||||
"Security Warning!" => "คำเตือนเพื่อความปลอดภัย!",
|
||||
|
|
|
@ -104,7 +104,6 @@
|
|||
"Lost your password?" => "Parolanızı mı unuttunuz?",
|
||||
"remember" => "hatırla",
|
||||
"Log in" => "Giriş yap",
|
||||
"You are logged out." => "Çıkış yaptınız.",
|
||||
"prev" => "önceki",
|
||||
"next" => "sonraki",
|
||||
"Security Warning!" => "Güvenlik Uyarısı!",
|
||||
|
|
|
@ -125,7 +125,6 @@
|
|||
"Lost your password?" => "Забули пароль?",
|
||||
"remember" => "запам'ятати",
|
||||
"Log in" => "Вхід",
|
||||
"You are logged out." => "Ви вийшли з системи.",
|
||||
"prev" => "попередній",
|
||||
"next" => "наступний",
|
||||
"Security Warning!" => "Попередження про небезпеку!",
|
||||
|
|
|
@ -117,7 +117,6 @@
|
|||
"Lost your password?" => "Bạn quên mật khẩu ?",
|
||||
"remember" => "ghi nhớ",
|
||||
"Log in" => "Đăng nhập",
|
||||
"You are logged out." => "Bạn đã đăng xuất.",
|
||||
"prev" => "Lùi lại",
|
||||
"next" => "Kế tiếp",
|
||||
"Security Warning!" => "Cảnh báo bảo mật !",
|
||||
|
|
|
@ -106,7 +106,6 @@
|
|||
"Lost your password?" => "忘记密码?",
|
||||
"remember" => "备忘",
|
||||
"Log in" => "登陆",
|
||||
"You are logged out." => "你已经注销了",
|
||||
"prev" => "后退",
|
||||
"next" => "前进",
|
||||
"Security Warning!" => "安全警告!",
|
||||
|
|
|
@ -124,7 +124,6 @@
|
|||
"Lost your password?" => "忘记密码?",
|
||||
"remember" => "记住",
|
||||
"Log in" => "登录",
|
||||
"You are logged out." => "您已注销。",
|
||||
"prev" => "上一页",
|
||||
"next" => "下一页",
|
||||
"Security Warning!" => "安全警告!",
|
||||
|
|
|
@ -1,14 +1,22 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"No category to add?" => "無分類添加?",
|
||||
"This category already exists: " => "此分類已經存在:",
|
||||
"User %s shared a file with you" => "用戶 %s 與您分享了一個檔案",
|
||||
"User %s shared a folder with you" => "用戶 %s 與您分享了一個資料夾",
|
||||
"User %s shared the file \"%s\" with you. It is available for download here: %s" => "用戶 %s 與您分享了檔案 \"%s\" ,您可以從這裡下載它: %s",
|
||||
"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "用戶 %s 與您分享了資料夾 \"%s\" ,您可以從這裡下載它: %s",
|
||||
"Category type not provided." => "未提供分類類型。",
|
||||
"No category to add?" => "沒有可增加的分類?",
|
||||
"This category already exists: " => "此分類已經存在:",
|
||||
"Object type not provided." => "不支援的物件類型",
|
||||
"No categories selected for deletion." => "沒選擇要刪除的分類",
|
||||
"%s ID not provided." => "未提供 %s ID 。",
|
||||
"Error adding %s to favorites." => "加入 %s 到最愛時發生錯誤。",
|
||||
"No categories selected for deletion." => "沒有選擇要刪除的分類。",
|
||||
"Error removing %s from favorites." => "從最愛移除 %s 時發生錯誤。",
|
||||
"Settings" => "設定",
|
||||
"seconds ago" => "幾秒前",
|
||||
"1 minute ago" => "1 分鐘前",
|
||||
"{minutes} minutes ago" => "{minutes} 分鐘前",
|
||||
"1 hour ago" => "1 個小時前",
|
||||
"{hours} hours ago" => "{hours} 個小時前",
|
||||
"{hours} hours ago" => "{hours} 小時前",
|
||||
"today" => "今天",
|
||||
"yesterday" => "昨天",
|
||||
"{days} days ago" => "{days} 天前",
|
||||
|
@ -22,20 +30,24 @@
|
|||
"No" => "No",
|
||||
"Yes" => "Yes",
|
||||
"Ok" => "Ok",
|
||||
"The object type is not specified." => "未指定物件類型。",
|
||||
"Error" => "錯誤",
|
||||
"The app name is not specified." => "沒有詳述APP名稱.",
|
||||
"The app name is not specified." => "沒有指定 app 名稱。",
|
||||
"The required file {file} is not installed!" => "沒有安裝所需的檔案 {file} !",
|
||||
"Error while sharing" => "分享時發生錯誤",
|
||||
"Error while unsharing" => "取消分享時發生錯誤",
|
||||
"Error while changing permissions" => "修改權限時發生錯誤",
|
||||
"Shared with you and the group {group} by {owner}" => "由 {owner} 分享給您和 {group}",
|
||||
"Shared with you by {owner}" => "{owner} 已經和您分享",
|
||||
"Share with" => "與分享",
|
||||
"Share with" => "與...分享",
|
||||
"Share with link" => "使用連結分享",
|
||||
"Password protect" => "密碼保護",
|
||||
"Password" => "密碼",
|
||||
"Email link to person" => "將連結 email 給別人",
|
||||
"Send" => "寄出",
|
||||
"Set expiration date" => "設置到期日",
|
||||
"Expiration date" => "到期日",
|
||||
"Share via email:" => "透過email分享:",
|
||||
"Share via email:" => "透過 email 分享:",
|
||||
"No people found" => "沒有找到任何人",
|
||||
"Resharing is not allowed" => "不允許重新分享",
|
||||
"Shared in {item} with {user}" => "已和 {user} 分享 {item}",
|
||||
|
@ -46,16 +58,18 @@
|
|||
"update" => "更新",
|
||||
"delete" => "刪除",
|
||||
"share" => "分享",
|
||||
"Password protected" => "密碼保護",
|
||||
"Password protected" => "受密碼保護",
|
||||
"Error unsetting expiration date" => "解除過期日設定失敗",
|
||||
"Error setting expiration date" => "錯誤的到期日設定",
|
||||
"Sending ..." => "正在寄出...",
|
||||
"Email sent" => "Email 已寄出",
|
||||
"ownCloud password reset" => "ownCloud 密碼重設",
|
||||
"Use the following link to reset your password: {link}" => "請循以下聯結重設你的密碼: (聯結) ",
|
||||
"You will receive a link to reset your password via Email." => "重設密碼的連結將會寄到你的電子郵件信箱",
|
||||
"Reset email send." => "重設郵件已送出.",
|
||||
"Request failed!" => "請求失敗!",
|
||||
"Use the following link to reset your password: {link}" => "請循以下聯結重設你的密碼: {link}",
|
||||
"You will receive a link to reset your password via Email." => "重設密碼的連結將會寄到你的電子郵件信箱。",
|
||||
"Reset email send." => "重設郵件已送出。",
|
||||
"Request failed!" => "請求失敗!",
|
||||
"Username" => "使用者名稱",
|
||||
"Request reset" => "要求重設",
|
||||
"Request reset" => "請求重設",
|
||||
"Your password was reset" => "你的密碼已重設",
|
||||
"To login page" => "至登入頁面",
|
||||
"New password" => "新密碼",
|
||||
|
@ -65,12 +79,12 @@
|
|||
"Apps" => "應用程式",
|
||||
"Admin" => "管理者",
|
||||
"Help" => "幫助",
|
||||
"Access forbidden" => "禁止存取",
|
||||
"Access forbidden" => "存取被拒",
|
||||
"Cloud not found" => "未發現雲",
|
||||
"Edit categories" => "編輯分類",
|
||||
"Add" => "添加",
|
||||
"Add" => "增加",
|
||||
"Security Warning" => "安全性警告",
|
||||
"No secure random number generator is available, please enable the PHP OpenSSL extension." => "沒有可用的隨機數字產生器, 請啟用 PHP 中 OpenSSL 擴充功能.",
|
||||
"No secure random number generator is available, please enable the PHP OpenSSL extension." => "沒有可用的亂數產生器,請啟用 PHP 中的 OpenSSL 擴充功能。",
|
||||
"Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "若沒有安全的亂數產生器,攻擊者可能可以預測密碼重設信物,然後控制您的帳戶。",
|
||||
"Your data directory and your files are probably accessible from the internet. The .htaccess file that ownCloud provides is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "您的資料目錄 (Data Directory) 和檔案可能可以由網際網路上面公開存取。Owncloud 所提供的 .htaccess 設定檔並未生效,我們強烈建議您設定您的網頁伺服器以防止資料目錄被公開存取,或將您的資料目錄移出網頁伺服器的 document root 。",
|
||||
"Create an <strong>admin account</strong>" => "建立一個<strong>管理者帳號</strong>",
|
||||
|
@ -103,18 +117,18 @@
|
|||
"October" => "十月",
|
||||
"November" => "十一月",
|
||||
"December" => "十二月",
|
||||
"web services under your control" => "網路服務已在你控制",
|
||||
"web services under your control" => "網路服務在您控制之下",
|
||||
"Log out" => "登出",
|
||||
"Automatic logon rejected!" => "自動登入被拒!",
|
||||
"If you did not change your password recently, your account may be compromised!" => "如果您最近並未更改密碼,您的帳號可能已經遭到入侵!",
|
||||
"Please change your password to secure your account again." => "請更改您的密碼以再次取得您的帳戶的控制權。",
|
||||
"Lost your password?" => "忘記密碼?",
|
||||
"Lost your password?" => "忘記密碼?",
|
||||
"remember" => "記住",
|
||||
"Log in" => "登入",
|
||||
"You are logged out." => "你已登出",
|
||||
"prev" => "上一頁",
|
||||
"next" => "下一頁",
|
||||
"Security Warning!" => "安全性警告!",
|
||||
"Updating ownCloud to version %s, this may take a while." => "正在將 Owncloud 升級至版本 %s ,這可能需要一點時間。",
|
||||
"Security Warning!" => "安全性警告!",
|
||||
"Please verify your password. <br/>For security reasons you may be occasionally asked to enter your password again." => "請輸入您的密碼。<br/>基於安全性的理由,您有時候可能會被要求再次輸入密碼。",
|
||||
"Verify" => "驗證"
|
||||
);
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<p class="exception">
|
||||
<?php
|
||||
if($_['showsysinfo'] == true) {
|
||||
echo 'If you would like to support ownCloud\'s developers and report this error in our <a href="http://bugs.owncloud.org">Bugtracker</a>, please copy the following informations into the description. <br><br><textarea readonly>';
|
||||
echo 'If you would like to support ownCloud\'s developers and report this error in our <a href="https://github.com/owncloud/core">bug tracker</a>, please copy the following informations into the description. <br><br><textarea readonly>';
|
||||
echo 'Message: ' . $_['message'] . "\n";
|
||||
echo 'Error Code: ' . $_['code'] . "\n";
|
||||
echo 'File: ' . $_['file'] . "\n";
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
<?php echo $l->t( 'You are logged out.' );
|
46
issue_template.md
Normal file
46
issue_template.md
Normal file
|
@ -0,0 +1,46 @@
|
|||
### Expected behaviour
|
||||
Tell us what should happen
|
||||
|
||||
### Actual behaviour
|
||||
Tell us what happens instead
|
||||
|
||||
### Steps to reproduce
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
|
||||
### Server configuration
|
||||
Operating system:
|
||||
|
||||
Web server:
|
||||
|
||||
Database:
|
||||
|
||||
PHP version:
|
||||
|
||||
ownCloud version:
|
||||
|
||||
### Client configuration
|
||||
Browser:
|
||||
|
||||
Operating system:
|
||||
|
||||
### Logs
|
||||
#### Web server error log
|
||||
```
|
||||
Insert your webserver log here
|
||||
```
|
||||
|
||||
#### ownCloud log (data/owncloud.log)
|
||||
```
|
||||
Insert your ownCloud log here
|
||||
```
|
||||
|
||||
#### Browser log
|
||||
```
|
||||
Insert your browser log here, this could for example include:
|
||||
|
||||
a) The javascript console log
|
||||
b) The network log
|
||||
c) ...
|
||||
```
|
|
@ -9,8 +9,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: ownCloud\n"
|
||||
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
|
||||
"POT-Creation-Date: 2013-01-07 00:04+0100\n"
|
||||
"PO-Revision-Date: 2013-01-06 23:04+0000\n"
|
||||
"POT-Creation-Date: 2013-01-12 00:09+0100\n"
|
||||
"PO-Revision-Date: 2013-01-11 23:09+0000\n"
|
||||
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
|
||||
"Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
@ -85,55 +85,55 @@ msgstr ""
|
|||
msgid "Settings"
|
||||
msgstr "تعديلات"
|
||||
|
||||
#: js/js.js:704
|
||||
#: js/js.js:711
|
||||
msgid "seconds ago"
|
||||
msgstr "منذ ثواني"
|
||||
|
||||
#: js/js.js:705
|
||||
#: js/js.js:712
|
||||
msgid "1 minute ago"
|
||||
msgstr "منذ دقيقة"
|
||||
|
||||
#: js/js.js:706
|
||||
#: js/js.js:713
|
||||
msgid "{minutes} minutes ago"
|
||||
msgstr "{minutes} منذ دقائق"
|
||||
|
||||
#: js/js.js:707
|
||||
#: js/js.js:714
|
||||
msgid "1 hour ago"
|
||||
msgstr ""
|
||||
|
||||
#: js/js.js:708
|
||||
#: js/js.js:715
|
||||
msgid "{hours} hours ago"
|
||||
msgstr ""
|
||||
|
||||
#: js/js.js:709
|
||||
#: js/js.js:716
|
||||
msgid "today"
|
||||
msgstr "اليوم"
|
||||
|
||||
#: js/js.js:710
|
||||
#: js/js.js:717
|
||||
msgid "yesterday"
|
||||
msgstr ""
|
||||
|
||||
#: js/js.js:711
|
||||
#: js/js.js:718
|
||||
msgid "{days} days ago"
|
||||
msgstr ""
|
||||
|
||||
#: js/js.js:712
|
||||
#: js/js.js:719
|
||||
msgid "last month"
|
||||
msgstr ""
|
||||
|
||||
#: js/js.js:713
|
||||
#: js/js.js:720
|
||||
msgid "{months} months ago"
|
||||
msgstr ""
|
||||
|
||||
#: js/js.js:714
|
||||
#: js/js.js:721
|
||||
msgid "months ago"
|
||||
msgstr ""
|
||||
|
||||
#: js/js.js:715
|
||||
#: js/js.js:722
|
||||
msgid "last year"
|
||||
msgstr ""
|
||||
|
||||
#: js/js.js:716
|
||||
#: js/js.js:723
|
||||
msgid "years ago"
|
||||
msgstr ""
|
||||
|
||||
|
@ -554,10 +554,6 @@ msgstr "تذكر"
|
|||
msgid "Log in"
|
||||
msgstr "أدخل"
|
||||
|
||||
#: templates/logout.php:1
|
||||
msgid "You are logged out."
|
||||
msgstr "تم الخروج بنجاح."
|
||||
|
||||
#: templates/part.pagenavi.php:3
|
||||
msgid "prev"
|
||||
msgstr "السابق"
|
||||
|
|
|
@ -10,8 +10,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: ownCloud\n"
|
||||
"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n"
|
||||
"POT-Creation-Date: 2012-12-30 00:04+0100\n"
|
||||
"PO-Revision-Date: 2012-12-29 23:05+0000\n"
|
||||
"POT-Creation-Date: 2013-01-12 00:09+0100\n"
|
||||
"PO-Revision-Date: 2013-01-11 23:09+0000\n"
|
||||
"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n"
|
||||
"Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
@ -32,7 +32,7 @@ msgstr "المجموعة موجودة مسبقاً"
|
|||
msgid "Unable to add group"
|
||||
msgstr "فشل إضافة المجموعة"
|
||||
|
||||
#: ajax/enableapp.php:12
|
||||
#: ajax/enableapp.php:11
|
||||
msgid "Could not enable app. "
|
||||
msgstr "فشل عملية تفعيل التطبيق"
|
||||
|
||||
|
@ -44,14 +44,6 @@ msgstr "تم حفظ البريد الإلكتروني"
|
|||
msgid "Invalid email"
|
||||
msgstr "البريد الإلكتروني غير صالح"
|
||||
|
||||
#: ajax/openid.php:13
|
||||
msgid "OpenID Changed"
|
||||
msgstr "تم تغيير ال OpenID"
|
||||
|
||||
#: ajax/openid.php:15 ajax/setlanguage.php:17 ajax/setlanguage.php:20
|
||||
msgid "Invalid request"
|
||||
msgstr "طلبك غير مفهوم"
|
||||
|
||||
#: ajax/removegroup.php:13
|
||||
msgid "Unable to delete group"
|
||||
msgstr "فشل إزالة المجموعة"
|
||||
|
@ -68,6 +60,10 @@ msgstr "فشل إزالة المستخدم"
|
|||
msgid "Language changed"
|
||||
msgstr "تم تغيير اللغة"
|
||||
|
||||
#: ajax/setlanguage.php:17 ajax/setlanguage.php:20
|
||||
msgid "Invalid request"
|
||||
msgstr "طلبك غير مفهوم"
|
||||
|
||||
#: ajax/togglegroups.php:12
|
||||
msgid "Admins can't remove themself from the admin group"
|
||||
msgstr "لا يستطيع المدير إزالة حسابه من مجموعة المديرين"
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue