diff options
Diffstat (limited to 'apps')
75 files changed, 900 insertions, 252 deletions
diff --git a/apps/comments/l10n/ro.js b/apps/comments/l10n/ro.js index dcdbf9b8f98..9dcfb88895f 100644 --- a/apps/comments/l10n/ro.js +++ b/apps/comments/l10n/ro.js @@ -1,23 +1,39 @@ OC.L10N.register( "comments", { - "Type in a new comment..." : "Scrie un comentariu nou...", + "Comments" : "Comentarii", + "Unknown user" : "Utilizator necunoscut", + "New comment …" : "Comentariu nou...", "Delete comment" : "Șterge comentariul", "Post" : "Postează", "Cancel" : "Anulează", "Edit comment" : "Editează comentariul", "[Deleted user]" : "[Utilizator șters]", - "Comments" : "Comentarii", - "No other comments available" : "Nu sunt disponibile alte comentarii", - "More comments..." : "Mai multe comentarii...", + "No comments yet, start the conversation!" : "Nici un comentariu încă, începe conversația!", + "More comments …" : "Mai multe comentarii...", "Save" : "Salvează", "Allowed characters {count} of {max}" : "Caractere admise {count} din {max}", - "{count} unread comments" : "{count} comentarii necitite", + "Error occurred while retrieving comment with id {id}" : "Eroare la returnarea comentariului cu id-ul {id}", + "Error occurred while updating comment with id {id}" : "Eroare la actualizarea comentariului cu id-ul {id}", + "Error occurred while posting comment" : "Eroare la postarea comentariului", + "_%n unread comment_::_%n unread comments_" : ["%n comentariu necitit","%n comentarii necitite","%n comentarii necitite"], "Comment" : "Comentariu", - "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Comentarii</strong> pentru fișiere <em>(afișate întotdeauna în flux)</em>", "You commented" : "Ai comentat", "%1$s commented" : "%1$s a comentat", - "You commented on %2$s" : "Ai comentat la %2$s", - "%1$s commented on %2$s" : "%1$s a comentat la %2$s" + "{author} commented" : " {author} a comentat", + "You commented on %1$s" : "Ai comentat la %1$s", + "You commented on {file}" : "Ai comentat la {file}", + "%1$s commented on %2$s" : "%1$s a comentat la %2$s", + "{author} commented on {file}" : " {author} a comentat la {file}", + "<strong>Comments</strong> for files" : "<strong>Comentarii</strong> la fișiere", + "A (now) deleted user mentioned you in a comment on “%s”" : "Un utilizator (momentan) șters te-a menționat într-un comentariu la ”%s”", + "A (now) deleted user mentioned you in a comment on “{file}”" : "Un utilizator (momentan) șters te-a menționat într-un comentariu la ”{file}”", + "%1$s mentioned you in a comment on “%2$s”" : "%1$s te-a menționat într-un comentariu la ”%2$s”", + "{user} mentioned you in a comment on “{file}”" : "{user} te-a menționat într-un comentariu la ”{file}”", + "Type in a new comment..." : "Scrie un comentariu nou...", + "No other comments available" : "Nu sunt disponibile alte comentarii", + "More comments..." : "Mai multe comentarii...", + "{count} unread comments" : "{count} comentarii necitite", + "You commented on %2$s" : "Ai comentat la %2$s" }, "nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"); diff --git a/apps/comments/l10n/ro.json b/apps/comments/l10n/ro.json index b826e58971b..12bfd08a3e7 100644 --- a/apps/comments/l10n/ro.json +++ b/apps/comments/l10n/ro.json @@ -1,21 +1,37 @@ { "translations": { - "Type in a new comment..." : "Scrie un comentariu nou...", + "Comments" : "Comentarii", + "Unknown user" : "Utilizator necunoscut", + "New comment …" : "Comentariu nou...", "Delete comment" : "Șterge comentariul", "Post" : "Postează", "Cancel" : "Anulează", "Edit comment" : "Editează comentariul", "[Deleted user]" : "[Utilizator șters]", - "Comments" : "Comentarii", - "No other comments available" : "Nu sunt disponibile alte comentarii", - "More comments..." : "Mai multe comentarii...", + "No comments yet, start the conversation!" : "Nici un comentariu încă, începe conversația!", + "More comments …" : "Mai multe comentarii...", "Save" : "Salvează", "Allowed characters {count} of {max}" : "Caractere admise {count} din {max}", - "{count} unread comments" : "{count} comentarii necitite", + "Error occurred while retrieving comment with id {id}" : "Eroare la returnarea comentariului cu id-ul {id}", + "Error occurred while updating comment with id {id}" : "Eroare la actualizarea comentariului cu id-ul {id}", + "Error occurred while posting comment" : "Eroare la postarea comentariului", + "_%n unread comment_::_%n unread comments_" : ["%n comentariu necitit","%n comentarii necitite","%n comentarii necitite"], "Comment" : "Comentariu", - "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Comentarii</strong> pentru fișiere <em>(afișate întotdeauna în flux)</em>", "You commented" : "Ai comentat", "%1$s commented" : "%1$s a comentat", - "You commented on %2$s" : "Ai comentat la %2$s", - "%1$s commented on %2$s" : "%1$s a comentat la %2$s" + "{author} commented" : " {author} a comentat", + "You commented on %1$s" : "Ai comentat la %1$s", + "You commented on {file}" : "Ai comentat la {file}", + "%1$s commented on %2$s" : "%1$s a comentat la %2$s", + "{author} commented on {file}" : " {author} a comentat la {file}", + "<strong>Comments</strong> for files" : "<strong>Comentarii</strong> la fișiere", + "A (now) deleted user mentioned you in a comment on “%s”" : "Un utilizator (momentan) șters te-a menționat într-un comentariu la ”%s”", + "A (now) deleted user mentioned you in a comment on “{file}”" : "Un utilizator (momentan) șters te-a menționat într-un comentariu la ”{file}”", + "%1$s mentioned you in a comment on “%2$s”" : "%1$s te-a menționat într-un comentariu la ”%2$s”", + "{user} mentioned you in a comment on “{file}”" : "{user} te-a menționat într-un comentariu la ”{file}”", + "Type in a new comment..." : "Scrie un comentariu nou...", + "No other comments available" : "Nu sunt disponibile alte comentarii", + "More comments..." : "Mai multe comentarii...", + "{count} unread comments" : "{count} comentarii necitite", + "You commented on %2$s" : "Ai comentat la %2$s" },"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));" }
\ No newline at end of file diff --git a/apps/comments/lib/Notification/Notifier.php b/apps/comments/lib/Notification/Notifier.php index a9daef3031f..09092da539c 100644 --- a/apps/comments/lib/Notification/Notifier.php +++ b/apps/comments/lib/Notification/Notifier.php @@ -23,7 +23,7 @@ namespace OCA\Comments\Notification; use OCP\Comments\ICommentsManager; use OCP\Comments\NotFoundException; -use OCP\Files\Folder; +use OCP\Files\IRootFolder; use OCP\IURLGenerator; use OCP\IUserManager; use OCP\L10N\IFactory; @@ -35,8 +35,8 @@ class Notifier implements INotifier { /** @var IFactory */ protected $l10nFactory; - /** @var Folder */ - protected $userFolder; + /** @var IRootFolder */ + protected $rootFolder; /** @var ICommentsManager */ protected $commentsManager; @@ -49,13 +49,13 @@ class Notifier implements INotifier { public function __construct( IFactory $l10nFactory, - Folder $userFolder, + IRootFolder $rootFolder, ICommentsManager $commentsManager, IURLGenerator $url, IUserManager $userManager ) { $this->l10nFactory = $l10nFactory; - $this->userFolder = $userFolder; + $this->rootFolder = $rootFolder; $this->commentsManager = $commentsManager; $this->url = $url; $this->userManager = $userManager; @@ -93,7 +93,8 @@ class Notifier implements INotifier { if($parameters[0] !== 'files') { throw new \InvalidArgumentException('Unsupported comment object'); } - $nodes = $this->userFolder->getById($parameters[1]); + $userFolder = $this->rootFolder->getUserFolder($notification->getUser()); + $nodes = $userFolder->getById($parameters[1]); if(empty($nodes)) { throw new \InvalidArgumentException('Cannot resolve file id to Node instance'); } diff --git a/apps/comments/tests/Unit/AppInfo/ApplicationTest.php b/apps/comments/tests/Unit/AppInfo/ApplicationTest.php index e0a47dbfff9..5adfbbcc635 100644 --- a/apps/comments/tests/Unit/AppInfo/ApplicationTest.php +++ b/apps/comments/tests/Unit/AppInfo/ApplicationTest.php @@ -22,6 +22,7 @@ namespace OCA\Comments\Tests\Unit\AppInfo; use OCA\Comments\AppInfo\Application; +use OCA\Comments\Notification\Notifier; use Test\TestCase; /** @@ -56,7 +57,8 @@ class ApplicationTest extends TestCase { 'OCA\Comments\Activity\Listener', 'OCA\Comments\Activity\Provider', 'OCA\Comments\Activity\Setting', - 'OCA\Comments\Notification\Listener' + 'OCA\Comments\Notification\Listener', + Notifier::class, ]; foreach($services as $service) { diff --git a/apps/comments/tests/Unit/Notification/NotifierTest.php b/apps/comments/tests/Unit/Notification/NotifierTest.php index 25b8b4b278d..0b08849030b 100644 --- a/apps/comments/tests/Unit/Notification/NotifierTest.php +++ b/apps/comments/tests/Unit/Notification/NotifierTest.php @@ -28,6 +28,7 @@ use OCP\Comments\IComment; use OCP\Comments\ICommentsManager; use OCP\Comments\NotFoundException; use OCP\Files\Folder; +use OCP\Files\IRootFolder; use OCP\Files\Node; use OCP\IL10N; use OCP\IURLGenerator; @@ -41,41 +42,33 @@ class NotifierTest extends TestCase { /** @var Notifier */ protected $notifier; - /** @var IFactory|\PHPUnit_Framework_MockObject_MockObject */ protected $l10nFactory; - - /** @var Folder|\PHPUnit_Framework_MockObject_MockObject */ + /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */ + protected $l; + /** @var IRootFolder|\PHPUnit_Framework_MockObject_MockObject */ protected $folder; - - /** @var ICommentsManager|\PHPUnit_Framework_MockObject_MockObject */ + /** @var ICommentsManager|\PHPUnit_Framework_MockObject_MockObject */ protected $commentsManager; /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */ protected $url; - /** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */ + /** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */ protected $userManager; - - - /** @var string */ - protected $lc = 'tlh_KX'; - - /** @var INotification|\PHPUnit_Framework_MockObject_MockObject */ + /** @var INotification|\PHPUnit_Framework_MockObject_MockObject */ protected $notification; - - /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */ - protected $l; - - /** @var IComment|\PHPUnit_Framework_MockObject_MockObject */ + /** @var IComment|\PHPUnit_Framework_MockObject_MockObject */ protected $comment; + /** @var string */ + protected $lc = 'tlh_KX'; protected function setUp() { parent::setUp(); - $this->l10nFactory = $this->getMockBuilder('OCP\L10N\IFactory')->getMock(); - $this->folder = $this->getMockBuilder('OCP\Files\Folder')->getMock(); - $this->commentsManager = $this->getMockBuilder('OCP\Comments\ICommentsManager')->getMock(); + $this->l10nFactory = $this->createMock(IFactory::class); + $this->folder = $this->createMock(IRootFolder::class); + $this->commentsManager = $this->createMock(ICommentsManager::class); $this->url = $this->createMock(IURLGenerator::class); - $this->userManager = $this->getMockBuilder('OCP\IUserManager')->getMock(); + $this->userManager = $this->createMock(IUserManager::class); $this->notifier = new Notifier( $this->l10nFactory, @@ -92,8 +85,8 @@ class NotifierTest extends TestCase { return vsprintf($text, $parameters); })); - $this->notification = $this->getMockBuilder('OCP\Notification\INotification')->getMock(); - $this->comment = $this->getMockBuilder('OCP\Comments\IComment')->getMock(); + $this->notification = $this->createMock(INotification::class); + $this->comment = $this->createMock(IComment::class); } public function testPrepareSuccess() { @@ -102,24 +95,31 @@ class NotifierTest extends TestCase { $message = 'Huraga mentioned you in a comment on “Gre\'thor.odp”'; /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */ - $user = $this->getMockBuilder('OCP\IUser')->getMock(); + $user = $this->createMock(IUser::class); $user->expects($this->once()) ->method('getDisplayName') ->willReturn($displayName); - /** @var Node|\PHPUnit_Framework_MockObject_MockObject */ - $node = $this->getMockBuilder('OCP\Files\Node')->getMock(); + /** @var Node|\PHPUnit_Framework_MockObject_MockObject $node */ + $node = $this->createMock(Node::class); $node ->expects($this->atLeastOnce()) ->method('getName') ->willReturn($fileName); - $this->folder - ->expects($this->once()) + $userFolder = $this->createMock(Folder::class); + $this->folder->expects($this->once()) + ->method('getUserFolder') + ->with('you') + ->willReturn($userFolder); + $userFolder->expects($this->once()) ->method('getById') ->with('678') ->willReturn([$node]); + $this->notification->expects($this->once()) + ->method('getUser') + ->willReturn('you'); $this->notification ->expects($this->once()) ->method('getApp') @@ -172,7 +172,7 @@ class NotifierTest extends TestCase { ->willReturn('users'); $this->commentsManager - ->expects(($this->once())) + ->expects($this->once()) ->method('get') ->willReturn($this->comment); @@ -189,19 +189,26 @@ class NotifierTest extends TestCase { $fileName = 'Gre\'thor.odp'; $message = 'A (now) deleted user mentioned you in a comment on “Gre\'thor.odp”'; - /** @var Node|\PHPUnit_Framework_MockObject_MockObject */ - $node = $this->getMockBuilder('OCP\Files\Node')->getMock(); + /** @var Node|\PHPUnit_Framework_MockObject_MockObject $node */ + $node = $this->createMock(Node::class); $node ->expects($this->atLeastOnce()) ->method('getName') ->willReturn($fileName); - $this->folder - ->expects($this->once()) + $userFolder = $this->createMock(Folder::class); + $this->folder->expects($this->once()) + ->method('getUserFolder') + ->with('you') + ->willReturn($userFolder); + $userFolder->expects($this->once()) ->method('getById') ->with('678') ->willReturn([$node]); + $this->notification->expects($this->once()) + ->method('getUser') + ->willReturn('you'); $this->notification ->expects($this->once()) ->method('getApp') @@ -254,7 +261,7 @@ class NotifierTest extends TestCase { ->willReturn(ICommentsManager::DELETED_USER); $this->commentsManager - ->expects(($this->once())) + ->expects($this->once()) ->method('get') ->willReturn($this->comment); @@ -292,7 +299,7 @@ class NotifierTest extends TestCase { ->method('get'); $this->commentsManager - ->expects(($this->never())) + ->expects($this->never()) ->method('get'); $this->userManager @@ -329,7 +336,7 @@ class NotifierTest extends TestCase { ->method('get'); $this->commentsManager - ->expects(($this->once())) + ->expects($this->once()) ->method('get') ->willThrowException(new NotFoundException()); @@ -347,7 +354,7 @@ class NotifierTest extends TestCase { $displayName = 'Huraga'; /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */ - $user = $this->getMockBuilder('OCP\IUser')->getMock(); + $user = $this->createMock(IUser::class); $user->expects($this->once()) ->method('getDisplayName') ->willReturn($displayName); @@ -390,7 +397,7 @@ class NotifierTest extends TestCase { ->willReturn('users'); $this->commentsManager - ->expects(($this->once())) + ->expects($this->once()) ->method('get') ->willReturn($this->comment); @@ -410,7 +417,7 @@ class NotifierTest extends TestCase { $displayName = 'Huraga'; /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */ - $user = $this->getMockBuilder('OCP\IUser')->getMock(); + $user = $this->createMock(IUser::class); $user->expects($this->once()) ->method('getDisplayName') ->willReturn($displayName); @@ -454,7 +461,7 @@ class NotifierTest extends TestCase { ->willReturn('users'); $this->commentsManager - ->expects(($this->once())) + ->expects($this->once()) ->method('get') ->willReturn($this->comment); @@ -474,17 +481,24 @@ class NotifierTest extends TestCase { $displayName = 'Huraga'; /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */ - $user = $this->getMockBuilder('OCP\IUser')->getMock(); + $user = $this->createMock(IUser::class); $user->expects($this->once()) ->method('getDisplayName') ->willReturn($displayName); - $this->folder - ->expects($this->once()) + $userFolder = $this->createMock(Folder::class); + $this->folder->expects($this->once()) + ->method('getUserFolder') + ->with('you') + ->willReturn($userFolder); + $userFolder->expects($this->once()) ->method('getById') ->with('678') ->willReturn([]); + $this->notification->expects($this->once()) + ->method('getUser') + ->willReturn('you'); $this->notification ->expects($this->once()) ->method('getApp') @@ -520,7 +534,7 @@ class NotifierTest extends TestCase { ->willReturn('users'); $this->commentsManager - ->expects(($this->once())) + ->expects($this->once()) ->method('get') ->willReturn($this->comment); diff --git a/apps/dav/l10n/ro.js b/apps/dav/l10n/ro.js new file mode 100644 index 00000000000..9f3f2fbf72f --- /dev/null +++ b/apps/dav/l10n/ro.js @@ -0,0 +1,49 @@ +OC.L10N.register( + "dav", + { + "Calendar" : "Calendar", + "Todos" : "De făcut", + "{actor} created calendar {calendar}" : "{actor} a creat calendarul {calendar}", + "You created calendar {calendar}" : "Ai creat calendarul {calendar}", + "{actor} deleted calendar {calendar}" : "{actor} a șters calendarul {calendar}", + "You deleted calendar {calendar}" : "Ai șters calendarul {calendar}", + "{actor} updated calendar {calendar}" : "{actor} a actualiza calendarul {calendar}", + "You updated calendar {calendar}" : "Ai actualizat calendarul {calendar}", + "{actor} shared calendar {calendar} with you" : "{actor} a partajat calendarul {calendar} cu tine", + "You shared calendar {calendar} with {user}" : "Ai partajat calendarul {calendar} cu {user}", + "{actor} shared calendar {calendar} with {user}" : "{actor} a partajat calendarul {calendar} cu {user}", + "{actor} unshared calendar {calendar} from you" : "{actor} a eliminat partajarea calendarului {calendar} cu tine", + "You unshared calendar {calendar} from {user}" : "Ai eliminat partajarea calendarului {calendar} cu {user}", + "{actor} unshared calendar {calendar} from {user}" : "{actor} a eliminat partajarea calendarului {calendar} cu {user}", + "{actor} unshared calendar {calendar} from themselves" : "{actor} a eliminat partajarea calendarului {calendar} catre sine", + "You shared calendar {calendar} with group {group}" : "Ai partajat calendarul {calendar} cu grupul {group}", + "{actor} shared calendar {calendar} with group {group}" : "{actor} a partajat calendarul {calendar} cu grupul {group}", + "You unshared calendar {calendar} from group {group}" : "Ai eliminat partajarea calendarului {calendar} către grupul {group}", + "{actor} unshared calendar {calendar} from group {group}" : "{actor} a elimina partajarea calendarului {calendar} către grupul {group}", + "{actor} created event {event} in calendar {calendar}" : "{actor} a creat evenimentul {event} în calendarul {calendar}", + "You created event {event} in calendar {calendar}" : "Ai creat evenimentul {event} în calendarul {calendar}", + "{actor} deleted event {event} from calendar {calendar}" : "{actor} a șters evenimentul {event} din calendarul {calendar}", + "You deleted event {event} from calendar {calendar}" : "AI șters evenimentul {event} din calendarul {calendar}", + "{actor} updated event {event} in calendar {calendar}" : "{actor} a actualizat evenimentul {event} din calendarul {calendar}", + "You updated event {event} in calendar {calendar}" : "Ai actualizat evenimentul {event} din calendarul {calendar}", + "{actor} created todo {todo} in list {calendar}" : "{actor} a creat lista {todo} în calendarul {calendar}", + "You created todo {todo} in list {calendar}" : "Ai creat lista {todo} în lista {calendar}", + "{actor} deleted todo {todo} from list {calendar}" : "{actor} a șters lista {todo} din calendarul {calendar}", + "You deleted todo {todo} from list {calendar}" : "Ai șters lista {todo} din calendarul {calendar}", + "{actor} updated todo {todo} in list {calendar}" : "{actor} a actualizat lista {todo} din calendarul {calendar}", + "You updated todo {todo} in list {calendar}" : "Ai actualizat lista {todo} din calendarul {calendar}", + "{actor} solved todo {todo} in list {calendar}" : "{actor} a completat lista {todo} din calendarul {calendar}", + "You solved todo {todo} in list {calendar}" : "Ai completat lista {todo} din calendarul {calendar}", + "{actor} reopened todo {todo} in list {calendar}" : "{actor} a redeschis lista {todo} din calendarul {calendar}", + "You reopened todo {todo} in list {calendar}" : "Ai redeschis lista {todo} din calendarul {calendar}", + "A <strong>calendar</strong> was modified" : "Un <strong>calendar</strong> a fost modificat", + "A calendar <strong>event</strong> was modified" : "Un <strong>eveniment</strong> din calendar a fost modificat", + "A calendar <strong>todo</strong> was modified" : "O <strong>listă</strong> din calendar a fost modificată", + "Contact birthdays" : "Zile de naștere ale persoanelor de contact", + "Personal" : "Personal", + "Contacts" : "Persoane de contact", + "Technical details" : "Detalii tehnice", + "Remote Address: %s" : "Adresă la distanță: %s", + "Request ID: %s" : "ID-ul cererii: %s" +}, +"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"); diff --git a/apps/dav/l10n/ro.json b/apps/dav/l10n/ro.json new file mode 100644 index 00000000000..f93f03bd4dd --- /dev/null +++ b/apps/dav/l10n/ro.json @@ -0,0 +1,47 @@ +{ "translations": { + "Calendar" : "Calendar", + "Todos" : "De făcut", + "{actor} created calendar {calendar}" : "{actor} a creat calendarul {calendar}", + "You created calendar {calendar}" : "Ai creat calendarul {calendar}", + "{actor} deleted calendar {calendar}" : "{actor} a șters calendarul {calendar}", + "You deleted calendar {calendar}" : "Ai șters calendarul {calendar}", + "{actor} updated calendar {calendar}" : "{actor} a actualiza calendarul {calendar}", + "You updated calendar {calendar}" : "Ai actualizat calendarul {calendar}", + "{actor} shared calendar {calendar} with you" : "{actor} a partajat calendarul {calendar} cu tine", + "You shared calendar {calendar} with {user}" : "Ai partajat calendarul {calendar} cu {user}", + "{actor} shared calendar {calendar} with {user}" : "{actor} a partajat calendarul {calendar} cu {user}", + "{actor} unshared calendar {calendar} from you" : "{actor} a eliminat partajarea calendarului {calendar} cu tine", + "You unshared calendar {calendar} from {user}" : "Ai eliminat partajarea calendarului {calendar} cu {user}", + "{actor} unshared calendar {calendar} from {user}" : "{actor} a eliminat partajarea calendarului {calendar} cu {user}", + "{actor} unshared calendar {calendar} from themselves" : "{actor} a eliminat partajarea calendarului {calendar} catre sine", + "You shared calendar {calendar} with group {group}" : "Ai partajat calendarul {calendar} cu grupul {group}", + "{actor} shared calendar {calendar} with group {group}" : "{actor} a partajat calendarul {calendar} cu grupul {group}", + "You unshared calendar {calendar} from group {group}" : "Ai eliminat partajarea calendarului {calendar} către grupul {group}", + "{actor} unshared calendar {calendar} from group {group}" : "{actor} a elimina partajarea calendarului {calendar} către grupul {group}", + "{actor} created event {event} in calendar {calendar}" : "{actor} a creat evenimentul {event} în calendarul {calendar}", + "You created event {event} in calendar {calendar}" : "Ai creat evenimentul {event} în calendarul {calendar}", + "{actor} deleted event {event} from calendar {calendar}" : "{actor} a șters evenimentul {event} din calendarul {calendar}", + "You deleted event {event} from calendar {calendar}" : "AI șters evenimentul {event} din calendarul {calendar}", + "{actor} updated event {event} in calendar {calendar}" : "{actor} a actualizat evenimentul {event} din calendarul {calendar}", + "You updated event {event} in calendar {calendar}" : "Ai actualizat evenimentul {event} din calendarul {calendar}", + "{actor} created todo {todo} in list {calendar}" : "{actor} a creat lista {todo} în calendarul {calendar}", + "You created todo {todo} in list {calendar}" : "Ai creat lista {todo} în lista {calendar}", + "{actor} deleted todo {todo} from list {calendar}" : "{actor} a șters lista {todo} din calendarul {calendar}", + "You deleted todo {todo} from list {calendar}" : "Ai șters lista {todo} din calendarul {calendar}", + "{actor} updated todo {todo} in list {calendar}" : "{actor} a actualizat lista {todo} din calendarul {calendar}", + "You updated todo {todo} in list {calendar}" : "Ai actualizat lista {todo} din calendarul {calendar}", + "{actor} solved todo {todo} in list {calendar}" : "{actor} a completat lista {todo} din calendarul {calendar}", + "You solved todo {todo} in list {calendar}" : "Ai completat lista {todo} din calendarul {calendar}", + "{actor} reopened todo {todo} in list {calendar}" : "{actor} a redeschis lista {todo} din calendarul {calendar}", + "You reopened todo {todo} in list {calendar}" : "Ai redeschis lista {todo} din calendarul {calendar}", + "A <strong>calendar</strong> was modified" : "Un <strong>calendar</strong> a fost modificat", + "A calendar <strong>event</strong> was modified" : "Un <strong>eveniment</strong> din calendar a fost modificat", + "A calendar <strong>todo</strong> was modified" : "O <strong>listă</strong> din calendar a fost modificată", + "Contact birthdays" : "Zile de naștere ale persoanelor de contact", + "Personal" : "Personal", + "Contacts" : "Persoane de contact", + "Technical details" : "Detalii tehnice", + "Remote Address: %s" : "Adresă la distanță: %s", + "Request ID: %s" : "ID-ul cererii: %s" +},"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));" +}
\ No newline at end of file diff --git a/apps/dav/lib/Connector/Sabre/FakeLockerPlugin.php b/apps/dav/lib/Connector/Sabre/FakeLockerPlugin.php index eb490851fcb..3baacfc064a 100644 --- a/apps/dav/lib/Connector/Sabre/FakeLockerPlugin.php +++ b/apps/dav/lib/Connector/Sabre/FakeLockerPlugin.php @@ -138,6 +138,7 @@ class FakeLockerPlugin extends ServerPlugin { $response->setStatus(200); $response->setBody($body); + $response->setStatus(200); return false; } diff --git a/apps/dav/lib/Connector/Sabre/File.php b/apps/dav/lib/Connector/Sabre/File.php index d0826ee5a8c..1f878df1564 100644 --- a/apps/dav/lib/Connector/Sabre/File.php +++ b/apps/dav/lib/Connector/Sabre/File.php @@ -206,7 +206,12 @@ class File extends Node implements IFile { // allow sync clients to send the mtime along in a header $request = \OC::$server->getRequest(); if (isset($request->server['HTTP_X_OC_MTIME'])) { - if ($this->fileView->touch($this->path, $request->server['HTTP_X_OC_MTIME'])) { + $mtimeStr = $request->server['HTTP_X_OC_MTIME']; + if (!is_numeric($mtimeStr)) { + throw new \InvalidArgumentException('X-OC-Mtime header must be an integer (unix timestamp).'); + } + $mtime = intval($mtimeStr); + if ($this->fileView->touch($this->path, $mtime)) { header('X-OC-MTime: accepted'); } } @@ -505,9 +510,9 @@ class File extends Node implements IFile { */ private function needsPartFile($storage) { // TODO: in the future use ChunkHandler provided by storage - // and/or add method on Storage called "needsPartFile()" return !$storage->instanceOfStorage('OCA\Files_Sharing\External\Storage') && - !$storage->instanceOfStorage('OC\Files\Storage\OwnCloud'); + !$storage->instanceOfStorage('OC\Files\Storage\OwnCloud') && + $storage->needsPartFile(); } /** diff --git a/apps/dav/lib/Connector/Sabre/SharesPlugin.php b/apps/dav/lib/Connector/Sabre/SharesPlugin.php index 4df8c9f85a5..2b640d74fd4 100644 --- a/apps/dav/lib/Connector/Sabre/SharesPlugin.php +++ b/apps/dav/lib/Connector/Sabre/SharesPlugin.php @@ -143,7 +143,7 @@ class SharesPlugin extends \Sabre\DAV\ServerPlugin { $shares = $this->shareManager->getSharesInFolder( $this->userId, $node, - false + true ); $shareTypesByFileId = []; diff --git a/apps/dav/lib/Files/FileSearchBackend.php b/apps/dav/lib/Files/FileSearchBackend.php index c429a1727f8..5816c659932 100644 --- a/apps/dav/lib/Files/FileSearchBackend.php +++ b/apps/dav/lib/Files/FileSearchBackend.php @@ -28,6 +28,7 @@ use OC\Files\Search\SearchQuery; use OC\Files\View; use OCA\DAV\Connector\Sabre\Directory; use OCA\DAV\Connector\Sabre\FilesPlugin; +use OCA\DAV\Connector\Sabre\TagsPlugin; use OCP\Files\Cache\ICacheEntry; use OCP\Files\Folder; use OCP\Files\IRootFolder; @@ -112,8 +113,9 @@ class FileSearchBackend implements ISearchBackend { // queryable properties new SearchPropertyDefinition('{DAV:}displayname', true, false, true), new SearchPropertyDefinition('{DAV:}getcontenttype', true, true, true), - new SearchPropertyDefinition('{DAV:}getlastmodifed', true, true, true, SearchPropertyDefinition::DATATYPE_DATETIME), + new SearchPropertyDefinition('{DAV:}getlastmodified', true, true, true, SearchPropertyDefinition::DATATYPE_DATETIME), new SearchPropertyDefinition(FilesPlugin::SIZE_PROPERTYNAME, true, true, true, SearchPropertyDefinition::DATATYPE_NONNEGATIVE_INTEGER), + new SearchPropertyDefinition(TagsPlugin::FAVORITE_PROPERTYNAME, true, true, true, SearchPropertyDefinition::DATATYPE_BOOLEAN), // select only properties new SearchPropertyDefinition('{DAV:}resourcetype', false, true, false), @@ -178,7 +180,7 @@ class FileSearchBackend implements ISearchBackend { private function transformQuery(BasicSearch $query) { // TODO offset, limit $orders = array_map([$this, 'mapSearchOrder'], $query->orderBy); - return new SearchQuery($this->transformSearchOperation($query->where), 0, 0, $orders); + return new SearchQuery($this->transformSearchOperation($query->where), 0, 0, $orders, $this->user); } /** @@ -186,7 +188,7 @@ class FileSearchBackend implements ISearchBackend { * @return ISearchOrder */ private function mapSearchOrder(Order $order) { - return new SearchOrder($order->order === Order::ASC ? ISearchOrder::DIRECTION_ASCENDING : ISearchOrder::DIRECTION_DESCENDING, $this->mapPropertyNameToCollumn($order->property)); + return new SearchOrder($order->order === Order::ASC ? ISearchOrder::DIRECTION_ASCENDING : ISearchOrder::DIRECTION_DESCENDING, $this->mapPropertyNameToColumn($order->property)); } /** @@ -210,13 +212,13 @@ class FileSearchBackend implements ISearchBackend { if (count($operator->arguments) !== 2) { throw new \InvalidArgumentException('Invalid number of arguments for ' . $trimmedType . ' operation'); } - if (gettype($operator->arguments[0]) !== 'string') { + if (!is_string($operator->arguments[0])) { throw new \InvalidArgumentException('Invalid argument 1 for ' . $trimmedType . ' operation, expected property'); } if (!($operator->arguments[1] instanceof Literal)) { throw new \InvalidArgumentException('Invalid argument 2 for ' . $trimmedType . ' operation, expected literal'); } - return new SearchComparison($trimmedType, $this->mapPropertyNameToCollumn($operator->arguments[0]), $this->castValue($operator->arguments[0], $operator->arguments[1]->value)); + return new SearchComparison($trimmedType, $this->mapPropertyNameToColumn($operator->arguments[0]), $this->castValue($operator->arguments[0], $operator->arguments[1]->value)); case Operator::OPERATION_IS_COLLECTION: return new SearchComparison('eq', 'mimetype', ICacheEntry::DIRECTORY_MIMETYPE); default: @@ -228,16 +230,20 @@ class FileSearchBackend implements ISearchBackend { * @param string $propertyName * @return string */ - private function mapPropertyNameToCollumn($propertyName) { + private function mapPropertyNameToColumn($propertyName) { switch ($propertyName) { case '{DAV:}displayname': return 'name'; case '{DAV:}getcontenttype': return 'mimetype'; - case '{DAV:}getlastmodifed': + case '{DAV:}getlastmodified': return 'mtime'; case FilesPlugin::SIZE_PROPERTYNAME: return 'size'; + case TagsPlugin::FAVORITE_PROPERTYNAME: + return 'favorite'; + case TagsPlugin::TAGS_PROPERTYNAME: + return 'tagname'; default: throw new \InvalidArgumentException('Unsupported property for search or order: ' . $propertyName); } @@ -255,6 +261,12 @@ class FileSearchBackend implements ISearchBackend { case SearchPropertyDefinition::DATATYPE_INTEGER: case SearchPropertyDefinition::DATATYPE_NONNEGATIVE_INTEGER: return 0 + $value; + case SearchPropertyDefinition::DATATYPE_DATETIME: + if (is_numeric($value)) { + return 0 + $value; + } + $date = \DateTime::createFromFormat(\DateTime::ATOM, $value); + return ($date instanceof \DateTime) ? $date->getTimestamp() : 0; default: return $value; } diff --git a/apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php b/apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php index cecf07ef1d8..72b3c57bea6 100644 --- a/apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php +++ b/apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php @@ -126,9 +126,9 @@ class BirthdayServiceTest extends TestCase { if ($expectedOp === 'create') { $service->expects($this->exactly(3))->method('buildDateFromContact')->willReturn(new VCalendar()); $this->calDav->expects($this->exactly(3))->method('createCalendarObject')->withConsecutive( - [1234, 'default-gump.vcf.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"], - [1234, 'default-gump.vcf-death.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"], - [1234, 'default-gump.vcf-anniversary.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"] + [1234, 'default-gump.vcf.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.2//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"], + [1234, 'default-gump.vcf-death.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.2//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"], + [1234, 'default-gump.vcf-anniversary.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.2//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"] ); } if ($expectedOp === 'update') { @@ -136,9 +136,9 @@ class BirthdayServiceTest extends TestCase { $service->expects($this->exactly(3))->method('birthdayEvenChanged')->willReturn(true); $this->calDav->expects($this->exactly(3))->method('getCalendarObject')->willReturn(['calendardata' => '']); $this->calDav->expects($this->exactly(3))->method('updateCalendarObject')->withConsecutive( - [1234, 'default-gump.vcf.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"], - [1234, 'default-gump.vcf-death.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"], - [1234, 'default-gump.vcf-anniversary.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"] + [1234, 'default-gump.vcf.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.2//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"], + [1234, 'default-gump.vcf-death.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.2//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"], + [1234, 'default-gump.vcf-anniversary.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.2//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"] ); } diff --git a/apps/dav/tests/unit/Connector/Sabre/SharesPluginTest.php b/apps/dav/tests/unit/Connector/Sabre/SharesPluginTest.php index 9d8a66f24b6..2b4a886050a 100644 --- a/apps/dav/tests/unit/Connector/Sabre/SharesPluginTest.php +++ b/apps/dav/tests/unit/Connector/Sabre/SharesPluginTest.php @@ -235,7 +235,7 @@ class SharesPluginTest extends \Test\TestCase { ->with( $this->equalTo('user1'), $this->anything(), - $this->equalTo(false) + $this->equalTo(true) ) ->will($this->returnCallback(function ($userId, $node, $flag) use ($shareTypes, $dummyShares) { return [111 => $dummyShares]; diff --git a/apps/dav/tests/unit/Files/FileSearchBackendTest.php b/apps/dav/tests/unit/Files/FileSearchBackendTest.php index 24b9a9c51e6..7de92c59763 100644 --- a/apps/dav/tests/unit/Files/FileSearchBackendTest.php +++ b/apps/dav/tests/unit/Files/FileSearchBackendTest.php @@ -122,7 +122,8 @@ class FileSearchBackendTest extends TestCase { ), 0, 0, - [] + [], + $this->user )) ->will($this->returnValue([ new \OC\Files\Node\Folder($this->rootFolder, $this->view, '/test/path') @@ -150,7 +151,8 @@ class FileSearchBackendTest extends TestCase { ), 0, 0, - [] + [], + $this->user )) ->will($this->returnValue([ new \OC\Files\Node\Folder($this->rootFolder, $this->view, '/test/path') @@ -178,7 +180,8 @@ class FileSearchBackendTest extends TestCase { ), 0, 0, - [] + [], + $this->user )) ->will($this->returnValue([ new \OC\Files\Node\Folder($this->rootFolder, $this->view, '/test/path') @@ -206,13 +209,14 @@ class FileSearchBackendTest extends TestCase { ), 0, 0, - [] + [], + $this->user )) ->will($this->returnValue([ new \OC\Files\Node\Folder($this->rootFolder, $this->view, '/test/path') ])); - $query = $this->getBasicQuery(Operator::OPERATION_GREATER_THAN, '{DAV:}getlastmodifed', 10); + $query = $this->getBasicQuery(Operator::OPERATION_GREATER_THAN, '{DAV:}getlastmodified', 10); $result = $this->search->search($query); $this->assertCount(1, $result); @@ -234,7 +238,8 @@ class FileSearchBackendTest extends TestCase { ), 0, 0, - [] + [], + $this->user )) ->will($this->returnValue([ new \OC\Files\Node\Folder($this->rootFolder, $this->view, '/test/path') diff --git a/apps/encryption/l10n/lt_LT.js b/apps/encryption/l10n/lt_LT.js index 7b8bc86191a..0e1608c80bb 100644 --- a/apps/encryption/l10n/lt_LT.js +++ b/apps/encryption/l10n/lt_LT.js @@ -23,8 +23,9 @@ OC.L10N.register( "Private key password successfully updated." : "Privačiojo rakto slaptažodis sėkmingai atnaujintas.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Jūs turite perkelti savo šifravimo raktus iš senojo šifravimo (ownCloud <= 8.0) į naująjį. Prašome vykdyti \"occ encryption:migrate\" arba susisiekti su savo administratoriumi", "one-time password for server-side-encryption" : "Vienkartinis slaptažodis šifravimui serverio pusėje", - "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Failo iššifruoti nepavyko, gali būti jog jis yra pasidalintas su jumis. Paprašykite failo savininko, kad jums iš naujo pateiktų šį failą.", - "The share will expire on %s." : "Bendrinimo laikas baigsis %s.", + "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nepavyksta iššifruoti šio failo, tikriausiai, tai yra bendrinamas failas. Paprašykite failo savininko iš naujo pradėti bendrinti su jumis šį failą.", + "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nepavyksta perskaityti šio failo, tikriausiai, tai yra bendrinamas failas. Paprašykite failo savininko iš naujo pradėti bendrinti su jumis šį failą.", + "The share will expire on %s." : "Bendrinimo laikas pasibaigs %s.", "Cheers!" : "Sveikinimai!", "Default encryption module" : "Numatytasis šifravimo modulis", "Enable recovery key" : "Įjungti atstatymo raktą", diff --git a/apps/encryption/l10n/lt_LT.json b/apps/encryption/l10n/lt_LT.json index 6fb74db9fd1..55164e72a1c 100644 --- a/apps/encryption/l10n/lt_LT.json +++ b/apps/encryption/l10n/lt_LT.json @@ -21,8 +21,9 @@ "Private key password successfully updated." : "Privačiojo rakto slaptažodis sėkmingai atnaujintas.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Jūs turite perkelti savo šifravimo raktus iš senojo šifravimo (ownCloud <= 8.0) į naująjį. Prašome vykdyti \"occ encryption:migrate\" arba susisiekti su savo administratoriumi", "one-time password for server-side-encryption" : "Vienkartinis slaptažodis šifravimui serverio pusėje", - "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Failo iššifruoti nepavyko, gali būti jog jis yra pasidalintas su jumis. Paprašykite failo savininko, kad jums iš naujo pateiktų šį failą.", - "The share will expire on %s." : "Bendrinimo laikas baigsis %s.", + "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nepavyksta iššifruoti šio failo, tikriausiai, tai yra bendrinamas failas. Paprašykite failo savininko iš naujo pradėti bendrinti su jumis šį failą.", + "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nepavyksta perskaityti šio failo, tikriausiai, tai yra bendrinamas failas. Paprašykite failo savininko iš naujo pradėti bendrinti su jumis šį failą.", + "The share will expire on %s." : "Bendrinimo laikas pasibaigs %s.", "Cheers!" : "Sveikinimai!", "Default encryption module" : "Numatytasis šifravimo modulis", "Enable recovery key" : "Įjungti atstatymo raktą", diff --git a/apps/encryption/l10n/tr.js b/apps/encryption/l10n/tr.js index 5406c287516..3ec610e4adf 100644 --- a/apps/encryption/l10n/tr.js +++ b/apps/encryption/l10n/tr.js @@ -34,6 +34,7 @@ OC.L10N.register( "The share will expire on %s." : "Bu paylaşım %s tarihinde sona erecek.", "Cheers!" : "Hoşçakalın!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Selam,<br><br>Sistem yöneticisi sunucu tarafında şifrelemeyi etkinleştirdi. Dosyalarınız <strong>%s</strong> parolası kullanılarak şifrelendi.<br><br>Lütfen web arayüzünde oturum açın ve kişisel ayarlarınızdan 'temel şifreleme modülü'ne giderek 'eski oturum parolası' alanına bu parolayı girdikten sonra şifreleme parolanızı ve mevcut oturum açma parolanızı güncelleyin.<br><br>", + "Default encryption module" : "Varsayılan şifreleme modülü", "Encrypt the home storage" : "Ana depolamayı şifrele", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Bu seçeneği etkinleştirmek ana depolamadaki bütün dosyaları şifreler, aksi takdirde sadece harici depolamadaki dosyalar şifrelenir", "Enable recovery key" : "Kurtarma anahtarını etkinleştir", @@ -46,6 +47,7 @@ OC.L10N.register( "New recovery key password" : "Yeni kurtarma anahtarı parolası", "Repeat new recovery key password" : "Yeni kurtarma anahtarı parolasını yineleyin", "Change Password" : "Parola Değiştir", + "Basic encryption module" : "Temel şifreleme bölümü", "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Şifreleme Uygulaması etkin ancak anahtarlarınız başlatılmamış. Lütfen oturumu kapatıp yeniden açın", "Your private key password no longer matches your log-in password." : "Özel anahtar parolanız artık oturum açma parolanız ile eşleşmiyor.", "Set your old private key password to your current log-in password:" : "Eski özel anahtar parolanızı, geçerli oturum açma parolanız olarak ayarlayın:", diff --git a/apps/encryption/l10n/tr.json b/apps/encryption/l10n/tr.json index aaa478b0f8c..bc899b346c6 100644 --- a/apps/encryption/l10n/tr.json +++ b/apps/encryption/l10n/tr.json @@ -32,6 +32,7 @@ "The share will expire on %s." : "Bu paylaşım %s tarihinde sona erecek.", "Cheers!" : "Hoşçakalın!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Selam,<br><br>Sistem yöneticisi sunucu tarafında şifrelemeyi etkinleştirdi. Dosyalarınız <strong>%s</strong> parolası kullanılarak şifrelendi.<br><br>Lütfen web arayüzünde oturum açın ve kişisel ayarlarınızdan 'temel şifreleme modülü'ne giderek 'eski oturum parolası' alanına bu parolayı girdikten sonra şifreleme parolanızı ve mevcut oturum açma parolanızı güncelleyin.<br><br>", + "Default encryption module" : "Varsayılan şifreleme modülü", "Encrypt the home storage" : "Ana depolamayı şifrele", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Bu seçeneği etkinleştirmek ana depolamadaki bütün dosyaları şifreler, aksi takdirde sadece harici depolamadaki dosyalar şifrelenir", "Enable recovery key" : "Kurtarma anahtarını etkinleştir", @@ -44,6 +45,7 @@ "New recovery key password" : "Yeni kurtarma anahtarı parolası", "Repeat new recovery key password" : "Yeni kurtarma anahtarı parolasını yineleyin", "Change Password" : "Parola Değiştir", + "Basic encryption module" : "Temel şifreleme bölümü", "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Şifreleme Uygulaması etkin ancak anahtarlarınız başlatılmamış. Lütfen oturumu kapatıp yeniden açın", "Your private key password no longer matches your log-in password." : "Özel anahtar parolanız artık oturum açma parolanız ile eşleşmiyor.", "Set your old private key password to your current log-in password:" : "Eski özel anahtar parolanızı, geçerli oturum açma parolanız olarak ayarlayın:", diff --git a/apps/encryption/lib/Crypto/Crypt.php b/apps/encryption/lib/Crypto/Crypt.php index 7d6636d882e..4303cb9e940 100644 --- a/apps/encryption/lib/Crypto/Crypt.php +++ b/apps/encryption/lib/Crypto/Crypt.php @@ -29,7 +29,6 @@ namespace OCA\Encryption\Crypto; use OC\Encryption\Exceptions\DecryptionFailedException; use OC\Encryption\Exceptions\EncryptionFailedException; -use OC\HintException; use OCA\Encryption\Exceptions\MultiKeyDecryptException; use OCA\Encryption\Exceptions\MultiKeyEncryptException; use OCP\Encryption\Exceptions\GenericEncryptionException; @@ -476,12 +475,12 @@ class Crypt { * @param string $data * @param string $passPhrase * @param string $expectedSignature - * @throws HintException + * @throws GenericEncryptionException */ private function checkSignature($data, $passPhrase, $expectedSignature) { $signature = $this->createSignature($data, $passPhrase); if (!hash_equals($expectedSignature, $signature)) { - throw new HintException('Bad Signature', $this->l->t('Bad Signature')); + throw new GenericEncryptionException('Bad Signature', $this->l->t('Bad Signature')); } } @@ -552,7 +551,7 @@ class Crypt { * @param string $catFile * @param string $cipher * @return bool - * @throws HintException + * @throws GenericEncryptionException */ private function hasSignature($catFile, $cipher) { $meta = substr($catFile, -93); @@ -560,7 +559,7 @@ class Crypt { // enforce signature for the new 'CTR' ciphers if ($signaturePosition === false && strpos(strtolower($cipher), 'ctr') !== false) { - throw new HintException('Missing Signature', $this->l->t('Missing Signature')); + throw new GenericEncryptionException('Missing Signature', $this->l->t('Missing Signature')); } return ($signaturePosition !== false); diff --git a/apps/encryption/tests/Crypto/CryptTest.php b/apps/encryption/tests/Crypto/CryptTest.php index b808acaf199..3c226ed94ab 100644 --- a/apps/encryption/tests/Crypto/CryptTest.php +++ b/apps/encryption/tests/Crypto/CryptTest.php @@ -247,7 +247,7 @@ class CryptTest extends TestCase { /** * @dataProvider dataTestHasSignatureFail - * @expectedException \OC\HintException + * @expectedException \OCP\Encryption\Exceptions\GenericEncryptionException */ public function testHasSignatureFail($cipher) { $data = 'encryptedContent00iv001234567890123456xx'; diff --git a/apps/federatedfilesharing/appinfo/app.php b/apps/federatedfilesharing/appinfo/app.php index 4a5492b0f15..b6a145bcc2c 100644 --- a/apps/federatedfilesharing/appinfo/app.php +++ b/apps/federatedfilesharing/appinfo/app.php @@ -24,7 +24,6 @@ use OCA\FederatedFileSharing\Notifier; $app = new \OCA\FederatedFileSharing\AppInfo\Application(); -$l = \OC::$server->getL10N('files_sharing'); $eventDispatcher = \OC::$server->getEventDispatcher(); $app->registerSettings(); @@ -32,7 +31,8 @@ $app->registerSettings(); $manager = \OC::$server->getNotificationManager(); $manager->registerNotifier(function() { return \OC::$server->query(Notifier::class); -}, function() use ($l) { +}, function() { + $l = \OC::$server->getL10N('files_sharing'); return [ 'id' => 'files_sharing', 'name' => $l->t('Federated sharing'), diff --git a/apps/federatedfilesharing/l10n/zh_CN.js b/apps/federatedfilesharing/l10n/zh_CN.js index 9e3c5700328..6c675674bf0 100644 --- a/apps/federatedfilesharing/l10n/zh_CN.js +++ b/apps/federatedfilesharing/l10n/zh_CN.js @@ -29,9 +29,13 @@ OC.L10N.register( "File is already shared with %s" : "文件已经共享与 %s", "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "共享 %s 失败, 无法找到 %s, 可能该服务器当前无法访问或者使用自签名证书.", "Could not find share" : "没有发现共享", + "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "你得到“%3$s\"做为远程分享从”%1$s(代替\"%2$s)", + "You received {share} as a remote share from {user} (on behalf of {behalf})" : "你得到[共享]是从[用户]做为远程共享(代替原来的)", + "You received \"%3$s\" as a remote share from %1$s" : "你从“%1$s\"得到\"%3$s\"做为远程共享", "You received {share} as a remote share from {user}" : "您从 {user} 收到了 {share} 作为远程共享", "Accept" : "接受", "Decline" : "拒绝", + "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "通过我的联合云ID,分享给我,看%s", "Share with me through my #Nextcloud Federated Cloud ID" : "通过我的#Nextcloud联合云ID与我共享", "Federated Cloud Sharing" : "联合云共享", "Open documentation" : "打开文档", diff --git a/apps/federatedfilesharing/l10n/zh_CN.json b/apps/federatedfilesharing/l10n/zh_CN.json index 552ee8596c5..239cee71b1c 100644 --- a/apps/federatedfilesharing/l10n/zh_CN.json +++ b/apps/federatedfilesharing/l10n/zh_CN.json @@ -27,9 +27,13 @@ "File is already shared with %s" : "文件已经共享与 %s", "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "共享 %s 失败, 无法找到 %s, 可能该服务器当前无法访问或者使用自签名证书.", "Could not find share" : "没有发现共享", + "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "你得到“%3$s\"做为远程分享从”%1$s(代替\"%2$s)", + "You received {share} as a remote share from {user} (on behalf of {behalf})" : "你得到[共享]是从[用户]做为远程共享(代替原来的)", + "You received \"%3$s\" as a remote share from %1$s" : "你从“%1$s\"得到\"%3$s\"做为远程共享", "You received {share} as a remote share from {user}" : "您从 {user} 收到了 {share} 作为远程共享", "Accept" : "接受", "Decline" : "拒绝", + "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "通过我的联合云ID,分享给我,看%s", "Share with me through my #Nextcloud Federated Cloud ID" : "通过我的#Nextcloud联合云ID与我共享", "Federated Cloud Sharing" : "联合云共享", "Open documentation" : "打开文档", diff --git a/apps/federatedfilesharing/tests/TestCase.php b/apps/federatedfilesharing/tests/TestCase.php index 7ccf76bbbc6..b31772e4e9e 100644 --- a/apps/federatedfilesharing/tests/TestCase.php +++ b/apps/federatedfilesharing/tests/TestCase.php @@ -42,7 +42,7 @@ abstract class TestCase extends \Test\TestCase { // reset backend \OC_User::clearBackends(); - \OC_Group::clearBackends(); + \OC::$server->getGroupManager()->clearBackends(); // create users $backend = new \Test\Util\User\Dummy(); @@ -76,8 +76,8 @@ abstract class TestCase extends \Test\TestCase { // reset backend \OC_User::clearBackends(); \OC_User::useBackend('database'); - \OC_Group::clearBackends(); - \OC_Group::useBackend(new Database()); + \OC::$server->getGroupManager()->clearBackends(); + \OC::$server->getGroupManager()->addBackend(new Database()); parent::tearDownAfterClass(); } @@ -94,9 +94,15 @@ abstract class TestCase extends \Test\TestCase { } if ($create) { - \OC::$server->getUserManager()->createUser($user, $password); - \OC_Group::createGroup('group'); - \OC_Group::addToGroup($user, 'group'); + $userManager = \OC::$server->getUserManager(); + $groupManager = \OC::$server->getGroupManager(); + + $userObject = $userManager->createUser($user, $password); + $group = $groupManager->createGroup('group'); + + if ($group and $userObject) { + $group->addUser($userObject); + } } self::resetStorage(); diff --git a/apps/federation/appinfo/routes.php b/apps/federation/appinfo/routes.php index b9515812a01..4c742dd705c 100644 --- a/apps/federation/appinfo/routes.php +++ b/apps/federation/appinfo/routes.php @@ -43,6 +43,7 @@ $application->registerRoutes( ], ], 'ocs' => [ + // old endpoints, only used by Nextcloud and ownCloud [ 'name' => 'OCSAuthAPI#getSharedSecret', 'url' => '/api/v1/shared-secret', @@ -53,6 +54,19 @@ $application->registerRoutes( 'url' => '/api/v1/request-shared-secret', 'verb' => 'POST', ], + // new endpoints, published as public api + [ + 'name' => 'OCSAuthAPI#getSharedSecret', + 'root' => '/cloud', + 'url' => '/shared-secret', + 'verb' => 'GET', + ], + [ + 'name' => 'OCSAuthAPI#requestSharedSecret', + 'root' => '/cloud', + 'url' => '/shared-secret', + 'verb' => 'POST', + ], ], ] ); diff --git a/apps/federation/l10n/nl.js b/apps/federation/l10n/nl.js index 8d571f28ba5..60d07aeb51a 100644 --- a/apps/federation/l10n/nl.js +++ b/apps/federation/l10n/nl.js @@ -12,8 +12,8 @@ OC.L10N.register( "+ Add trusted server" : "+ Toevoegen vertrouwde server", "Trusted server" : "Vertrouwde server", "Add" : "Toevoegen", - "Trusted Servers" : "Vertrouwde servers", - "+ Add Nextcloud server" : "+ Toevoegen Nextcloud server", + "Trusted Servers" : "Vertrouwde Servers", + "+ Add Nextcloud server" : "+ Nextcloud server toevoegen", "Nextcloud Server" : "Nextcloud Server" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federation/l10n/nl.json b/apps/federation/l10n/nl.json index e29994fb4ea..f481e31e79e 100644 --- a/apps/federation/l10n/nl.json +++ b/apps/federation/l10n/nl.json @@ -10,8 +10,8 @@ "+ Add trusted server" : "+ Toevoegen vertrouwde server", "Trusted server" : "Vertrouwde server", "Add" : "Toevoegen", - "Trusted Servers" : "Vertrouwde servers", - "+ Add Nextcloud server" : "+ Toevoegen Nextcloud server", + "Trusted Servers" : "Vertrouwde Servers", + "+ Add Nextcloud server" : "+ Nextcloud server toevoegen", "Nextcloud Server" : "Nextcloud Server" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/js/file-upload.js b/apps/files/js/file-upload.js index c93abd5244d..2b28380e0b0 100644 --- a/apps/files/js/file-upload.js +++ b/apps/files/js/file-upload.js @@ -220,11 +220,6 @@ OC.FileUpload.prototype = { this.data.headers['If-None-Match'] = '*'; } - if (file.lastModified) { - // preserve timestamp - this.data.headers['X-OC-Mtime'] = file.lastModified / 1000; - } - var userName = this.uploader.filesClient.getUserName(); var password = this.uploader.filesClient.getPassword(); if (userName) { diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 1f4b8f0ec68..1385fe26771 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -2553,7 +2553,7 @@ $('#searchresults').addClass('filter-empty'); $('#searchresults .emptycontent').addClass('emptycontent-search'); if ( $('#searchresults').length === 0 || $('#searchresults').hasClass('hidden') ) { - var error = t('files', "No search results in other folders for '{tag}{filter}{endtag}'", {filter:this._filter}, null, {'escape': false}); + var error = t('files', 'No search results in other folders for {tag}{filter}{endtag}', {filter:this._filter}); this.$el.find('.nofilterresults').removeClass('hidden'). find('p').html(error.replace('{tag}', '<strong>').replace('{endtag}', '</strong>')); } diff --git a/apps/files/l10n/ca.js b/apps/files/l10n/ca.js index f43200a5a05..7ab199c4c42 100644 --- a/apps/files/l10n/ca.js +++ b/apps/files/l10n/ca.js @@ -47,6 +47,7 @@ OC.L10N.register( "_%n folder_::_%n folders_" : ["%n carpeta","%n carpetes"], "_%n file_::_%n files_" : ["%n fitxer","%n fitxers"], "{dirs} and {files}" : "{dirs} i {files}", + "_including %n hidden_::_including %n hidden_" : ["incloent %n ocult","incloent %n ocults"], "You don’t have permission to upload or create files here" : "No teniu permisos per a pujar o crear els fitxers aquí", "_Uploading %n file_::_Uploading %n files_" : ["Pujant %n fitxer","Pujant %n fitxers"], "New" : "Nou", @@ -59,6 +60,7 @@ OC.L10N.register( "_matches '{filter}'_::_match '{filter}'_" : ["coincidències '{filter}'","coincidència '{filter}'"], "View in folder" : "Veure a la carpeta", "Path" : "Ruta", + "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "Agregat a favorits", "Favorite" : "Preferits", "Copy local link" : "C", @@ -76,6 +78,7 @@ OC.L10N.register( "Restored by {user}" : "Restaurat per {user}", "Renamed by {user}" : "Reanomenat per {user}", "Moved by {user}" : "Mogut per {user}", + "You created {file}" : "Has creat {file}", "You deleted {file}" : "Heu esborrat {file}", "You renamed {oldfile} to {newfile}" : "Heu reanomenat {oldfile} a {newfile}", "{user} renamed {oldfile} to {newfile}" : "{user} ha reanomenat {oldfile} a {newfile}", diff --git a/apps/files/l10n/ca.json b/apps/files/l10n/ca.json index 0f52e17bdbb..40d96e8afda 100644 --- a/apps/files/l10n/ca.json +++ b/apps/files/l10n/ca.json @@ -45,6 +45,7 @@ "_%n folder_::_%n folders_" : ["%n carpeta","%n carpetes"], "_%n file_::_%n files_" : ["%n fitxer","%n fitxers"], "{dirs} and {files}" : "{dirs} i {files}", + "_including %n hidden_::_including %n hidden_" : ["incloent %n ocult","incloent %n ocults"], "You don’t have permission to upload or create files here" : "No teniu permisos per a pujar o crear els fitxers aquí", "_Uploading %n file_::_Uploading %n files_" : ["Pujant %n fitxer","Pujant %n fitxers"], "New" : "Nou", @@ -57,6 +58,7 @@ "_matches '{filter}'_::_match '{filter}'_" : ["coincidències '{filter}'","coincidència '{filter}'"], "View in folder" : "Veure a la carpeta", "Path" : "Ruta", + "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Favorited" : "Agregat a favorits", "Favorite" : "Preferits", "Copy local link" : "C", @@ -74,6 +76,7 @@ "Restored by {user}" : "Restaurat per {user}", "Renamed by {user}" : "Reanomenat per {user}", "Moved by {user}" : "Mogut per {user}", + "You created {file}" : "Has creat {file}", "You deleted {file}" : "Heu esborrat {file}", "You renamed {oldfile} to {newfile}" : "Heu reanomenat {oldfile} a {newfile}", "{user} renamed {oldfile} to {newfile}" : "{user} ha reanomenat {oldfile} a {newfile}", diff --git a/apps/files/l10n/ja.js b/apps/files/l10n/ja.js index 58585944f9c..f01be7e1b85 100644 --- a/apps/files/l10n/ja.js +++ b/apps/files/l10n/ja.js @@ -174,6 +174,9 @@ OC.L10N.register( "%2$s restored %1$s" : "%2$s は、 %1$s を復元しました", "Changed by %2$s" : "%2$s により更新", "Deleted by %2$s" : "%2$s により削除", - "Restored by %2$s" : "%2$s により復元" + "Restored by %2$s" : "%2$s により復元", + "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["残り {hours}:{minutes}:{seconds} 時間"], + "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["残り {minutes}:{seconds} 分"], + "_{seconds} second left_::_{seconds} seconds left_" : ["残り {seconds} 秒"] }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/ja.json b/apps/files/l10n/ja.json index 12cf9d4907c..7a69ccf1b7e 100644 --- a/apps/files/l10n/ja.json +++ b/apps/files/l10n/ja.json @@ -172,6 +172,9 @@ "%2$s restored %1$s" : "%2$s は、 %1$s を復元しました", "Changed by %2$s" : "%2$s により更新", "Deleted by %2$s" : "%2$s により削除", - "Restored by %2$s" : "%2$s により復元" + "Restored by %2$s" : "%2$s により復元", + "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["残り {hours}:{minutes}:{seconds} 時間"], + "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["残り {minutes}:{seconds} 分"], + "_{seconds} second left_::_{seconds} seconds left_" : ["残り {seconds} 秒"] },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files/l10n/lt_LT.js b/apps/files/l10n/lt_LT.js index a70a8286e99..a48332d2f8c 100644 --- a/apps/files/l10n/lt_LT.js +++ b/apps/files/l10n/lt_LT.js @@ -26,7 +26,7 @@ OC.L10N.register( "Target folder" : "Paskirties aplankas", "Delete" : "Ištrinti", "Disconnect storage" : "Atjungti saugyklą", - "Unshare" : "Nebesidalinti", + "Unshare" : "Nebebendrinti", "Could not load info for file \"{file}\"" : "Nepavyko įkelti informacijos failui \"{file}\"", "Files" : "Failai", "Details" : "Informacija", diff --git a/apps/files/l10n/lt_LT.json b/apps/files/l10n/lt_LT.json index 5abb29f5248..f1a43d46fe8 100644 --- a/apps/files/l10n/lt_LT.json +++ b/apps/files/l10n/lt_LT.json @@ -24,7 +24,7 @@ "Target folder" : "Paskirties aplankas", "Delete" : "Ištrinti", "Disconnect storage" : "Atjungti saugyklą", - "Unshare" : "Nebesidalinti", + "Unshare" : "Nebebendrinti", "Could not load info for file \"{file}\"" : "Nepavyko įkelti informacijos failui \"{file}\"", "Files" : "Failai", "Details" : "Informacija", diff --git a/apps/files/l10n/sv.js b/apps/files/l10n/sv.js index 001fc6b07b8..b66ffc8333f 100644 --- a/apps/files/l10n/sv.js +++ b/apps/files/l10n/sv.js @@ -174,6 +174,9 @@ OC.L10N.register( "%2$s restored %1$s" : "%2$s återskapade %1$s", "Changed by %2$s" : "Ändrad av %2$s", "Deleted by %2$s" : "Bortagen av %2$s", - "Restored by %2$s" : "Återställd av %2$s" + "Restored by %2$s" : "Återställd av %2$s", + "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["{hours}:{minutes}:{seconds} timme kvar","{hours}:{minutes}:{seconds} timmar kvar"], + "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["{minutes}:{seconds} minut kvar","{minutes}:{seconds} minuter kvar"], + "_{seconds} second left_::_{seconds} seconds left_" : ["{seconds} sekund kvar","{seconds} sekunder kvar"] }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/sv.json b/apps/files/l10n/sv.json index 62e44c6c28e..ebaa4c51ec5 100644 --- a/apps/files/l10n/sv.json +++ b/apps/files/l10n/sv.json @@ -172,6 +172,9 @@ "%2$s restored %1$s" : "%2$s återskapade %1$s", "Changed by %2$s" : "Ändrad av %2$s", "Deleted by %2$s" : "Bortagen av %2$s", - "Restored by %2$s" : "Återställd av %2$s" + "Restored by %2$s" : "Återställd av %2$s", + "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["{hours}:{minutes}:{seconds} timme kvar","{hours}:{minutes}:{seconds} timmar kvar"], + "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["{minutes}:{seconds} minut kvar","{minutes}:{seconds} minuter kvar"], + "_{seconds} second left_::_{seconds} seconds left_" : ["{seconds} sekund kvar","{seconds} sekunder kvar"] },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/tr.js b/apps/files/l10n/tr.js index e46a11abb6c..7859557590f 100644 --- a/apps/files/l10n/tr.js +++ b/apps/files/l10n/tr.js @@ -1,37 +1,39 @@ OC.L10N.register( "files", { - "Storage is temporarily not available" : "Gecici depolama alani mevcut değil", + "Storage is temporarily not available" : "Depolama geçici olarak kullanılamıyor", "Storage invalid" : "Depolama geçersiz", - "Unknown error" : "Bilinmeyen hata", + "Unknown error" : "Bilinmeyen sorun", "All files" : "Tüm dosyalar", "Recent" : "Son", "File could not be found" : "Dosya bulunamadı", "Home" : "Ev", "Close" : "Kapat", - "Favorites" : "Sık kullanılanlar", + "Favorites" : "Sık Kullanılanlar", "Could not create folder \"{dir}\"" : "\"{dir}\" klasörü oluşturulamadı", "Upload cancelled." : "Yükleme iptal edildi.", - "Unable to upload {filename} as it is a directory or has 0 bytes" : "{filename} bir dizin veya 0 bayt olduğundan yüklenemedi", - "Not enough free space, you are uploading {size1} but only {size2} is left" : "Yeterince boş alan yok. Gönderdiğiniz boyut {size1} ancak {size2} alan mevcut", - "Not enough free space" : "Yeterli disk alanı yok", + "Unable to upload {filename} as it is a directory or has 0 bytes" : "{filename} bir klasör ya da 0 bayt boyutunda olduğundan yüklenemedi", + "Not enough free space, you are uploading {size1} but only {size2} is left" : "Yeterli boş alan yok. Yüklemek istediğiniz boyut {size1} ancak yalnız {size2} boş alan var", + "Target folder \"{dir}\" does not exist any more" : "\"{dir}\" hedef klasörü artık yok", + "Not enough free space" : "Yeterli boş alan yok", "Uploading..." : "Yükleniyor...", "..." : "...", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} / {totalSize} ({bitrate})", - "Actions" : "Eylemler", + "Actions" : "İşlemler", "Download" : "İndir", - "Rename" : "Yeniden adlandır", + "Rename" : "Yeniden Adlandır", "Move" : "Taşı", - "Target folder" : "Hedeflenen klasör", + "Target folder" : "Hedef klasör", "Delete" : "Sil", "Disconnect storage" : "Depolama bağlantısını kes", - "Unshare" : "Paylaşmayı Kaldır", + "Unshare" : "Paylaşımı Kaldır", + "Could not load info for file \"{file}\"" : "\"{file}\" dosyasının bilgileri alınamadı", "Files" : "Dosyalar", "Details" : "Ayrıntılar", - "Select" : "Seç", + "Select" : "Seçin", "Pending" : "Bekliyor", - "Unable to determine date" : "Tarih tespit edilemedi", - "This operation is forbidden" : "Bu işlem yasak", + "Unable to determine date" : "Tarih belirlenemedi", + "This operation is forbidden" : "Bu işleme izin verilmiyor", "This directory is unavailable, please check the logs or contact the administrator" : "Bu dizine yazılamıyor, lütfen günlüğü kontrol edin veya yönetici ile iletişime geçin", "Could not move \"{file}\", target exists" : "\"{file}\" taşınamadı, hedef mevcut", "Could not move \"{file}\"" : "\"{file}\" taşınamadı", @@ -85,6 +87,7 @@ OC.L10N.register( "{user} created {file}" : "{user} tarafından {file} oluşturuldu", "You changed {file}" : "Siz {file} dosyasını değiştirdiniz", "You deleted {file}" : "Siz {file} dosyasını sildiniz", + "{user} deleted {file}" : "{user} tarafından {file} silindi", "A new file or folder has been <strong>created</strong>" : "Yeni bir dosya veya klasör <strong>oluşturuldu</strong>", "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "<strong>Sık kullanılan dosyalarınızın</strong> oluşturulma ve değiştirilme hakkındaki bildirimlerini sınırla <em>(Sadece akışta)</em>", "Upload (max. %s)" : "Yükle (azami: %s)", diff --git a/apps/files/l10n/tr.json b/apps/files/l10n/tr.json index d5b70fa9b58..89028393bb0 100644 --- a/apps/files/l10n/tr.json +++ b/apps/files/l10n/tr.json @@ -1,35 +1,37 @@ { "translations": { - "Storage is temporarily not available" : "Gecici depolama alani mevcut değil", + "Storage is temporarily not available" : "Depolama geçici olarak kullanılamıyor", "Storage invalid" : "Depolama geçersiz", - "Unknown error" : "Bilinmeyen hata", + "Unknown error" : "Bilinmeyen sorun", "All files" : "Tüm dosyalar", "Recent" : "Son", "File could not be found" : "Dosya bulunamadı", "Home" : "Ev", "Close" : "Kapat", - "Favorites" : "Sık kullanılanlar", + "Favorites" : "Sık Kullanılanlar", "Could not create folder \"{dir}\"" : "\"{dir}\" klasörü oluşturulamadı", "Upload cancelled." : "Yükleme iptal edildi.", - "Unable to upload {filename} as it is a directory or has 0 bytes" : "{filename} bir dizin veya 0 bayt olduğundan yüklenemedi", - "Not enough free space, you are uploading {size1} but only {size2} is left" : "Yeterince boş alan yok. Gönderdiğiniz boyut {size1} ancak {size2} alan mevcut", - "Not enough free space" : "Yeterli disk alanı yok", + "Unable to upload {filename} as it is a directory or has 0 bytes" : "{filename} bir klasör ya da 0 bayt boyutunda olduğundan yüklenemedi", + "Not enough free space, you are uploading {size1} but only {size2} is left" : "Yeterli boş alan yok. Yüklemek istediğiniz boyut {size1} ancak yalnız {size2} boş alan var", + "Target folder \"{dir}\" does not exist any more" : "\"{dir}\" hedef klasörü artık yok", + "Not enough free space" : "Yeterli boş alan yok", "Uploading..." : "Yükleniyor...", "..." : "...", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} / {totalSize} ({bitrate})", - "Actions" : "Eylemler", + "Actions" : "İşlemler", "Download" : "İndir", - "Rename" : "Yeniden adlandır", + "Rename" : "Yeniden Adlandır", "Move" : "Taşı", - "Target folder" : "Hedeflenen klasör", + "Target folder" : "Hedef klasör", "Delete" : "Sil", "Disconnect storage" : "Depolama bağlantısını kes", - "Unshare" : "Paylaşmayı Kaldır", + "Unshare" : "Paylaşımı Kaldır", + "Could not load info for file \"{file}\"" : "\"{file}\" dosyasının bilgileri alınamadı", "Files" : "Dosyalar", "Details" : "Ayrıntılar", - "Select" : "Seç", + "Select" : "Seçin", "Pending" : "Bekliyor", - "Unable to determine date" : "Tarih tespit edilemedi", - "This operation is forbidden" : "Bu işlem yasak", + "Unable to determine date" : "Tarih belirlenemedi", + "This operation is forbidden" : "Bu işleme izin verilmiyor", "This directory is unavailable, please check the logs or contact the administrator" : "Bu dizine yazılamıyor, lütfen günlüğü kontrol edin veya yönetici ile iletişime geçin", "Could not move \"{file}\", target exists" : "\"{file}\" taşınamadı, hedef mevcut", "Could not move \"{file}\"" : "\"{file}\" taşınamadı", @@ -83,6 +85,7 @@ "{user} created {file}" : "{user} tarafından {file} oluşturuldu", "You changed {file}" : "Siz {file} dosyasını değiştirdiniz", "You deleted {file}" : "Siz {file} dosyasını sildiniz", + "{user} deleted {file}" : "{user} tarafından {file} silindi", "A new file or folder has been <strong>created</strong>" : "Yeni bir dosya veya klasör <strong>oluşturuldu</strong>", "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "<strong>Sık kullanılan dosyalarınızın</strong> oluşturulma ve değiştirilme hakkındaki bildirimlerini sınırla <em>(Sadece akışta)</em>", "Upload (max. %s)" : "Yükle (azami: %s)", diff --git a/apps/files_external/appinfo/app.php b/apps/files_external/appinfo/app.php index 3a90cf0c2c1..925596198cf 100644 --- a/apps/files_external/appinfo/app.php +++ b/apps/files_external/appinfo/app.php @@ -37,15 +37,16 @@ $appContainer = \OC_Mount_Config::$app->getContainer(); \OC_Mount_Config::$app->registerSettings(); -$l = \OC::$server->getL10N('files_external'); - -\OCA\Files\App::getNavigationManager()->add([ - "id" => 'extstoragemounts', - "appname" => 'files_external', - "script" => 'list.php', - "order" => 30, - "name" => $l->t('External storage') -]); +\OCA\Files\App::getNavigationManager()->add(function () { + $l = \OC::$server->getL10N('files_external'); + return [ + 'id' => 'extstoragemounts', + 'appname' => 'files_external', + 'script' => 'list.php', + 'order' => 30, + 'name' => $l->t('External storage'), + ]; +}); $mountProvider = $appContainer->query('OCA\Files_External\Config\ConfigAdapter'); \OC::$server->getMountProviderCollection()->registerProvider($mountProvider); diff --git a/apps/files_sharing/appinfo/app.php b/apps/files_sharing/appinfo/app.php index 4fed51b1194..8228e761592 100644 --- a/apps/files_sharing/appinfo/app.php +++ b/apps/files_sharing/appinfo/app.php @@ -26,8 +26,6 @@ * */ -$l = \OC::$server->getL10N('files_sharing'); - \OCA\Files_Sharing\Helper::registerHooks(); \OCP\Share::registerBackend('file', 'OCA\Files_Sharing\ShareBackend\File'); @@ -52,39 +50,41 @@ $eventDispatcher->addListener( $config = \OC::$server->getConfig(); if ($config->getAppValue('core', 'shareapi_enabled', 'yes') === 'yes') { - - \OCA\Files\App::getNavigationManager()->add( - array( - "id" => 'sharingin', - "appname" => 'files_sharing', - "script" => 'list.php', - "order" => 10, - "name" => $l->t('Shared with you') - ) - ); + \OCA\Files\App::getNavigationManager()->add(function () { + $l = \OC::$server->getL10N('files_sharing'); + return [ + 'id' => 'sharingin', + 'appname' => 'files_sharing', + 'script' => 'list.php', + 'order' => 10, + 'name' => $l->t('Shared with you'), + ]; + }); if (\OCP\Util::isSharingDisabledForUser() === false) { + \OCA\Files\App::getNavigationManager()->add(function () { + $l = \OC::$server->getL10N('files_sharing'); + return [ + 'id' => 'sharingout', + 'appname' => 'files_sharing', + 'script' => 'list.php', + 'order' => 15, + 'name' => $l->t('Shared with others'), + ]; + }); - \OCA\Files\App::getNavigationManager()->add( - array( - "id" => 'sharingout', - "appname" => 'files_sharing', - "script" => 'list.php', - "order" => 15, - "name" => $l->t('Shared with others') - ) - ); // Check if sharing by link is enabled if ($config->getAppValue('core', 'shareapi_allow_links', 'yes') === 'yes') { - \OCA\Files\App::getNavigationManager()->add( - array( - "id" => 'sharinglinks', - "appname" => 'files_sharing', - "script" => 'list.php', - "order" => 20, - "name" => $l->t('Shared by link') - ) - ); + \OCA\Files\App::getNavigationManager()->add(function () { + $l = \OC::$server->getL10N('files_sharing'); + return [ + 'id' => 'sharinglinks', + 'appname' => 'files_sharing', + 'script' => 'list.php', + 'order' => 20, + 'name' => $l->t('Shared by link'), + ]; + }); } } } diff --git a/apps/files_sharing/l10n/it.js b/apps/files_sharing/l10n/it.js index e0066f826c0..a30fe353918 100644 --- a/apps/files_sharing/l10n/it.js +++ b/apps/files_sharing/l10n/it.js @@ -36,13 +36,13 @@ OC.L10N.register( "Public link expired" : "Collegamento pubblico scaduto", "{actor} shared as public link" : "{actor} ha condiviso tramite collegamento pubblico", "{actor} removed public link" : "{actor} ha rimosso il collegamento pubblico", - "Public link of {actor} expired" : "Link pubblico di {actor} scaduto", + "Public link of {actor} expired" : "Collegamento pubblico di {actor} scaduto", "You shared {file} as public link" : "Hai condiviso {file} tramite collegamento", "You removed public link for {file}" : "Hai rimosso il collegamento pubblico per {file}", - "Public link expired for {file}" : "Link pubblico scaduto per {file}", + "Public link expired for {file}" : "Collegamento pubblico scaduto per {file}", "{actor} shared {file} as public link" : "{actor} ha condiviso {file} tramite collegamento pubblico", "{actor} removed public link for {file}" : "{actor} ha rimosso il collegamento pubblico per {file}", - "Public link of {actor} for {file} expired" : "Link pubblico di {actor} per {file} scaduto", + "Public link of {actor} for {file} expired" : "Collegamento pubblico di {actor} per {file} scaduto", "{user} accepted the remote share" : "{user} ha accettato la condivisione remota", "{user} declined the remote share" : "{user} ha rifiutato la condivisione remota", "You received a new remote share {file} from {user}" : "Hai ricevuto una nuova condivisione remota {file} da {user}", diff --git a/apps/files_sharing/l10n/it.json b/apps/files_sharing/l10n/it.json index 95c41ea1c4d..89b955ac31d 100644 --- a/apps/files_sharing/l10n/it.json +++ b/apps/files_sharing/l10n/it.json @@ -34,13 +34,13 @@ "Public link expired" : "Collegamento pubblico scaduto", "{actor} shared as public link" : "{actor} ha condiviso tramite collegamento pubblico", "{actor} removed public link" : "{actor} ha rimosso il collegamento pubblico", - "Public link of {actor} expired" : "Link pubblico di {actor} scaduto", + "Public link of {actor} expired" : "Collegamento pubblico di {actor} scaduto", "You shared {file} as public link" : "Hai condiviso {file} tramite collegamento", "You removed public link for {file}" : "Hai rimosso il collegamento pubblico per {file}", - "Public link expired for {file}" : "Link pubblico scaduto per {file}", + "Public link expired for {file}" : "Collegamento pubblico scaduto per {file}", "{actor} shared {file} as public link" : "{actor} ha condiviso {file} tramite collegamento pubblico", "{actor} removed public link for {file}" : "{actor} ha rimosso il collegamento pubblico per {file}", - "Public link of {actor} for {file} expired" : "Link pubblico di {actor} per {file} scaduto", + "Public link of {actor} for {file} expired" : "Collegamento pubblico di {actor} per {file} scaduto", "{user} accepted the remote share" : "{user} ha accettato la condivisione remota", "{user} declined the remote share" : "{user} ha rifiutato la condivisione remota", "You received a new remote share {file} from {user}" : "Hai ricevuto una nuova condivisione remota {file} da {user}", diff --git a/apps/files_sharing/l10n/sv.js b/apps/files_sharing/l10n/sv.js index 163b6721074..661d19f7166 100644 --- a/apps/files_sharing/l10n/sv.js +++ b/apps/files_sharing/l10n/sv.js @@ -36,10 +36,13 @@ OC.L10N.register( "Public link expired" : "Tidsgräns för offentlig länk har löpt ut", "{actor} shared as public link" : "{actor} delade offentligt", "{actor} removed public link" : "{actor} tog bort offentlig länk", + "Public link of {actor} expired" : "Offentlig länk av {actor} har utgått", "You shared {file} as public link" : "Du delade {file} offentligt", "You removed public link for {file}" : "Du tog bort den offentliga länken för {file}", + "Public link expired for {file}" : "Offentlig länk har utgått för {file}", "{actor} shared {file} as public link" : "{actor} delade {file} offentligt", "{actor} removed public link for {file}" : "{actor} tog bort den offentliga länken för {file}", + "Public link of {actor} for {file} expired" : "Offentlig länk av {actor} för {file} har utgått", "{user} accepted the remote share" : "{user} accepterade extern delning", "{user} declined the remote share" : "{user} nekade extern delning", "You received a new remote share {file} from {user}" : "Du har fått en ny extern delning {file} från {user}", diff --git a/apps/files_sharing/l10n/sv.json b/apps/files_sharing/l10n/sv.json index a5f97053249..df91154f6f7 100644 --- a/apps/files_sharing/l10n/sv.json +++ b/apps/files_sharing/l10n/sv.json @@ -34,10 +34,13 @@ "Public link expired" : "Tidsgräns för offentlig länk har löpt ut", "{actor} shared as public link" : "{actor} delade offentligt", "{actor} removed public link" : "{actor} tog bort offentlig länk", + "Public link of {actor} expired" : "Offentlig länk av {actor} har utgått", "You shared {file} as public link" : "Du delade {file} offentligt", "You removed public link for {file}" : "Du tog bort den offentliga länken för {file}", + "Public link expired for {file}" : "Offentlig länk har utgått för {file}", "{actor} shared {file} as public link" : "{actor} delade {file} offentligt", "{actor} removed public link for {file}" : "{actor} tog bort den offentliga länken för {file}", + "Public link of {actor} for {file} expired" : "Offentlig länk av {actor} för {file} har utgått", "{user} accepted the remote share" : "{user} accepterade extern delning", "{user} declined the remote share" : "{user} nekade extern delning", "You received a new remote share {file} from {user}" : "Du har fått en ny extern delning {file} från {user}", diff --git a/apps/files_sharing/tests/TestCase.php b/apps/files_sharing/tests/TestCase.php index a9163a086bf..3b1ccb71a94 100644 --- a/apps/files_sharing/tests/TestCase.php +++ b/apps/files_sharing/tests/TestCase.php @@ -75,7 +75,7 @@ abstract class TestCase extends \Test\TestCase { // reset backend \OC_User::clearBackends(); - \OC_Group::clearBackends(); + \OC::$server->getGroupManager()->clearBackends(); // clear share hooks \OC_Hook::clear('OCP\\Share'); @@ -103,7 +103,7 @@ abstract class TestCase extends \Test\TestCase { $groupBackend->addToGroup(self::TEST_FILES_SHARING_API_USER3, 'group2'); $groupBackend->addToGroup(self::TEST_FILES_SHARING_API_USER4, 'group3'); $groupBackend->addToGroup(self::TEST_FILES_SHARING_API_USER2, self::TEST_FILES_SHARING_API_GROUP1); - \OC_Group::useBackend($groupBackend); + \OC::$server->getGroupManager()->addBackend($groupBackend); } protected function setUp() { @@ -136,7 +136,10 @@ abstract class TestCase extends \Test\TestCase { if ($user !== null) { $user->delete(); } // delete group - \OC_Group::deleteGroup(self::TEST_FILES_SHARING_API_GROUP1); + $group = \OC::$server->getGroupManager()->get(self::TEST_FILES_SHARING_API_GROUP1); + if ($group) { + $group->delete(); + } \OC_Util::tearDownFS(); \OC_User::setUserId(''); @@ -145,8 +148,8 @@ abstract class TestCase extends \Test\TestCase { // reset backend \OC_User::clearBackends(); \OC_User::useBackend('database'); - \OC_Group::clearBackends(); - \OC_Group::useBackend(new \OC\Group\Database()); + \OC::$server->getGroupManager()->clearBackends(); + \OC::$server->getGroupManager()->addBackend(new \OC\Group\Database()); parent::tearDownAfterClass(); } @@ -163,9 +166,15 @@ abstract class TestCase extends \Test\TestCase { } if ($create) { - \OC::$server->getUserManager()->createUser($user, $password); - \OC_Group::createGroup('group'); - \OC_Group::addToGroup($user, 'group'); + $userManager = \OC::$server->getUserManager(); + $groupManager = \OC::$server->getGroupManager(); + + $userObject = $userManager->createUser($user, $password); + $group = $groupManager->createGroup('group'); + + if ($group and $userObject) { + $group->addUser($userObject); + } } self::resetStorage(); diff --git a/apps/files_trashbin/appinfo/app.php b/apps/files_trashbin/appinfo/app.php index ed53657d22a..d4e44b78850 100644 --- a/apps/files_trashbin/appinfo/app.php +++ b/apps/files_trashbin/appinfo/app.php @@ -25,17 +25,16 @@ * */ -$l = \OC::$server->getL10N('files_trashbin'); - // register hooks \OCA\Files_Trashbin\Trashbin::registerHooks(); -\OCA\Files\App::getNavigationManager()->add( -array( - "id" => 'trashbin', - "appname" => 'files_trashbin', - "script" => 'list.php', - "order" => 50, - "name" => $l->t('Deleted files') -) -); +\OCA\Files\App::getNavigationManager()->add(function () { + $l = \OC::$server->getL10N('files_trashbin'); + return [ + 'id' => 'trashbin', + 'appname' => 'files_trashbin', + 'script' => 'list.php', + 'order' => 50, + 'name' => $l->t('Deleted files'), + ]; +}); diff --git a/apps/files_trashbin/lib/Storage.php b/apps/files_trashbin/lib/Storage.php index b8f154ea051..e3fe648281c 100644 --- a/apps/files_trashbin/lib/Storage.php +++ b/apps/files_trashbin/lib/Storage.php @@ -28,6 +28,8 @@ namespace OCA\Files_Trashbin; use OC\Files\Filesystem; use OC\Files\Storage\Wrapper\Wrapper; use OC\Files\View; +use OCP\Encryption\Exceptions\GenericEncryptionException; +use OCP\ILogger; use OCP\IUserManager; class Storage extends Wrapper { @@ -55,15 +57,21 @@ class Storage extends Wrapper { /** @var IUserManager */ private $userManager; + /** @var ILogger */ + private $logger; + /** * Storage constructor. * * @param array $parameters * @param IUserManager|null $userManager */ - public function __construct($parameters, IUserManager $userManager = null) { + public function __construct($parameters, + IUserManager $userManager = null, + ILogger $logger = null) { $this->mountPoint = $parameters['mountPoint']; $this->userManager = $userManager; + $this->logger = $logger; parent::__construct($parameters); } @@ -147,11 +155,20 @@ class Storage extends Wrapper { * @return bool true if the operation succeeded, false otherwise */ public function unlink($path) { - if (isset(self::$moveOutOfSharedFolder[$this->mountPoint . $path])) { - $result = $this->doDelete($path, 'unlink', true); - unset(self::$moveOutOfSharedFolder[$this->mountPoint . $path]); - } else { - $result = $this->doDelete($path, 'unlink'); + try { + if (isset(self::$moveOutOfSharedFolder[$this->mountPoint . $path])) { + $result = $this->doDelete($path, 'unlink', true); + unset(self::$moveOutOfSharedFolder[$this->mountPoint . $path]); + } else { + $result = $this->doDelete($path, 'unlink'); + } + } catch (GenericEncryptionException $e) { + // in case of a encryption exception we delete the file right away + $this->logger->info( + "Can't move file" . $path . + "to the trash bin, therefore it was deleted right away"); + + $result = $this->storage->unlink($path); } return $result; @@ -251,7 +268,8 @@ class Storage extends Wrapper { \OC\Files\Filesystem::addStorageWrapper('oc_trashbin', function ($mountPoint, $storage) { return new \OCA\Files_Trashbin\Storage( array('storage' => $storage, 'mountPoint' => $mountPoint), - \OC::$server->getUserManager() + \OC::$server->getUserManager(), + \OC::$server->getLogger() ); }, 1); } diff --git a/apps/files_trashbin/tests/StorageTest.php b/apps/files_trashbin/tests/StorageTest.php index 2aebe6414f7..52d5f056148 100644 --- a/apps/files_trashbin/tests/StorageTest.php +++ b/apps/files_trashbin/tests/StorageTest.php @@ -31,6 +31,7 @@ namespace OCA\Files_Trashbin\Tests; use OC\Files\Storage\Temporary; use OC\Files\Filesystem; +use OCP\ILogger; /** * Class Storage @@ -528,9 +529,11 @@ class StorageTest extends \Test\TestCase { ->disableOriginalConstructor()->getMock(); $userManager->expects($this->any()) ->method('userExists')->willReturn($userExists); + $logger = $this->getMockBuilder(ILogger::class)->getMock(); $storage = new \OCA\Files_Trashbin\Storage( ['mountPoint' => $mountPoint, 'storage' => $tmpStorage], - $userManager + $userManager, + $logger ); $this->assertSame($expected, diff --git a/apps/files_versions/l10n/ro.js b/apps/files_versions/l10n/ro.js index 45ccc69cf9f..7574103eb86 100644 --- a/apps/files_versions/l10n/ro.js +++ b/apps/files_versions/l10n/ro.js @@ -4,7 +4,9 @@ OC.L10N.register( "Could not revert: %s" : "Nu s-a putut reveni: %s", "Versions" : "Versiuni", "Failed to revert {file} to revision {timestamp}." : "S-a eșuat restaurarea fișierului {file} la revizia {timestamp}.", + "_%n byte_::_%n bytes_" : ["%n byte","%n byți","%n byți"], "Restore" : "Restaurare", + "No versions available" : "Nu există versiuni disponibile", "More versions..." : "Mai multe versiuni...", "No other versions available" : "Nu există alte versiuni disponibile" }, diff --git a/apps/files_versions/l10n/ro.json b/apps/files_versions/l10n/ro.json index d6117a65cb5..cbd970ad3b3 100644 --- a/apps/files_versions/l10n/ro.json +++ b/apps/files_versions/l10n/ro.json @@ -2,7 +2,9 @@ "Could not revert: %s" : "Nu s-a putut reveni: %s", "Versions" : "Versiuni", "Failed to revert {file} to revision {timestamp}." : "S-a eșuat restaurarea fișierului {file} la revizia {timestamp}.", + "_%n byte_::_%n bytes_" : ["%n byte","%n byți","%n byți"], "Restore" : "Restaurare", + "No versions available" : "Nu există versiuni disponibile", "More versions..." : "Mai multe versiuni...", "No other versions available" : "Nu există alte versiuni disponibile" },"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));" diff --git a/apps/sharebymail/l10n/it.js b/apps/sharebymail/l10n/it.js new file mode 100644 index 00000000000..6711acbef00 --- /dev/null +++ b/apps/sharebymail/l10n/it.js @@ -0,0 +1,24 @@ +OC.L10N.register( + "sharebymail", + { + "Shared with %1$s" : "Condivisa con %1$s", + "Shared with {email}" : "Condivisa con {email}", + "Shared with %1$s by %2$s" : "Condivisa con %1$s da %2$s", + "Shared with {email} by {actor}" : "Condivisa con {email} da {actor}", + "You shared %1$s with %2$s by mail" : "Hai condiviso %1$s con %2$s tramite posta", + "You shared {file} with {email} by mail" : "Hai condiviso {file} con {user} tramite posta", + "%3$s shared %1$s with %2$s by mail" : "%3$s ha condiviso %1$s con %2$s tramite email", + "{actor} shared {file} with {email} by mail" : "{actor} ha condiviso {file} con {email} tramite email", + "Sharing %s failed, this item is already shared with %s" : "Condivisione %s non riuscita, questo elemento è già condiviso con %s", + "Failed to send share by E-mail" : "Invio non riuscito della condivisione tramite email", + "%s shared »%s« with you" : "%s ha condiviso »%s« con te", + "%s shared »%s« with you on behalf of %s" : "%s ha condiviso «%s» con te per conto di %s", + "Failed to create the E-mail" : "Creazione dell'email non riuscita", + "Could not find share" : "Non è stato possibile trovare la condivisione", + "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Ciao,\n\n%s ha condiviso «%s» con te per conto di %s.\n\n%s\n\n", + "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Ciao,\n\n%s ha condiviso «%s» con te.\n\n%s\n\n", + "Cheers!" : "Saluti!", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you on behalf of %s.<br><br>" : "Ciao, <br><br>%s ha condiviso <a href=\"%s\">%s</a> con te per conto di %s.<br><br>", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you.<br><br>" : "Ciao, <br><br>%s ha condiviso <a href=\"%s\">%s</a> con te.<br><br>" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/sharebymail/l10n/it.json b/apps/sharebymail/l10n/it.json new file mode 100644 index 00000000000..d08dc8f7f2c --- /dev/null +++ b/apps/sharebymail/l10n/it.json @@ -0,0 +1,22 @@ +{ "translations": { + "Shared with %1$s" : "Condivisa con %1$s", + "Shared with {email}" : "Condivisa con {email}", + "Shared with %1$s by %2$s" : "Condivisa con %1$s da %2$s", + "Shared with {email} by {actor}" : "Condivisa con {email} da {actor}", + "You shared %1$s with %2$s by mail" : "Hai condiviso %1$s con %2$s tramite posta", + "You shared {file} with {email} by mail" : "Hai condiviso {file} con {user} tramite posta", + "%3$s shared %1$s with %2$s by mail" : "%3$s ha condiviso %1$s con %2$s tramite email", + "{actor} shared {file} with {email} by mail" : "{actor} ha condiviso {file} con {email} tramite email", + "Sharing %s failed, this item is already shared with %s" : "Condivisione %s non riuscita, questo elemento è già condiviso con %s", + "Failed to send share by E-mail" : "Invio non riuscito della condivisione tramite email", + "%s shared »%s« with you" : "%s ha condiviso »%s« con te", + "%s shared »%s« with you on behalf of %s" : "%s ha condiviso «%s» con te per conto di %s", + "Failed to create the E-mail" : "Creazione dell'email non riuscita", + "Could not find share" : "Non è stato possibile trovare la condivisione", + "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Ciao,\n\n%s ha condiviso «%s» con te per conto di %s.\n\n%s\n\n", + "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Ciao,\n\n%s ha condiviso «%s» con te.\n\n%s\n\n", + "Cheers!" : "Saluti!", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you on behalf of %s.<br><br>" : "Ciao, <br><br>%s ha condiviso <a href=\"%s\">%s</a> con te per conto di %s.<br><br>", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you.<br><br>" : "Ciao, <br><br>%s ha condiviso <a href=\"%s\">%s</a> con te.<br><br>" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/sharebymail/l10n/sv.js b/apps/sharebymail/l10n/sv.js new file mode 100644 index 00000000000..fb0a4fc44db --- /dev/null +++ b/apps/sharebymail/l10n/sv.js @@ -0,0 +1,21 @@ +OC.L10N.register( + "sharebymail", + { + "Shared with %1$s" : "Delad med %1$s", + "Shared with {email}" : "Delad med {email}", + "Shared with %1$s by %2$s" : "Delad med %1$s av %2$s", + "Shared with {email} by {actor}" : "Delad med {email} av {actor}", + "You shared %1$s with %2$s by mail" : "Du delade %1$s med %2$s via e-post", + "You shared {file} with {email} by mail" : "Du delade {file} med {email} via e-post", + "%3$s shared %1$s with %2$s by mail" : "%3$s delade %1$s med %2$s via e-post", + "{actor} shared {file} with {email} by mail" : "{actor} delade {file} med {email} via e-post", + "Sharing %s failed, this item is already shared with %s" : "Delning av %s misslyckades, det är redan delat med %s", + "Failed to send share by E-mail" : "Misslyckades att dela via e-post", + "%s shared »%s« with you" : "%s delade »%s« med dig", + "%s shared »%s« with you on behalf of %s" : "%s delade »%s« med dig på begäran av %s", + "Failed to create the E-mail" : "Misslyckades att skapa e-post", + "Could not find share" : "Kunde inte hitta delning", + "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Hej,\n\n%s delade »%s« med dig.\n\n%s\n", + "Cheers!" : "Skål!" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/sharebymail/l10n/sv.json b/apps/sharebymail/l10n/sv.json new file mode 100644 index 00000000000..028271c60f2 --- /dev/null +++ b/apps/sharebymail/l10n/sv.json @@ -0,0 +1,19 @@ +{ "translations": { + "Shared with %1$s" : "Delad med %1$s", + "Shared with {email}" : "Delad med {email}", + "Shared with %1$s by %2$s" : "Delad med %1$s av %2$s", + "Shared with {email} by {actor}" : "Delad med {email} av {actor}", + "You shared %1$s with %2$s by mail" : "Du delade %1$s med %2$s via e-post", + "You shared {file} with {email} by mail" : "Du delade {file} med {email} via e-post", + "%3$s shared %1$s with %2$s by mail" : "%3$s delade %1$s med %2$s via e-post", + "{actor} shared {file} with {email} by mail" : "{actor} delade {file} med {email} via e-post", + "Sharing %s failed, this item is already shared with %s" : "Delning av %s misslyckades, det är redan delat med %s", + "Failed to send share by E-mail" : "Misslyckades att dela via e-post", + "%s shared »%s« with you" : "%s delade »%s« med dig", + "%s shared »%s« with you on behalf of %s" : "%s delade »%s« med dig på begäran av %s", + "Failed to create the E-mail" : "Misslyckades att skapa e-post", + "Could not find share" : "Kunde inte hitta delning", + "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Hej,\n\n%s delade »%s« med dig.\n\n%s\n", + "Cheers!" : "Skål!" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/sharebymail/l10n/tr.js b/apps/sharebymail/l10n/tr.js new file mode 100644 index 00000000000..3a9bf810f89 --- /dev/null +++ b/apps/sharebymail/l10n/tr.js @@ -0,0 +1,24 @@ +OC.L10N.register( + "sharebymail", + { + "Shared with %1$s" : "%1$s ile paylaşıldı", + "Shared with {email}" : "{email} ile paylaşıldı", + "Shared with %1$s by %2$s" : "%1$s ile %2$s tarafından paylaşıldı", + "Shared with {email} by {actor}" : "{email} ile {actor} tarafından paylaşıldı", + "You shared %1$s with %2$s by mail" : "%1$s dosyasını %2$s ile e-posta üzerinden paylaştınız", + "You shared {file} with {email} by mail" : "{file} dosyasını {email} ile e-posta üzerinden paylaştınız", + "%3$s shared %1$s with %2$s by mail" : "%3$s, %1$s dosyasını %2$s ile e-posta üzerinden paylaştı", + "{actor} shared {file} with {email} by mail" : "{actor}, {file} dosyasını {email} ile e-posta üzerinden paylaştı", + "Sharing %s failed, this item is already shared with %s" : "%s paylaşılamadı, bu öge zaten %s ile paylaşılmış", + "Failed to send share by E-mail" : "Paylaşım e-postası gönderilemedi", + "%s shared »%s« with you" : "%s sizinle »%s« ögesini paylaştı", + "%s shared »%s« with you on behalf of %s" : "%s sizinle »%s« ögesini %s adına paylaştı", + "Failed to create the E-mail" : "E-posta oluşturulamadı", + "Could not find share" : "Paylaşım bulunamadı", + "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Merhaba,\n\n%s sizinle »%s« ögesini %s adına paylaştı.\n\n%s\n\n", + "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Merhaba,\n\n%s sizinle »%s« ögesini paylaştı.\n\n%s\n\n", + "Cheers!" : "Hoşça kalın!", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you on behalf of %s.<br><br>" : "Merhaba,<br><br>%s sizinle <a href=\"%s\">%s</a> ögesini %s adına paylaştı.<br><br>", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you.<br><br>" : "Merhaba,<br><br>%s sizinle <a href=\"%s\">%s</a> ögesini paylaştı.<br><br>" +}, +"nplurals=2; plural=(n > 1);"); diff --git a/apps/sharebymail/l10n/tr.json b/apps/sharebymail/l10n/tr.json new file mode 100644 index 00000000000..b6b07c20491 --- /dev/null +++ b/apps/sharebymail/l10n/tr.json @@ -0,0 +1,22 @@ +{ "translations": { + "Shared with %1$s" : "%1$s ile paylaşıldı", + "Shared with {email}" : "{email} ile paylaşıldı", + "Shared with %1$s by %2$s" : "%1$s ile %2$s tarafından paylaşıldı", + "Shared with {email} by {actor}" : "{email} ile {actor} tarafından paylaşıldı", + "You shared %1$s with %2$s by mail" : "%1$s dosyasını %2$s ile e-posta üzerinden paylaştınız", + "You shared {file} with {email} by mail" : "{file} dosyasını {email} ile e-posta üzerinden paylaştınız", + "%3$s shared %1$s with %2$s by mail" : "%3$s, %1$s dosyasını %2$s ile e-posta üzerinden paylaştı", + "{actor} shared {file} with {email} by mail" : "{actor}, {file} dosyasını {email} ile e-posta üzerinden paylaştı", + "Sharing %s failed, this item is already shared with %s" : "%s paylaşılamadı, bu öge zaten %s ile paylaşılmış", + "Failed to send share by E-mail" : "Paylaşım e-postası gönderilemedi", + "%s shared »%s« with you" : "%s sizinle »%s« ögesini paylaştı", + "%s shared »%s« with you on behalf of %s" : "%s sizinle »%s« ögesini %s adına paylaştı", + "Failed to create the E-mail" : "E-posta oluşturulamadı", + "Could not find share" : "Paylaşım bulunamadı", + "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Merhaba,\n\n%s sizinle »%s« ögesini %s adına paylaştı.\n\n%s\n\n", + "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Merhaba,\n\n%s sizinle »%s« ögesini paylaştı.\n\n%s\n\n", + "Cheers!" : "Hoşça kalın!", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you on behalf of %s.<br><br>" : "Merhaba,<br><br>%s sizinle <a href=\"%s\">%s</a> ögesini %s adına paylaştı.<br><br>", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you.<br><br>" : "Merhaba,<br><br>%s sizinle <a href=\"%s\">%s</a> ögesini paylaştı.<br><br>" +},"pluralForm" :"nplurals=2; plural=(n > 1);" +}
\ No newline at end of file diff --git a/apps/systemtags/appinfo/app.php b/apps/systemtags/appinfo/app.php index 2c095753ce8..bb2930e9197 100644 --- a/apps/systemtags/appinfo/app.php +++ b/apps/systemtags/appinfo/app.php @@ -65,14 +65,14 @@ $mapperListener = function(MapperEvent $event) { $eventDispatcher->addListener(MapperEvent::EVENT_ASSIGN, $mapperListener); $eventDispatcher->addListener(MapperEvent::EVENT_UNASSIGN, $mapperListener); -$l = \OC::$server->getL10N('systemtags'); - -\OCA\Files\App::getNavigationManager()->add( - array( +\OCA\Files\App::getNavigationManager()->add(function () { + $l = \OC::$server->getL10N('systemtags'); + return [ 'id' => 'systemtagsfilter', 'appname' => 'systemtags', 'script' => 'list.php', 'order' => 25, - 'name' => $l->t('Tags') - ) -); + 'name' => $l->t('Tags'), + ]; +}); + diff --git a/apps/systemtags/l10n/zh_CN.js b/apps/systemtags/l10n/zh_CN.js index 022511042b6..08e33655812 100644 --- a/apps/systemtags/l10n/zh_CN.js +++ b/apps/systemtags/l10n/zh_CN.js @@ -29,6 +29,8 @@ OC.L10N.register( "You updated system tag %2$s to %1$s" : "您已将系统标签 %2$s 更新为 %1$s", "You updated system tag {oldsystemtag} to {newsystemtag}" : "您已将系统标签 {oldsystemtag} 更新为 {newsystemtag}", "%1$s updated system tag %3$s to %2$s" : "%1$s 更新了系统标签 %3$s 为 %2$s", + "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor}更新系统标签{oldsystemtag}到{newsystemtag}", + "You added system tag %2$s to %1$s" : "你填加系统标签%2$s到%1$s", "%s (restricted)" : "%s (受限)", "%s (invisible)" : "%s (不可见)", "<strong>System tags</strong> for a file have been modified" : "已更改的文件的<strong>系统标签</strong> ", diff --git a/apps/systemtags/l10n/zh_CN.json b/apps/systemtags/l10n/zh_CN.json index 5b7209f3dc8..55bb4f9b2cf 100644 --- a/apps/systemtags/l10n/zh_CN.json +++ b/apps/systemtags/l10n/zh_CN.json @@ -27,6 +27,8 @@ "You updated system tag %2$s to %1$s" : "您已将系统标签 %2$s 更新为 %1$s", "You updated system tag {oldsystemtag} to {newsystemtag}" : "您已将系统标签 {oldsystemtag} 更新为 {newsystemtag}", "%1$s updated system tag %3$s to %2$s" : "%1$s 更新了系统标签 %3$s 为 %2$s", + "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor}更新系统标签{oldsystemtag}到{newsystemtag}", + "You added system tag %2$s to %1$s" : "你填加系统标签%2$s到%1$s", "%s (restricted)" : "%s (受限)", "%s (invisible)" : "%s (不可见)", "<strong>System tags</strong> for a file have been modified" : "已更改的文件的<strong>系统标签</strong> ", diff --git a/apps/theming/l10n/hu.js b/apps/theming/l10n/hu.js new file mode 100644 index 00000000000..a0549dfd06b --- /dev/null +++ b/apps/theming/l10n/hu.js @@ -0,0 +1,27 @@ +OC.L10N.register( + "theming", + { + "Admin" : "Adminisztrátor", + "a safe home for all your data" : "biztonságos hely az adataid számára", + "The given name is too long" : "A bevitt név túl hosszú", + "The given web address is too long" : "A bevitt webcím túl hosszú", + "The given slogan is too long" : "A bevitt szlogen túl hosszú", + "The given color is invalid" : "A bevitt szín érvénytelen", + "Saved" : "Mentve!", + "No file uploaded" : "Nincs fájl feltöltve", + "Unsupported image type" : "Nem támogatott képtípus", + "You are already using a custom theme" : "Már egyedi témát használ", + "Theming" : "Témázás", + "Name" : "Név", + "reset to default" : "Visszaállítás alapértelmezettre", + "Web address" : "Webcím", + "Web address https://…" : "Webcím https://...", + "Slogan" : "Szlogen", + "Color" : "Szín", + "Logo" : "Logó", + "Upload new logo" : "Új logó feltöltése", + "Login image" : "Bejelentkező kép", + "Upload new login background" : "Új bejelentkező kép feltöltése", + "Log in image" : "Bejelentkező kép" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/theming/l10n/hu.json b/apps/theming/l10n/hu.json new file mode 100644 index 00000000000..6023637c81d --- /dev/null +++ b/apps/theming/l10n/hu.json @@ -0,0 +1,25 @@ +{ "translations": { + "Admin" : "Adminisztrátor", + "a safe home for all your data" : "biztonságos hely az adataid számára", + "The given name is too long" : "A bevitt név túl hosszú", + "The given web address is too long" : "A bevitt webcím túl hosszú", + "The given slogan is too long" : "A bevitt szlogen túl hosszú", + "The given color is invalid" : "A bevitt szín érvénytelen", + "Saved" : "Mentve!", + "No file uploaded" : "Nincs fájl feltöltve", + "Unsupported image type" : "Nem támogatott képtípus", + "You are already using a custom theme" : "Már egyedi témát használ", + "Theming" : "Témázás", + "Name" : "Név", + "reset to default" : "Visszaállítás alapértelmezettre", + "Web address" : "Webcím", + "Web address https://…" : "Webcím https://...", + "Slogan" : "Szlogen", + "Color" : "Szín", + "Logo" : "Logó", + "Upload new logo" : "Új logó feltöltése", + "Login image" : "Bejelentkező kép", + "Upload new login background" : "Új bejelentkező kép feltöltése", + "Log in image" : "Bejelentkező kép" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/theming/l10n/it.js b/apps/theming/l10n/it.js index 81a3889fcc6..629dc4e71dc 100644 --- a/apps/theming/l10n/it.js +++ b/apps/theming/l10n/it.js @@ -13,15 +13,15 @@ OC.L10N.register( "You are already using a custom theme" : "Stai già usando un tema personalizzato", "Theming" : "Tema", "Name" : "Nome", - "reset to default" : "resetta a predefinito", + "reset to default" : "ripristina valori predefiniti", "Web address" : "Indirizzo web", - "Web address https://…" : "Indirizzo Web https://…", + "Web address https://…" : "Indirizzo web https://…", "Slogan" : "Slogan", "Color" : "Colore", "Logo" : "Logo", "Upload new logo" : "Carica nuovo logo", - "Login image" : "Immagine del login", - "Upload new login background" : "Carica nuovo sfondo del login", - "Log in image" : "Immagine del login" + "Login image" : "Immagine di accesso", + "Upload new login background" : "Carica nuovo sfondo di accesso", + "Log in image" : "Immagine di accesso" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/theming/l10n/it.json b/apps/theming/l10n/it.json index 3fc86d522a4..771d46f2189 100644 --- a/apps/theming/l10n/it.json +++ b/apps/theming/l10n/it.json @@ -11,15 +11,15 @@ "You are already using a custom theme" : "Stai già usando un tema personalizzato", "Theming" : "Tema", "Name" : "Nome", - "reset to default" : "resetta a predefinito", + "reset to default" : "ripristina valori predefiniti", "Web address" : "Indirizzo web", - "Web address https://…" : "Indirizzo Web https://…", + "Web address https://…" : "Indirizzo web https://…", "Slogan" : "Slogan", "Color" : "Colore", "Logo" : "Logo", "Upload new logo" : "Carica nuovo logo", - "Login image" : "Immagine del login", - "Upload new login background" : "Carica nuovo sfondo del login", - "Log in image" : "Immagine del login" + "Login image" : "Immagine di accesso", + "Upload new login background" : "Carica nuovo sfondo di accesso", + "Log in image" : "Immagine di accesso" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/theming/l10n/sv.js b/apps/theming/l10n/sv.js new file mode 100644 index 00000000000..7b75d1d8511 --- /dev/null +++ b/apps/theming/l10n/sv.js @@ -0,0 +1,27 @@ +OC.L10N.register( + "theming", + { + "Admin" : "Admin", + "a safe home for all your data" : "En säker plats för alla dina filer och data", + "The given name is too long" : "Det angivna namnet är för långt", + "The given web address is too long" : "Den angivna adressen är för lång", + "The given slogan is too long" : "Den angivna slogan är för lång", + "The given color is invalid" : "Den angivna färgen är inte tillgänglig", + "Saved" : "Sparat", + "No file uploaded" : "Ingen fil uppladdad", + "Unsupported image type" : "Filtypen är ej giltig", + "You are already using a custom theme" : "Du använder redan ett annat tema", + "Theming" : "Teman", + "Name" : "Namn", + "reset to default" : "Återställ till standard", + "Web address" : "Webbadress", + "Web address https://…" : "Webbadress https://...", + "Slogan" : "Slogan", + "Color" : "Färg", + "Logo" : "Logotyp", + "Upload new logo" : "Ladda upp ny logotyp", + "Login image" : "Inloggningsbild", + "Upload new login background" : "Ladda upp ny bakgrundsbild", + "Log in image" : "Inloggningsbild" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/theming/l10n/sv.json b/apps/theming/l10n/sv.json new file mode 100644 index 00000000000..3de28c76008 --- /dev/null +++ b/apps/theming/l10n/sv.json @@ -0,0 +1,25 @@ +{ "translations": { + "Admin" : "Admin", + "a safe home for all your data" : "En säker plats för alla dina filer och data", + "The given name is too long" : "Det angivna namnet är för långt", + "The given web address is too long" : "Den angivna adressen är för lång", + "The given slogan is too long" : "Den angivna slogan är för lång", + "The given color is invalid" : "Den angivna färgen är inte tillgänglig", + "Saved" : "Sparat", + "No file uploaded" : "Ingen fil uppladdad", + "Unsupported image type" : "Filtypen är ej giltig", + "You are already using a custom theme" : "Du använder redan ett annat tema", + "Theming" : "Teman", + "Name" : "Namn", + "reset to default" : "Återställ till standard", + "Web address" : "Webbadress", + "Web address https://…" : "Webbadress https://...", + "Slogan" : "Slogan", + "Color" : "Färg", + "Logo" : "Logotyp", + "Upload new logo" : "Ladda upp ny logotyp", + "Login image" : "Inloggningsbild", + "Upload new login background" : "Ladda upp ny bakgrundsbild", + "Log in image" : "Inloggningsbild" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/twofactor_backupcodes/l10n/tr.js b/apps/twofactor_backupcodes/l10n/tr.js index a5c93acebfd..ff68c827c78 100644 --- a/apps/twofactor_backupcodes/l10n/tr.js +++ b/apps/twofactor_backupcodes/l10n/tr.js @@ -10,9 +10,12 @@ OC.L10N.register( "If you regenerate backup codes, you automatically invalidate old codes." : "Yedek kodlarını yeniden oluşturursanız, eski kodlar geçersiz olur.", "An error occurred while generating your backup codes" : "Yedek kodlar oluşturulurken bir sorun çıktı", "Nextcloud backup codes" : "Nextcloud yedek kodları", - "Two-factor authentication" : "Iki faktörlü kimlik doğrulama", - "Backup code" : "Yedek kodu", - "Use backup code" : "Yedek kodunu kullan", + "Two-factor authentication" : "Iki aşamalı kimlik doğrulama", + "You successfully logged in using two-factor authentication (%1$s)" : "İki aşamalı kimlik doğrulama ile oturum açtınız (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "İki aşamalı kimlik doğrulama ile oturum açma girişimi reddedildi (%1$s)", + "You created two-factor backup codes for your account" : "İki aşamalı kimlik doğrulama için yedek kodlarınızı oluşturdunuz", + "Backup code" : "Yedek kod", + "Use backup code" : "Yedek kodu kullan", "Second-factor backup codes" : "İki aşamalı yedek kodları" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/twofactor_backupcodes/l10n/tr.json b/apps/twofactor_backupcodes/l10n/tr.json index 44c86cd60cc..fb392c867ff 100644 --- a/apps/twofactor_backupcodes/l10n/tr.json +++ b/apps/twofactor_backupcodes/l10n/tr.json @@ -8,9 +8,12 @@ "If you regenerate backup codes, you automatically invalidate old codes." : "Yedek kodlarını yeniden oluşturursanız, eski kodlar geçersiz olur.", "An error occurred while generating your backup codes" : "Yedek kodlar oluşturulurken bir sorun çıktı", "Nextcloud backup codes" : "Nextcloud yedek kodları", - "Two-factor authentication" : "Iki faktörlü kimlik doğrulama", - "Backup code" : "Yedek kodu", - "Use backup code" : "Yedek kodunu kullan", + "Two-factor authentication" : "Iki aşamalı kimlik doğrulama", + "You successfully logged in using two-factor authentication (%1$s)" : "İki aşamalı kimlik doğrulama ile oturum açtınız (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "İki aşamalı kimlik doğrulama ile oturum açma girişimi reddedildi (%1$s)", + "You created two-factor backup codes for your account" : "İki aşamalı kimlik doğrulama için yedek kodlarınızı oluşturdunuz", + "Backup code" : "Yedek kod", + "Use backup code" : "Yedek kodu kullan", "Second-factor backup codes" : "İki aşamalı yedek kodları" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/tr.js b/apps/updatenotification/l10n/tr.js index b5160c7b6b3..21e5fde7504 100644 --- a/apps/updatenotification/l10n/tr.js +++ b/apps/updatenotification/l10n/tr.js @@ -18,6 +18,7 @@ OC.L10N.register( "Notify members of the following groups about available updates:" : "Yayınlanan güncellemeler şu grupların üyelerine bildirilsin:", "Only notification for app updates are available." : "Yalnız uygulama güncellemeleri kullanılabilir.", "The selected update channel makes dedicated notifications for the server obsolete." : "Seçilmiş güncelleme kanalı kullanımdan kalkmış sunucu bildirimleri için kullanılıyor.", - "The selected update channel does not support updates of the server." : "Seçilmiş güncelleme kanalı sunucunun güncellemelerini desteklemiyor." + "The selected update channel does not support updates of the server." : "Seçilmiş güncelleme kanalı sunucunun güncellemelerini desteklemiyor.", + "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "PHP %s sürümünü kullanıyorsanız. Nextcloud 11 ve üzerindeki sürümleri kullanabilmek için PHP sürümünüz en az 5.6 olmalıdır. PHP sürümünüzü yükselttikten sonra yeni sürümler ile ilgili güncelleme bildirimlerini görebilirsiniz." }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/updatenotification/l10n/tr.json b/apps/updatenotification/l10n/tr.json index 7eba40df793..d5536cf6da2 100644 --- a/apps/updatenotification/l10n/tr.json +++ b/apps/updatenotification/l10n/tr.json @@ -16,6 +16,7 @@ "Notify members of the following groups about available updates:" : "Yayınlanan güncellemeler şu grupların üyelerine bildirilsin:", "Only notification for app updates are available." : "Yalnız uygulama güncellemeleri kullanılabilir.", "The selected update channel makes dedicated notifications for the server obsolete." : "Seçilmiş güncelleme kanalı kullanımdan kalkmış sunucu bildirimleri için kullanılıyor.", - "The selected update channel does not support updates of the server." : "Seçilmiş güncelleme kanalı sunucunun güncellemelerini desteklemiyor." + "The selected update channel does not support updates of the server." : "Seçilmiş güncelleme kanalı sunucunun güncellemelerini desteklemiyor.", + "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "PHP %s sürümünü kullanıyorsanız. Nextcloud 11 ve üzerindeki sürümleri kullanabilmek için PHP sürümünüz en az 5.6 olmalıdır. PHP sürümünüzü yükselttikten sonra yeni sürümler ile ilgili güncelleme bildirimlerini görebilirsiniz." },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/appinfo/app.php b/apps/user_ldap/appinfo/app.php index 995b1226649..6f930ea39f0 100644 --- a/apps/user_ldap/appinfo/app.php +++ b/apps/user_ldap/appinfo/app.php @@ -58,7 +58,7 @@ if(count($configPrefixes) === 1) { if(count($configPrefixes) > 0) { // register user backend OC_User::useBackend($userBackend); - OC_Group::useBackend($groupBackend); + \OC::$server->getGroupManager()->addBackend($groupBackend); } \OCP\Util::connectHook( diff --git a/apps/user_ldap/lib/Access.php b/apps/user_ldap/lib/Access.php index cc0446ae523..ff95d96ebdb 100644 --- a/apps/user_ldap/lib/Access.php +++ b/apps/user_ldap/lib/Access.php @@ -570,7 +570,7 @@ class Access extends LDAPUtility implements IUserTools { $originalTTL = $this->connection->ldapCacheTTL; $this->connection->setConfiguration(array('ldapCacheTTL' => 0)); if(($isUser && !\OCP\User::userExists($intName)) - || (!$isUser && !\OC_Group::groupExists($intName))) { + || (!$isUser && !\OC::$server->getGroupManager()->groupExists($intName))) { if($mapper->map($fdn, $intName, $uuid)) { $this->connection->setConfiguration(array('ldapCacheTTL' => $originalTTL)); return $intName; @@ -737,7 +737,7 @@ class Access extends LDAPUtility implements IUserTools { // Check to be really sure it is unique // while loop is just a precaution. If a name is not generated within // 20 attempts, something else is very wrong. Avoids infinite loop. - if(!\OC_Group::groupExists($altName)) { + if(!\OC::$server->getGroupManager()->groupExists($altName)) { return $altName; } $altName = $name . '_' . ($lastNo + $attempts); diff --git a/apps/user_ldap/tests/User_LDAPTest.php b/apps/user_ldap/tests/User_LDAPTest.php index 606eff4e7a7..f1a23f9a6c8 100644 --- a/apps/user_ldap/tests/User_LDAPTest.php +++ b/apps/user_ldap/tests/User_LDAPTest.php @@ -64,7 +64,7 @@ class User_LDAPTest extends TestCase { parent::setUp(); \OC_User::clearBackends(); - \OC_Group::clearBackends(); + \OC::$server->getGroupManager()->clearBackends(); } /** diff --git a/apps/workflowengine/l10n/tr.js b/apps/workflowengine/l10n/tr.js new file mode 100644 index 00000000000..d07c5471fe7 --- /dev/null +++ b/apps/workflowengine/l10n/tr.js @@ -0,0 +1,71 @@ +OC.L10N.register( + "workflowengine", + { + "Successfully saved" : "Kaydedildi", + "Saving failed:" : "Kaydedilemedi:", + "File mime type" : "Dosya MIME türü", + "is" : "şu olan", + "is not" : "şu olmayan", + "matches" : "şuna uyan", + "does not match" : "şuna uymayan", + "Example: {placeholder}" : "Örnek: {placeholder}", + "File size (upload)" : "Dosya boyutu (yükleme)", + "less" : "şundan küçük", + "less or equals" : "şundan küçük ya da eşit", + "greater or equals" : "şundan büyük ya da eşit", + "greater" : "şundan büyük", + "File system tag" : "Dosya sistemi etiketi", + "is tagged with" : "şununla etiketlenmiş", + "is not tagged with" : "şununla etiketlenmemiş", + "Select tag…" : "Etiketi seçin...", + "Request remote address" : "Uzak adres isteği", + "matches IPv4" : "şu IPv4 adresine uyan", + "does not match IPv4" : "şu IPv4 adresine uymayan", + "matches IPv6" : "şu IPv6 adresine uyan", + "does not match IPv6" : "şu IPv6 adresine uymayan", + "Request time" : "İstek zamanı", + "between" : "şunların arasında olan", + "not between" : "şunların arasında olmayan", + "Start" : "Başlangıç", + "End" : "Bitiş", + "Select timezone…" : "Saat dilimini seçin...", + "Request URL" : "İstek Adresi", + "Predefined URLs" : "Hazır Adresler", + "Files WebDAV" : "Dosya WebDAV", + "Request user agent" : "Kullanıcı yazılımı istensin", + "Sync clients" : "İstemciler eşitlensin", + "Android client" : "Android istemcisi", + "iOS client" : "iOS istemcisi", + "Desktop client" : "Masaüstü istemcisi", + "User group membership" : "Kullanıcı grubu üyeliği", + "is member of" : "şunun üyesi olan", + "is not member of" : "şunun üyesi olmayan", + "The given operator is invalid" : "Belirtilen işlem geçersiz", + "The given regular expression is invalid" : "Belirtilen kurallı ifade geçersiz", + "The given file size is invalid" : "Belirtilen dosya boyutu geçersiz", + "The given tag id is invalid" : "Belirtilen etiket kodu geçersiz", + "The given IP range is invalid" : "Belirtilen IP adresi aralığı geçersiz", + "The given IP range is not valid for IPv4" : "Belirtilen IP adresi aralığı IPv4 için geçersiz", + "The given IP range is not valid for IPv6" : "Belirtilen IP adresi aralığı IPv6 için geçersiz", + "The given time span is invalid" : "Belirtilen zaman aralığı geçersiz", + "The given start time is invalid" : "Belirtilen başlangıç zamanı geçersiz", + "The given end time is invalid" : "Belirtilen bitiş zamanı geçersiz", + "The given group does not exist" : "Belirtilen grup bulunamadı", + "Check %s is invalid or does not exist" : "%s denetimi geçersiz ya da bulunamadı", + "Operation #%s does not exist" : "#%s işlemi bulunamadı", + "Operation %s does not exist" : "%s işlemi bulunamadı", + "Operation %s is invalid" : "%s işlemi geçersiz", + "Check %s does not exist" : "%s denetimi bulunamadı", + "Check %s is invalid" : "%s denetimi geçersiz", + "Check #%s does not exist" : "#%s denetimi bulunamadı", + "Workflow" : "İş akışı", + "Open documentation" : "Belgeleri aç", + "Add rule group" : "Kural grubu ekle", + "Short rule description" : "Kısa kural açıklaması", + "Add rule" : "Kural ekle", + "Reset" : "Sıfırla", + "Save" : "Kaydet", + "Saving…" : "Kaydediliyor...", + "Loading…" : "Yükleniyor..." +}, +"nplurals=2; plural=(n > 1);"); diff --git a/apps/workflowengine/l10n/tr.json b/apps/workflowengine/l10n/tr.json new file mode 100644 index 00000000000..8996dffcb95 --- /dev/null +++ b/apps/workflowengine/l10n/tr.json @@ -0,0 +1,69 @@ +{ "translations": { + "Successfully saved" : "Kaydedildi", + "Saving failed:" : "Kaydedilemedi:", + "File mime type" : "Dosya MIME türü", + "is" : "şu olan", + "is not" : "şu olmayan", + "matches" : "şuna uyan", + "does not match" : "şuna uymayan", + "Example: {placeholder}" : "Örnek: {placeholder}", + "File size (upload)" : "Dosya boyutu (yükleme)", + "less" : "şundan küçük", + "less or equals" : "şundan küçük ya da eşit", + "greater or equals" : "şundan büyük ya da eşit", + "greater" : "şundan büyük", + "File system tag" : "Dosya sistemi etiketi", + "is tagged with" : "şununla etiketlenmiş", + "is not tagged with" : "şununla etiketlenmemiş", + "Select tag…" : "Etiketi seçin...", + "Request remote address" : "Uzak adres isteği", + "matches IPv4" : "şu IPv4 adresine uyan", + "does not match IPv4" : "şu IPv4 adresine uymayan", + "matches IPv6" : "şu IPv6 adresine uyan", + "does not match IPv6" : "şu IPv6 adresine uymayan", + "Request time" : "İstek zamanı", + "between" : "şunların arasında olan", + "not between" : "şunların arasında olmayan", + "Start" : "Başlangıç", + "End" : "Bitiş", + "Select timezone…" : "Saat dilimini seçin...", + "Request URL" : "İstek Adresi", + "Predefined URLs" : "Hazır Adresler", + "Files WebDAV" : "Dosya WebDAV", + "Request user agent" : "Kullanıcı yazılımı istensin", + "Sync clients" : "İstemciler eşitlensin", + "Android client" : "Android istemcisi", + "iOS client" : "iOS istemcisi", + "Desktop client" : "Masaüstü istemcisi", + "User group membership" : "Kullanıcı grubu üyeliği", + "is member of" : "şunun üyesi olan", + "is not member of" : "şunun üyesi olmayan", + "The given operator is invalid" : "Belirtilen işlem geçersiz", + "The given regular expression is invalid" : "Belirtilen kurallı ifade geçersiz", + "The given file size is invalid" : "Belirtilen dosya boyutu geçersiz", + "The given tag id is invalid" : "Belirtilen etiket kodu geçersiz", + "The given IP range is invalid" : "Belirtilen IP adresi aralığı geçersiz", + "The given IP range is not valid for IPv4" : "Belirtilen IP adresi aralığı IPv4 için geçersiz", + "The given IP range is not valid for IPv6" : "Belirtilen IP adresi aralığı IPv6 için geçersiz", + "The given time span is invalid" : "Belirtilen zaman aralığı geçersiz", + "The given start time is invalid" : "Belirtilen başlangıç zamanı geçersiz", + "The given end time is invalid" : "Belirtilen bitiş zamanı geçersiz", + "The given group does not exist" : "Belirtilen grup bulunamadı", + "Check %s is invalid or does not exist" : "%s denetimi geçersiz ya da bulunamadı", + "Operation #%s does not exist" : "#%s işlemi bulunamadı", + "Operation %s does not exist" : "%s işlemi bulunamadı", + "Operation %s is invalid" : "%s işlemi geçersiz", + "Check %s does not exist" : "%s denetimi bulunamadı", + "Check %s is invalid" : "%s denetimi geçersiz", + "Check #%s does not exist" : "#%s denetimi bulunamadı", + "Workflow" : "İş akışı", + "Open documentation" : "Belgeleri aç", + "Add rule group" : "Kural grubu ekle", + "Short rule description" : "Kısa kural açıklaması", + "Add rule" : "Kural ekle", + "Reset" : "Sıfırla", + "Save" : "Kaydet", + "Saving…" : "Kaydediliyor...", + "Loading…" : "Yükleniyor..." +},"pluralForm" :"nplurals=2; plural=(n > 1);" +}
\ No newline at end of file |