aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/files/l10n/de.js3
-rw-r--r--apps/files/l10n/de.json3
-rw-r--r--apps/files/l10n/de_DE.js3
-rw-r--r--apps/files/l10n/de_DE.json3
-rw-r--r--apps/files/l10n/es_MX.js3
-rw-r--r--apps/files/l10n/es_MX.json3
-rw-r--r--apps/files/l10n/fr.js1
-rw-r--r--apps/files/l10n/fr.json1
-rw-r--r--apps/files/l10n/hu.js3
-rw-r--r--apps/files/l10n/hu.json3
-rw-r--r--apps/files/l10n/it.js3
-rw-r--r--apps/files/l10n/it.json3
-rw-r--r--apps/files/l10n/ko.js25
-rw-r--r--apps/files/l10n/ko.json25
-rw-r--r--apps/files/l10n/pt_BR.js3
-rw-r--r--apps/files/l10n/pt_BR.json3
-rw-r--r--apps/files/l10n/sr.js3
-rw-r--r--apps/files/l10n/sr.json3
-rw-r--r--apps/theming/lib/Controller/ThemingController.php2
-rw-r--r--core/Controller/ClientFlowLoginController.php3
-rw-r--r--core/css/header.scss23
-rw-r--r--core/css/styles.scss61
-rw-r--r--core/js/sharedialogshareelistview.js19
-rw-r--r--lib/l10n/ko.js40
-rw-r--r--lib/l10n/ko.json40
-rw-r--r--lib/private/DB/MigrationService.php39
-rw-r--r--settings/l10n/de.js6
-rw-r--r--settings/l10n/de.json6
-rw-r--r--settings/l10n/de_DE.js6
-rw-r--r--settings/l10n/de_DE.json6
-rw-r--r--settings/l10n/es_MX.js6
-rw-r--r--settings/l10n/es_MX.json6
-rw-r--r--settings/l10n/fr.js6
-rw-r--r--settings/l10n/fr.json6
-rw-r--r--settings/l10n/hu.js6
-rw-r--r--settings/l10n/hu.json6
-rw-r--r--settings/l10n/it.js6
-rw-r--r--settings/l10n/it.json6
-rw-r--r--settings/l10n/ko.js6
-rw-r--r--settings/l10n/ko.json6
-rw-r--r--settings/l10n/pt_BR.js6
-rw-r--r--settings/l10n/pt_BR.json6
-rw-r--r--settings/l10n/sr.js6
-rw-r--r--settings/l10n/sr.json6
-rw-r--r--version.php4
45 files changed, 381 insertions, 52 deletions
diff --git a/apps/files/l10n/de.js b/apps/files/l10n/de.js
index 8f39f70001f..6f25a1ec2d7 100644
--- a/apps/files/l10n/de.js
+++ b/apps/files/l10n/de.js
@@ -62,8 +62,11 @@ OC.L10N.register(
"You don’t have permission to upload or create files here" : "Du hast keine Berechtigung, hier Dateien hochzuladen oder zu erstellen",
"_Uploading %n file_::_Uploading %n files_" : ["%n Datei wird hochgeladen","%n Dateien werden hochgeladen"],
"New" : "Neu",
+ "{used} of {quota} used" : "{used} von {quota} verwendet",
+ "{used} used" : "{used} verwendet",
"\"{name}\" is an invalid file name." : "»{name}« ist kein gültiger Dateiname.",
"File name cannot be empty." : "Der Dateiname darf nicht leer sein.",
+ "\"/\" is not allowed inside a file name." : "\"/\" ist innerhalb eines Dateinamens nicht erlaubt.",
"\"{name}\" is not an allowed filetype" : "„{name}“ ist kein erlaubter Dateityp",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Der Speicher von {owner} ist voll, Dateien können nicht mehr aktualisiert oder synchronisiert werden!",
"Your storage is full, files can not be updated or synced anymore!" : "Dein Speicher ist voll, daher können keine Dateien mehr aktualisiert oder synchronisiert werden!",
diff --git a/apps/files/l10n/de.json b/apps/files/l10n/de.json
index 13939c46503..9df967faf35 100644
--- a/apps/files/l10n/de.json
+++ b/apps/files/l10n/de.json
@@ -60,8 +60,11 @@
"You don’t have permission to upload or create files here" : "Du hast keine Berechtigung, hier Dateien hochzuladen oder zu erstellen",
"_Uploading %n file_::_Uploading %n files_" : ["%n Datei wird hochgeladen","%n Dateien werden hochgeladen"],
"New" : "Neu",
+ "{used} of {quota} used" : "{used} von {quota} verwendet",
+ "{used} used" : "{used} verwendet",
"\"{name}\" is an invalid file name." : "»{name}« ist kein gültiger Dateiname.",
"File name cannot be empty." : "Der Dateiname darf nicht leer sein.",
+ "\"/\" is not allowed inside a file name." : "\"/\" ist innerhalb eines Dateinamens nicht erlaubt.",
"\"{name}\" is not an allowed filetype" : "„{name}“ ist kein erlaubter Dateityp",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Der Speicher von {owner} ist voll, Dateien können nicht mehr aktualisiert oder synchronisiert werden!",
"Your storage is full, files can not be updated or synced anymore!" : "Dein Speicher ist voll, daher können keine Dateien mehr aktualisiert oder synchronisiert werden!",
diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js
index eefcbc81d3d..592fd62ed62 100644
--- a/apps/files/l10n/de_DE.js
+++ b/apps/files/l10n/de_DE.js
@@ -62,8 +62,11 @@ OC.L10N.register(
"You don’t have permission to upload or create files here" : "Sie haben keine Berechtigung, hier Dateien hochzuladen oder zu erstellen",
"_Uploading %n file_::_Uploading %n files_" : ["%n Datei wird hoch geladen","%n Dateien werden hoch geladen"],
"New" : "Neu",
+ "{used} of {quota} used" : "{used} von {quota} verwendet",
+ "{used} used" : "{used} verwendet",
"\"{name}\" is an invalid file name." : "„{name}“ ist kein gültiger Dateiname.",
"File name cannot be empty." : "Der Dateiname darf nicht leer sein.",
+ "\"/\" is not allowed inside a file name." : "\"/\" ist innerhalb eines Dateinamens nicht erlaubt.",
"\"{name}\" is not an allowed filetype" : "„{name}“ ist kein erlaubter Dateityp",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Der Speicher von {owner} ist voll, Dateien können nicht mehr aktualisiert oder synchronisiert werden!",
"Your storage is full, files can not be updated or synced anymore!" : "Ihr Speicher ist voll, daher können keine Dateien mehr aktualisiert oder synchronisiert werden!",
diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json
index 74998a7ad9e..73f811b69c2 100644
--- a/apps/files/l10n/de_DE.json
+++ b/apps/files/l10n/de_DE.json
@@ -60,8 +60,11 @@
"You don’t have permission to upload or create files here" : "Sie haben keine Berechtigung, hier Dateien hochzuladen oder zu erstellen",
"_Uploading %n file_::_Uploading %n files_" : ["%n Datei wird hoch geladen","%n Dateien werden hoch geladen"],
"New" : "Neu",
+ "{used} of {quota} used" : "{used} von {quota} verwendet",
+ "{used} used" : "{used} verwendet",
"\"{name}\" is an invalid file name." : "„{name}“ ist kein gültiger Dateiname.",
"File name cannot be empty." : "Der Dateiname darf nicht leer sein.",
+ "\"/\" is not allowed inside a file name." : "\"/\" ist innerhalb eines Dateinamens nicht erlaubt.",
"\"{name}\" is not an allowed filetype" : "„{name}“ ist kein erlaubter Dateityp",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Der Speicher von {owner} ist voll, Dateien können nicht mehr aktualisiert oder synchronisiert werden!",
"Your storage is full, files can not be updated or synced anymore!" : "Ihr Speicher ist voll, daher können keine Dateien mehr aktualisiert oder synchronisiert werden!",
diff --git a/apps/files/l10n/es_MX.js b/apps/files/l10n/es_MX.js
index 793abaf101b..99cddff26c1 100644
--- a/apps/files/l10n/es_MX.js
+++ b/apps/files/l10n/es_MX.js
@@ -62,8 +62,11 @@ OC.L10N.register(
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos"],
"New" : "Nuevo",
+ "{used} of {quota} used" : "{used} de {quota} usados",
+ "{used} used" : "{used} usados",
"\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ",
"File name cannot be empty." : "El nombre de archivo no puede estar vacío.",
+ "\"/\" is not allowed inside a file name." : "No se permite el uso del caracter \"/\" en el nombre del archivo.",
"\"{name}\" is not an allowed filetype" : "\"{name}\" es un tipo de archivo no permitido",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "El espacio de {owner} está lleno. ¡Los archivos ya no se pueden actualizar o sincronizar!",
"Your storage is full, files can not be updated or synced anymore!" : "Tu espacio está lleno. ¡Los archivos ya no se pueden actualizar o sincronizar!",
diff --git a/apps/files/l10n/es_MX.json b/apps/files/l10n/es_MX.json
index 4083caedd5e..63160ebcf09 100644
--- a/apps/files/l10n/es_MX.json
+++ b/apps/files/l10n/es_MX.json
@@ -60,8 +60,11 @@
"You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí",
"_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos"],
"New" : "Nuevo",
+ "{used} of {quota} used" : "{used} de {quota} usados",
+ "{used} used" : "{used} usados",
"\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ",
"File name cannot be empty." : "El nombre de archivo no puede estar vacío.",
+ "\"/\" is not allowed inside a file name." : "No se permite el uso del caracter \"/\" en el nombre del archivo.",
"\"{name}\" is not an allowed filetype" : "\"{name}\" es un tipo de archivo no permitido",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "El espacio de {owner} está lleno. ¡Los archivos ya no se pueden actualizar o sincronizar!",
"Your storage is full, files can not be updated or synced anymore!" : "Tu espacio está lleno. ¡Los archivos ya no se pueden actualizar o sincronizar!",
diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js
index c17791b5cbd..b5035e6a1a3 100644
--- a/apps/files/l10n/fr.js
+++ b/apps/files/l10n/fr.js
@@ -62,6 +62,7 @@ OC.L10N.register(
"You don’t have permission to upload or create files here" : "Vous n'avez pas la permission d'envoyer ou de créer des fichiers ici",
"_Uploading %n file_::_Uploading %n files_" : ["Téléversement de %n fichier","Téléversement de %n fichiers"],
"New" : "Nouveau",
+ "{used} used" : "{used} utilisé",
"\"{name}\" is an invalid file name." : "\"{name}\" n'est pas un nom de fichier valide.",
"File name cannot be empty." : "Le nom de fichier ne peut être vide.",
"\"{name}\" is not an allowed filetype" : "\"{name}\" n'est pas un nom de fichier autorisé.",
diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json
index 77256638126..d65a471164e 100644
--- a/apps/files/l10n/fr.json
+++ b/apps/files/l10n/fr.json
@@ -60,6 +60,7 @@
"You don’t have permission to upload or create files here" : "Vous n'avez pas la permission d'envoyer ou de créer des fichiers ici",
"_Uploading %n file_::_Uploading %n files_" : ["Téléversement de %n fichier","Téléversement de %n fichiers"],
"New" : "Nouveau",
+ "{used} used" : "{used} utilisé",
"\"{name}\" is an invalid file name." : "\"{name}\" n'est pas un nom de fichier valide.",
"File name cannot be empty." : "Le nom de fichier ne peut être vide.",
"\"{name}\" is not an allowed filetype" : "\"{name}\" n'est pas un nom de fichier autorisé.",
diff --git a/apps/files/l10n/hu.js b/apps/files/l10n/hu.js
index 78effaf18a3..9eb1c133784 100644
--- a/apps/files/l10n/hu.js
+++ b/apps/files/l10n/hu.js
@@ -62,8 +62,11 @@ OC.L10N.register(
"You don’t have permission to upload or create files here" : "Nincs jogosultságod fájlok feltöltéséhez vagy létrehozásához ide",
"_Uploading %n file_::_Uploading %n files_" : ["%n fájl feltöltése","%n fájl feltöltése"],
"New" : "Új",
+ "{used} of {quota} used" : "{used} / {quota} felhasználva",
+ "{used} used" : "{used} felhasználva",
"\"{name}\" is an invalid file name." : "\"{name}\" érvénytelen, mint fájlnév.",
"File name cannot be empty." : "A fájlnév nem lehet semmi.",
+ "\"/\" is not allowed inside a file name." : "„/” nem szerepelhet fájlnévben.",
"\"{name}\" is not an allowed filetype" : "\"{name}\" nem engedélyetett fájltípus",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "A {owner} felhasználó tárolója betelt, a fájlok nem frissíthetők és szinkronizálhatók többet!",
"Your storage is full, files can not be updated or synced anymore!" : "A tároló tele van, a fájlok nem frissíthetőek vagy szinkronizálhatóak a jövőben.",
diff --git a/apps/files/l10n/hu.json b/apps/files/l10n/hu.json
index 0b1986ae526..8206518d6ab 100644
--- a/apps/files/l10n/hu.json
+++ b/apps/files/l10n/hu.json
@@ -60,8 +60,11 @@
"You don’t have permission to upload or create files here" : "Nincs jogosultságod fájlok feltöltéséhez vagy létrehozásához ide",
"_Uploading %n file_::_Uploading %n files_" : ["%n fájl feltöltése","%n fájl feltöltése"],
"New" : "Új",
+ "{used} of {quota} used" : "{used} / {quota} felhasználva",
+ "{used} used" : "{used} felhasználva",
"\"{name}\" is an invalid file name." : "\"{name}\" érvénytelen, mint fájlnév.",
"File name cannot be empty." : "A fájlnév nem lehet semmi.",
+ "\"/\" is not allowed inside a file name." : "„/” nem szerepelhet fájlnévben.",
"\"{name}\" is not an allowed filetype" : "\"{name}\" nem engedélyetett fájltípus",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "A {owner} felhasználó tárolója betelt, a fájlok nem frissíthetők és szinkronizálhatók többet!",
"Your storage is full, files can not be updated or synced anymore!" : "A tároló tele van, a fájlok nem frissíthetőek vagy szinkronizálhatóak a jövőben.",
diff --git a/apps/files/l10n/it.js b/apps/files/l10n/it.js
index 5748a952d4a..bb4faa24595 100644
--- a/apps/files/l10n/it.js
+++ b/apps/files/l10n/it.js
@@ -62,8 +62,11 @@ OC.L10N.register(
"You don’t have permission to upload or create files here" : "Qui non hai i permessi per caricare o creare file",
"_Uploading %n file_::_Uploading %n files_" : ["Caricamento di %n file in corso","Caricamento di %n file in corso"],
"New" : "Nuovo",
+ "{used} of {quota} used" : "{used} di {quota} utilizzati",
+ "{used} used" : "{used} utilizzati",
"\"{name}\" is an invalid file name." : "\"{name}\" non è un nome file valido.",
"File name cannot be empty." : "Il nome del file non può essere vuoto.",
+ "\"/\" is not allowed inside a file name." : "\"/\" non è consentito nel nome di un file.",
"\"{name}\" is not an allowed filetype" : "\"{name}\" non è un tipo di file valido",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Lo spazio di archiviazione di {owner} è pieno, i file non possono essere più aggiornati o sincronizzati!",
"Your storage is full, files can not be updated or synced anymore!" : "Lo spazio di archiviazione è pieno, i file non possono essere più aggiornati o sincronizzati!",
diff --git a/apps/files/l10n/it.json b/apps/files/l10n/it.json
index 0a2b7b4ae17..332eb746ac1 100644
--- a/apps/files/l10n/it.json
+++ b/apps/files/l10n/it.json
@@ -60,8 +60,11 @@
"You don’t have permission to upload or create files here" : "Qui non hai i permessi per caricare o creare file",
"_Uploading %n file_::_Uploading %n files_" : ["Caricamento di %n file in corso","Caricamento di %n file in corso"],
"New" : "Nuovo",
+ "{used} of {quota} used" : "{used} di {quota} utilizzati",
+ "{used} used" : "{used} utilizzati",
"\"{name}\" is an invalid file name." : "\"{name}\" non è un nome file valido.",
"File name cannot be empty." : "Il nome del file non può essere vuoto.",
+ "\"/\" is not allowed inside a file name." : "\"/\" non è consentito nel nome di un file.",
"\"{name}\" is not an allowed filetype" : "\"{name}\" non è un tipo di file valido",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Lo spazio di archiviazione di {owner} è pieno, i file non possono essere più aggiornati o sincronizzati!",
"Your storage is full, files can not be updated or synced anymore!" : "Lo spazio di archiviazione è pieno, i file non possono essere più aggiornati o sincronizzati!",
diff --git a/apps/files/l10n/ko.js b/apps/files/l10n/ko.js
index db43d6fb8cc..8b6ab2b51b0 100644
--- a/apps/files/l10n/ko.js
+++ b/apps/files/l10n/ko.js
@@ -16,10 +16,15 @@ OC.L10N.register(
"Not enough free space, you are uploading {size1} but only {size2} is left" : "빈 공간이 부족합니다. 업로드할 파일 크기는 {size1}이지만 현재 {size2}만큼 비었습니다",
"Target folder \"{dir}\" does not exist any more" : "대상 폴더 \"{dir}\"이(가) 더 이상 존재하지 않습니다",
"Not enough free space" : "빈 공간이 부족합니다",
+ "Uploading …" : "업로드 중…",
+ "…" : "…",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize}/{totalSize}({bitrate})",
+ "Target folder does not exist any more" : "대상 폴더가 더 이상 존재하지 않습니다",
+ "Error when assembling chunks, status code {status}" : "조각을 모으는 중 오류 발생, 상태 코드 {status}",
"Actions" : "작업",
"Download" : "다운로드",
"Rename" : "이름 바꾸기",
+ "Move or copy" : "이동이나 복사",
"Target folder" : "대상 폴더",
"Delete" : "삭제",
"Disconnect storage" : "저장소 연결 해제",
@@ -34,6 +39,10 @@ OC.L10N.register(
"This directory is unavailable, please check the logs or contact the administrator" : "디렉터리를 사용할 수 없습니다. 로그를 확인하거나 관리자에게 연락하십시오",
"Could not move \"{file}\", target exists" : "\"{file}\"을(를) 이동할 수 없음, 대상이 존재함",
"Could not move \"{file}\"" : "\"{file}\"을(를) 이동할 수 없음",
+ "Could not copy \"{file}\", target exists" : "\"{file}\"을(를) 복사할 수 없음, 대상이 존재함",
+ "Could not copy \"{file}\"" : "\"{file}\"을(를) 복사할 수 없음",
+ "Copied {origin} inside {destination}" : "{origin}을(를) {destination}(으)로 복사함",
+ "Copied {origin} and {nbfiles} other files inside {destination}" : "{origin} 및 다른 파일 {nbfiles}개를 {destination}(으)로 복사함",
"{newName} already exists" : "{newName}이(가) 이미 존재함",
"Could not rename \"{fileName}\", it does not exist any more" : "\"{fileName}\"의 이름을 변경할 수 없음, 더 이상 존재하지 않음",
"The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "폴더 \"{dir}\" 내에 파일 \"{targetName}\"이(가) 이미 있습니다. 다른 이름을 사용하십시오.",
@@ -53,8 +62,11 @@ OC.L10N.register(
"You don’t have permission to upload or create files here" : "여기에 파일을 업로드하거나 만들 권한이 없습니다",
"_Uploading %n file_::_Uploading %n files_" : ["파일 %n개 업로드 중"],
"New" : "새로 만들기",
+ "{used} of {quota} used" : "{quota} 중 {used} 사용함",
+ "{used} used" : "{used} 사용함",
"\"{name}\" is an invalid file name." : "\"{name}\"은(는) 잘못된 파일 이름입니다.",
"File name cannot be empty." : "파일 이름이 비어 있을 수 없습니다.",
+ "\"/\" is not allowed inside a file name." : "파일 이름에 \"/\"를 사용할 수 없습니다.",
"\"{name}\" is not an allowed filetype" : "\"{name}\"은 허용된 파일 형식이 아님",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner}의 저장소가 가득 찼습니다. 파일을 더 이상 업데이트하거나 동기화할 수 없습니다!",
"Your storage is full, files can not be updated or synced anymore!" : "저장 공간이 가득 찼습니다. 파일을 업데이트하거나 동기화할 수 없습니다!",
@@ -62,12 +74,17 @@ OC.L10N.register(
"Your storage is almost full ({usedSpacePercent}%)" : "저장 공간이 거의 가득 찼습니다({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : ["'{filter}'와(과) 일치"],
"View in folder" : "폴더에서 보기",
+ "Copied!" : "복사 성공!",
"Copy direct link (only works for users who have access to this file/folder)" : "직접 링크 복사(이 파일/폴더에 접근 권한이 있는 사람만)",
"Path" : "경로",
"_%n byte_::_%n bytes_" : ["%n 바이트"],
"Favorited" : "즐겨찾기에 추가됨",
"Favorite" : "즐겨찾기",
"New folder" : "새 폴더",
+ "Upload file" : "파일 업로드",
+ "Not favorited" : "즐겨찾기에 없음",
+ "Remove from favorites" : "즐겨찾기에서 삭제",
+ "Add to favorites" : "즐겨찾기에 추가",
"An error occurred while trying to update the tags" : "태그를 업데이트하는 중 오류 발생",
"Added to favorites" : "즐겨찾기에 추가됨",
"Removed from favorites" : "즐겨찾기에서 삭제됨",
@@ -80,6 +97,7 @@ OC.L10N.register(
"Restored by {user}" : "{user} 님이 복원함",
"Renamed by {user}" : "{user} 님이 이름을 변경함",
"Moved by {user}" : "{user} 님이 이동함",
+ "\"remote user\"" : "\"원격 사용자\"",
"You created {file}" : "{file}을(를) 만듦",
"{user} created {file}" : "{user} 님이 {file}을(를) 만듦",
"{file} was created in a public folder" : "공유 폴더에 {file}이(가) 생성됨",
@@ -96,7 +114,10 @@ OC.L10N.register(
"A file has been added to or removed from your <strong>favorites</strong>" : "파일이 <strong>즐겨찾기</strong>에서 추가 또는 삭제됨",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "파일이나 폴더가 <strong>변경되거나</strong> <strong>이름이 바뀜</strong>",
"A new file or folder has been <strong>created</strong>" : "새 파일이나 폴더가 <strong>생성됨</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "파일이나 폴더가 <strong>삭제됨</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "<strong>즐겨찾는 파일</strong>의 생성 및 변경 사항에 대한 알림을 줄일 수 있습니다<em>(스트림에서만)</em>",
+ "A file or folder has been <strong>restored</strong>" : "파일이나 폴더가 <strong>복원됨</strong>",
+ "Unlimited" : "무제한",
"Upload (max. %s)" : "업로드(최대 %s)",
"File handling" : "파일 처리",
"Maximum upload size" : "최대 업로드 크기",
@@ -104,9 +125,13 @@ OC.L10N.register(
"Save" : "저장",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "PHP-FPM을 사용 중이면 변경 사항이 적용되는 데 최대 5분 정도 걸릴 수 있습니다.",
"Missing permissions to edit from here." : "여기에서 편집할 권한이 없습니다.",
+ "%s of %s used" : "%s/%s 사용함",
+ "%s used" : "%s 사용함",
"Settings" : "설정",
"Show hidden files" : "숨김 파일 보이기",
"WebDAV" : "WebDAV",
+ "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">access your Files via WebDAV</a>" : "<a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">내 파일에 WebDAV로 접근</a>하려면 이 주소를 사용하십시오",
+ "Cancel upload" : "업로드 취소",
"No files in here" : "여기에 파일 없음",
"Upload some content or sync with your devices!" : "파일을 업로드하거나 장치와 동기화하십시오!",
"No entries found in this folder" : "이 폴더에 항목 없음",
diff --git a/apps/files/l10n/ko.json b/apps/files/l10n/ko.json
index 59667b61277..b9ea23ab0b9 100644
--- a/apps/files/l10n/ko.json
+++ b/apps/files/l10n/ko.json
@@ -14,10 +14,15 @@
"Not enough free space, you are uploading {size1} but only {size2} is left" : "빈 공간이 부족합니다. 업로드할 파일 크기는 {size1}이지만 현재 {size2}만큼 비었습니다",
"Target folder \"{dir}\" does not exist any more" : "대상 폴더 \"{dir}\"이(가) 더 이상 존재하지 않습니다",
"Not enough free space" : "빈 공간이 부족합니다",
+ "Uploading …" : "업로드 중…",
+ "…" : "…",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize}/{totalSize}({bitrate})",
+ "Target folder does not exist any more" : "대상 폴더가 더 이상 존재하지 않습니다",
+ "Error when assembling chunks, status code {status}" : "조각을 모으는 중 오류 발생, 상태 코드 {status}",
"Actions" : "작업",
"Download" : "다운로드",
"Rename" : "이름 바꾸기",
+ "Move or copy" : "이동이나 복사",
"Target folder" : "대상 폴더",
"Delete" : "삭제",
"Disconnect storage" : "저장소 연결 해제",
@@ -32,6 +37,10 @@
"This directory is unavailable, please check the logs or contact the administrator" : "디렉터리를 사용할 수 없습니다. 로그를 확인하거나 관리자에게 연락하십시오",
"Could not move \"{file}\", target exists" : "\"{file}\"을(를) 이동할 수 없음, 대상이 존재함",
"Could not move \"{file}\"" : "\"{file}\"을(를) 이동할 수 없음",
+ "Could not copy \"{file}\", target exists" : "\"{file}\"을(를) 복사할 수 없음, 대상이 존재함",
+ "Could not copy \"{file}\"" : "\"{file}\"을(를) 복사할 수 없음",
+ "Copied {origin} inside {destination}" : "{origin}을(를) {destination}(으)로 복사함",
+ "Copied {origin} and {nbfiles} other files inside {destination}" : "{origin} 및 다른 파일 {nbfiles}개를 {destination}(으)로 복사함",
"{newName} already exists" : "{newName}이(가) 이미 존재함",
"Could not rename \"{fileName}\", it does not exist any more" : "\"{fileName}\"의 이름을 변경할 수 없음, 더 이상 존재하지 않음",
"The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "폴더 \"{dir}\" 내에 파일 \"{targetName}\"이(가) 이미 있습니다. 다른 이름을 사용하십시오.",
@@ -51,8 +60,11 @@
"You don’t have permission to upload or create files here" : "여기에 파일을 업로드하거나 만들 권한이 없습니다",
"_Uploading %n file_::_Uploading %n files_" : ["파일 %n개 업로드 중"],
"New" : "새로 만들기",
+ "{used} of {quota} used" : "{quota} 중 {used} 사용함",
+ "{used} used" : "{used} 사용함",
"\"{name}\" is an invalid file name." : "\"{name}\"은(는) 잘못된 파일 이름입니다.",
"File name cannot be empty." : "파일 이름이 비어 있을 수 없습니다.",
+ "\"/\" is not allowed inside a file name." : "파일 이름에 \"/\"를 사용할 수 없습니다.",
"\"{name}\" is not an allowed filetype" : "\"{name}\"은 허용된 파일 형식이 아님",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner}의 저장소가 가득 찼습니다. 파일을 더 이상 업데이트하거나 동기화할 수 없습니다!",
"Your storage is full, files can not be updated or synced anymore!" : "저장 공간이 가득 찼습니다. 파일을 업데이트하거나 동기화할 수 없습니다!",
@@ -60,12 +72,17 @@
"Your storage is almost full ({usedSpacePercent}%)" : "저장 공간이 거의 가득 찼습니다({usedSpacePercent}%)",
"_matches '{filter}'_::_match '{filter}'_" : ["'{filter}'와(과) 일치"],
"View in folder" : "폴더에서 보기",
+ "Copied!" : "복사 성공!",
"Copy direct link (only works for users who have access to this file/folder)" : "직접 링크 복사(이 파일/폴더에 접근 권한이 있는 사람만)",
"Path" : "경로",
"_%n byte_::_%n bytes_" : ["%n 바이트"],
"Favorited" : "즐겨찾기에 추가됨",
"Favorite" : "즐겨찾기",
"New folder" : "새 폴더",
+ "Upload file" : "파일 업로드",
+ "Not favorited" : "즐겨찾기에 없음",
+ "Remove from favorites" : "즐겨찾기에서 삭제",
+ "Add to favorites" : "즐겨찾기에 추가",
"An error occurred while trying to update the tags" : "태그를 업데이트하는 중 오류 발생",
"Added to favorites" : "즐겨찾기에 추가됨",
"Removed from favorites" : "즐겨찾기에서 삭제됨",
@@ -78,6 +95,7 @@
"Restored by {user}" : "{user} 님이 복원함",
"Renamed by {user}" : "{user} 님이 이름을 변경함",
"Moved by {user}" : "{user} 님이 이동함",
+ "\"remote user\"" : "\"원격 사용자\"",
"You created {file}" : "{file}을(를) 만듦",
"{user} created {file}" : "{user} 님이 {file}을(를) 만듦",
"{file} was created in a public folder" : "공유 폴더에 {file}이(가) 생성됨",
@@ -94,7 +112,10 @@
"A file has been added to or removed from your <strong>favorites</strong>" : "파일이 <strong>즐겨찾기</strong>에서 추가 또는 삭제됨",
"A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "파일이나 폴더가 <strong>변경되거나</strong> <strong>이름이 바뀜</strong>",
"A new file or folder has been <strong>created</strong>" : "새 파일이나 폴더가 <strong>생성됨</strong>",
+ "A file or folder has been <strong>deleted</strong>" : "파일이나 폴더가 <strong>삭제됨</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "<strong>즐겨찾는 파일</strong>의 생성 및 변경 사항에 대한 알림을 줄일 수 있습니다<em>(스트림에서만)</em>",
+ "A file or folder has been <strong>restored</strong>" : "파일이나 폴더가 <strong>복원됨</strong>",
+ "Unlimited" : "무제한",
"Upload (max. %s)" : "업로드(최대 %s)",
"File handling" : "파일 처리",
"Maximum upload size" : "최대 업로드 크기",
@@ -102,9 +123,13 @@
"Save" : "저장",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "PHP-FPM을 사용 중이면 변경 사항이 적용되는 데 최대 5분 정도 걸릴 수 있습니다.",
"Missing permissions to edit from here." : "여기에서 편집할 권한이 없습니다.",
+ "%s of %s used" : "%s/%s 사용함",
+ "%s used" : "%s 사용함",
"Settings" : "설정",
"Show hidden files" : "숨김 파일 보이기",
"WebDAV" : "WebDAV",
+ "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">access your Files via WebDAV</a>" : "<a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">내 파일에 WebDAV로 접근</a>하려면 이 주소를 사용하십시오",
+ "Cancel upload" : "업로드 취소",
"No files in here" : "여기에 파일 없음",
"Upload some content or sync with your devices!" : "파일을 업로드하거나 장치와 동기화하십시오!",
"No entries found in this folder" : "이 폴더에 항목 없음",
diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js
index 77c72445fda..1120d2e769b 100644
--- a/apps/files/l10n/pt_BR.js
+++ b/apps/files/l10n/pt_BR.js
@@ -62,8 +62,11 @@ OC.L10N.register(
"You don’t have permission to upload or create files here" : "Você não tem permissão para enviar ou criar arquivos aqui",
"_Uploading %n file_::_Uploading %n files_" : ["Enviando %n arquivo","Enviando %n arquivos"],
"New" : "Novo",
+ "{used} of {quota} used" : "{used} de {quota} usados",
+ "{used} used" : "{used} usados",
"\"{name}\" is an invalid file name." : "\"{name}\" é um nome de arquivo inválido.",
"File name cannot be empty." : "O nome do arquivo não pode estar em branco.",
+ "\"/\" is not allowed inside a file name." : "\"/\" não é permitido no nome do arquivo.",
"\"{name}\" is not an allowed filetype" : "\"{name}\" não é um tipo de arquivo permitido",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "O armazenamento do {owner} está cheio e os arquivos não podem ser mais atualizados ou sincronizados!",
"Your storage is full, files can not be updated or synced anymore!" : "Seu armazenamento está cheio e arquivos não podem mais ser atualizados ou sincronizados!",
diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json
index 2f4ee84a7a7..4f4a4e0de5a 100644
--- a/apps/files/l10n/pt_BR.json
+++ b/apps/files/l10n/pt_BR.json
@@ -60,8 +60,11 @@
"You don’t have permission to upload or create files here" : "Você não tem permissão para enviar ou criar arquivos aqui",
"_Uploading %n file_::_Uploading %n files_" : ["Enviando %n arquivo","Enviando %n arquivos"],
"New" : "Novo",
+ "{used} of {quota} used" : "{used} de {quota} usados",
+ "{used} used" : "{used} usados",
"\"{name}\" is an invalid file name." : "\"{name}\" é um nome de arquivo inválido.",
"File name cannot be empty." : "O nome do arquivo não pode estar em branco.",
+ "\"/\" is not allowed inside a file name." : "\"/\" não é permitido no nome do arquivo.",
"\"{name}\" is not an allowed filetype" : "\"{name}\" não é um tipo de arquivo permitido",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "O armazenamento do {owner} está cheio e os arquivos não podem ser mais atualizados ou sincronizados!",
"Your storage is full, files can not be updated or synced anymore!" : "Seu armazenamento está cheio e arquivos não podem mais ser atualizados ou sincronizados!",
diff --git a/apps/files/l10n/sr.js b/apps/files/l10n/sr.js
index ad983c19924..735bd24853d 100644
--- a/apps/files/l10n/sr.js
+++ b/apps/files/l10n/sr.js
@@ -62,8 +62,11 @@ OC.L10N.register(
"You don’t have permission to upload or create files here" : "Немате дозволе да овде отпремате или стварате фајлове",
"_Uploading %n file_::_Uploading %n files_" : ["Отпремам %n фајл","Отпремам %n фајла","Отпремам %n фајлова"],
"New" : "Ново",
+ "{used} of {quota} used" : "{used} од {quota} искоришћено",
+ "{used} used" : "{used} искоришћено",
"\"{name}\" is an invalid file name." : "\"{name}\" није исправан назив фајла.",
"File name cannot be empty." : "Назив фајла не може бити празан.",
+ "\"/\" is not allowed inside a file name." : "\"/\" није дозвољен каракетер у имену фајла.",
"\"{name}\" is not an allowed filetype" : "\"{name}\" није дозвољени тип фајла",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Складиште корисника {owner} је пуно. Фајлови се не могу ажурирати нити синхронизовати!",
"Your storage is full, files can not be updated or synced anymore!" : "Ваше складиште је пуно. Фајлови више не могу бити ажурирани ни синхронизовани!",
diff --git a/apps/files/l10n/sr.json b/apps/files/l10n/sr.json
index 7e4a1b31b90..7a01d464362 100644
--- a/apps/files/l10n/sr.json
+++ b/apps/files/l10n/sr.json
@@ -60,8 +60,11 @@
"You don’t have permission to upload or create files here" : "Немате дозволе да овде отпремате или стварате фајлове",
"_Uploading %n file_::_Uploading %n files_" : ["Отпремам %n фајл","Отпремам %n фајла","Отпремам %n фајлова"],
"New" : "Ново",
+ "{used} of {quota} used" : "{used} од {quota} искоришћено",
+ "{used} used" : "{used} искоришћено",
"\"{name}\" is an invalid file name." : "\"{name}\" није исправан назив фајла.",
"File name cannot be empty." : "Назив фајла не може бити празан.",
+ "\"/\" is not allowed inside a file name." : "\"/\" није дозвољен каракетер у имену фајла.",
"\"{name}\" is not an allowed filetype" : "\"{name}\" није дозвољени тип фајла",
"Storage of {owner} is full, files can not be updated or synced anymore!" : "Складиште корисника {owner} је пуно. Фајлови се не могу ажурирати нити синхронизовати!",
"Your storage is full, files can not be updated or synced anymore!" : "Ваше складиште је пуно. Фајлови више не могу бити ажурирани ни синхронизовани!",
diff --git a/apps/theming/lib/Controller/ThemingController.php b/apps/theming/lib/Controller/ThemingController.php
index b7777f1f907..5fd6edd8ab7 100644
--- a/apps/theming/lib/Controller/ThemingController.php
+++ b/apps/theming/lib/Controller/ThemingController.php
@@ -176,7 +176,7 @@ class ThemingController extends Controller {
$this->themingDefaults->set($setting, $value);
// reprocess server scss for preview
- $cssCached = $this->scssCacher->process(\OC::$SERVERROOT, '/core/css/server.scss', 'core');
+ $cssCached = $this->scssCacher->process(\OC::$SERVERROOT, 'core/css/server.scss', 'core');
return new DataResponse(
[
diff --git a/core/Controller/ClientFlowLoginController.php b/core/Controller/ClientFlowLoginController.php
index 47bbbce640e..7d6e79d39bc 100644
--- a/core/Controller/ClientFlowLoginController.php
+++ b/core/Controller/ClientFlowLoginController.php
@@ -319,6 +319,9 @@ class ClientFlowLoginController extends Controller {
$redirectUri = 'nc://login/server:' . $serverPath . '&user:' . urlencode($loginName) . '&password:' . urlencode($token);
}
+ // Clear the token from the login here
+ $this->tokenProvider->invalidateToken($sessionId);
+
return new Http\RedirectResponse($redirectUri);
}
}
diff --git a/core/css/header.scss b/core/css/header.scss
index b38c0bcb401..7021762bf7f 100644
--- a/core/css/header.scss
+++ b/core/css/header.scss
@@ -206,12 +206,15 @@ nav {
margin-left: -54px;
}
-.header-left #navigation,
-.ui-datepicker,
-.ui-timepicker.ui-widget {
+.header-left #navigation {
position: relative;
left: -100%;
width: 160px;
+}
+
+.header-left #navigation,
+.ui-datepicker,
+.ui-timepicker.ui-widget {
background-color: $color-main-background;
filter: drop-shadow(0 1px 10px $color-box-shadow);
&:after {
@@ -440,7 +443,6 @@ nav {
display: inline-block;
width: auto;
clear: both;
- height: 44px;
li {
float: left;
@@ -462,7 +464,7 @@ nav {
}
}
.app-loading .icon-loading-small-dark {
- top:12px;
+ top: 12px;
width: 20px;
height: 20px;
}
@@ -495,10 +497,11 @@ nav {
color: rgba($color-main-text, .7);
width: auto;
left: 50%;
- top: 45px;
+ top: 100%;
transform: translateX(-50%);
padding: 4px 10px;
filter: drop-shadow(0 1px 10px $color-box-shadow);
+ z-index: 100;
}
li:hover span {
@@ -519,7 +522,6 @@ nav {
transform: translateX(-50%);
left: 50%;
bottom: 0;
- z-index: 100;
display: none;
}
li a.active:before,
@@ -527,6 +529,13 @@ nav {
li:hover a.active:before {
display: block;
}
+ li a.active:before {
+ z-index: 99;
+ }
+ li:hover a:before,
+ li a.active:hover:before {
+ z-index: 101;
+ }
&.menu-open li:hover a:before,
&.menu-open li a.active:before,
&.menu-open li:hover span {
diff --git a/core/css/styles.scss b/core/css/styles.scss
index c479d6df888..b782c4e558a 100644
--- a/core/css/styles.scss
+++ b/core/css/styles.scss
@@ -1035,15 +1035,6 @@ code {
background-color: inherit;
}
td {
- > * {
- border-radius: 50%;
- text-align: center;
- font-weight: normal;
- color: $color-main-text;
- padding: 6px;
- line-height: 12px;
- }
-
&.ui-datepicker-today a:not(.ui-state-hover) {
background-color: nc-lighten($color-main-text, 86%);
}
@@ -1056,7 +1047,7 @@ code {
font-weight: bold;
}
- &.ui-datepicker-week-end :not(.ui-state-hover),
+ &.ui-datepicker-week-end:not(.ui-state-disabled) :not(.ui-state-hover),
.ui-priority-secondary:not(.ui-state-hover) {
color: nc-lighten($color-main-text, 33%);
opacity: .8;
@@ -1099,26 +1090,25 @@ code {
font-weight: 300;
}
}
+ /* AM/PM fix */
+ table.ui-timepicker tr .ui-timepicker-hour-cell:first-child {
+ margin-left: 30px;
+ }
.ui-timepicker-table {
th {
font-weight: normal;
color: nc-lighten($color-main-text, 33%);
opacity: .8;
+ &.periods {
+ padding: 0;
+ width: 30px;
+ line-height: 30px;
+ }
}
tr:hover {
background-color: inherit;
}
td {
- > * {
- border-radius: 50%;
- text-align: center;
- font-weight: normal;
- color: $color-main-text;
- padding: 8px 7px;
- font-size: .9em;
- line-height: 12px;
- }
-
&.ui-timepicker-hour-cell a.ui-state-active,
&.ui-timepicker-minute-cell a.ui-state-active,
.ui-state-hover,
@@ -1139,6 +1129,37 @@ code {
}
}
+/* ---- jQuery UI datepicker & timepicker global rules ---- */
+.ui-widget.ui-datepicker .ui-datepicker-calendar,
+.ui-widget.ui-timepicker table.ui-timepicker {
+ tr {
+ display: flex;
+ flex-wrap: nowrap;
+ justify-content: space-between;
+ td {
+ display: block;
+ flex: 1 1;
+ margin: 0;
+ padding: 2px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ > * {
+ border-radius: 50%;
+ text-align: center;
+ font-weight: normal;
+ color: $color-main-text;
+ display: block;
+ line-height: 18px;
+ width: 18px;
+ height: 18px;
+ padding: 3px;
+ font-size: .9em;
+ }
+ }
+ }
+}
+
/* ---- DIALOGS ---- */
#oc-dialog-filepicker-content {
diff --git a/core/js/sharedialogshareelistview.js b/core/js/sharedialogshareelistview.js
index b4828e3b0dc..30cbeff3c64 100644
--- a/core/js/sharedialogshareelistview.js
+++ b/core/js/sharedialogshareelistview.js
@@ -116,7 +116,7 @@
'<label for="expireDate-{{cid}}-{{shareId}}">{{expireDateLabel}}</label>' +
'<div class="expirationDateContainer-{{cid}}-{{shareId}} {{#unless hasExpireDate}}hidden{{/unless}}">' +
' <label for="expirationDatePicker-{{cid}}-{{shareId}}" class="hidden-visually" value="{{expirationDate}}">{{expirationLabel}}</label>' +
- ' <input id="expirationDatePicker-{{cid}}-{{shareId}}" class="datepicker" type="text" placeholder="{{expirationDatePlaceholder}}" value="{{expireDate}}" />' +
+ ' <input id="expirationDatePicker-{{cid}}-{{shareId}}" class="datepicker" type="text" placeholder="{{expirationDatePlaceholder}}" value="{{#if hasExpireDate}}{{expireDate}}{{else}}{{defaultExpireDate}}{{/if}}" />' +
'</div>' +
'</span>' +
'</li>' +
@@ -266,6 +266,8 @@
expireDateLabel: t('core', 'Set expiration date'),
passwordLabel: t('core', 'Password protect'),
crudsLabel: t('core', 'Access control'),
+ expirationDatePlaceholder: t('core', 'Expiration date'),
+ defaultExpireDate: moment().add(1, 'day').format('DD-MM-YYYY'), // Can't expire today
triangleSImage: OC.imagePath('core', 'actions/triangle-s'),
isResharingAllowed: this.configModel.get('isResharingAllowed'),
isPasswordForMailSharesRequired: this.configModel.get('isPasswordForMailSharesRequired'),
@@ -513,19 +515,14 @@
var shareId = li.data('share-id');
var expirationDatePicker = '#expirationDatePicker-' + this.cid + '-' + shareId;
var view = this;
- $(expirationDatePicker).closest('div').datepicker({
+ $(expirationDatePicker).datepicker({
dateFormat : 'dd-mm-yy',
- onSelect:
- function (expireDate) {
- view.setExpirationDate(shareId, expireDate);
- },
- onClose:
- function () {
- $(expirationDatePicker).removeClass('hidden-visually');
- }
+ onSelect: function (expireDate) {
+ view.setExpirationDate(shareId, expireDate);
+ }
});
+ $(expirationDatePicker).focus();
- $(expirationDatePicker).addClass('hidden-visually');
},
setExpirationDate: function(shareId, expireDate) {
diff --git a/lib/l10n/ko.js b/lib/l10n/ko.js
index cd3560488ea..ae4bb8404e7 100644
--- a/lib/l10n/ko.js
+++ b/lib/l10n/ko.js
@@ -2,8 +2,9 @@ OC.L10N.register(
"lib",
{
"Cannot write into \"config\" directory!" : "\"config\" 디렉터리에 기록할 수 없습니다!",
- "This can usually be fixed by giving the webserver write access to the config directory" : "config 디렉터리에 웹 서버 쓰기 권한을 주면 해결됩니다",
+ "This can usually be fixed by giving the webserver write access to the config directory" : "config 디렉터리에 웹 서버 쓰기 권한을 부여해서 해결할 수 있습니다",
"See %s" : "%s 보기",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "config 디렉터리에 웹 서버의 쓰기 권한을 부여해서 해결할 수 있습니다. %s 문서를 참조하십시오",
"The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "앱 %1$s의 파일이 올바르게 교체되지 않았습니다. 서버와 호환되는 버전인지 확인하십시오.",
"Sample configuration detected" : "예제 설정 감지됨",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "예제 설정이 복사된 것 같습니다. 올바르게 작동하지 않을 수도 있기 때문에 지원되지 않습니다. config.php를 변경하기 전 문서를 읽어 보십시오",
@@ -11,6 +12,7 @@ OC.L10N.register(
"%1$s, %2$s and %3$s" : "%1$s, %2$s 및 %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s 및 %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s 및 %5$s",
+ "Education Edition" : "교육용 에디션",
"Enterprise bundle" : "엔터프라이즈 번들",
"Groupware bundle" : "그룹웨어 번들",
"Social sharing bundle" : "소셜 공유 번들",
@@ -29,14 +31,23 @@ OC.L10N.register(
"Invalid image" : "잘못된 사진",
"Avatar image is not square" : "아바타 사진이 정사각형이 아님",
"today" : "오늘",
+ "tomorrow" : "내일",
"yesterday" : "어제",
+ "_in %n day_::_in %n days_" : ["%n일 후"],
"_%n day ago_::_%n days ago_" : ["%n일 전"],
+ "next month" : "다음 달",
"last month" : "지난 달",
- "_%n month ago_::_%n months ago_" : ["%n달 전 "],
+ "_in %n month_::_in %n months_" : ["%n개월 후"],
+ "_%n month ago_::_%n months ago_" : ["%n개월 전 "],
+ "next year" : "내년",
"last year" : "작년",
+ "_in %n year_::_in %n years_" : ["%n년 후"],
"_%n year ago_::_%n years ago_" : ["%n년 전"],
+ "_in %n hour_::_in %n hours_" : ["%n시간 후"],
"_%n hour ago_::_%n hours ago_" : ["%n시간 전"],
+ "_in %n minute_::_in %n minutes_" : ["%n분 후"],
"_%n minute ago_::_%n minutes ago_" : ["%n분 전"],
+ "in a few seconds" : "몇 초 후",
"seconds ago" : "초 전",
"Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "ID: %s인 모듈이 존재하지 않습니다. 앱 설정에서 확인하거나 시스템 관리자에게 연락하십시오.",
"File name is a reserved word" : "파일 이름이 예약된 단어임",
@@ -49,6 +60,7 @@ OC.L10N.register(
"This is an automatically sent email, please do not reply." : "자동으로 전송한 이메일입니다. 답장하지 마십시오.",
"Help" : "도움말",
"Apps" : "앱",
+ "Settings" : "설정",
"Log out" : "로그아웃",
"Users" : "사용자",
"Unknown user" : "알려지지 않은 사용자",
@@ -60,6 +72,13 @@ OC.L10N.register(
"Encryption" : "암호화",
"Additional settings" : "고급 설정",
"Tips & tricks" : "팁과 추가 정보",
+ "Personal info" : "개인 정보",
+ "Sync clients" : "동기화 클라이언트",
+ "Unlimited" : "무제한",
+ "__language_name__" : "한국어",
+ "Verifying" : "검사 중",
+ "Verifying …" : "검사 중…",
+ "Verify" : "검사",
"%s enter the database username and name." : "%s 데이터베이스 사용자 이름과 이름을 입력해 주십시오.",
"%s enter the database username." : "%s 데이터베이스 사용자 이름을 입력해 주십시오.",
"%s enter the database name." : "%s 데이터베이스 이름을 입력하십시오.",
@@ -101,9 +120,17 @@ OC.L10N.register(
"Sharing %s failed, because resharing is not allowed" : "%s을(를) 공유할 수 없습니다. 다시 공유할 수 없습니다",
"Sharing %s failed, because the sharing backend for %s could not find its source" : "%s을(를) 공유할 수 없습니다. %s의 공유 백엔드에서 원본 파일을 찾을 수 없습니다",
"Sharing %s failed, because the file could not be found in the file cache" : "%s을(를) 공유할 수 없습니다. 파일 캐시에서 찾을 수 없습니다",
+ "Can’t increase permissions of %s" : "%s의 권한을 늘릴 수 없습니다",
+ "Files can’t be shared with delete permissions" : "파일을 삭제 권한으로 공유할 수 없습니다",
+ "Files can’t be shared with create permissions" : "파일을 생성 권한으로 공유할 수 없습니다",
"Expiration date is in the past" : "만료 날짜가 과거입니다",
+ "Can’t set expiration date more than %s days in the future" : "만료 날짜를 %s일 이상 이후로 설정할 수 없습니다",
"%s shared »%s« with you" : "%s 님이 %s을(를) 공유했습니다",
+ "%s shared »%s« with you." : "%s 님이 %s을(를) 공유했습니다.",
+ "Click the button below to open it." : "아래 단추를 눌러서 열 수 있습니다.",
+ "Open »%s«" : "%s 열기",
"%s via %s" : "%s(%s 경유)",
+ "The requested share does not exist anymore" : "요청한 공유가 더 이상 존재하지 않습니다",
"Could not find category \"%s\"" : "분류 \"%s\"을(를) 찾을 수 없습니다",
"Sunday" : "일요일",
"Monday" : "월요일",
@@ -156,8 +183,9 @@ OC.L10N.register(
"Username must not consist of dots only" : "사용자 이름에 마침표만 있으면 안 됩니다",
"A valid password must be provided" : "올바른 암호를 입력해야 합니다",
"The username is already being used" : "사용자 이름이 이미 존재합니다",
- "User disabled" : "사용자 비활성화",
- "Login canceled by app" : "앱 로그인 취소",
+ "Could not create user" : "사용자를 만들 수 없습니다",
+ "User disabled" : "사용자 비활성화됨",
+ "Login canceled by app" : "앱에서 로그인 취소함",
"No app name specified" : "앱 이름이 지정되지 않았음",
"App '%s' could not be installed!" : "앱 '%s'을(를) 설치할 수 없습니다!",
"App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "앱 \"%s\"의 다음 의존성을 만족하지 못하므로 설치할 수 없습니다: %s",
@@ -170,7 +198,10 @@ OC.L10N.register(
"No database drivers (sqlite, mysql, or postgresql) installed." : "데이터베이스 드라이버(sqlite, mysql, postgresql)가 설치되지 않았습니다.",
"Cannot write into \"config\" directory" : "\"config\" 디렉터리에 기록할 수 없습니다",
"Cannot write into \"apps\" directory" : "\"apps\" 디렉터리에 기록할 수 없습니다",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "apps 디렉터리에 웹 서버의 쓰기 권한을 부여하거나 설정에서 앱 스토어를 비활성화해서 해결할 수 있습니다. %s 문서를 참조하십시오",
"Cannot create \"data\" directory" : "\"data\" 디렉터리를 만들 수 없음",
+ "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "루트 디렉터리에 웹 서버의 쓰기 권한을 부여해서 해결할 수 있습니다. %s 문서를 참조하십시오",
+ "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "루트 디렉터리에 웹 서버의 쓰기 권한을 부여해서 해결할 수 있습니다. %s 문서를 참조하십시오.",
"Setting locale to %s failed" : "로캘을 %s(으)로 설정할 수 없음",
"Please install one of these locales on your system and restart your webserver." : "다음 중 하나 이상의 로캘을 시스템에 설치하고 웹 서버를 다시 시작하십시오.",
"Please ask your server administrator to install the module." : "서버 관리자에게 모듈 설치를 요청하십시오.",
@@ -192,6 +223,7 @@ OC.L10N.register(
"Your data directory must be an absolute path" : "내 데이터 디렉터리는 절대 경로여야 함",
"Check the value of \"datadirectory\" in your configuration" : "설정 중 \"datadirectory\" 값을 확인하십시오",
"Your data directory is invalid" : "내 데이터 디렉터리가 잘못됨",
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "데이터 디렉터리의 최상위 디렉터리에 \".ocdata\" 파일이 있는지 확인하십시오.",
"Could not obtain lock type %d on \"%s\"." : "잠금 형식 %d을(를) \"%s\"에 대해 얻을 수 없습니다.",
"Storage unauthorized. %s" : "저장소가 인증되지 않았습니다. %s",
"Storage incomplete configuration. %s" : "저장소 설정이 완전하지 않습니다. %s",
diff --git a/lib/l10n/ko.json b/lib/l10n/ko.json
index a7b17a6ec47..22a4b05f37a 100644
--- a/lib/l10n/ko.json
+++ b/lib/l10n/ko.json
@@ -1,7 +1,8 @@
{ "translations": {
"Cannot write into \"config\" directory!" : "\"config\" 디렉터리에 기록할 수 없습니다!",
- "This can usually be fixed by giving the webserver write access to the config directory" : "config 디렉터리에 웹 서버 쓰기 권한을 주면 해결됩니다",
+ "This can usually be fixed by giving the webserver write access to the config directory" : "config 디렉터리에 웹 서버 쓰기 권한을 부여해서 해결할 수 있습니다",
"See %s" : "%s 보기",
+ "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "config 디렉터리에 웹 서버의 쓰기 권한을 부여해서 해결할 수 있습니다. %s 문서를 참조하십시오",
"The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "앱 %1$s의 파일이 올바르게 교체되지 않았습니다. 서버와 호환되는 버전인지 확인하십시오.",
"Sample configuration detected" : "예제 설정 감지됨",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "예제 설정이 복사된 것 같습니다. 올바르게 작동하지 않을 수도 있기 때문에 지원되지 않습니다. config.php를 변경하기 전 문서를 읽어 보십시오",
@@ -9,6 +10,7 @@
"%1$s, %2$s and %3$s" : "%1$s, %2$s 및 %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s 및 %4$s",
"%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s 및 %5$s",
+ "Education Edition" : "교육용 에디션",
"Enterprise bundle" : "엔터프라이즈 번들",
"Groupware bundle" : "그룹웨어 번들",
"Social sharing bundle" : "소셜 공유 번들",
@@ -27,14 +29,23 @@
"Invalid image" : "잘못된 사진",
"Avatar image is not square" : "아바타 사진이 정사각형이 아님",
"today" : "오늘",
+ "tomorrow" : "내일",
"yesterday" : "어제",
+ "_in %n day_::_in %n days_" : ["%n일 후"],
"_%n day ago_::_%n days ago_" : ["%n일 전"],
+ "next month" : "다음 달",
"last month" : "지난 달",
- "_%n month ago_::_%n months ago_" : ["%n달 전 "],
+ "_in %n month_::_in %n months_" : ["%n개월 후"],
+ "_%n month ago_::_%n months ago_" : ["%n개월 전 "],
+ "next year" : "내년",
"last year" : "작년",
+ "_in %n year_::_in %n years_" : ["%n년 후"],
"_%n year ago_::_%n years ago_" : ["%n년 전"],
+ "_in %n hour_::_in %n hours_" : ["%n시간 후"],
"_%n hour ago_::_%n hours ago_" : ["%n시간 전"],
+ "_in %n minute_::_in %n minutes_" : ["%n분 후"],
"_%n minute ago_::_%n minutes ago_" : ["%n분 전"],
+ "in a few seconds" : "몇 초 후",
"seconds ago" : "초 전",
"Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "ID: %s인 모듈이 존재하지 않습니다. 앱 설정에서 확인하거나 시스템 관리자에게 연락하십시오.",
"File name is a reserved word" : "파일 이름이 예약된 단어임",
@@ -47,6 +58,7 @@
"This is an automatically sent email, please do not reply." : "자동으로 전송한 이메일입니다. 답장하지 마십시오.",
"Help" : "도움말",
"Apps" : "앱",
+ "Settings" : "설정",
"Log out" : "로그아웃",
"Users" : "사용자",
"Unknown user" : "알려지지 않은 사용자",
@@ -58,6 +70,13 @@
"Encryption" : "암호화",
"Additional settings" : "고급 설정",
"Tips & tricks" : "팁과 추가 정보",
+ "Personal info" : "개인 정보",
+ "Sync clients" : "동기화 클라이언트",
+ "Unlimited" : "무제한",
+ "__language_name__" : "한국어",
+ "Verifying" : "검사 중",
+ "Verifying …" : "검사 중…",
+ "Verify" : "검사",
"%s enter the database username and name." : "%s 데이터베이스 사용자 이름과 이름을 입력해 주십시오.",
"%s enter the database username." : "%s 데이터베이스 사용자 이름을 입력해 주십시오.",
"%s enter the database name." : "%s 데이터베이스 이름을 입력하십시오.",
@@ -99,9 +118,17 @@
"Sharing %s failed, because resharing is not allowed" : "%s을(를) 공유할 수 없습니다. 다시 공유할 수 없습니다",
"Sharing %s failed, because the sharing backend for %s could not find its source" : "%s을(를) 공유할 수 없습니다. %s의 공유 백엔드에서 원본 파일을 찾을 수 없습니다",
"Sharing %s failed, because the file could not be found in the file cache" : "%s을(를) 공유할 수 없습니다. 파일 캐시에서 찾을 수 없습니다",
+ "Can’t increase permissions of %s" : "%s의 권한을 늘릴 수 없습니다",
+ "Files can’t be shared with delete permissions" : "파일을 삭제 권한으로 공유할 수 없습니다",
+ "Files can’t be shared with create permissions" : "파일을 생성 권한으로 공유할 수 없습니다",
"Expiration date is in the past" : "만료 날짜가 과거입니다",
+ "Can’t set expiration date more than %s days in the future" : "만료 날짜를 %s일 이상 이후로 설정할 수 없습니다",
"%s shared »%s« with you" : "%s 님이 %s을(를) 공유했습니다",
+ "%s shared »%s« with you." : "%s 님이 %s을(를) 공유했습니다.",
+ "Click the button below to open it." : "아래 단추를 눌러서 열 수 있습니다.",
+ "Open »%s«" : "%s 열기",
"%s via %s" : "%s(%s 경유)",
+ "The requested share does not exist anymore" : "요청한 공유가 더 이상 존재하지 않습니다",
"Could not find category \"%s\"" : "분류 \"%s\"을(를) 찾을 수 없습니다",
"Sunday" : "일요일",
"Monday" : "월요일",
@@ -154,8 +181,9 @@
"Username must not consist of dots only" : "사용자 이름에 마침표만 있으면 안 됩니다",
"A valid password must be provided" : "올바른 암호를 입력해야 합니다",
"The username is already being used" : "사용자 이름이 이미 존재합니다",
- "User disabled" : "사용자 비활성화",
- "Login canceled by app" : "앱 로그인 취소",
+ "Could not create user" : "사용자를 만들 수 없습니다",
+ "User disabled" : "사용자 비활성화됨",
+ "Login canceled by app" : "앱에서 로그인 취소함",
"No app name specified" : "앱 이름이 지정되지 않았음",
"App '%s' could not be installed!" : "앱 '%s'을(를) 설치할 수 없습니다!",
"App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "앱 \"%s\"의 다음 의존성을 만족하지 못하므로 설치할 수 없습니다: %s",
@@ -168,7 +196,10 @@
"No database drivers (sqlite, mysql, or postgresql) installed." : "데이터베이스 드라이버(sqlite, mysql, postgresql)가 설치되지 않았습니다.",
"Cannot write into \"config\" directory" : "\"config\" 디렉터리에 기록할 수 없습니다",
"Cannot write into \"apps\" directory" : "\"apps\" 디렉터리에 기록할 수 없습니다",
+ "This can usually be fixed by giving the webserver write access to the apps directory or disabling the appstore in the config file. See %s" : "apps 디렉터리에 웹 서버의 쓰기 권한을 부여하거나 설정에서 앱 스토어를 비활성화해서 해결할 수 있습니다. %s 문서를 참조하십시오",
"Cannot create \"data\" directory" : "\"data\" 디렉터리를 만들 수 없음",
+ "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "루트 디렉터리에 웹 서버의 쓰기 권한을 부여해서 해결할 수 있습니다. %s 문서를 참조하십시오",
+ "Permissions can usually be fixed by giving the webserver write access to the root directory. See %s." : "루트 디렉터리에 웹 서버의 쓰기 권한을 부여해서 해결할 수 있습니다. %s 문서를 참조하십시오.",
"Setting locale to %s failed" : "로캘을 %s(으)로 설정할 수 없음",
"Please install one of these locales on your system and restart your webserver." : "다음 중 하나 이상의 로캘을 시스템에 설치하고 웹 서버를 다시 시작하십시오.",
"Please ask your server administrator to install the module." : "서버 관리자에게 모듈 설치를 요청하십시오.",
@@ -190,6 +221,7 @@
"Your data directory must be an absolute path" : "내 데이터 디렉터리는 절대 경로여야 함",
"Check the value of \"datadirectory\" in your configuration" : "설정 중 \"datadirectory\" 값을 확인하십시오",
"Your data directory is invalid" : "내 데이터 디렉터리가 잘못됨",
+ "Ensure there is a file called \".ocdata\" in the root of the data directory." : "데이터 디렉터리의 최상위 디렉터리에 \".ocdata\" 파일이 있는지 확인하십시오.",
"Could not obtain lock type %d on \"%s\"." : "잠금 형식 %d을(를) \"%s\"에 대해 얻을 수 없습니다.",
"Storage unauthorized. %s" : "저장소가 인증되지 않았습니다. %s",
"Storage incomplete configuration. %s" : "저장소 설정이 완전하지 않습니다. %s",
diff --git a/lib/private/DB/MigrationService.php b/lib/private/DB/MigrationService.php
index a021f00a922..729f9753dfb 100644
--- a/lib/private/DB/MigrationService.php
+++ b/lib/private/DB/MigrationService.php
@@ -23,6 +23,7 @@
namespace OC\DB;
+use Doctrine\DBAL\Schema\SchemaException;
use OC\IntegrityCheck\Helpers\AppLocator;
use OC\Migration\SimpleOutput;
use OCP\AppFramework\App;
@@ -96,9 +97,41 @@ class MigrationService {
return false;
}
- if ($this->connection->tableExists('migrations')) {
- $this->migrationTableCreated = true;
- return false;
+ $schema = new SchemaWrapper($this->connection);
+
+ /**
+ * We drop the table when it has different columns or the definition does not
+ * match. E.g. ownCloud uses a length of 177 for app and 14 for version.
+ */
+ try {
+ $table = $schema->getTable('migrations');
+ $columns = $table->getColumns();
+
+ if (count($columns) === 2) {
+ try {
+ $column = $table->getColumn('app');
+ $schemaMismatch = $column->getLength() !== 255;
+
+ if (!$schemaMismatch) {
+ $column = $table->getColumn('version');
+ $schemaMismatch = $column->getLength() !== 255;
+ }
+ } catch (SchemaException $e) {
+ // One of the columns is missing
+ $schemaMismatch = true;
+ }
+
+ if (!$schemaMismatch) {
+ // Table exists and schema matches: return back!
+ $this->migrationTableCreated = true;
+ return false;
+ }
+ }
+
+ // Drop the table, when it didn't match our expectations.
+ $this->connection->dropTable($this->connection->getPrefix() . 'migrations');
+ } catch (SchemaException $e) {
+ // Table not found, no need to panic, we will create it.
}
$tableName = $this->connection->getPrefix() . 'migrations';
diff --git a/settings/l10n/de.js b/settings/l10n/de.js
index f24a54b1c2f..401379ae390 100644
--- a/settings/l10n/de.js
+++ b/settings/l10n/de.js
@@ -104,9 +104,15 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Fehler: Diese App kann nicht aktiviert werden, da sie den Server instabil macht. ",
"Error: Could not disable broken app" : " Fehler: Die beschädigte Anwendung konnte nicht deaktiviert werden ",
"Error while disabling broken app" : "Beim Deaktivieren der defekten App ist ein Fehler aufgetreten",
+ "App up to date" : "App ist aktuell",
+ "Upgrading …" : "Aktualisiere ...",
+ "Could not upgrade app" : "App konnte nicht aktualisiert werden",
"Updated" : "Aktualisiert",
"Removing …" : "Entferne…",
+ "Could not remove app" : "App konnte nicht entfernt werden",
"Remove" : "Entfernen",
+ "The app has been enabled but needs to be upgraded. You will be redirected to the upgrade page in 5 seconds." : "Die App wurde aktiviert, muss aber aktualisiert werden. Du wirst in 5 Sekunden zur Aktualisierungsseite weitergeleitet.",
+ "App upgrade" : "App aktualisieren",
"Approved" : "Geprüft",
"Experimental" : "Experimentell",
"No apps found for {query}" : "Keine Applikationen für {query} gefunden",
diff --git a/settings/l10n/de.json b/settings/l10n/de.json
index 3d6f78c5cef..8767816b89b 100644
--- a/settings/l10n/de.json
+++ b/settings/l10n/de.json
@@ -102,9 +102,15 @@
"Error: This app can not be enabled because it makes the server unstable" : "Fehler: Diese App kann nicht aktiviert werden, da sie den Server instabil macht. ",
"Error: Could not disable broken app" : " Fehler: Die beschädigte Anwendung konnte nicht deaktiviert werden ",
"Error while disabling broken app" : "Beim Deaktivieren der defekten App ist ein Fehler aufgetreten",
+ "App up to date" : "App ist aktuell",
+ "Upgrading …" : "Aktualisiere ...",
+ "Could not upgrade app" : "App konnte nicht aktualisiert werden",
"Updated" : "Aktualisiert",
"Removing …" : "Entferne…",
+ "Could not remove app" : "App konnte nicht entfernt werden",
"Remove" : "Entfernen",
+ "The app has been enabled but needs to be upgraded. You will be redirected to the upgrade page in 5 seconds." : "Die App wurde aktiviert, muss aber aktualisiert werden. Du wirst in 5 Sekunden zur Aktualisierungsseite weitergeleitet.",
+ "App upgrade" : "App aktualisieren",
"Approved" : "Geprüft",
"Experimental" : "Experimentell",
"No apps found for {query}" : "Keine Applikationen für {query} gefunden",
diff --git a/settings/l10n/de_DE.js b/settings/l10n/de_DE.js
index 88d21d09313..ec7ff1bf61f 100644
--- a/settings/l10n/de_DE.js
+++ b/settings/l10n/de_DE.js
@@ -104,9 +104,15 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Fehler: Diese App kann nicht aktiviert werden, da sie den Server instabil macht. ",
"Error: Could not disable broken app" : " Fehler: Die beschädigte Anwendung konnte nicht deaktiviert werden ",
"Error while disabling broken app" : "Beim Deaktivieren der defekten App ist ein Fehler aufgetreten",
+ "App up to date" : "App ist aktuell",
+ "Upgrading …" : "Aktualisiere ...",
+ "Could not upgrade app" : "App konnte nicht aktualisiert werden",
"Updated" : "Aktualisiert",
"Removing …" : "Entferne…",
+ "Could not remove app" : "App konnte nicht entfernt werden",
"Remove" : "Entfernen",
+ "The app has been enabled but needs to be upgraded. You will be redirected to the upgrade page in 5 seconds." : "Die App wurde aktiviert, muss aber aktualisiert werden. Sie werden in 5 Sekunden zur Aktualisierungsseite weitergeleitet.",
+ "App upgrade" : "App aktualisieren",
"Approved" : "Geprüft",
"Experimental" : "Experimentell",
"No apps found for {query}" : "Keine Applikationen für {query} gefunden",
diff --git a/settings/l10n/de_DE.json b/settings/l10n/de_DE.json
index 427f61ee2d0..7a26d3a6184 100644
--- a/settings/l10n/de_DE.json
+++ b/settings/l10n/de_DE.json
@@ -102,9 +102,15 @@
"Error: This app can not be enabled because it makes the server unstable" : "Fehler: Diese App kann nicht aktiviert werden, da sie den Server instabil macht. ",
"Error: Could not disable broken app" : " Fehler: Die beschädigte Anwendung konnte nicht deaktiviert werden ",
"Error while disabling broken app" : "Beim Deaktivieren der defekten App ist ein Fehler aufgetreten",
+ "App up to date" : "App ist aktuell",
+ "Upgrading …" : "Aktualisiere ...",
+ "Could not upgrade app" : "App konnte nicht aktualisiert werden",
"Updated" : "Aktualisiert",
"Removing …" : "Entferne…",
+ "Could not remove app" : "App konnte nicht entfernt werden",
"Remove" : "Entfernen",
+ "The app has been enabled but needs to be upgraded. You will be redirected to the upgrade page in 5 seconds." : "Die App wurde aktiviert, muss aber aktualisiert werden. Sie werden in 5 Sekunden zur Aktualisierungsseite weitergeleitet.",
+ "App upgrade" : "App aktualisieren",
"Approved" : "Geprüft",
"Experimental" : "Experimentell",
"No apps found for {query}" : "Keine Applikationen für {query} gefunden",
diff --git a/settings/l10n/es_MX.js b/settings/l10n/es_MX.js
index b9563611732..9fdc2e349cc 100644
--- a/settings/l10n/es_MX.js
+++ b/settings/l10n/es_MX.js
@@ -104,9 +104,15 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"Error: Could not disable broken app" : "Error: No fue posible deshabilitar la aplicación rota",
"Error while disabling broken app" : "Se presentó un error al deshabilitar la aplicación rota",
+ "App up to date" : "La aplicación está actualizada",
+ "Upgrading …" : "Actualizando ...",
+ "Could not upgrade app" : "No fue posible actualizar la aplicación",
"Updated" : "Actualizado",
"Removing …" : "Eliminando ...",
+ "Could not remove app" : "No fue posible eliminar la aplicación",
"Remove" : "Eliminar",
+ "The app has been enabled but needs to be upgraded. You will be redirected to the upgrade page in 5 seconds." : "La aplicación ha sido habilitada pero necesita ser actualizada. Serás redireccionado a la página de actualización en 5 segundos. ",
+ "App upgrade" : "Actualización de la aplicación",
"Approved" : "Aprobado",
"Experimental" : "Experimental",
"No apps found for {query}" : "No se encontraron aplicaciones para {query}",
diff --git a/settings/l10n/es_MX.json b/settings/l10n/es_MX.json
index 7fa45262cdc..5375ba1b08b 100644
--- a/settings/l10n/es_MX.json
+++ b/settings/l10n/es_MX.json
@@ -102,9 +102,15 @@
"Error: This app can not be enabled because it makes the server unstable" : "Error: Esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor",
"Error: Could not disable broken app" : "Error: No fue posible deshabilitar la aplicación rota",
"Error while disabling broken app" : "Se presentó un error al deshabilitar la aplicación rota",
+ "App up to date" : "La aplicación está actualizada",
+ "Upgrading …" : "Actualizando ...",
+ "Could not upgrade app" : "No fue posible actualizar la aplicación",
"Updated" : "Actualizado",
"Removing …" : "Eliminando ...",
+ "Could not remove app" : "No fue posible eliminar la aplicación",
"Remove" : "Eliminar",
+ "The app has been enabled but needs to be upgraded. You will be redirected to the upgrade page in 5 seconds." : "La aplicación ha sido habilitada pero necesita ser actualizada. Serás redireccionado a la página de actualización en 5 segundos. ",
+ "App upgrade" : "Actualización de la aplicación",
"Approved" : "Aprobado",
"Experimental" : "Experimental",
"No apps found for {query}" : "No se encontraron aplicaciones para {query}",
diff --git a/settings/l10n/fr.js b/settings/l10n/fr.js
index 2d99da69920..4c0dbe33a1f 100644
--- a/settings/l10n/fr.js
+++ b/settings/l10n/fr.js
@@ -104,9 +104,15 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Erreur : Cette application ne peut pas être activée car cela rend le serveur instable.",
"Error: Could not disable broken app" : "Erreur : Impossible de désactiver l’application cassé",
"Error while disabling broken app" : "Erreur lors de la désactivation de l'application cassé .",
+ "App up to date" : "Application à jour",
+ "Upgrading …" : "Mise à jour en cours...",
+ "Could not upgrade app" : "Impossible de mettre à jour l'application.",
"Updated" : "Mise à jour terminée",
"Removing …" : "Suppression...",
+ "Could not remove app" : "Impossible de supprimer l'application.",
"Remove" : "Supprimer",
+ "The app has been enabled but needs to be upgraded. You will be redirected to the upgrade page in 5 seconds." : "L'application a été activée mais doit être mise à jour. Vous allez être redirigé vers la page des mises à jour dans 5 secondes.",
+ "App upgrade" : "Mise à jour de l'application",
"Approved" : "Approuvée",
"Experimental" : "Expérimentale",
"No apps found for {query}" : "Aucune application trouvée pour {query}",
diff --git a/settings/l10n/fr.json b/settings/l10n/fr.json
index d947962cf4e..b9de742e452 100644
--- a/settings/l10n/fr.json
+++ b/settings/l10n/fr.json
@@ -102,9 +102,15 @@
"Error: This app can not be enabled because it makes the server unstable" : "Erreur : Cette application ne peut pas être activée car cela rend le serveur instable.",
"Error: Could not disable broken app" : "Erreur : Impossible de désactiver l’application cassé",
"Error while disabling broken app" : "Erreur lors de la désactivation de l'application cassé .",
+ "App up to date" : "Application à jour",
+ "Upgrading …" : "Mise à jour en cours...",
+ "Could not upgrade app" : "Impossible de mettre à jour l'application.",
"Updated" : "Mise à jour terminée",
"Removing …" : "Suppression...",
+ "Could not remove app" : "Impossible de supprimer l'application.",
"Remove" : "Supprimer",
+ "The app has been enabled but needs to be upgraded. You will be redirected to the upgrade page in 5 seconds." : "L'application a été activée mais doit être mise à jour. Vous allez être redirigé vers la page des mises à jour dans 5 secondes.",
+ "App upgrade" : "Mise à jour de l'application",
"Approved" : "Approuvée",
"Experimental" : "Expérimentale",
"No apps found for {query}" : "Aucune application trouvée pour {query}",
diff --git a/settings/l10n/hu.js b/settings/l10n/hu.js
index 2e4b2343cdb..26ae286a104 100644
--- a/settings/l10n/hu.js
+++ b/settings/l10n/hu.js
@@ -104,9 +104,15 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Hiba: az alkalmazás nem nem engedélyezhető, mert instabillá tenné a szervert",
"Error: Could not disable broken app" : "Hiba: a sérült alkalmazás nem volt letiltható",
"Error while disabling broken app" : "Hiba történt a megtört alkalmazás tiltása közben",
+ "App up to date" : "Az alkalmazás a legfrissebb",
+ "Upgrading …" : "Frissítés ...",
+ "Could not upgrade app" : "Nem lehet frissíteni az alkalmazást",
"Updated" : "Frissítve",
"Removing …" : "Eltávolítás...",
+ "Could not remove app" : "Nem lehet eltávolítani az alkalmazást",
"Remove" : "Eltávolítás",
+ "The app has been enabled but needs to be upgraded. You will be redirected to the upgrade page in 5 seconds." : "Ez az alkalmazás engedélyezve van, de frissíteni kell. A frissítő oldalra irányítjuk 5 másodpercen belül.",
+ "App upgrade" : "Alkalmazás frissítése",
"Approved" : "Jóváhagyott",
"Experimental" : "Kísérleti",
"No apps found for {query}" : "{query} keresésre nincs találat",
diff --git a/settings/l10n/hu.json b/settings/l10n/hu.json
index becc70425b0..65869f809a5 100644
--- a/settings/l10n/hu.json
+++ b/settings/l10n/hu.json
@@ -102,9 +102,15 @@
"Error: This app can not be enabled because it makes the server unstable" : "Hiba: az alkalmazás nem nem engedélyezhető, mert instabillá tenné a szervert",
"Error: Could not disable broken app" : "Hiba: a sérült alkalmazás nem volt letiltható",
"Error while disabling broken app" : "Hiba történt a megtört alkalmazás tiltása közben",
+ "App up to date" : "Az alkalmazás a legfrissebb",
+ "Upgrading …" : "Frissítés ...",
+ "Could not upgrade app" : "Nem lehet frissíteni az alkalmazást",
"Updated" : "Frissítve",
"Removing …" : "Eltávolítás...",
+ "Could not remove app" : "Nem lehet eltávolítani az alkalmazást",
"Remove" : "Eltávolítás",
+ "The app has been enabled but needs to be upgraded. You will be redirected to the upgrade page in 5 seconds." : "Ez az alkalmazás engedélyezve van, de frissíteni kell. A frissítő oldalra irányítjuk 5 másodpercen belül.",
+ "App upgrade" : "Alkalmazás frissítése",
"Approved" : "Jóváhagyott",
"Experimental" : "Kísérleti",
"No apps found for {query}" : "{query} keresésre nincs találat",
diff --git a/settings/l10n/it.js b/settings/l10n/it.js
index 4f2340ce49b..9ce5aaeaaf7 100644
--- a/settings/l10n/it.js
+++ b/settings/l10n/it.js
@@ -104,9 +104,15 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Errore: questa applicazione non può essere abilitata perché rende il server instabile",
"Error: Could not disable broken app" : "Errore: impossibile disabilitare l'applicazione danneggiata",
"Error while disabling broken app" : "Errore durante la disabilitazione dell'applicazione danneggiata",
+ "App up to date" : "Applicazione aggiornata",
+ "Upgrading …" : "Aggiornamento in corso...",
+ "Could not upgrade app" : "Impossibile aggiornare l'applicazione",
"Updated" : "Aggiornato",
"Removing …" : "Rimozione in corso...",
+ "Could not remove app" : "Impossibile rimuovere l'applicazione",
"Remove" : "Rimuovi",
+ "The app has been enabled but needs to be upgraded. You will be redirected to the upgrade page in 5 seconds." : "L'applicazione è stata abilitata, ma deve essere aggiornata. Sarai rediretto alla pagina di aggiornamento in 5 secondi.",
+ "App upgrade" : "Aggiornamento applicazione",
"Approved" : "Approvata",
"Experimental" : "Sperimentale",
"No apps found for {query}" : "Nessuna applicazione trovata per {query}",
diff --git a/settings/l10n/it.json b/settings/l10n/it.json
index d293d15a8ad..2ab15d8378f 100644
--- a/settings/l10n/it.json
+++ b/settings/l10n/it.json
@@ -102,9 +102,15 @@
"Error: This app can not be enabled because it makes the server unstable" : "Errore: questa applicazione non può essere abilitata perché rende il server instabile",
"Error: Could not disable broken app" : "Errore: impossibile disabilitare l'applicazione danneggiata",
"Error while disabling broken app" : "Errore durante la disabilitazione dell'applicazione danneggiata",
+ "App up to date" : "Applicazione aggiornata",
+ "Upgrading …" : "Aggiornamento in corso...",
+ "Could not upgrade app" : "Impossibile aggiornare l'applicazione",
"Updated" : "Aggiornato",
"Removing …" : "Rimozione in corso...",
+ "Could not remove app" : "Impossibile rimuovere l'applicazione",
"Remove" : "Rimuovi",
+ "The app has been enabled but needs to be upgraded. You will be redirected to the upgrade page in 5 seconds." : "L'applicazione è stata abilitata, ma deve essere aggiornata. Sarai rediretto alla pagina di aggiornamento in 5 secondi.",
+ "App upgrade" : "Aggiornamento applicazione",
"Approved" : "Approvata",
"Experimental" : "Sperimentale",
"No apps found for {query}" : "Nessuna applicazione trovata per {query}",
diff --git a/settings/l10n/ko.js b/settings/l10n/ko.js
index a723dd7f22f..a03387d6acb 100644
--- a/settings/l10n/ko.js
+++ b/settings/l10n/ko.js
@@ -104,9 +104,15 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "오류: 이 앱은 서버를 불안정하게 만들 수 있어서 활성화할 수 없습니다",
"Error: Could not disable broken app" : "오류: 망가진 앱을 비활성화할 수 없음",
"Error while disabling broken app" : "망가진 앱을 비활성화하는 중 오류 발생",
+ "App up to date" : "앱이 최신 상태임",
+ "Upgrading …" : "업그레이드 중…",
+ "Could not upgrade app" : "앱을 업그레이드할 수 없음",
"Updated" : "업데이트됨",
"Removing …" : "삭제 중 …",
+ "Could not remove app" : "앱을 삭제할 수 없음",
"Remove" : "삭제",
+ "The app has been enabled but needs to be upgraded. You will be redirected to the upgrade page in 5 seconds." : "앱을 활성화하려면 업그레이드해야 합니다. 5초 후 업그레이드 페이지로 이동합니다.",
+ "App upgrade" : "앱 업그레이드",
"Approved" : "승인됨",
"Experimental" : "실험적",
"No apps found for {query}" : "{query} 앱을 찾을 수 없음",
diff --git a/settings/l10n/ko.json b/settings/l10n/ko.json
index c919bc74c09..d2fd97c6ab7 100644
--- a/settings/l10n/ko.json
+++ b/settings/l10n/ko.json
@@ -102,9 +102,15 @@
"Error: This app can not be enabled because it makes the server unstable" : "오류: 이 앱은 서버를 불안정하게 만들 수 있어서 활성화할 수 없습니다",
"Error: Could not disable broken app" : "오류: 망가진 앱을 비활성화할 수 없음",
"Error while disabling broken app" : "망가진 앱을 비활성화하는 중 오류 발생",
+ "App up to date" : "앱이 최신 상태임",
+ "Upgrading …" : "업그레이드 중…",
+ "Could not upgrade app" : "앱을 업그레이드할 수 없음",
"Updated" : "업데이트됨",
"Removing …" : "삭제 중 …",
+ "Could not remove app" : "앱을 삭제할 수 없음",
"Remove" : "삭제",
+ "The app has been enabled but needs to be upgraded. You will be redirected to the upgrade page in 5 seconds." : "앱을 활성화하려면 업그레이드해야 합니다. 5초 후 업그레이드 페이지로 이동합니다.",
+ "App upgrade" : "앱 업그레이드",
"Approved" : "승인됨",
"Experimental" : "실험적",
"No apps found for {query}" : "{query} 앱을 찾을 수 없음",
diff --git a/settings/l10n/pt_BR.js b/settings/l10n/pt_BR.js
index 5da99b2e445..33232713036 100644
--- a/settings/l10n/pt_BR.js
+++ b/settings/l10n/pt_BR.js
@@ -104,9 +104,15 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Erro: Este aplicativo não pode ser ativado porque torna o servidor instável",
"Error: Could not disable broken app" : "Erro: Não foi possível desativar o aplicativo defeituoso",
"Error while disabling broken app" : "Erro ao desativar aplicativo corrompido",
+ "App up to date" : "Aplicativo atualizado",
+ "Upgrading …" : "Atualizando...",
+ "Could not upgrade app" : "Não foi possível atualizar o aplicativo",
"Updated" : "Atualizado",
"Removing …" : "Excluindo...",
+ "Could not remove app" : "Não foi possível remover o aplicativo",
"Remove" : "Excluir",
+ "The app has been enabled but needs to be upgraded. You will be redirected to the upgrade page in 5 seconds." : "O aplicativo foi ativado mas precisa ser atualizado. Você será enviado à página de atualização em 5 segundos.",
+ "App upgrade" : "Atualizar aplicativo",
"Approved" : "Aprovado",
"Experimental" : "Experimental",
"No apps found for {query}" : "Nenhum aplicativo encontrado para {query}",
diff --git a/settings/l10n/pt_BR.json b/settings/l10n/pt_BR.json
index 379fd84d00c..d9f112843aa 100644
--- a/settings/l10n/pt_BR.json
+++ b/settings/l10n/pt_BR.json
@@ -102,9 +102,15 @@
"Error: This app can not be enabled because it makes the server unstable" : "Erro: Este aplicativo não pode ser ativado porque torna o servidor instável",
"Error: Could not disable broken app" : "Erro: Não foi possível desativar o aplicativo defeituoso",
"Error while disabling broken app" : "Erro ao desativar aplicativo corrompido",
+ "App up to date" : "Aplicativo atualizado",
+ "Upgrading …" : "Atualizando...",
+ "Could not upgrade app" : "Não foi possível atualizar o aplicativo",
"Updated" : "Atualizado",
"Removing …" : "Excluindo...",
+ "Could not remove app" : "Não foi possível remover o aplicativo",
"Remove" : "Excluir",
+ "The app has been enabled but needs to be upgraded. You will be redirected to the upgrade page in 5 seconds." : "O aplicativo foi ativado mas precisa ser atualizado. Você será enviado à página de atualização em 5 segundos.",
+ "App upgrade" : "Atualizar aplicativo",
"Approved" : "Aprovado",
"Experimental" : "Experimental",
"No apps found for {query}" : "Nenhum aplicativo encontrado para {query}",
diff --git a/settings/l10n/sr.js b/settings/l10n/sr.js
index b739eb8fe90..b45073daecd 100644
--- a/settings/l10n/sr.js
+++ b/settings/l10n/sr.js
@@ -104,9 +104,15 @@ OC.L10N.register(
"Error: This app can not be enabled because it makes the server unstable" : "Грешка: ова апликација не може да се укључи јер је због ње цео сервер нестабилан",
"Error: Could not disable broken app" : "Грешка: Не могу да искључим покварену апликацију",
"Error while disabling broken app" : "Грешка приликом искључивања покварене апликације",
+ "App up to date" : "Апликација на последњој верзији",
+ "Upgrading …" : "Ажурирам…",
+ "Could not upgrade app" : "Не могу да ажурирам апликацију",
"Updated" : "Ажурирано",
"Removing …" : "Уклањам …",
+ "Could not remove app" : "Не могу да уклоним апликацију",
"Remove" : "Уклони",
+ "The app has been enabled but needs to be upgraded. You will be redirected to the upgrade page in 5 seconds." : "Апликација је укључена, али треба да се ажурира. Бићете преусмерени на страну са ажурирањем за 5 секунди.",
+ "App upgrade" : "Ажурирање апликације",
"Approved" : "Одобрене",
"Experimental" : "Експерименталне",
"No apps found for {query}" : "Није нађена ниједна апликација за претрагу {query}",
diff --git a/settings/l10n/sr.json b/settings/l10n/sr.json
index 9e01e160e3e..c8952029914 100644
--- a/settings/l10n/sr.json
+++ b/settings/l10n/sr.json
@@ -102,9 +102,15 @@
"Error: This app can not be enabled because it makes the server unstable" : "Грешка: ова апликација не може да се укључи јер је због ње цео сервер нестабилан",
"Error: Could not disable broken app" : "Грешка: Не могу да искључим покварену апликацију",
"Error while disabling broken app" : "Грешка приликом искључивања покварене апликације",
+ "App up to date" : "Апликација на последњој верзији",
+ "Upgrading …" : "Ажурирам…",
+ "Could not upgrade app" : "Не могу да ажурирам апликацију",
"Updated" : "Ажурирано",
"Removing …" : "Уклањам …",
+ "Could not remove app" : "Не могу да уклоним апликацију",
"Remove" : "Уклони",
+ "The app has been enabled but needs to be upgraded. You will be redirected to the upgrade page in 5 seconds." : "Апликација је укључена, али треба да се ажурира. Бићете преусмерени на страну са ажурирањем за 5 секунди.",
+ "App upgrade" : "Ажурирање апликације",
"Approved" : "Одобрене",
"Experimental" : "Експерименталне",
"No apps found for {query}" : "Није нађена ниједна апликација за претрагу {query}",
diff --git a/version.php b/version.php
index 53272cf32fe..c94a897f4e7 100644
--- a/version.php
+++ b/version.php
@@ -29,10 +29,10 @@
// between betas, final and RCs. This is _not_ the public version number. Reset minor/patchlevel
// when updating major/minor version number.
-$OC_Version = array(13, 0, 0, 8);
+$OC_Version = array(13, 0, 0, 9);
// The human readable string
-$OC_VersionString = '13.0.0 Beta 3';
+$OC_VersionString = '13.0.0 Beta 4';
$OC_VersionCanBeUpgradedFrom = [
'nextcloud' => [