aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorRobin Appelman <icewind@owncloud.com>2012-11-30 00:18:42 +0100
committerRobin Appelman <icewind@owncloud.com>2012-11-30 00:18:42 +0100
commitd33f697a5f3438f286ba3abe63255b6797a6fc03 (patch)
tree3bde00fb82540d9a44d0cfe97b41a7c6ecc668d3 /core
parenta609992a75d1dad15398f55e22ad2244c78650dc (diff)
parent9b709fa95df5b93b9fb05e33158122003891c154 (diff)
downloadnextcloud-server-d33f697a5f3438f286ba3abe63255b6797a6fc03.tar.gz
nextcloud-server-d33f697a5f3438f286ba3abe63255b6797a6fc03.zip
merge master into filesystem
Diffstat (limited to 'core')
-rw-r--r--core/ajax/share.php14
-rw-r--r--core/js/eventsource.js15
-rw-r--r--core/js/share.js28
-rw-r--r--core/l10n/eu.php28
-rw-r--r--core/l10n/fr.php11
-rw-r--r--core/l10n/pl.php11
-rw-r--r--core/l10n/uk.php68
-rw-r--r--core/l10n/zh_TW.php29
8 files changed, 183 insertions, 21 deletions
diff --git a/core/ajax/share.php b/core/ajax/share.php
index efe01dff886..41832a3c659 100644
--- a/core/ajax/share.php
+++ b/core/ajax/share.php
@@ -28,13 +28,19 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo
case 'share':
if (isset($_POST['shareType']) && isset($_POST['shareWith']) && isset($_POST['permissions'])) {
try {
- if ((int)$_POST['shareType'] === OCP\Share::SHARE_TYPE_LINK && $_POST['shareWith'] == '') {
+ $shareType = (int)$_POST['shareType'];
+ $shareWith = $_POST['shareWith'];
+ if ($shareType === OCP\Share::SHARE_TYPE_LINK && $shareWith == '') {
$shareWith = null;
+ }
+
+ $token = OCP\Share::shareItem($_POST['itemType'], $_POST['itemSource'], $shareType, $shareWith, $_POST['permissions']);
+
+ if (is_string($token)) {
+ OC_JSON::success(array('data' => array('token' => $token)));
} else {
- $shareWith = $_POST['shareWith'];
+ OC_JSON::success();
}
- OCP\Share::shareItem($_POST['itemType'], $_POST['itemSource'], (int)$_POST['shareType'], $shareWith, $_POST['permissions']);
- OC_JSON::success();
} catch (Exception $exception) {
OC_JSON::error(array('data' => array('message' => $exception->getMessage())));
}
diff --git a/core/js/eventsource.js b/core/js/eventsource.js
index e3ad7e3a671..0c2a995f331 100644
--- a/core/js/eventsource.js
+++ b/core/js/eventsource.js
@@ -42,7 +42,11 @@ OC.EventSource=function(src,data){
}
dataStr+='requesttoken='+OC.EventSource.requesttoken;
if(!this.useFallBack && typeof EventSource !='undefined'){
- this.source=new EventSource(src+'?'+dataStr);
+ var joinChar = '&';
+ if(src.indexOf('?') == -1) {
+ joinChar = '?';
+ }
+ this.source=new EventSource(src+joinChar+dataStr);
this.source.onmessage=function(e){
for(var i=0;i<this.typelessListeners.length;i++){
this.typelessListeners[i](JSON.parse(e.data));
@@ -54,7 +58,12 @@ OC.EventSource=function(src,data){
this.iframe=$('<iframe/>');
this.iframe.attr('id',iframeId);
this.iframe.hide();
- this.iframe.attr('src',src+'?fallback=true&fallback_id='+OC.EventSource.iframeCount+'&'+dataStr);
+
+ var joinChar = '&';
+ if(src.indexOf('?') == -1) {
+ joinChar = '?';
+ }
+ this.iframe.attr('src',src+joinChar+'fallback=true&fallback_id='+OC.EventSource.iframeCount+'&'+dataStr);
$('body').append(this.iframe);
this.useFallBack=true;
OC.EventSource.iframeCount++
@@ -90,7 +99,7 @@ OC.EventSource.prototype={
lastLength:0,//for fallback
listen:function(type,callback){
if(callback && callback.call){
-
+
if(type){
if(this.useFallBack){
if(!this.listeners[type]){
diff --git a/core/js/share.js b/core/js/share.js
index 8fcea84af88..0f71ae22419 100644
--- a/core/js/share.js
+++ b/core/js/share.js
@@ -179,7 +179,7 @@ OC.Share={
if (data.shares) {
$.each(data.shares, function(index, share) {
if (share.share_type == OC.Share.SHARE_TYPE_LINK) {
- OC.Share.showLink(itemSource, share.share_with);
+ OC.Share.showLink(share.token, share.share_with, itemSource);
} else {
if (share.collection) {
OC.Share.addShareWith(share.share_type, share.share_with, share.permissions, possiblePermissions, share.collection);
@@ -323,18 +323,24 @@ OC.Share={
$('#expiration').show();
}
},
- showLink:function(itemSource, password) {
+ showLink:function(token, password, itemSource) {
OC.Share.itemShares[OC.Share.SHARE_TYPE_LINK] = true;
$('#linkCheckbox').attr('checked', true);
- var filename = $('tr').filterAttr('data-id', String(itemSource)).data('file');
- var type = $('tr').filterAttr('data-id', String(itemSource)).data('type');
- if ($('#dir').val() == '/') {
- var file = $('#dir').val() + filename;
+ if (! token) {
+ //fallback to pre token link
+ var filename = $('tr').filterAttr('data-id', String(itemSource)).data('file');
+ var type = $('tr').filterAttr('data-id', String(itemSource)).data('type');
+ if ($('#dir').val() == '/') {
+ var file = $('#dir').val() + filename;
+ } else {
+ var file = $('#dir').val() + '/' + filename;
+ }
+ file = '/'+OC.currentUser+'/files'+file;
+ var link = parent.location.protocol+'//'+location.host+OC.linkTo('', 'public.php')+'?service=files&'+type+'='+encodeURIComponent(file);
} else {
- var file = $('#dir').val() + '/' + filename;
+ //TODO add path param when showing a link to file in a subfolder of a public link share
+ var link = parent.location.protocol+'//'+location.host+OC.linkTo('', 'public.php')+'?service=files&t='+token;
}
- file = '/'+OC.currentUser+'/files'+file;
- var link = parent.location.protocol+'//'+location.host+OC.linkTo('', 'public.php')+'?service=files&'+type+'='+encodeURIComponent(file);
$('#linkText').val(link);
$('#linkText').show('blind');
$('#showPassword').show();
@@ -480,8 +486,8 @@ $(document).ready(function() {
var itemSource = $('#dropdown').data('item-source');
if (this.checked) {
// Create a link
- OC.Share.share(itemType, itemSource, OC.Share.SHARE_TYPE_LINK, '', OC.PERMISSION_READ, function() {
- OC.Share.showLink(itemSource);
+ OC.Share.share(itemType, itemSource, OC.Share.SHARE_TYPE_LINK, '', OC.PERMISSION_READ, function(data) {
+ OC.Share.showLink(data.token, null, itemSource);
OC.Share.updateIcon(itemType, itemSource);
});
} else {
diff --git a/core/l10n/eu.php b/core/l10n/eu.php
index 6622a822d08..0dbf3d41692 100644
--- a/core/l10n/eu.php
+++ b/core/l10n/eu.php
@@ -1,13 +1,23 @@
<?php $TRANSLATIONS = array(
+"Category type not provided." => "Kategoria mota ez da zehaztu.",
"No category to add?" => "Ez dago gehitzeko kategoriarik?",
"This category already exists: " => "Kategoria hau dagoeneko existitzen da:",
+"Object type not provided." => "Objetu mota ez da zehaztu.",
+"%s ID not provided." => "%s ID mota ez da zehaztu.",
+"Error adding %s to favorites." => "Errorea gertatu da %s gogokoetara gehitzean.",
"No categories selected for deletion." => "Ez da ezabatzeko kategoriarik hautatu.",
+"Error removing %s from favorites." => "Errorea gertatu da %s gogokoetatik ezabatzean.",
"Settings" => "Ezarpenak",
"seconds ago" => "segundu",
"1 minute ago" => "orain dela minutu 1",
+"{minutes} minutes ago" => "orain dela {minutes} minutu",
+"1 hour ago" => "orain dela ordu bat",
+"{hours} hours ago" => "orain dela {hours} ordu",
"today" => "gaur",
"yesterday" => "atzo",
+"{days} days ago" => "orain dela {days} egun",
"last month" => "joan den hilabetean",
+"{months} months ago" => "orain dela {months} hilabete",
"months ago" => "hilabete",
"last year" => "joan den urtean",
"years ago" => "urte",
@@ -16,10 +26,15 @@
"No" => "Ez",
"Yes" => "Bai",
"Ok" => "Ados",
+"The object type is not specified." => "Objetu mota ez dago zehaztuta.",
"Error" => "Errorea",
+"The app name is not specified." => "App izena ez dago zehaztuta.",
+"The required file {file} is not installed!" => "Beharrezkoa den {file} fitxategia ez dago instalatuta!",
"Error while sharing" => "Errore bat egon da elkarbanatzean",
"Error while unsharing" => "Errore bat egon da elkarbanaketa desegitean",
"Error while changing permissions" => "Errore bat egon da baimenak aldatzean",
+"Shared with you and the group {group} by {owner}" => "{owner}-k zu eta {group} taldearekin partekatuta",
+"Shared with you by {owner}" => "{owner}-k zurekin partekatuta",
"Share with" => "Elkarbanatu honekin",
"Share with link" => "Elkarbanatu lotura batekin",
"Password protect" => "Babestu pasahitzarekin",
@@ -29,6 +44,7 @@
"Share via email:" => "Elkarbanatu eposta bidez:",
"No people found" => "Ez da inor aurkitu",
"Resharing is not allowed" => "Berriz elkarbanatzea ez dago baimendua",
+"Shared in {item} with {user}" => "{user}ekin {item}-n partekatuta",
"Unshare" => "Ez elkarbanatu",
"can edit" => "editatu dezake",
"access control" => "sarrera kontrola",
@@ -42,6 +58,8 @@
"ownCloud password reset" => "ownCloud-en pasahitza berrezarri",
"Use the following link to reset your password: {link}" => "Eribili hurrengo lotura zure pasahitza berrezartzeko: {link}",
"You will receive a link to reset your password via Email." => "Zure pashitza berrezartzeko lotura bat jasoko duzu Epostaren bidez.",
+"Reset email send." => "Berrezartzeko eposta bidali da.",
+"Request failed!" => "Eskariak huts egin du!",
"Username" => "Erabiltzaile izena",
"Request reset" => "Eskaera berrezarri da",
"Your password was reset" => "Zure pasahitza berrezarri da",
@@ -58,6 +76,8 @@
"Edit categories" => "Editatu kategoriak",
"Add" => "Gehitu",
"Security Warning" => "Segurtasun abisua",
+"No secure random number generator is available, please enable the PHP OpenSSL extension." => "Ez dago hausazko zenbaki sortzaile segururik eskuragarri, mesedez gatiu PHP OpenSSL extensioa.",
+"Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Hausazko zenbaki sortzaile segururik gabe erasotzaile batek pasahitza berrezartzeko kodeak iragarri ditzake eta zure kontuaz jabetu.",
"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." => "Zure data karpeta eta zure fitxategiak internetetik zuzenean eskuragarri egon daitezke. ownCloudek emandako .htaccess fitxategia ez du bere lana egiten. Aholkatzen dizugu zure web zerbitzaria ongi konfiguratzea data karpeta eskuragarri ez izateko edo data karpeta web zerbitzariaren dokumentu errotik mugitzea.",
"Create an <strong>admin account</strong>" => "Sortu <strong>kudeatzaile kontu<strong> bat",
"Advanced" => "Aurreratua",
@@ -91,10 +111,16 @@
"December" => "Abendua",
"web services under your control" => "web zerbitzuak zure kontrolpean",
"Log out" => "Saioa bukatu",
+"Automatic logon rejected!" => "Saio hasiera automatikoa ez onartuta!",
+"If you did not change your password recently, your account may be compromised!" => "Zure pasahitza orain dela gutxi ez baduzu aldatu, zure kontua arriskuan egon daiteke!",
+"Please change your password to secure your account again." => "Mesedez aldatu zure pasahitza zure kontua berriz segurtatzeko.",
"Lost your password?" => "Galdu duzu pasahitza?",
"remember" => "gogoratu",
"Log in" => "Hasi saioa",
"You are logged out." => "Zure saioa bukatu da.",
"prev" => "aurrekoa",
-"next" => "hurrengoa"
+"next" => "hurrengoa",
+"Security Warning!" => "Segurtasun abisua",
+"Please verify your password. <br/>For security reasons you may be occasionally asked to enter your password again." => "Mesedez egiaztatu zure pasahitza. <br/>Segurtasun arrazoiengatik noizbehinka zure pasahitza berriz sartzea eska diezazukegu.",
+"Verify" => "Egiaztatu"
);
diff --git a/core/l10n/fr.php b/core/l10n/fr.php
index a513ad19659..f02a7b0087c 100644
--- a/core/l10n/fr.php
+++ b/core/l10n/fr.php
@@ -1,15 +1,23 @@
<?php $TRANSLATIONS = array(
+"Category type not provided." => "Type de catégorie non spécifié.",
"No category to add?" => "Pas de catégorie à ajouter ?",
"This category already exists: " => "Cette catégorie existe déjà : ",
+"Object type not provided." => "Type d'objet non spécifié.",
+"%s ID not provided." => "L'identifiant de %s n'est pas spécifié.",
+"Error adding %s to favorites." => "Erreur lors de l'ajout de %s aux favoris.",
"No categories selected for deletion." => "Aucune catégorie sélectionnée pour suppression",
+"Error removing %s from favorites." => "Erreur lors de la suppression de %s des favoris.",
"Settings" => "Paramètres",
"seconds ago" => "il y a quelques secondes",
"1 minute ago" => "il y a une minute",
"{minutes} minutes ago" => "il y a {minutes} minutes",
+"1 hour ago" => "Il y a une heure",
+"{hours} hours ago" => "Il y a {hours} heures",
"today" => "aujourd'hui",
"yesterday" => "hier",
"{days} days ago" => "il y a {days} jours",
"last month" => "le mois dernier",
+"{months} months ago" => "Il y a {months} mois",
"months ago" => "il y a plusieurs mois",
"last year" => "l'année dernière",
"years ago" => "il y a plusieurs années",
@@ -18,7 +26,10 @@
"No" => "Non",
"Yes" => "Oui",
"Ok" => "Ok",
+"The object type is not specified." => "Le type d'objet n'est pas spécifié.",
"Error" => "Erreur",
+"The app name is not specified." => "Le nom de l'application n'est pas spécifié.",
+"The required file {file} is not installed!" => "Le fichier requis {file} n'est pas installé !",
"Error while sharing" => "Erreur lors de la mise en partage",
"Error while unsharing" => "Erreur lors de l'annulation du partage",
"Error while changing permissions" => "Erreur lors du changement des permissions",
diff --git a/core/l10n/pl.php b/core/l10n/pl.php
index de8c6e77b79..4b8b7fc844a 100644
--- a/core/l10n/pl.php
+++ b/core/l10n/pl.php
@@ -1,15 +1,23 @@
<?php $TRANSLATIONS = array(
+"Category type not provided." => "Typ kategorii nie podany.",
"No category to add?" => "Brak kategorii",
"This category already exists: " => "Ta kategoria już istnieje",
+"Object type not provided." => "Typ obiektu nie podany.",
+"%s ID not provided." => "%s ID nie podany.",
+"Error adding %s to favorites." => "Błąd dodania %s do ulubionych.",
"No categories selected for deletion." => "Nie ma kategorii zaznaczonych do usunięcia.",
+"Error removing %s from favorites." => "Błąd usunięcia %s z ulubionych.",
"Settings" => "Ustawienia",
"seconds ago" => "sekund temu",
"1 minute ago" => "1 minute temu",
"{minutes} minutes ago" => "{minutes} minut temu",
+"1 hour ago" => "1 godzine temu",
+"{hours} hours ago" => "{hours} godzin temu",
"today" => "dziś",
"yesterday" => "wczoraj",
"{days} days ago" => "{days} dni temu",
"last month" => "ostani miesiąc",
+"{months} months ago" => "{months} miesięcy temu",
"months ago" => "miesięcy temu",
"last year" => "ostatni rok",
"years ago" => "lat temu",
@@ -18,7 +26,10 @@
"No" => "Nie",
"Yes" => "Tak",
"Ok" => "Ok",
+"The object type is not specified." => "Typ obiektu nie jest określony.",
"Error" => "Błąd",
+"The app name is not specified." => "Nazwa aplikacji nie jest określona.",
+"The required file {file} is not installed!" => "Żądany plik {file} nie jest zainstalowany!",
"Error while sharing" => "Błąd podczas współdzielenia",
"Error while unsharing" => "Błąd podczas zatrzymywania współdzielenia",
"Error while changing permissions" => "Błąd przy zmianie uprawnień",
diff --git a/core/l10n/uk.php b/core/l10n/uk.php
index fd5b7be8dcd..904ab03bf82 100644
--- a/core/l10n/uk.php
+++ b/core/l10n/uk.php
@@ -1,22 +1,67 @@
<?php $TRANSLATIONS = array(
+"Category type not provided." => "Не вказано тип категорії.",
+"No category to add?" => "Відсутні категорії для додавання?",
+"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." => "Жодної категорії не обрано для видалення.",
+"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} години тому",
"today" => "сьогодні",
"yesterday" => "вчора",
+"{days} days ago" => "{days} днів тому",
"last month" => "минулого місяця",
+"{months} months ago" => "{months} місяців тому",
"months ago" => "місяці тому",
"last year" => "минулого року",
"years ago" => "роки тому",
+"Choose" => "Обрати",
"Cancel" => "Відмінити",
"No" => "Ні",
"Yes" => "Так",
+"Ok" => "Ok",
+"The object type is not specified." => "Не визначено тип об'єкту.",
"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" => "Помилка при зміні повноважень",
+"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" => "Пароль",
+"Set expiration date" => "Встановити термін дії",
+"Expiration date" => "Термін дії",
+"Share via email:" => "Опублікувати через електронну пошту:",
+"No people found" => "Жодної людини не знайдено",
+"Resharing is not allowed" => "Пере-публікація не дозволяється",
+"Shared in {item} with {user}" => "Опубліковано {item} для {user}",
"Unshare" => "Заборонити доступ",
+"can edit" => "може редагувати",
+"access control" => "контроль доступу",
"create" => "створити",
+"update" => "оновити",
+"delete" => "видалити",
+"share" => "опублікувати",
+"Password protected" => "Захищено паролем",
+"Error unsetting expiration date" => "Помилка при відміні терміна дії",
+"Error setting expiration date" => "Помилка при встановленні терміна дії",
+"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." => "Ви отримаєте посилання для скидання вашого паролю на e-mail.",
+"Reset email send." => "Лист скидання відправлено.",
+"Request failed!" => "Невдалий запит!",
"Username" => "Ім'я користувача",
+"Request reset" => "Запит скидання",
"Your password was reset" => "Ваш пароль був скинутий",
"To login page" => "До сторінки входу",
"New password" => "Новий пароль",
@@ -26,12 +71,24 @@
"Apps" => "Додатки",
"Admin" => "Адміністратор",
"Help" => "Допомога",
+"Access forbidden" => "Доступ заборонено",
+"Cloud not found" => "Cloud не знайдено",
+"Edit categories" => "Редагувати категорії",
"Add" => "Додати",
+"Security Warning" => "Попередження про небезпеку",
+"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." => "Ваш каталог з даними та Ваші файли можливо доступні з Інтернету. Файл .htaccess, наданий з ownCloud, не працює. Ми наполегливо рекомендуємо Вам налаштувати свій веб-сервер таким чином, щоб каталог data більше не був доступний, або перемістити каталог data за межі кореневого каталогу документів веб-сервера.",
+"Create an <strong>admin account</strong>" => "Створити <strong>обліковий запис адміністратора</strong>",
+"Advanced" => "Додатково",
+"Data folder" => "Каталог даних",
"Configure the database" => "Налаштування бази даних",
"will be used" => "буде використано",
"Database user" => "Користувач бази даних",
"Database password" => "Пароль для бази даних",
"Database name" => "Назва бази даних",
+"Database tablespace" => "Таблиця бази даних",
+"Database host" => "Хост бази даних",
"Finish setup" => "Завершити налаштування",
"Sunday" => "Неділя",
"Monday" => "Понеділок",
@@ -54,7 +111,16 @@
"December" => "Грудень",
"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?" => "Забули пароль?",
"remember" => "запам'ятати",
-"Log in" => "Вхід"
+"Log in" => "Вхід",
+"You are logged out." => "Ви вийшли з системи.",
+"prev" => "попередній",
+"next" => "наступний",
+"Security Warning!" => "Попередження про небезпеку!",
+"Please verify your password. <br/>For security reasons you may be occasionally asked to enter your password again." => "Будь ласка, повторно введіть свій пароль. <br/>З питань безпеки, Вам інколи доведеться повторно вводити свій пароль.",
+"Verify" => "Підтвердити"
);
diff --git a/core/l10n/zh_TW.php b/core/l10n/zh_TW.php
index 9fb2cf36637..2d5bb407087 100644
--- a/core/l10n/zh_TW.php
+++ b/core/l10n/zh_TW.php
@@ -5,23 +5,47 @@
"Settings" => "設定",
"seconds ago" => "幾秒前",
"1 minute ago" => "1 分鐘前",
+"{minutes} minutes ago" => "{minutes} 分鐘前",
+"1 hour ago" => "1 個小時前",
+"{hours} hours ago" => "{hours} 個小時前",
"today" => "今天",
"yesterday" => "昨天",
+"{days} days ago" => "{days} 天前",
"last month" => "上個月",
+"{months} months ago" => "{months} 個月前",
"months ago" => "幾個月前",
"last year" => "去年",
"years ago" => "幾年前",
+"Choose" => "選擇",
"Cancel" => "取消",
"No" => "No",
"Yes" => "Yes",
"Ok" => "Ok",
"Error" => "錯誤",
+"Error while sharing" => "分享時發生錯誤",
+"Shared with you by {owner}" => "{owner} 已經和您分享",
+"Share with" => "與分享",
+"Share with link" => "使用連結分享",
+"Password protect" => "密碼保護",
"Password" => "密碼",
+"Set expiration date" => "設置到期日",
+"Expiration date" => "到期日",
+"Share via email:" => "透過email分享:",
+"Shared in {item} with {user}" => "已和 {user} 分享 {item}",
"Unshare" => "取消共享",
+"can edit" => "可編輯",
+"access control" => "存取控制",
"create" => "建立",
+"update" => "更新",
+"delete" => "刪除",
+"share" => "分享",
+"Password protected" => "密碼保護",
+"Error setting expiration date" => "錯誤的到期日設定",
"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!" => "請求失敗!",
"Username" => "使用者名稱",
"Request reset" => "要求重設",
"Your password was reset" => "你的密碼已重設",
@@ -38,6 +62,7 @@
"Edit categories" => "編輯分類",
"Add" => "添加",
"Security Warning" => "安全性警告",
+"No secure random number generator is available, please enable the PHP OpenSSL extension." => "沒有可用的隨機數字產生器, 請啟用 PHP 中 OpenSSL 擴充功能.",
"Create an <strong>admin account</strong>" => "建立一個<strong>管理者帳號</strong>",
"Advanced" => "進階",
"Data folder" => "資料夾",
@@ -75,5 +100,7 @@
"Log in" => "登入",
"You are logged out." => "你已登出",
"prev" => "上一頁",
-"next" => "下一頁"
+"next" => "下一頁",
+"Security Warning!" => "安全性警告!",
+"Verify" => "驗證"
);