diff options
451 files changed, 6407 insertions, 3515 deletions
diff --git a/.gitignore b/.gitignore index d8669fed074..6a8e6723376 100644 --- a/.gitignore +++ b/.gitignore @@ -40,7 +40,6 @@ /apps/files_external/tests/config.*.php - # ignore themes except the example and the README /themes/* !/themes/example diff --git a/3rdparty b/3rdparty -Subproject 18adb82bab030a0af41e66e421a90d123a21a8f +Subproject 8403b2b6768fb5c5abd2a36dc337d16571349c5 diff --git a/apps/comments/l10n/pt_BR.js b/apps/comments/l10n/pt_BR.js index 6941ceea5a2..b8210cdd248 100644 --- a/apps/comments/l10n/pt_BR.js +++ b/apps/comments/l10n/pt_BR.js @@ -4,7 +4,7 @@ OC.L10N.register( "Comments" : "Comentários", "Unknown user" : "Usuário desconhecido", "New comment …" : "Novo comentário", - "Delete comment" : "Apague o comentário", + "Delete comment" : "Apagar comentário", "Post" : "Postar", "Cancel" : "Cancelar", "Edit comment" : "Editar comentário", @@ -26,8 +26,8 @@ OC.L10N.register( "%1$s commented on %2$s" : "%1$s comentado em %2$s", "{author} commented on {file}" : "{author} comentado em {file}", "<strong>Comments</strong> for files" : "<strong>Comentários</strong> para arquivos", - "A (now) deleted user mentioned you in a comment on “%sâ€" : "Um usuário (agora) excluÃdo mencionou você em um comentário sobre “%sâ€", - "A (now) deleted user mentioned you in a comment on “{file}â€" : "Um usuário (agora) excluÃdo mencionou você em um comentário sobre “{file}â€", + "A (now) deleted user mentioned you in a comment on “%sâ€" : "Um usuário excluÃdo (agora) mencionou você em um comentário sobre “%sâ€", + "A (now) deleted user mentioned you in a comment on “{file}â€" : "Um usuário excluÃdo (agora) mencionou você em um comentário sobre “{file}â€", "%1$s mentioned you in a comment on “%2$sâ€" : "%1$s mencionou você em um comentário sobre “%2$sâ€", "{user} mentioned you in a comment on “{file}â€" : "{user} mencionou você em um comentário sobre “{file}â€" }, diff --git a/apps/comments/l10n/pt_BR.json b/apps/comments/l10n/pt_BR.json index c326ded0b8d..751a00a1b85 100644 --- a/apps/comments/l10n/pt_BR.json +++ b/apps/comments/l10n/pt_BR.json @@ -2,7 +2,7 @@ "Comments" : "Comentários", "Unknown user" : "Usuário desconhecido", "New comment …" : "Novo comentário", - "Delete comment" : "Apague o comentário", + "Delete comment" : "Apagar comentário", "Post" : "Postar", "Cancel" : "Cancelar", "Edit comment" : "Editar comentário", @@ -24,8 +24,8 @@ "%1$s commented on %2$s" : "%1$s comentado em %2$s", "{author} commented on {file}" : "{author} comentado em {file}", "<strong>Comments</strong> for files" : "<strong>Comentários</strong> para arquivos", - "A (now) deleted user mentioned you in a comment on “%sâ€" : "Um usuário (agora) excluÃdo mencionou você em um comentário sobre “%sâ€", - "A (now) deleted user mentioned you in a comment on “{file}â€" : "Um usuário (agora) excluÃdo mencionou você em um comentário sobre “{file}â€", + "A (now) deleted user mentioned you in a comment on “%sâ€" : "Um usuário excluÃdo (agora) mencionou você em um comentário sobre “%sâ€", + "A (now) deleted user mentioned you in a comment on “{file}â€" : "Um usuário excluÃdo (agora) mencionou você em um comentário sobre “{file}â€", "%1$s mentioned you in a comment on “%2$sâ€" : "%1$s mencionou você em um comentário sobre “%2$sâ€", "{user} mentioned you in a comment on “{file}â€" : "{user} mencionou você em um comentário sobre “{file}â€" },"pluralForm" :"nplurals=2; plural=(n > 1);" diff --git a/apps/dav/l10n/es_MX.js b/apps/dav/l10n/es_MX.js index 73868dfaa84..d8753d65d34 100644 --- a/apps/dav/l10n/es_MX.js +++ b/apps/dav/l10n/es_MX.js @@ -9,16 +9,16 @@ OC.L10N.register( "You deleted calendar {calendar}" : "Usted borró el calendario {calendar}", "{actor} updated calendar {calendar}" : "{actor} actualizó el calendario {calendar}", "You updated calendar {calendar}" : "Usted actualizó el calendario {calendar}", - "{actor} shared calendar {calendar} with you" : "{actor} compartió el calendario {calendar} con usted", - "You shared calendar {calendar} with {user}" : "Usted compartió el calendarió {calendar} con {user}", + "{actor} shared calendar {calendar} with you" : "{actor} ha compartido el calendario {calendar} con usted", + "You shared calendar {calendar} with {user}" : "Usted ha compartido el calendario {calendar} con {user}", "{actor} shared calendar {calendar} with {user}" : "{actor} compartió el calendario {calendar} con {user}", - "{actor} unshared calendar {calendar} from you" : "{actor} dejó de compartir el calendario {calendar} con usted", - "You unshared calendar {calendar} from {user}" : "Usted dejó de compartir el calendario {calendar} con {user}", + "{actor} unshared calendar {calendar} from you" : "{actor} ha dejado de compartir el calendario {calendar} con usted", + "You unshared calendar {calendar} from {user}" : "Usted ha dejado de compartir el calendario {calendar} con {user}", "{actor} unshared calendar {calendar} from {user}" : "{actor} dejó de compartir el calendario {calendar} con {user}", "{actor} unshared calendar {calendar} from themselves" : "{actor} dejó de compartir {el calendario calendar} con él mismo", - "You shared calendar {calendar} with group {group}" : "Usted compartió el calendario {calendar} con el grupo {group}", - "{actor} shared calendar {calendar} with group {group}" : "{actor} compatió el calendario {calendar} con el grupo {group}", - "You unshared calendar {calendar} from group {group}" : "Usted dejó de compartir el calendario {calendar} con el grupo{group}", + "You shared calendar {calendar} with group {group}" : "Usted ha compartido el calendario {calendar} con el grupo {group}", + "{actor} shared calendar {calendar} with group {group}" : "{actor} compartió el calendario {calendar} con el grupo {group}", + "You unshared calendar {calendar} from group {group}" : "Usted ha dejado de compartir el calendario {calendar} con el grupo {group}", "{actor} unshared calendar {calendar} from group {group}" : "{actor} dejó de compartir el calendrio {calendar} con el grupo {group}", "{actor} created event {event} in calendar {calendar}" : "{actor} creó el evento {event} en el calendario {calendar}", "You created event {event} in calendar {calendar}" : "Usted creó el evento {event} en el calendario {calendar}", diff --git a/apps/dav/l10n/es_MX.json b/apps/dav/l10n/es_MX.json index 650b58eab3c..1eb8d35975c 100644 --- a/apps/dav/l10n/es_MX.json +++ b/apps/dav/l10n/es_MX.json @@ -7,16 +7,16 @@ "You deleted calendar {calendar}" : "Usted borró el calendario {calendar}", "{actor} updated calendar {calendar}" : "{actor} actualizó el calendario {calendar}", "You updated calendar {calendar}" : "Usted actualizó el calendario {calendar}", - "{actor} shared calendar {calendar} with you" : "{actor} compartió el calendario {calendar} con usted", - "You shared calendar {calendar} with {user}" : "Usted compartió el calendarió {calendar} con {user}", + "{actor} shared calendar {calendar} with you" : "{actor} ha compartido el calendario {calendar} con usted", + "You shared calendar {calendar} with {user}" : "Usted ha compartido el calendario {calendar} con {user}", "{actor} shared calendar {calendar} with {user}" : "{actor} compartió el calendario {calendar} con {user}", - "{actor} unshared calendar {calendar} from you" : "{actor} dejó de compartir el calendario {calendar} con usted", - "You unshared calendar {calendar} from {user}" : "Usted dejó de compartir el calendario {calendar} con {user}", + "{actor} unshared calendar {calendar} from you" : "{actor} ha dejado de compartir el calendario {calendar} con usted", + "You unshared calendar {calendar} from {user}" : "Usted ha dejado de compartir el calendario {calendar} con {user}", "{actor} unshared calendar {calendar} from {user}" : "{actor} dejó de compartir el calendario {calendar} con {user}", "{actor} unshared calendar {calendar} from themselves" : "{actor} dejó de compartir {el calendario calendar} con él mismo", - "You shared calendar {calendar} with group {group}" : "Usted compartió el calendario {calendar} con el grupo {group}", - "{actor} shared calendar {calendar} with group {group}" : "{actor} compatió el calendario {calendar} con el grupo {group}", - "You unshared calendar {calendar} from group {group}" : "Usted dejó de compartir el calendario {calendar} con el grupo{group}", + "You shared calendar {calendar} with group {group}" : "Usted ha compartido el calendario {calendar} con el grupo {group}", + "{actor} shared calendar {calendar} with group {group}" : "{actor} compartió el calendario {calendar} con el grupo {group}", + "You unshared calendar {calendar} from group {group}" : "Usted ha dejado de compartir el calendario {calendar} con el grupo {group}", "{actor} unshared calendar {calendar} from group {group}" : "{actor} dejó de compartir el calendrio {calendar} con el grupo {group}", "{actor} created event {event} in calendar {calendar}" : "{actor} creó el evento {event} en el calendario {calendar}", "You created event {event} in calendar {calendar}" : "Usted creó el evento {event} en el calendario {calendar}", diff --git a/apps/dav/l10n/pt_BR.js b/apps/dav/l10n/pt_BR.js index 484d2038e32..fe3843d40f8 100644 --- a/apps/dav/l10n/pt_BR.js +++ b/apps/dav/l10n/pt_BR.js @@ -5,11 +5,11 @@ OC.L10N.register( "Todos" : "Tarefas", "{actor} created calendar {calendar}" : "{actor} calendário criado {calendar}", "You created calendar {calendar}" : "Seu calendário criado {calendar}", - "{actor} deleted calendar {calendar}" : "{actor} calendário eliminado {calendar}", - "You deleted calendar {calendar}" : "Você eliminou o calendário {calendar}", + "{actor} deleted calendar {calendar}" : "{actor} calendário excluÃdo {calendar}", + "You deleted calendar {calendar}" : "Você excluiu o calendário {calendar}", "{actor} updated calendar {calendar}" : "{actor} atualizou o calendário {calendar}", "You updated calendar {calendar}" : "Você atualizou o calendário {calendar}", - "{actor} shared calendar {calendar} with you" : "{actor} conpartilhou o calendário {calendar} com você", + "{actor} shared calendar {calendar} with you" : "{actor} compartilhou o calendário {calendar} com você", "You shared calendar {calendar} with {user}" : "Você compartilhou o calendário {calendar} com {user}", "{actor} shared calendar {calendar} with {user}" : "{actor} compartilhou o calendário {calendar} com {user}", "{actor} unshared calendar {calendar} from you" : "{actor} descompartilhou o calendário {calendar} com você", @@ -22,21 +22,21 @@ OC.L10N.register( "{actor} unshared calendar {calendar} from group {group}" : "{actor} descompartilhou o calendário {calendar} do grupo {group}", "{actor} created event {event} in calendar {calendar}" : "{actor} criou o evento {event} no calendário {calendar}", "You created event {event} in calendar {calendar}" : "Você criou o evento {event} no calendário {calendar}", - "{actor} deleted event {event} from calendar {calendar}" : "{actor} eliminou o evento {event} do calendário {calendar}", - "You deleted event {event} from calendar {calendar}" : "Você eliminou o evento {event} do calendário {calendar}", + "{actor} deleted event {event} from calendar {calendar}" : "{actor} excluiu o evento {event} do calendário {calendar}", + "You deleted event {event} from calendar {calendar}" : "Você excluiu o evento {event} do calendário {calendar}", "{actor} updated event {event} in calendar {calendar}" : "{actor} atualizou o evento {event} no calendário {calendar}", "You updated event {event} in calendar {calendar}" : "Você atualizou o evento {event} no calendário {calendar}", "{actor} created todo {todo} in list {calendar}" : "{actor} criou a tarefa {todo} na lista {calendar}", "You created todo {todo} in list {calendar}" : "Você criou a tarefa {todo} na lista {calendar}", - "{actor} deleted todo {todo} from list {calendar}" : "{actor} eliminou a tarefa {todo} da lista {calendar}", - "You deleted todo {todo} from list {calendar}" : "Você eliminou a tarefa {todo} da lista {calendar}", + "{actor} deleted todo {todo} from list {calendar}" : "{actor} excluiu a tarefa {todo} da lista {calendar}", + "You deleted todo {todo} from list {calendar}" : "Você excluiu a tarefa {todo} da lista {calendar}", "{actor} updated todo {todo} in list {calendar}" : "{actor} atualizou a tarefa {todo} na lista {calendar}", "You updated todo {todo} in list {calendar}" : "Você atualizou a tarefa {todo} na lista {calendar}", "{actor} solved todo {todo} in list {calendar}" : "{actor} tarefa resolvida {todo} na lista {calendar}", "You solved todo {todo} in list {calendar}" : "Você resolveu a tarefa {todo} na lista {calendar}", "{actor} reopened todo {todo} in list {calendar}" : "{actor} reabriu tarefa {todo} na lista {calendar}", - "You reopened todo {todo} in list {calendar}" : "Você reabriu a terafa {todo} na lista {calendar}", - "A <strong>calendar</strong> was modified" : "Um <strong> calendário</strong> foi modificado", + "You reopened todo {todo} in list {calendar}" : "Você reabriu a terefa {todo} na lista {calendar}", + "A <strong>calendar</strong> was modified" : "Um <strong>calendário</strong> foi modificado", "A calendar <strong>event</strong> was modified" : "Um <strong>evento</strong> do calendário foi modificado", "A calendar <strong>todo</strong> was modified" : "Uma <strong>tarefa</strong> do calendário foi modificada", "Contact birthdays" : "Aniversário dos contatos", diff --git a/apps/dav/l10n/pt_BR.json b/apps/dav/l10n/pt_BR.json index 848f05f225d..b49e8a6df1e 100644 --- a/apps/dav/l10n/pt_BR.json +++ b/apps/dav/l10n/pt_BR.json @@ -3,11 +3,11 @@ "Todos" : "Tarefas", "{actor} created calendar {calendar}" : "{actor} calendário criado {calendar}", "You created calendar {calendar}" : "Seu calendário criado {calendar}", - "{actor} deleted calendar {calendar}" : "{actor} calendário eliminado {calendar}", - "You deleted calendar {calendar}" : "Você eliminou o calendário {calendar}", + "{actor} deleted calendar {calendar}" : "{actor} calendário excluÃdo {calendar}", + "You deleted calendar {calendar}" : "Você excluiu o calendário {calendar}", "{actor} updated calendar {calendar}" : "{actor} atualizou o calendário {calendar}", "You updated calendar {calendar}" : "Você atualizou o calendário {calendar}", - "{actor} shared calendar {calendar} with you" : "{actor} conpartilhou o calendário {calendar} com você", + "{actor} shared calendar {calendar} with you" : "{actor} compartilhou o calendário {calendar} com você", "You shared calendar {calendar} with {user}" : "Você compartilhou o calendário {calendar} com {user}", "{actor} shared calendar {calendar} with {user}" : "{actor} compartilhou o calendário {calendar} com {user}", "{actor} unshared calendar {calendar} from you" : "{actor} descompartilhou o calendário {calendar} com você", @@ -20,21 +20,21 @@ "{actor} unshared calendar {calendar} from group {group}" : "{actor} descompartilhou o calendário {calendar} do grupo {group}", "{actor} created event {event} in calendar {calendar}" : "{actor} criou o evento {event} no calendário {calendar}", "You created event {event} in calendar {calendar}" : "Você criou o evento {event} no calendário {calendar}", - "{actor} deleted event {event} from calendar {calendar}" : "{actor} eliminou o evento {event} do calendário {calendar}", - "You deleted event {event} from calendar {calendar}" : "Você eliminou o evento {event} do calendário {calendar}", + "{actor} deleted event {event} from calendar {calendar}" : "{actor} excluiu o evento {event} do calendário {calendar}", + "You deleted event {event} from calendar {calendar}" : "Você excluiu o evento {event} do calendário {calendar}", "{actor} updated event {event} in calendar {calendar}" : "{actor} atualizou o evento {event} no calendário {calendar}", "You updated event {event} in calendar {calendar}" : "Você atualizou o evento {event} no calendário {calendar}", "{actor} created todo {todo} in list {calendar}" : "{actor} criou a tarefa {todo} na lista {calendar}", "You created todo {todo} in list {calendar}" : "Você criou a tarefa {todo} na lista {calendar}", - "{actor} deleted todo {todo} from list {calendar}" : "{actor} eliminou a tarefa {todo} da lista {calendar}", - "You deleted todo {todo} from list {calendar}" : "Você eliminou a tarefa {todo} da lista {calendar}", + "{actor} deleted todo {todo} from list {calendar}" : "{actor} excluiu a tarefa {todo} da lista {calendar}", + "You deleted todo {todo} from list {calendar}" : "Você excluiu a tarefa {todo} da lista {calendar}", "{actor} updated todo {todo} in list {calendar}" : "{actor} atualizou a tarefa {todo} na lista {calendar}", "You updated todo {todo} in list {calendar}" : "Você atualizou a tarefa {todo} na lista {calendar}", "{actor} solved todo {todo} in list {calendar}" : "{actor} tarefa resolvida {todo} na lista {calendar}", "You solved todo {todo} in list {calendar}" : "Você resolveu a tarefa {todo} na lista {calendar}", "{actor} reopened todo {todo} in list {calendar}" : "{actor} reabriu tarefa {todo} na lista {calendar}", - "You reopened todo {todo} in list {calendar}" : "Você reabriu a terafa {todo} na lista {calendar}", - "A <strong>calendar</strong> was modified" : "Um <strong> calendário</strong> foi modificado", + "You reopened todo {todo} in list {calendar}" : "Você reabriu a terefa {todo} na lista {calendar}", + "A <strong>calendar</strong> was modified" : "Um <strong>calendário</strong> foi modificado", "A calendar <strong>event</strong> was modified" : "Um <strong>evento</strong> do calendário foi modificado", "A calendar <strong>todo</strong> was modified" : "Uma <strong>tarefa</strong> do calendário foi modificada", "Contact birthdays" : "Aniversário dos contatos", diff --git a/apps/dav/lib/CalDAV/CalDavBackend.php b/apps/dav/lib/CalDAV/CalDavBackend.php index 7976c1490ff..631593974e7 100644 --- a/apps/dav/lib/CalDAV/CalDavBackend.php +++ b/apps/dav/lib/CalDAV/CalDavBackend.php @@ -621,7 +621,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription } $transp = '{' . Plugin::NS_CALDAV . '}schedule-calendar-transp'; if (isset($properties[$transp])) { - $values['transparent'] = $properties[$transp]->getValue()==='transparent'; + $values['transparent'] = (int) ($properties[$transp]->getValue() === 'transparent'); } foreach($this->propertyMap as $xmlName=>$dbName) { @@ -674,7 +674,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription switch ($propertyName) { case '{' . Plugin::NS_CALDAV . '}schedule-calendar-transp' : $fieldName = 'transparent'; - $newValues[$fieldName] = $propertyValue->getValue() === 'transparent'; + $newValues[$fieldName] = (int) ($propertyValue->getValue() === 'transparent'); break; default : $fieldName = $this->propertyMap[$propertyName]; diff --git a/apps/dav/lib/CalDAV/Calendar.php b/apps/dav/lib/CalDAV/Calendar.php index ef8e21be83a..d5e41c3c8c5 100644 --- a/apps/dav/lib/CalDAV/Calendar.php +++ b/apps/dav/lib/CalDAV/Calendar.php @@ -175,12 +175,11 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable { } function propPatch(PropPatch $propPatch) { - $mutations = $propPatch->getMutations(); - // If this is a shared calendar, the user can only change the enabled property, to hide it. - if ($this->isShared() && (sizeof($mutations) !== 1 || !isset($mutations['{http://owncloud.org/ns}calendar-enabled']))) { - throw new Forbidden(); + // parent::propPatch will only update calendars table + // if calendar is shared, changes have to be made to the properties table + if (!$this->isShared()) { + parent::propPatch($propPatch); } - parent::propPatch($propPatch); } function getChild($name) { diff --git a/apps/dav/lib/CalDAV/PublicCalendarRoot.php b/apps/dav/lib/CalDAV/PublicCalendarRoot.php index 6d74b97f96e..94fb7e5e4d5 100644 --- a/apps/dav/lib/CalDAV/PublicCalendarRoot.php +++ b/apps/dav/lib/CalDAV/PublicCalendarRoot.php @@ -21,7 +21,6 @@ namespace OCA\DAV\CalDAV; use Sabre\DAV\Collection; -use Sabre\DAV\Exception\NotFound; class PublicCalendarRoot extends Collection { @@ -48,6 +47,7 @@ class PublicCalendarRoot extends Collection { */ function getChild($name) { $calendar = $this->caldavBackend->getPublicCalendar($name); + $calendar['{http://owncloud.org/ns}owner-principal'] = ''; return new Calendar($this->caldavBackend, $calendar, $this->l10n); } @@ -55,13 +55,6 @@ class PublicCalendarRoot extends Collection { * @inheritdoc */ function getChildren() { - $calendars = $this->caldavBackend->getPublicCalendars(); - $children = []; - foreach ($calendars as $calendar) { - // TODO: maybe implement a new class PublicCalendar ??? - $children[] = new Calendar($this->caldavBackend, $calendar, $this->l10n); - } - - return $children; + return []; } } diff --git a/apps/dav/lib/Files/CustomPropertiesBackend.php b/apps/dav/lib/DAV/CustomPropertiesBackend.php index 43c02e7d6eb..ee0d0407015 100644 --- a/apps/dav/lib/Files/CustomPropertiesBackend.php +++ b/apps/dav/lib/DAV/CustomPropertiesBackend.php @@ -1,9 +1,11 @@ <?php /** * @copyright Copyright (c) 2016, ownCloud, Inc. + * @copyright Copyright (c) 2017, Georg Ehrke <oc.list@georgehrke.com> * * @author Robin Appelman <robin@icewind.nl> * @author Thomas Müller <thomas.mueller@tmit.eu> + * @author Georg Ehrke <oc.list@georgehrke.com> * * @license AGPL-3.0 * @@ -21,7 +23,7 @@ * */ -namespace OCA\DAV\Files; +namespace OCA\DAV\DAV; use OCP\IDBConnection; use OCP\IUser; @@ -102,6 +104,26 @@ class CustomPropertiesBackend implements BackendInterface { $this->ignoredProperties ); + // substr of calendars/ => path is inside the CalDAV component + // two '/' => this a calendar (no calendar-home nor calendar object) + if (substr($path, 0, 10) === 'calendars/' && substr_count($path, '/') === 2) { + $allRequestedProps = $propFind->getRequestedProperties(); + $customPropertiesForShares = [ + '{DAV:}displayname', + '{urn:ietf:params:xml:ns:caldav}calendar-description', + '{urn:ietf:params:xml:ns:caldav}calendar-timezone', + '{http://apple.com/ns/ical/}calendar-order', + '{http://apple.com/ns/ical/}calendar-color', + '{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp', + ]; + + foreach ($customPropertiesForShares as $customPropertyForShares) { + if (in_array($customPropertyForShares, $allRequestedProps)) { + $requestedProps[] = $customPropertyForShares; + } + } + } + if (empty($requestedProps)) { return; } diff --git a/apps/dav/lib/Server.php b/apps/dav/lib/Server.php index 031bc1d3d81..a5c1379eb7e 100644 --- a/apps/dav/lib/Server.php +++ b/apps/dav/lib/Server.php @@ -42,9 +42,9 @@ use OCA\DAV\Connector\Sabre\FilesPlugin; use OCA\DAV\Connector\Sabre\FilesReportPlugin; use OCA\DAV\Connector\Sabre\SharesPlugin; use OCA\DAV\DAV\PublicAuth; +use OCA\DAV\DAV\CustomPropertiesBackend; use OCA\DAV\Connector\Sabre\QuotaPlugin; use OCA\DAV\Files\BrowserErrorPagePlugin; -use OCA\DAV\Files\CustomPropertiesBackend; use OCA\DAV\SystemTag\SystemTagPlugin; use OCP\IRequest; use OCP\SabrePluginEvent; diff --git a/apps/dav/tests/unit/CalDAV/CalendarTest.php b/apps/dav/tests/unit/CalDAV/CalendarTest.php index 70a072f04de..112b2c598df 100644 --- a/apps/dav/tests/unit/CalDAV/CalendarTest.php +++ b/apps/dav/tests/unit/CalDAV/CalendarTest.php @@ -109,7 +109,7 @@ class CalendarTest extends TestCase { ['user1', 'user2', [], true], ['user1', 'user2', [ '{http://owncloud.org/ns}calendar-enabled' => true, - ], false], + ], true], ['user1', 'user2', [ '{DAV:}displayname' => true, ], true], @@ -134,7 +134,7 @@ class CalendarTest extends TestCase { /** * @dataProvider dataPropPatch */ - public function testPropPatch($ownerPrincipal, $principalUri, $mutations, $throws) { + public function testPropPatch($ownerPrincipal, $principalUri, $mutations, $shared) { /** @var \PHPUnit_Framework_MockObject_MockObject | CalDavBackend $backend */ $backend = $this->getMockBuilder(CalDavBackend::class)->disableOriginalConstructor()->getMock(); $calendarInfo = [ @@ -144,14 +144,15 @@ class CalendarTest extends TestCase { 'uri' => 'default' ]; $c = new Calendar($backend, $calendarInfo, $this->l10n); + $propPatch = new PropPatch($mutations); - if ($throws) { - $this->setExpectedException('\Sabre\DAV\Exception\Forbidden'); - } - $c->propPatch(new PropPatch($mutations)); - if (!$throws) { - $this->assertTrue(true); + if (!$shared) { + $backend->expects($this->once()) + ->method('updateCalendar') + ->with(666, $propPatch); } + $c->propPatch($propPatch); + $this->assertTrue(true); } /** diff --git a/apps/dav/tests/unit/CalDAV/PublicCalendarRootTest.php b/apps/dav/tests/unit/CalDAV/PublicCalendarRootTest.php index 59fa4747a93..ccef0cf678b 100644 --- a/apps/dav/tests/unit/CalDAV/PublicCalendarRootTest.php +++ b/apps/dav/tests/unit/CalDAV/PublicCalendarRootTest.php @@ -21,7 +21,7 @@ use Test\TestCase; */ class PublicCalendarRootTest extends TestCase { - const UNIT_TEST_USER = 'principals/users/caldav-unit-test'; + const UNIT_TEST_USER = ''; /** @var CalDavBackend */ private $backend; /** @var PublicCalendarRoot */ @@ -92,13 +92,8 @@ class PublicCalendarRootTest extends TestCase { public function testGetChildren() { $this->createPublicCalendar(); - - $publicCalendars = $this->backend->getPublicCalendars(); - $calendarResults = $this->publicCalendarRoot->getChildren(); - - $this->assertEquals(1, count($calendarResults)); - $this->assertEquals(new Calendar($this->backend, $publicCalendars[0], $this->l10n), $calendarResults[0]); + $this->assertSame([], $calendarResults); } /** diff --git a/apps/dav/tests/unit/DAV/CustomPropertiesBackendTest.php b/apps/dav/tests/unit/DAV/CustomPropertiesBackendTest.php new file mode 100644 index 00000000000..780324abaa6 --- /dev/null +++ b/apps/dav/tests/unit/DAV/CustomPropertiesBackendTest.php @@ -0,0 +1,170 @@ +<?php +/** + * @copyright Copyright (c) 2017, Georg Ehrke <oc.list@georgehrke.com> + * + * @author Georg Ehrke <oc.list@georgehrke.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +namespace OCA\DAV\Tests\DAV; + +use OCA\DAV\DAV\CustomPropertiesBackend; +use OCP\IDBConnection; +use OCP\IUser; +use Sabre\DAV\PropFind; +use Sabre\DAV\PropPatch; +use Sabre\DAV\Tree; +use Test\TestCase; + +class CustomPropertiesBackendTest extends TestCase { + + /** @var Tree | \PHPUnit_Framework_MockObject_MockObject */ + private $tree; + + /** @var IDBConnection | \PHPUnit_Framework_MockObject_MockObject */ + private $dbConnection; + + /** @var IUser | \PHPUnit_Framework_MockObject_MockObject */ + private $user; + + /** @var CustomPropertiesBackend | \PHPUnit_Framework_MockObject_MockObject */ + private $backend; + + public function setUp() { + parent::setUp(); + + $this->tree = $this->createMock(Tree::class); + $this->dbConnection = $this->createMock(IDBConnection::class); + $this->user = $this->createMock(IUser::class); + $this->user->expects($this->once()) + ->method('getUID') + ->with() + ->will($this->returnValue('dummy_user_42')); + + $this->backend = new CustomPropertiesBackend($this->tree, + $this->dbConnection, $this->user); + } + + public function testPropFindNoDbCalls() { + $propFind = $this->createMock(PropFind::class); + $propFind->expects($this->at(0)) + ->method('get404Properties') + ->with() + ->will($this->returnValue([ + '{http://owncloud.org/ns}permissions', + '{http://owncloud.org/ns}downloadURL', + '{http://owncloud.org/ns}dDC', + '{http://owncloud.org/ns}size', + ])); + + $this->dbConnection->expects($this->never()) + ->method($this->anything()); + + $this->backend->propFind('foo_bar_path_1337_0', $propFind); + } + + public function testPropFindCalendarCall() { + $propFind = $this->createMock(PropFind::class); + $propFind->expects($this->at(0)) + ->method('get404Properties') + ->with() + ->will($this->returnValue([ + '{DAV:}getcontentlength', + '{DAV:}getcontenttype', + '{DAV:}getetag', + '{abc}def' + ])); + + $propFind->expects($this->at(1)) + ->method('getRequestedProperties') + ->with() + ->will($this->returnValue([ + '{DAV:}getcontentlength', + '{DAV:}getcontenttype', + '{DAV:}getetag', + '{DAV:}displayname', + '{urn:ietf:params:xml:ns:caldav}calendar-description', + '{urn:ietf:params:xml:ns:caldav}calendar-timezone', + '{abc}def' + ])); + + $statement = $this->createMock('\Doctrine\DBAL\Driver\Statement'); + $this->dbConnection->expects($this->once()) + ->method('executeQuery') + ->with('SELECT * FROM `*PREFIX*properties` WHERE `userid` = ? AND `propertypath` = ? AND `propertyname` in (?)', + ['dummy_user_42', 'calendars/foo/bar_path_1337_0', [ + 3 => '{abc}def', + 4 => '{DAV:}displayname', + 5 => '{urn:ietf:params:xml:ns:caldav}calendar-description', + 6 => '{urn:ietf:params:xml:ns:caldav}calendar-timezone']], + [null, null, 102]) + ->will($this->returnValue($statement)); + + $this->backend->propFind('calendars/foo/bar_path_1337_0', $propFind); + } + + /** + * @dataProvider propPatchProvider + */ + public function testPropPatch($path, $propPatch) { + $propPatch->expects($this->once()) + ->method('handleRemaining'); + + $this->backend->propPatch($path, $propPatch); + } + + public function propPatchProvider() { + $propPatchMock = $this->createMock(PropPatch::class); + return [ + ['foo_bar_path_1337', $propPatchMock], + ]; + } + + public function testDelete() { + $statement = $this->createMock('\Doctrine\DBAL\Driver\Statement'); + $statement->expects($this->at(0)) + ->method('execute') + ->with(['dummy_user_42', 'foo_bar_path_1337']); + $statement->expects($this->at(1)) + ->method('closeCursor') + ->with(); + + $this->dbConnection->expects($this->at(0)) + ->method('prepare') + ->with('DELETE FROM `*PREFIX*properties` WHERE `userid` = ? AND `propertypath` = ?') + ->will($this->returnValue($statement)); + + $this->backend->delete('foo_bar_path_1337'); + } + + public function testMove() { + $statement = $this->createMock('\Doctrine\DBAL\Driver\Statement'); + $statement->expects($this->at(0)) + ->method('execute') + ->with(['bar_foo_path_7331', 'dummy_user_42', 'foo_bar_path_1337']); + $statement->expects($this->at(1)) + ->method('closeCursor') + ->with(); + + $this->dbConnection->expects($this->at(0)) + ->method('prepare') + ->with('UPDATE `*PREFIX*properties` SET `propertypath` = ? WHERE `userid` = ? AND `propertypath` = ?') + ->will($this->returnValue($statement)); + + $this->backend->move('foo_bar_path_1337', 'bar_foo_path_7331'); + } +} diff --git a/apps/encryption/l10n/es_MX.js b/apps/encryption/l10n/es_MX.js index ad94a24e114..3aec9628585 100644 --- a/apps/encryption/l10n/es_MX.js +++ b/apps/encryption/l10n/es_MX.js @@ -1,28 +1,64 @@ OC.L10N.register( "encryption", { - "Recovery key successfully enabled" : "Se ha habilitado la recuperación de archivos", - "Could not enable recovery key. Please check your recovery key password!" : "No se pudo habilitar la clave de recuperación. Por favor compruebe su contraseña.", - "Recovery key successfully disabled" : "Clave de recuperación deshabilitada", - "Could not disable recovery key. Please check your recovery key password!" : "No se pudo deshabilitar la clave de recuperación. Por favor compruebe su contraseña!", - "Password successfully changed." : "Su contraseña ha sido cambiada", - "Could not change the password. Maybe the old password was not correct." : "No se pudo cambiar la contraseña. Compruebe que la contraseña actual sea correcta.", - "Private key password successfully updated." : "Contraseña de clave privada actualizada con éxito.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "La clave privada no es válida para la aplicación de cifrado. Por favor, actualiza la contraseña de tu clave privada en tus ajustes personales para recuperar el acceso a tus archivos cifrados.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "La aplicación de crifrado está habilitada pero tus claves no han sido inicializadas, por favor, cierra la sesión y vuelva a iniciarla de nuevo.", - "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No fue posible descifrar este archivo, probablemente se trate de un archivo compartido. Solicite al propietario del mismo que vuelva a compartirlo con usted.", - "The share will expire on %s." : "El objeto dejará de ser compartido el %s.", + "Missing recovery key password" : "Contraseña de llave de recuperacion faltante", + "Please repeat the recovery key password" : "Favor de reingresar la contraseña de recuperación", + "Repeated recovery key password does not match the provided recovery key password" : "Las contraseñas de la llave de recuperación no coinciden", + "Recovery key successfully enabled" : "Llave de recuperación habilitada exitosamente", + "Could not enable recovery key. Please check your recovery key password!" : "No fue posible habilitar la llave de recuperación. ¡Favor de comprobar la contraseña de su llave de recuperación!", + "Recovery key successfully disabled" : "Llave de recuperación deshabilitada exitosamente", + "Could not disable recovery key. Please check your recovery key password!" : "No fue posible deshabilitar la llave de recuperación. ¡Favor de comprobar la contraseña de la llave de recuperación!", + "Missing parameters" : "Parámetros faltantes", + "Please provide the old recovery password" : "Favor de proporcionar su contraseña de recuperación anterior", + "Please provide a new recovery password" : "Favor de proporcionar una nueva contraseña de recuperación", + "Please repeat the new recovery password" : "Favor de reingresar la nueva contraseña de recuperación", + "Password successfully changed." : "La contraseña ha sido cambiada exitosamente", + "Could not change the password. Maybe the old password was not correct." : "No fue posible cambiar la contraseña. Favor de verificar que contraseña anterior sea correcta.", + "Recovery Key disabled" : "Llave de recuperación deshabilitada", + "Recovery Key enabled" : "Llave de recuperación habilitada", + "Could not enable the recovery key, please try again or contact your administrator" : "No fue posible habilitar la llave de recuperación, favor de intentarlo de nuevo o contacte a su administrador", + "Could not update the private key password." : "No fue posible actualizar la contraseña de la llave privada.", + "The old password was not correct, please try again." : "La contraseña anterior no es correcta, favor de intentar de nuevo. ", + "The current log-in password was not correct, please try again." : "La contraseña actual para iniciar sesión fue incorrecta, favor de volverlo a intentar. ", + "Private key password successfully updated." : "Contraseña de llave privada actualizada exitosamente.", + "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" : "Usted necesita migar sus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la nueva. Favor de ejecutar 'occ encryption:migrate' o contacte a su adminstrador", + "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "La llave de encripción privada es inválida para la aplicación de encripción. Favor de actualizar la contraseña de su llave privada en sus ajustes personales para recuperar el acceso a sus archivos encriptados. ", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "La aplicación de encripción está habilitada, pero sus llaves no han sido inicializadas. Favor de cerrar sesión e iniciar sesión de nuevo. ", + "Encryption app is enabled and ready" : "La aplicación de encripción se cuentra habilitada y lista", + "Bad Signature" : "Firma equivocada", + "Missing Signature" : "Firma faltante", + "one-time password for server-side-encryption" : "Contraseña de una-sola-vez para la encripción del lado del servidor", + "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es posible decriptar este archivo, posiblemente sea un archivo compartido. Favor de solicitar al dueño del archivo que lo vuelva a compartir con usted.", + "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es posible leer este archivo, posiblemente sea un archivo compatido. Favor de solicitar al dueño que vuelva a compartirlo con usted. ", + "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease 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.\n\n" : "Hola,\n\nel administrador ha habilitado la encripción de lado del servidor. Sus archivos fueron encriptados usando la contraseña '%s'\n\nFavor de iniciar sesión en la interface web, vaya a la sección \"módulo de encripción básica\" de sus ajustes personales y actualice su contraseña de encripción ingresando esta contraseña en el campo 'contraseña de inicio de sesión anterior' y su contraseña de inicio de sesión actual. \n", + "The share will expire on %s." : "El elemento compartido expirará el %s.", "Cheers!" : "¡Saludos!", - "Recovery key password" : "Contraseña de clave de recuperación", - "Change recovery key password:" : "Cambiar la contraseña de la clave de recuperació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>" : "Hola, <br><br>el administrador ha habilitado la encripción del lado del servidor. Sus archivos fueron encriptados usando la contraseña <strong>%s</strong>.<br><br> Favor de iniciar sesisón en la interface web, vaya a la sección \"módulo de encripción básica\" de sus ajustes personales y actualice su contraseña de encripción ingresando esta contraseña en el campo \"contraseña de inicio de sesión anterior\" y su contraseña de inicio de sesión actual. <br><br>", + "Default encryption module" : "Módulo de encripción predeterminado", + "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "La aplicación de encripción esta habilitada pero sus llaves no han sido inicializadas, favor de salir y volver a entrar a la sesion", + "Encrypt the home storage" : "Encriptar el almacenamiento de inicio", + "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Habilitar esta opción encripta todos los archivos almacenados en el almacenamiento principal, de otro modo, sólo los archivos en el almacenamiento externo serán encriptados", + "Enable recovery key" : "Habilitar llave de recuperación", + "Disable recovery key" : "Deshabilitar llave de recuperación", + "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "La llave de recuperación es una llave de encripción que se usa para encriptar archivos. Permite la recuperación de los archivos del usuario si este olvida su contraseña. ", + "Recovery key password" : "Contraseña de llave de recuperación", + "Repeat recovery key password" : "Repetir la contraseña de la llave de recuperación", + "Change recovery key password:" : "Cambiar la contraseña de la llave de recuperación:", + "Old recovery key password" : "Anterior contraseña de llave de recuperación", + "New recovery key password" : "Nueva contraseña de llave de recuperación", + "Repeat new recovery key password" : "Reingresar la nueva contraseña de llave de recuperación", "Change Password" : "Cambiar contraseña", - " If you don't remember your old password you can ask your administrator to recover your files." : "Si no recuerda su antigua contraseña puede pedir a su administrador que le recupere sus archivos.", - "Old log-in password" : "Contraseña de acceso antigua", - "Current log-in password" : "Contraseña de acceso actual", - "Update Private Key Password" : "Actualizar Contraseña de Clave Privada", + "Basic encryption module" : "Módulo de encripción básica", + "Your private key password no longer matches your log-in password." : "Su contraseña de llave privada ya no corresónde con su contraseña de inicio de sesión. ", + "Set your old private key password to your current log-in password:" : "Establezca su contraseña de llave privada a su contraseña actual de inicio de seisón:", + " If you don't remember your old password you can ask your administrator to recover your files." : "Si no recuerda su contraseña anterior le puede pedir a su administrador que recupere sus archivos.", + "Old log-in password" : "Contraseña anterior", + "Current log-in password" : "Contraseña actual", + "Update Private Key Password" : "Actualizar Contraseña de Llave Privada", "Enable password recovery:" : "Habilitar la recuperación de contraseña:", - "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar esta opción le permitirá volver a tener acceso a sus archivos cifrados en caso de pérdida de contraseña", - "Enabled" : "Habilitar", - "Disabled" : "Deshabilitado" + "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar esta opción le permitirá volver a tener acceso a sus archivos encriptados en caso de perder la contraseña", + "Enabled" : "Habilitado", + "Disabled" : "Deshabilitado", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "La aplicación de encripción está habilitada pero tus llaves no han sido establecidas, favor de cerrar la sesión y volver a iniciarla." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/encryption/l10n/es_MX.json b/apps/encryption/l10n/es_MX.json index 5a64c7c8777..d29ac057514 100644 --- a/apps/encryption/l10n/es_MX.json +++ b/apps/encryption/l10n/es_MX.json @@ -1,26 +1,62 @@ { "translations": { - "Recovery key successfully enabled" : "Se ha habilitado la recuperación de archivos", - "Could not enable recovery key. Please check your recovery key password!" : "No se pudo habilitar la clave de recuperación. Por favor compruebe su contraseña.", - "Recovery key successfully disabled" : "Clave de recuperación deshabilitada", - "Could not disable recovery key. Please check your recovery key password!" : "No se pudo deshabilitar la clave de recuperación. Por favor compruebe su contraseña!", - "Password successfully changed." : "Su contraseña ha sido cambiada", - "Could not change the password. Maybe the old password was not correct." : "No se pudo cambiar la contraseña. Compruebe que la contraseña actual sea correcta.", - "Private key password successfully updated." : "Contraseña de clave privada actualizada con éxito.", - "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "La clave privada no es válida para la aplicación de cifrado. Por favor, actualiza la contraseña de tu clave privada en tus ajustes personales para recuperar el acceso a tus archivos cifrados.", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "La aplicación de crifrado está habilitada pero tus claves no han sido inicializadas, por favor, cierra la sesión y vuelva a iniciarla de nuevo.", - "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No fue posible descifrar este archivo, probablemente se trate de un archivo compartido. Solicite al propietario del mismo que vuelva a compartirlo con usted.", - "The share will expire on %s." : "El objeto dejará de ser compartido el %s.", + "Missing recovery key password" : "Contraseña de llave de recuperacion faltante", + "Please repeat the recovery key password" : "Favor de reingresar la contraseña de recuperación", + "Repeated recovery key password does not match the provided recovery key password" : "Las contraseñas de la llave de recuperación no coinciden", + "Recovery key successfully enabled" : "Llave de recuperación habilitada exitosamente", + "Could not enable recovery key. Please check your recovery key password!" : "No fue posible habilitar la llave de recuperación. ¡Favor de comprobar la contraseña de su llave de recuperación!", + "Recovery key successfully disabled" : "Llave de recuperación deshabilitada exitosamente", + "Could not disable recovery key. Please check your recovery key password!" : "No fue posible deshabilitar la llave de recuperación. ¡Favor de comprobar la contraseña de la llave de recuperación!", + "Missing parameters" : "Parámetros faltantes", + "Please provide the old recovery password" : "Favor de proporcionar su contraseña de recuperación anterior", + "Please provide a new recovery password" : "Favor de proporcionar una nueva contraseña de recuperación", + "Please repeat the new recovery password" : "Favor de reingresar la nueva contraseña de recuperación", + "Password successfully changed." : "La contraseña ha sido cambiada exitosamente", + "Could not change the password. Maybe the old password was not correct." : "No fue posible cambiar la contraseña. Favor de verificar que contraseña anterior sea correcta.", + "Recovery Key disabled" : "Llave de recuperación deshabilitada", + "Recovery Key enabled" : "Llave de recuperación habilitada", + "Could not enable the recovery key, please try again or contact your administrator" : "No fue posible habilitar la llave de recuperación, favor de intentarlo de nuevo o contacte a su administrador", + "Could not update the private key password." : "No fue posible actualizar la contraseña de la llave privada.", + "The old password was not correct, please try again." : "La contraseña anterior no es correcta, favor de intentar de nuevo. ", + "The current log-in password was not correct, please try again." : "La contraseña actual para iniciar sesión fue incorrecta, favor de volverlo a intentar. ", + "Private key password successfully updated." : "Contraseña de llave privada actualizada exitosamente.", + "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" : "Usted necesita migar sus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la nueva. Favor de ejecutar 'occ encryption:migrate' o contacte a su adminstrador", + "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "La llave de encripción privada es inválida para la aplicación de encripción. Favor de actualizar la contraseña de su llave privada en sus ajustes personales para recuperar el acceso a sus archivos encriptados. ", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "La aplicación de encripción está habilitada, pero sus llaves no han sido inicializadas. Favor de cerrar sesión e iniciar sesión de nuevo. ", + "Encryption app is enabled and ready" : "La aplicación de encripción se cuentra habilitada y lista", + "Bad Signature" : "Firma equivocada", + "Missing Signature" : "Firma faltante", + "one-time password for server-side-encryption" : "Contraseña de una-sola-vez para la encripción del lado del servidor", + "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es posible decriptar este archivo, posiblemente sea un archivo compartido. Favor de solicitar al dueño del archivo que lo vuelva a compartir con usted.", + "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es posible leer este archivo, posiblemente sea un archivo compatido. Favor de solicitar al dueño que vuelva a compartirlo con usted. ", + "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease 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.\n\n" : "Hola,\n\nel administrador ha habilitado la encripción de lado del servidor. Sus archivos fueron encriptados usando la contraseña '%s'\n\nFavor de iniciar sesión en la interface web, vaya a la sección \"módulo de encripción básica\" de sus ajustes personales y actualice su contraseña de encripción ingresando esta contraseña en el campo 'contraseña de inicio de sesión anterior' y su contraseña de inicio de sesión actual. \n", + "The share will expire on %s." : "El elemento compartido expirará el %s.", "Cheers!" : "¡Saludos!", - "Recovery key password" : "Contraseña de clave de recuperación", - "Change recovery key password:" : "Cambiar la contraseña de la clave de recuperació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>" : "Hola, <br><br>el administrador ha habilitado la encripción del lado del servidor. Sus archivos fueron encriptados usando la contraseña <strong>%s</strong>.<br><br> Favor de iniciar sesisón en la interface web, vaya a la sección \"módulo de encripción básica\" de sus ajustes personales y actualice su contraseña de encripción ingresando esta contraseña en el campo \"contraseña de inicio de sesión anterior\" y su contraseña de inicio de sesión actual. <br><br>", + "Default encryption module" : "Módulo de encripción predeterminado", + "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "La aplicación de encripción esta habilitada pero sus llaves no han sido inicializadas, favor de salir y volver a entrar a la sesion", + "Encrypt the home storage" : "Encriptar el almacenamiento de inicio", + "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Habilitar esta opción encripta todos los archivos almacenados en el almacenamiento principal, de otro modo, sólo los archivos en el almacenamiento externo serán encriptados", + "Enable recovery key" : "Habilitar llave de recuperación", + "Disable recovery key" : "Deshabilitar llave de recuperación", + "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "La llave de recuperación es una llave de encripción que se usa para encriptar archivos. Permite la recuperación de los archivos del usuario si este olvida su contraseña. ", + "Recovery key password" : "Contraseña de llave de recuperación", + "Repeat recovery key password" : "Repetir la contraseña de la llave de recuperación", + "Change recovery key password:" : "Cambiar la contraseña de la llave de recuperación:", + "Old recovery key password" : "Anterior contraseña de llave de recuperación", + "New recovery key password" : "Nueva contraseña de llave de recuperación", + "Repeat new recovery key password" : "Reingresar la nueva contraseña de llave de recuperación", "Change Password" : "Cambiar contraseña", - " If you don't remember your old password you can ask your administrator to recover your files." : "Si no recuerda su antigua contraseña puede pedir a su administrador que le recupere sus archivos.", - "Old log-in password" : "Contraseña de acceso antigua", - "Current log-in password" : "Contraseña de acceso actual", - "Update Private Key Password" : "Actualizar Contraseña de Clave Privada", + "Basic encryption module" : "Módulo de encripción básica", + "Your private key password no longer matches your log-in password." : "Su contraseña de llave privada ya no corresónde con su contraseña de inicio de sesión. ", + "Set your old private key password to your current log-in password:" : "Establezca su contraseña de llave privada a su contraseña actual de inicio de seisón:", + " If you don't remember your old password you can ask your administrator to recover your files." : "Si no recuerda su contraseña anterior le puede pedir a su administrador que recupere sus archivos.", + "Old log-in password" : "Contraseña anterior", + "Current log-in password" : "Contraseña actual", + "Update Private Key Password" : "Actualizar Contraseña de Llave Privada", "Enable password recovery:" : "Habilitar la recuperación de contraseña:", - "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar esta opción le permitirá volver a tener acceso a sus archivos cifrados en caso de pérdida de contraseña", - "Enabled" : "Habilitar", - "Disabled" : "Deshabilitado" + "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Habilitar esta opción le permitirá volver a tener acceso a sus archivos encriptados en caso de perder la contraseña", + "Enabled" : "Habilitado", + "Disabled" : "Deshabilitado", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "La aplicación de encripción está habilitada pero tus llaves no han sido establecidas, favor de cerrar la sesión y volver a iniciarla." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/encryption/l10n/fi.js b/apps/encryption/l10n/fi.js index b926b08fc7a..10229e7706e 100644 --- a/apps/encryption/l10n/fi.js +++ b/apps/encryption/l10n/fi.js @@ -22,6 +22,9 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "Nykyinen kirjautumiseen käytettävä salasana oli väärin, yritä uudelleen.", "Private key password successfully updated." : "Yksityisen avaimen salasana päivitettiin onnistuneesti.", "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" : "Salausavaimet tulee siirtää vanhasta salaustavasta (ownCloud <= 8.0) uuteen salaustapaan. Suorita 'occ encryption:migrate' tai ota yhteys ylläpitoon", + "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Salaussovelluksen salausavain on virheellinen. Ole hyvä ja päivitä salausavain henkilökohtaisissa asetuksissasi jotta voit taas avata salauskirjoitetut tiedostosi.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Salaussovellus on käytössä, mutta salausavaimia ei ole alustettu. Ole hyvä ja kirjaudu sisään uudelleen.", + "Encryption app is enabled and ready" : "Salaussovellus on aktivoitu ja valmis", "Bad Signature" : "Virheellinen allekirjoitus", "Missing Signature" : "Puuttuva allekirjoitus", "one-time password for server-side-encryption" : "kertakäyttöinen salasana palvelinpään salausta varten", @@ -29,6 +32,8 @@ OC.L10N.register( "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tiedostoa ei voi lukea, se on luultavasti jaettu tiedosto. Pyydä tiedoston omistajaa jakamaan tiedosto uudelleen kanssasi.", "The share will expire on %s." : "Jakaminen päättyy %s.", "Cheers!" : "Kiitos!", + "Default encryption module" : "Oletus salausmoduuli", + "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Salaussovellus on aktivoitu, mutta avaimia ei ole alustettu, kirjaudu uudelleen sisään", "Encrypt the home storage" : "Salaa oma kotitila", "Enable recovery key" : "Ota palautusavain käyttöön", "Disable recovery key" : "Poista palautusavain käytöstä", @@ -40,6 +45,7 @@ OC.L10N.register( "New recovery key password" : "Uusi salausavaimen salasana", "Repeat new recovery key password" : "Toista uusi salausavaimen salasana", "Change Password" : "Vaihda salasana", + "Basic encryption module" : "Perus salausmoduuli", "Your private key password no longer matches your log-in password." : "Salaisen avaimesi salasana ei enää vastaa kirjautumissalasanaasi.", "Set your old private key password to your current log-in password:" : "Aseta yksityisen avaimen vanha salasana vastaamaan nykyistä kirjautumissalasanaasi:", " If you don't remember your old password you can ask your administrator to recover your files." : "Jos et muista vanhaa salasanaasi, voit pyytää ylläpitäjää palauttamaan tiedostosi.", diff --git a/apps/encryption/l10n/fi.json b/apps/encryption/l10n/fi.json index 96cc9ea8b6f..14b3b95fc24 100644 --- a/apps/encryption/l10n/fi.json +++ b/apps/encryption/l10n/fi.json @@ -20,6 +20,9 @@ "The current log-in password was not correct, please try again." : "Nykyinen kirjautumiseen käytettävä salasana oli väärin, yritä uudelleen.", "Private key password successfully updated." : "Yksityisen avaimen salasana päivitettiin onnistuneesti.", "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" : "Salausavaimet tulee siirtää vanhasta salaustavasta (ownCloud <= 8.0) uuteen salaustapaan. Suorita 'occ encryption:migrate' tai ota yhteys ylläpitoon", + "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Salaussovelluksen salausavain on virheellinen. Ole hyvä ja päivitä salausavain henkilökohtaisissa asetuksissasi jotta voit taas avata salauskirjoitetut tiedostosi.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Salaussovellus on käytössä, mutta salausavaimia ei ole alustettu. Ole hyvä ja kirjaudu sisään uudelleen.", + "Encryption app is enabled and ready" : "Salaussovellus on aktivoitu ja valmis", "Bad Signature" : "Virheellinen allekirjoitus", "Missing Signature" : "Puuttuva allekirjoitus", "one-time password for server-side-encryption" : "kertakäyttöinen salasana palvelinpään salausta varten", @@ -27,6 +30,8 @@ "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tiedostoa ei voi lukea, se on luultavasti jaettu tiedosto. Pyydä tiedoston omistajaa jakamaan tiedosto uudelleen kanssasi.", "The share will expire on %s." : "Jakaminen päättyy %s.", "Cheers!" : "Kiitos!", + "Default encryption module" : "Oletus salausmoduuli", + "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Salaussovellus on aktivoitu, mutta avaimia ei ole alustettu, kirjaudu uudelleen sisään", "Encrypt the home storage" : "Salaa oma kotitila", "Enable recovery key" : "Ota palautusavain käyttöön", "Disable recovery key" : "Poista palautusavain käytöstä", @@ -38,6 +43,7 @@ "New recovery key password" : "Uusi salausavaimen salasana", "Repeat new recovery key password" : "Toista uusi salausavaimen salasana", "Change Password" : "Vaihda salasana", + "Basic encryption module" : "Perus salausmoduuli", "Your private key password no longer matches your log-in password." : "Salaisen avaimesi salasana ei enää vastaa kirjautumissalasanaasi.", "Set your old private key password to your current log-in password:" : "Aseta yksityisen avaimen vanha salasana vastaamaan nykyistä kirjautumissalasanaasi:", " If you don't remember your old password you can ask your administrator to recover your files." : "Jos et muista vanhaa salasanaasi, voit pyytää ylläpitäjää palauttamaan tiedostosi.", diff --git a/apps/encryption/l10n/hu.js b/apps/encryption/l10n/hu.js index 9782ec439cc..0b93142bfd4 100644 --- a/apps/encryption/l10n/hu.js +++ b/apps/encryption/l10n/hu.js @@ -23,6 +23,7 @@ OC.L10N.register( "Private key password successfully updated." : "A személyes kulcsának jelszava frissÃtésre került.", "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" : "Migrálni kell a titkosÃtási kulcsaidat a rég titkosÃtásról (ownCloud <= 8.0) az újra. Kérlek futtasd az 'occ encryption:migrate' parancsot, vagy lépj kapcsolatba az adminisztrátorral", "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "A titkosÃtó alkalmazás privát kulcsa érvénytelen. A titkosÃtott fájljaidhoz való hozzáféréshez frissÃtsd a privát kulcsod jelszavát a személyes beállÃtásoknál.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "A fájlok titkosÃtása engedélyezve van, de az Ön titkos kulcsai nincsenek beállÃtva. Ezért kérlek, hogy jelentkezz ki, és lépj be újra!", "Encryption app is enabled and ready" : "A titkosÃtó alkalmazás engedélyezve és készen áll", "Bad Signature" : "Rossz aláÃrás", "Missing Signature" : "Hiányzó aláÃrás", diff --git a/apps/encryption/l10n/hu.json b/apps/encryption/l10n/hu.json index 54d55df0679..7f6814fa533 100644 --- a/apps/encryption/l10n/hu.json +++ b/apps/encryption/l10n/hu.json @@ -21,6 +21,7 @@ "Private key password successfully updated." : "A személyes kulcsának jelszava frissÃtésre került.", "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" : "Migrálni kell a titkosÃtási kulcsaidat a rég titkosÃtásról (ownCloud <= 8.0) az újra. Kérlek futtasd az 'occ encryption:migrate' parancsot, vagy lépj kapcsolatba az adminisztrátorral", "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "A titkosÃtó alkalmazás privát kulcsa érvénytelen. A titkosÃtott fájljaidhoz való hozzáféréshez frissÃtsd a privát kulcsod jelszavát a személyes beállÃtásoknál.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "A fájlok titkosÃtása engedélyezve van, de az Ön titkos kulcsai nincsenek beállÃtva. Ezért kérlek, hogy jelentkezz ki, és lépj be újra!", "Encryption app is enabled and ready" : "A titkosÃtó alkalmazás engedélyezve és készen áll", "Bad Signature" : "Rossz aláÃrás", "Missing Signature" : "Hiányzó aláÃrás", diff --git a/apps/encryption/l10n/pt_BR.js b/apps/encryption/l10n/pt_BR.js index 1e87489c2e5..f8bb3026a8c 100644 --- a/apps/encryption/l10n/pt_BR.js +++ b/apps/encryption/l10n/pt_BR.js @@ -1,35 +1,36 @@ OC.L10N.register( "encryption", { - "Missing recovery key password" : "Senha da chave de recuperação em falta", + "Missing recovery key password" : "Está faltando a senha da chave de recuperação", "Please repeat the recovery key password" : "Por favor, repita a senha da chave de recuperação", - "Repeated recovery key password does not match the provided recovery key password" : "A senha repetidas da chave de valorização não corresponde a senha da chave de recuperação prevista", + "Repeated recovery key password does not match the provided recovery key password" : "A senha repetida da chave de recuperação não corresponde a senha da chave de recuperação fornecida", "Recovery key successfully enabled" : "Recuperação de chave habilitada com sucesso", "Could not enable recovery key. Please check your recovery key password!" : "ImpossÃvel habilitar recuperação de chave. Por favor, verifique sua senha para recuperação de chave!", "Recovery key successfully disabled" : "Recuperação de chave desabilitada com sucesso", "Could not disable recovery key. Please check your recovery key password!" : "ImpossÃvel desabilitar recuperação de chave. Por favor, verifique sua senha para recuperação de chave!", - "Missing parameters" : "Parâmetros que faltam", + "Missing parameters" : "Parâmetros faltantes", "Please provide the old recovery password" : "Por favor, forneça a antiga senha de recuperação", "Please provide a new recovery password" : "Por favor, forneça a nova senha de recuperação", "Please repeat the new recovery password" : "Por favor, repita a nova senha de recuperação", "Password successfully changed." : "Senha alterada com sucesso.", - "Could not change the password. Maybe the old password was not correct." : "Não foi possÃvel alterar a senha. Talvez a senha antiga não estava correta.", + "Could not change the password. Maybe the old password was not correct." : "Não foi possÃvel alterar a senha. Talvez a senha antiga não estivesse correta.", "Recovery Key disabled" : "Recuperação de chave desativada", "Recovery Key enabled" : "Recuperação de chave ativada", "Could not enable the recovery key, please try again or contact your administrator" : "Não foi possÃvel ativar a recuperação de chave. Tente novamente ou entre em contato com seu administrador", "Could not update the private key password." : "Não foi possÃvel atualizar a senha da chave privada.", - "The old password was not correct, please try again." : "A senha antiga não estava correta, por favor, tente novamente.", - "The current log-in password was not correct, please try again." : "A senha atual do log-in não estava correta, por favor, tente novamente.", + "The old password was not correct, please try again." : "A senha antiga não estava correta, por favor tente novamente.", + "The current log-in password was not correct, please try again." : "A senha atual de acesso não estava correta, por favor tente novamente.", "Private key password successfully updated." : "Senha de chave privada atualizada com sucesso.", "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" : "Você precisa migrar suas chaves de criptografia a partir da antiga criptografia (ownCloud <= 8,0) para a nova. Por favor, execute 'occ encryption:migrate' ou contate o seu administrador", "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chave privada inválida para o aplicativo de criptografia. Atualize a senha da sua chave privada nas configurações pessoais para recuperar o acesso aos seus arquivos criptografados.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "O aplicativo de criptografia está habilitada mas suas chaves não foram inicializadas. Por favor, saia e entre novamente.", "Encryption app is enabled and ready" : "O aplicativo de criptografia está ativo e pronto", "Bad Signature" : "Assinatura ruim", - "Missing Signature" : "Faltando assinatura", - "one-time password for server-side-encryption" : "senha de uso único para criptografia-lado-servidor", - "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Este arquivo não pode ser decriptado, provavelmente este é um arquivo compartilhado. Por favor, peça ao dono do arquivo para compartilhá-lo com você.", - "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Não é possÃvel ler este arquivo, provavelmente este é um arquivo compartilhado. Por favor, pergunte o dono do arquivo para recompartilhar o arquivo com você.", - "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease 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.\n\n" : "Olá,\n\nO administrador habilitou criptografia-lado-servidor. Os seus arquivos foram criptografados usando a senha '%s'.\n\nPor favor faça o login para a interface da Web, vá para a seção 'módulo de criptografia básico' das suas definições pessoais e atualize sua senha de criptografia, inserindo esta senha no campo 'senha antiga de log-in' e sua atual senha-de-login.\n\n", + "Missing Signature" : "Assinatura faltante", + "one-time password for server-side-encryption" : "senha de uso único para criptografia do lado do servidor", + "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Este arquivo não pode ser decriptografado pois provavelmente é um arquivo compartilhado. Por favor, peça ao dono do arquivo para compartilhá-lo com você.", + "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Não é possÃvel ler este arquivo pois provavelmente é um arquivo compartilhado. Por favor, peça ao dono do arquivo para recompartilhar o arquivo com você.", + "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease 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.\n\n" : "Olá,\n\nO administrador habilitou a criptografia do lado do servidor. Os seus arquivos foram criptografados usando a senha '%s'.\n\nPor favor faça o login para a interface da Web, vá para a seção 'módulo de criptografia básico' das suas definições pessoais e atualize sua senha de criptografia, inserindo esta senha no campo 'senha antiga de log-in' e sua senha de login atual.\n\n", "The share will expire on %s." : "O compartilhamento irá expirar em %s.", "Cheers!" : "Saudações!", "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>" : "Olá,<br><br>o administrador habilitou criptografia-lado-servidor. Os seus arquivos foram criptografados usando a senha <strong>%s</strong>.<br><br>Por favor, faça o login para a interface da Web, vá para a seção 'módulo de criptografia básico' das suas definições pessoais e atualize sua senha de criptografia, inserindo esta senha no campo 'senha antiga de log-in' e sua atual senha-de-login.<br><br>", @@ -39,9 +40,9 @@ OC.L10N.register( "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Ativar essa opção de criptografia para todos os arquivos armazenados no armazenamento principal, caso contrário, apenas arquivos no armazenamento externo serão criptografados", "Enable recovery key" : "Habilitar recuperação de chave", "Disable recovery key" : "Dasabilitar chave de recuperação", - "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "A chave de recuperação é uma chave de encriptação extra que é utilizada para encriptar arquivos. Ela permite a recuperação de arquivos de um usuário esquecer sua senha.", + "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "A chave de recuperação é uma chave de criptografia extra que é utilizada para criptografar arquivos. Ela permite a recuperação de arquivos se um usuário esquecer a senha.", "Recovery key password" : "Senha da chave de recuperação", - "Repeat recovery key password" : "Repita senha da chave de recuperação", + "Repeat recovery key password" : "Repita a senha da chave de recuperação", "Change recovery key password:" : "Mudar a senha da chave de recuperação:", "Old recovery key password" : "Senha da chave de recuperação antiga", "New recovery key password" : "Nova senha da chave de recuperação", @@ -52,12 +53,12 @@ OC.L10N.register( "Set your old private key password to your current log-in password:" : "Defina a sua antiga senha da chave privada para sua senha de login atual:", " If you don't remember your old password you can ask your administrator to recover your files." : "Se você não se lembra de sua antiga senha você pode pedir ao administrador que recupere seus arquivos.", "Old log-in password" : "Senha antiga de login", - "Current log-in password" : "Senha de login atual", + "Current log-in password" : "Senha atual de login", "Update Private Key Password" : "Atualizar senha de chave privada", "Enable password recovery:" : "Habilitar recuperação de senha:", "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Ativar essa opção vai permitir que você obtenha novamente acesso aos seus arquivos criptografados em caso de perda de senha", "Enabled" : "Habilitado", "Disabled" : "Desabilitado", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "App de criptografia está ativado, mas as chaves não estão inicializadas, por favor log-out e faça login novamente" + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "O aplicativo criptografia está ativado, mas as chaves não estão inicializadas. Por favor saia e entre novamente" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/encryption/l10n/pt_BR.json b/apps/encryption/l10n/pt_BR.json index 730b65f9a73..c03061ae608 100644 --- a/apps/encryption/l10n/pt_BR.json +++ b/apps/encryption/l10n/pt_BR.json @@ -1,33 +1,34 @@ { "translations": { - "Missing recovery key password" : "Senha da chave de recuperação em falta", + "Missing recovery key password" : "Está faltando a senha da chave de recuperação", "Please repeat the recovery key password" : "Por favor, repita a senha da chave de recuperação", - "Repeated recovery key password does not match the provided recovery key password" : "A senha repetidas da chave de valorização não corresponde a senha da chave de recuperação prevista", + "Repeated recovery key password does not match the provided recovery key password" : "A senha repetida da chave de recuperação não corresponde a senha da chave de recuperação fornecida", "Recovery key successfully enabled" : "Recuperação de chave habilitada com sucesso", "Could not enable recovery key. Please check your recovery key password!" : "ImpossÃvel habilitar recuperação de chave. Por favor, verifique sua senha para recuperação de chave!", "Recovery key successfully disabled" : "Recuperação de chave desabilitada com sucesso", "Could not disable recovery key. Please check your recovery key password!" : "ImpossÃvel desabilitar recuperação de chave. Por favor, verifique sua senha para recuperação de chave!", - "Missing parameters" : "Parâmetros que faltam", + "Missing parameters" : "Parâmetros faltantes", "Please provide the old recovery password" : "Por favor, forneça a antiga senha de recuperação", "Please provide a new recovery password" : "Por favor, forneça a nova senha de recuperação", "Please repeat the new recovery password" : "Por favor, repita a nova senha de recuperação", "Password successfully changed." : "Senha alterada com sucesso.", - "Could not change the password. Maybe the old password was not correct." : "Não foi possÃvel alterar a senha. Talvez a senha antiga não estava correta.", + "Could not change the password. Maybe the old password was not correct." : "Não foi possÃvel alterar a senha. Talvez a senha antiga não estivesse correta.", "Recovery Key disabled" : "Recuperação de chave desativada", "Recovery Key enabled" : "Recuperação de chave ativada", "Could not enable the recovery key, please try again or contact your administrator" : "Não foi possÃvel ativar a recuperação de chave. Tente novamente ou entre em contato com seu administrador", "Could not update the private key password." : "Não foi possÃvel atualizar a senha da chave privada.", - "The old password was not correct, please try again." : "A senha antiga não estava correta, por favor, tente novamente.", - "The current log-in password was not correct, please try again." : "A senha atual do log-in não estava correta, por favor, tente novamente.", + "The old password was not correct, please try again." : "A senha antiga não estava correta, por favor tente novamente.", + "The current log-in password was not correct, please try again." : "A senha atual de acesso não estava correta, por favor tente novamente.", "Private key password successfully updated." : "Senha de chave privada atualizada com sucesso.", "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" : "Você precisa migrar suas chaves de criptografia a partir da antiga criptografia (ownCloud <= 8,0) para a nova. Por favor, execute 'occ encryption:migrate' ou contate o seu administrador", "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Chave privada inválida para o aplicativo de criptografia. Atualize a senha da sua chave privada nas configurações pessoais para recuperar o acesso aos seus arquivos criptografados.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "O aplicativo de criptografia está habilitada mas suas chaves não foram inicializadas. Por favor, saia e entre novamente.", "Encryption app is enabled and ready" : "O aplicativo de criptografia está ativo e pronto", "Bad Signature" : "Assinatura ruim", - "Missing Signature" : "Faltando assinatura", - "one-time password for server-side-encryption" : "senha de uso único para criptografia-lado-servidor", - "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Este arquivo não pode ser decriptado, provavelmente este é um arquivo compartilhado. Por favor, peça ao dono do arquivo para compartilhá-lo com você.", - "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Não é possÃvel ler este arquivo, provavelmente este é um arquivo compartilhado. Por favor, pergunte o dono do arquivo para recompartilhar o arquivo com você.", - "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease 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.\n\n" : "Olá,\n\nO administrador habilitou criptografia-lado-servidor. Os seus arquivos foram criptografados usando a senha '%s'.\n\nPor favor faça o login para a interface da Web, vá para a seção 'módulo de criptografia básico' das suas definições pessoais e atualize sua senha de criptografia, inserindo esta senha no campo 'senha antiga de log-in' e sua atual senha-de-login.\n\n", + "Missing Signature" : "Assinatura faltante", + "one-time password for server-side-encryption" : "senha de uso único para criptografia do lado do servidor", + "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Este arquivo não pode ser decriptografado pois provavelmente é um arquivo compartilhado. Por favor, peça ao dono do arquivo para compartilhá-lo com você.", + "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Não é possÃvel ler este arquivo pois provavelmente é um arquivo compartilhado. Por favor, peça ao dono do arquivo para recompartilhar o arquivo com você.", + "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease 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.\n\n" : "Olá,\n\nO administrador habilitou a criptografia do lado do servidor. Os seus arquivos foram criptografados usando a senha '%s'.\n\nPor favor faça o login para a interface da Web, vá para a seção 'módulo de criptografia básico' das suas definições pessoais e atualize sua senha de criptografia, inserindo esta senha no campo 'senha antiga de log-in' e sua senha de login atual.\n\n", "The share will expire on %s." : "O compartilhamento irá expirar em %s.", "Cheers!" : "Saudações!", "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>" : "Olá,<br><br>o administrador habilitou criptografia-lado-servidor. Os seus arquivos foram criptografados usando a senha <strong>%s</strong>.<br><br>Por favor, faça o login para a interface da Web, vá para a seção 'módulo de criptografia básico' das suas definições pessoais e atualize sua senha de criptografia, inserindo esta senha no campo 'senha antiga de log-in' e sua atual senha-de-login.<br><br>", @@ -37,9 +38,9 @@ "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Ativar essa opção de criptografia para todos os arquivos armazenados no armazenamento principal, caso contrário, apenas arquivos no armazenamento externo serão criptografados", "Enable recovery key" : "Habilitar recuperação de chave", "Disable recovery key" : "Dasabilitar chave de recuperação", - "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "A chave de recuperação é uma chave de encriptação extra que é utilizada para encriptar arquivos. Ela permite a recuperação de arquivos de um usuário esquecer sua senha.", + "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "A chave de recuperação é uma chave de criptografia extra que é utilizada para criptografar arquivos. Ela permite a recuperação de arquivos se um usuário esquecer a senha.", "Recovery key password" : "Senha da chave de recuperação", - "Repeat recovery key password" : "Repita senha da chave de recuperação", + "Repeat recovery key password" : "Repita a senha da chave de recuperação", "Change recovery key password:" : "Mudar a senha da chave de recuperação:", "Old recovery key password" : "Senha da chave de recuperação antiga", "New recovery key password" : "Nova senha da chave de recuperação", @@ -50,12 +51,12 @@ "Set your old private key password to your current log-in password:" : "Defina a sua antiga senha da chave privada para sua senha de login atual:", " If you don't remember your old password you can ask your administrator to recover your files." : "Se você não se lembra de sua antiga senha você pode pedir ao administrador que recupere seus arquivos.", "Old log-in password" : "Senha antiga de login", - "Current log-in password" : "Senha de login atual", + "Current log-in password" : "Senha atual de login", "Update Private Key Password" : "Atualizar senha de chave privada", "Enable password recovery:" : "Habilitar recuperação de senha:", "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Ativar essa opção vai permitir que você obtenha novamente acesso aos seus arquivos criptografados em caso de perda de senha", "Enabled" : "Habilitado", "Disabled" : "Desabilitado", - "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "App de criptografia está ativado, mas as chaves não estão inicializadas, por favor log-out e faça login novamente" + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "O aplicativo criptografia está ativado, mas as chaves não estão inicializadas. Por favor saia e entre novamente" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/encryption/lib/KeyManager.php b/apps/encryption/lib/KeyManager.php index caae154b2d3..32872ae99b3 100644 --- a/apps/encryption/lib/KeyManager.php +++ b/apps/encryption/lib/KeyManager.php @@ -399,6 +399,10 @@ class KeyManager { * @return string */ public function getFileKey($path, $uid) { + if ($uid === '') { + $uid = null; + } + $publicAccess = is_null($uid); $encryptedFileKey = $this->keyStorage->getFileKey($path, $this->fileKeyId, Encryption::ID); if (empty($encryptedFileKey)) { @@ -407,9 +411,16 @@ class KeyManager { if ($this->util->isMasterKeyEnabled()) { $uid = $this->getMasterKeyId(); - } - - if (is_null($uid)) { + $shareKey = $this->getShareKey($path, $uid); + if ($publicAccess) { + $privateKey = $this->getSystemPrivateKey($uid); + $privateKey = $this->crypt->decryptPrivateKey($privateKey, $this->getMasterKeyPassword(), $uid); + } else { + // when logged in, the master key is already decrypted in the session + $privateKey = $this->session->getPrivateKey(); + } + } else if ($publicAccess) { + // use public share key for public links $uid = $this->getPublicShareKeyId(); $shareKey = $this->getShareKey($path, $uid); $privateKey = $this->keyStorage->getSystemUserKey($this->publicShareKeyId . '.privateKey', Encryption::ID); diff --git a/apps/encryption/tests/KeyManagerTest.php b/apps/encryption/tests/KeyManagerTest.php index 40def135816..a8441427a2c 100644 --- a/apps/encryption/tests/KeyManagerTest.php +++ b/apps/encryption/tests/KeyManagerTest.php @@ -349,6 +349,19 @@ class KeyManagerTest extends TestCase { $this->assertTrue($this->instance->getEncryptedFileKey('/')); } + public function dataTestGetFileKey() { + return [ + ['user1', false, 'privateKey', true], + ['user1', false, false, ''], + ['user1', true, 'privateKey', true], + ['user1', true, false, ''], + [null, false, 'privateKey', true], + [null, false, false, ''], + [null, true, 'privateKey', true], + [null, true, false, ''] + ]; + } + /** * @dataProvider dataTestGetFileKey * @@ -363,6 +376,10 @@ class KeyManagerTest extends TestCase { if ($isMasterKeyEnabled) { $expectedUid = 'masterKeyId'; + $this->configMock->expects($this->any())->method('getSystemValue')->with('secret') + ->willReturn('password'); + } else if (!$uid) { + $expectedUid = 'systemKeyId'; } else { $expectedUid = $uid; } @@ -379,6 +396,9 @@ class KeyManagerTest extends TestCase { ->with($path, $expectedUid . '.shareKey', 'OC_DEFAULT_MODULE') ->willReturn(true); + $this->utilMock->expects($this->any())->method('isMasterKeyEnabled') + ->willReturn($isMasterKeyEnabled); + if (is_null($uid)) { $this->keyStorageMock->expects($this->once()) ->method('getSystemUserKey') @@ -389,8 +409,6 @@ class KeyManagerTest extends TestCase { } else { $this->keyStorageMock->expects($this->never()) ->method('getSystemUserKey'); - $this->utilMock->expects($this->once())->method('isMasterKeyEnabled') - ->willReturn($isMasterKeyEnabled); $this->sessionMock->expects($this->once())->method('getPrivateKey')->willReturn($privateKey); } @@ -409,19 +427,6 @@ class KeyManagerTest extends TestCase { } - public function dataTestGetFileKey() { - return [ - ['user1', false, 'privateKey', true], - ['user1', false, false, ''], - ['user1', true, 'privateKey', true], - ['user1', true, false, ''], - ['', false, 'privateKey', true], - ['', false, false, ''], - ['', true, 'privateKey', true], - ['', true, false, ''] - ]; - } - public function testDeletePrivateKey() { $this->keyStorageMock->expects($this->once()) ->method('deleteUserKey') diff --git a/apps/federatedfilesharing/l10n/es_MX.js b/apps/federatedfilesharing/l10n/es_MX.js new file mode 100644 index 00000000000..5df73f5f7ca --- /dev/null +++ b/apps/federatedfilesharing/l10n/es_MX.js @@ -0,0 +1,50 @@ +OC.L10N.register( + "federatedfilesharing", + { + "Do you want to add the remote share {name} from {owner}@{remote}?" : "¿Desea agregar el elemento compartido remoto {name} de {owner}@{remote}?", + "Remote share" : "Elemento compartido remoto", + "Remote share password" : "Contraseña del elemento compartido remoto", + "Cancel" : "Cancelar", + "Add remote share" : "Agregar elemento compartido remoto", + "Copy" : "Copiar", + "Copied!" : "¡Copiado!", + "Not supported!" : "¡No soportado!", + "Press ⌘-C to copy." : "Presione ⌘-C para copiar.", + "Press Ctrl-C to copy." : "Presione Ctrl-C para copiar.", + "Invalid Federated Cloud ID" : "El ID de la Nube Federada es inválido", + "Server to server sharing is not enabled on this server" : "Compartir de servidor a servidor no está habilitado en este servidor", + "Couldn't establish a federated share." : "No fue posible establecer el elemento compartido federado. ", + "Couldn't establish a federated share, maybe the password was wrong." : "No fue posible establecer el elemento compartido federado, tal vez la contraseña sea incorrecta. ", + "Federated Share request was successful, you will receive a invitation. Check your notifications." : "La solicitud del elemento compatido federado fue exitosa, recibirá una invitación. Verifique sus notificaciones. ", + "The mountpoint name contains invalid characters." : "El nombre del punto de montaje contiene caracteres inválidos.", + "Not allowed to create a federated share with the owner." : "No está permitido crear un elemento compartido federado con el dueño. ", + "Invalid or untrusted SSL certificate" : "Certificado SSL inválido o no confiable", + "Could not authenticate to remote share, password might be wrong" : "No fue posible autenticarse ante el elemento compartido remoto, la contraseña puede estar mal", + "Storage not valid" : "Almacenamiento inválido", + "Federated Share successfully added" : "El Elemento Compartido Federado fue agregado exitosamente", + "Couldn't add remote share" : "No fue posible agregar el elemento compartido remoto", + "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya se encuentra compartido con %s", + "Not allowed to create a federated share with the same user" : "No está permitido crear un elelmento compartido federado con el mismo usuario", + "File is already shared with %s" : "El archivo ya ha sido compartido con %s", + "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor no está alcanzable o usa un certificado auto-firmado.", + "Could not find share" : "No fue posible encontrar el elemento compartido", + "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Usted ha recibido \"%3$s\" como un elemento compartido remoto de %1$s (de parte de %2$s)", + "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Usted ha recibido {share} como un elemento compartido remoto de {user} (de parte de {behalf})", + "You received \"%3$s\" as a remote share from %1$s" : "Usted ha recibido \"%3$s\" como un elemento compartido remoto de %1$s", + "You received {share} as a remote share from {user}" : "Usted recibió {share} como un elemento compartido remoto de {user}", + "Accept" : "Aceptar", + "Decline" : "Rechazar", + "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Compartir conmigo a través de mi ID de Nube Federada #Nextcloud, ver %s", + "Share with me through my #Nextcloud Federated Cloud ID" : "Compartir conmigo a través de mi ID de Nube Federada #Nextcloud", + "Open documentation" : "Abrir documentación", + "Allow users on this server to send shares to other servers" : "Permitirle a los usuarios de este servidor enviar elementos compartidos a otros servidores", + "Allow users on this server to receive shares from other servers" : "Permitir que los usuarios de este servidor recibir elementos compartidos de otros servidores", + "Search global and public address book for users" : "Buscar usuarios en las libretas de contactos globales y públicas", + "Federated Cloud" : "Nube Federada", + "Your Federated Cloud ID:" : "Su ID de Nube Federada:", + "Share it:" : "Compartirlo:", + "Add to your website" : "Agregar a su sitio web", + "Share with me via Nextcloud" : "Compartir conmigo vÃa Nextcloud", + "HTML Code:" : "Código HTML:" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/federatedfilesharing/l10n/es_MX.json b/apps/federatedfilesharing/l10n/es_MX.json new file mode 100644 index 00000000000..3bf602135b9 --- /dev/null +++ b/apps/federatedfilesharing/l10n/es_MX.json @@ -0,0 +1,48 @@ +{ "translations": { + "Do you want to add the remote share {name} from {owner}@{remote}?" : "¿Desea agregar el elemento compartido remoto {name} de {owner}@{remote}?", + "Remote share" : "Elemento compartido remoto", + "Remote share password" : "Contraseña del elemento compartido remoto", + "Cancel" : "Cancelar", + "Add remote share" : "Agregar elemento compartido remoto", + "Copy" : "Copiar", + "Copied!" : "¡Copiado!", + "Not supported!" : "¡No soportado!", + "Press ⌘-C to copy." : "Presione ⌘-C para copiar.", + "Press Ctrl-C to copy." : "Presione Ctrl-C para copiar.", + "Invalid Federated Cloud ID" : "El ID de la Nube Federada es inválido", + "Server to server sharing is not enabled on this server" : "Compartir de servidor a servidor no está habilitado en este servidor", + "Couldn't establish a federated share." : "No fue posible establecer el elemento compartido federado. ", + "Couldn't establish a federated share, maybe the password was wrong." : "No fue posible establecer el elemento compartido federado, tal vez la contraseña sea incorrecta. ", + "Federated Share request was successful, you will receive a invitation. Check your notifications." : "La solicitud del elemento compatido federado fue exitosa, recibirá una invitación. Verifique sus notificaciones. ", + "The mountpoint name contains invalid characters." : "El nombre del punto de montaje contiene caracteres inválidos.", + "Not allowed to create a federated share with the owner." : "No está permitido crear un elemento compartido federado con el dueño. ", + "Invalid or untrusted SSL certificate" : "Certificado SSL inválido o no confiable", + "Could not authenticate to remote share, password might be wrong" : "No fue posible autenticarse ante el elemento compartido remoto, la contraseña puede estar mal", + "Storage not valid" : "Almacenamiento inválido", + "Federated Share successfully added" : "El Elemento Compartido Federado fue agregado exitosamente", + "Couldn't add remote share" : "No fue posible agregar el elemento compartido remoto", + "Sharing %s failed, because this item is already shared with %s" : "Se presentó una falla al compartir %s, porque este elemento ya se encuentra compartido con %s", + "Not allowed to create a federated share with the same user" : "No está permitido crear un elelmento compartido federado con el mismo usuario", + "File is already shared with %s" : "El archivo ya ha sido compartido con %s", + "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Se presentó una falla al compartir %s, no fue posible encontrar %s, tal vez el servidor no está alcanzable o usa un certificado auto-firmado.", + "Could not find share" : "No fue posible encontrar el elemento compartido", + "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Usted ha recibido \"%3$s\" como un elemento compartido remoto de %1$s (de parte de %2$s)", + "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Usted ha recibido {share} como un elemento compartido remoto de {user} (de parte de {behalf})", + "You received \"%3$s\" as a remote share from %1$s" : "Usted ha recibido \"%3$s\" como un elemento compartido remoto de %1$s", + "You received {share} as a remote share from {user}" : "Usted recibió {share} como un elemento compartido remoto de {user}", + "Accept" : "Aceptar", + "Decline" : "Rechazar", + "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Compartir conmigo a través de mi ID de Nube Federada #Nextcloud, ver %s", + "Share with me through my #Nextcloud Federated Cloud ID" : "Compartir conmigo a través de mi ID de Nube Federada #Nextcloud", + "Open documentation" : "Abrir documentación", + "Allow users on this server to send shares to other servers" : "Permitirle a los usuarios de este servidor enviar elementos compartidos a otros servidores", + "Allow users on this server to receive shares from other servers" : "Permitir que los usuarios de este servidor recibir elementos compartidos de otros servidores", + "Search global and public address book for users" : "Buscar usuarios en las libretas de contactos globales y públicas", + "Federated Cloud" : "Nube Federada", + "Your Federated Cloud ID:" : "Su ID de Nube Federada:", + "Share it:" : "Compartirlo:", + "Add to your website" : "Agregar a su sitio web", + "Share with me via Nextcloud" : "Compartir conmigo vÃa Nextcloud", + "HTML Code:" : "Código HTML:" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/pt_BR.js b/apps/federatedfilesharing/l10n/pt_BR.js index a1f6affa796..ea4963bdc5c 100644 --- a/apps/federatedfilesharing/l10n/pt_BR.js +++ b/apps/federatedfilesharing/l10n/pt_BR.js @@ -12,7 +12,7 @@ OC.L10N.register( "Not supported!" : "Não suportado!", "Press ⌘-C to copy." : "Pressione ⌘-C para copiar.", "Press Ctrl-C to copy." : "Pressione Ctrl-C para copiar.", - "Invalid Federated Cloud ID" : "Inválida Associação de Nuvem ID", + "Invalid Federated Cloud ID" : "ID de Nuvem Federada Inválida", "Server to server sharing is not enabled on this server" : "Servidor para compartilhamento de servidor não está ativo neste servidor", "Couldn't establish a federated share." : "Não foi possÃvel estabelecer um compartilhamento federado.", "Couldn't establish a federated share, maybe the password was wrong." : "Não foi possÃvel estabelecer um compartilhamento federado, talvez a senha esteja incorreta.", @@ -32,7 +32,7 @@ OC.L10N.register( "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Voce recebeu \"%3$s\" como um compartilhamento remoto de %1$s ( em nome de %2$s )", "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Voce recebeu {share} como um compartilhamento remoto do {user} (em nome de {behalf})", "You received \"%3$s\" as a remote share from %1$s" : "Voce recebeu \"%3$s\" como um compartilhamento remoto de %1$s", - "You received {share} as a remote share from {user}" : "Voce recebeu {share} como um compartilhamento resto de {user}", + "You received {share} as a remote share from {user}" : "Voce recebeu {share} como um compartilhamento remoto de {user}", "Accept" : "Aceitar", "Decline" : "Rejeitar", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Compartilhe comigo através do meu #Nextcloud Nuvem ID Federada, veja %s", @@ -40,7 +40,7 @@ OC.L10N.register( "Federated Cloud Sharing" : "Nuvem Associada Federada", "Open documentation" : "Abrir documentação", "Allow users on this server to send shares to other servers" : "Permitir que os usuários deste servidor enviem compartilhamentos para outros servidores", - "Allow users on this server to receive shares from other servers" : "Permitir que os usuários nesse servidor recebam compartilhamentos de outros servidores", + "Allow users on this server to receive shares from other servers" : "Permitir que os usuários deste servidor recebam compartilhamentos de outros servidores", "Search global and public address book for users" : "Procurar por usuários em catálogo de endereços global e público", "Federated Cloud" : "Nuvem Federada", "Your Federated Cloud ID:" : "Sua ID na Nuvem Federada:", diff --git a/apps/federatedfilesharing/l10n/pt_BR.json b/apps/federatedfilesharing/l10n/pt_BR.json index ad10a7b9ef0..ce081e39991 100644 --- a/apps/federatedfilesharing/l10n/pt_BR.json +++ b/apps/federatedfilesharing/l10n/pt_BR.json @@ -10,7 +10,7 @@ "Not supported!" : "Não suportado!", "Press ⌘-C to copy." : "Pressione ⌘-C para copiar.", "Press Ctrl-C to copy." : "Pressione Ctrl-C para copiar.", - "Invalid Federated Cloud ID" : "Inválida Associação de Nuvem ID", + "Invalid Federated Cloud ID" : "ID de Nuvem Federada Inválida", "Server to server sharing is not enabled on this server" : "Servidor para compartilhamento de servidor não está ativo neste servidor", "Couldn't establish a federated share." : "Não foi possÃvel estabelecer um compartilhamento federado.", "Couldn't establish a federated share, maybe the password was wrong." : "Não foi possÃvel estabelecer um compartilhamento federado, talvez a senha esteja incorreta.", @@ -30,7 +30,7 @@ "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Voce recebeu \"%3$s\" como um compartilhamento remoto de %1$s ( em nome de %2$s )", "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Voce recebeu {share} como um compartilhamento remoto do {user} (em nome de {behalf})", "You received \"%3$s\" as a remote share from %1$s" : "Voce recebeu \"%3$s\" como um compartilhamento remoto de %1$s", - "You received {share} as a remote share from {user}" : "Voce recebeu {share} como um compartilhamento resto de {user}", + "You received {share} as a remote share from {user}" : "Voce recebeu {share} como um compartilhamento remoto de {user}", "Accept" : "Aceitar", "Decline" : "Rejeitar", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Compartilhe comigo através do meu #Nextcloud Nuvem ID Federada, veja %s", @@ -38,7 +38,7 @@ "Federated Cloud Sharing" : "Nuvem Associada Federada", "Open documentation" : "Abrir documentação", "Allow users on this server to send shares to other servers" : "Permitir que os usuários deste servidor enviem compartilhamentos para outros servidores", - "Allow users on this server to receive shares from other servers" : "Permitir que os usuários nesse servidor recebam compartilhamentos de outros servidores", + "Allow users on this server to receive shares from other servers" : "Permitir que os usuários deste servidor recebam compartilhamentos de outros servidores", "Search global and public address book for users" : "Procurar por usuários em catálogo de endereços global e público", "Federated Cloud" : "Nuvem Federada", "Your Federated Cloud ID:" : "Sua ID na Nuvem Federada:", diff --git a/apps/federation/l10n/es_MX.js b/apps/federation/l10n/es_MX.js new file mode 100644 index 00000000000..d14f9937f73 --- /dev/null +++ b/apps/federation/l10n/es_MX.js @@ -0,0 +1,16 @@ +OC.L10N.register( + "federation", + { + "Added to the list of trusted servers" : "Agregado a la lista de servidores de confianza", + "Server is already in the list of trusted servers." : "El servidor ya se encuentra en la lista de servidores de confianza.", + "No server to federate with found" : "No se encontraron servidores para integrar a la federación", + "Could not add server" : "No fue posible agregar el servidor", + "Federation" : "Federación", + "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "La federación le permite conectarse con otros servidores de confianza para intercambiar el directorio de usuarios. Por ejemplo, esto se usará para auto-completar usuarios externos en el recurso compartido federado.", + "Add server automatically once a federated share was created successfully" : "Agregar el servidor automáticamente una vez que se genere exitosamente el elemento compartido federado", + "Trusted servers" : "Servidores de confianza", + "+ Add trusted server" : "+ Agregar servidor de confianza", + "Trusted server" : "Servidor de confianza", + "Add" : "Agregar" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/federation/l10n/es_MX.json b/apps/federation/l10n/es_MX.json new file mode 100644 index 00000000000..386e85dcffd --- /dev/null +++ b/apps/federation/l10n/es_MX.json @@ -0,0 +1,14 @@ +{ "translations": { + "Added to the list of trusted servers" : "Agregado a la lista de servidores de confianza", + "Server is already in the list of trusted servers." : "El servidor ya se encuentra en la lista de servidores de confianza.", + "No server to federate with found" : "No se encontraron servidores para integrar a la federación", + "Could not add server" : "No fue posible agregar el servidor", + "Federation" : "Federación", + "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "La federación le permite conectarse con otros servidores de confianza para intercambiar el directorio de usuarios. Por ejemplo, esto se usará para auto-completar usuarios externos en el recurso compartido federado.", + "Add server automatically once a federated share was created successfully" : "Agregar el servidor automáticamente una vez que se genere exitosamente el elemento compartido federado", + "Trusted servers" : "Servidores de confianza", + "+ Add trusted server" : "+ Agregar servidor de confianza", + "Trusted server" : "Servidor de confianza", + "Add" : "Agregar" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/federation/l10n/pt_BR.js b/apps/federation/l10n/pt_BR.js index d46445b85f1..7684b1cb009 100644 --- a/apps/federation/l10n/pt_BR.js +++ b/apps/federation/l10n/pt_BR.js @@ -5,7 +5,7 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "O servidor já está na lista de servidores confiáveis.", "No server to federate with found" : "Nenhum servidor para associar com o encontrado", "Could not add server" : "Não foi possÃvel adicionar servidor", - "Federation" : "Associação", + "Federation" : "Federação", "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federação permite que você conecte com outros servidores confiáveis para trocar o diretório do usuário. Por exemplo, este atributo será usado para completar automaticamente usuários externos para compartilhamento federado.", "Add server automatically once a federated share was created successfully" : "Adicionar servidor automaticamente uma vez que um compartilhamento associado foi criado com êxito", "Trusted servers" : "Servidores confiáveis", diff --git a/apps/federation/l10n/pt_BR.json b/apps/federation/l10n/pt_BR.json index dc4f2eadb92..c5887d8f6a3 100644 --- a/apps/federation/l10n/pt_BR.json +++ b/apps/federation/l10n/pt_BR.json @@ -3,7 +3,7 @@ "Server is already in the list of trusted servers." : "O servidor já está na lista de servidores confiáveis.", "No server to federate with found" : "Nenhum servidor para associar com o encontrado", "Could not add server" : "Não foi possÃvel adicionar servidor", - "Federation" : "Associação", + "Federation" : "Federação", "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federação permite que você conecte com outros servidores confiáveis para trocar o diretório do usuário. Por exemplo, este atributo será usado para completar automaticamente usuários externos para compartilhamento federado.", "Add server automatically once a federated share was created successfully" : "Adicionar servidor automaticamente uma vez que um compartilhamento associado foi criado com êxito", "Trusted servers" : "Servidores confiáveis", diff --git a/apps/files/js/file-upload.js b/apps/files/js/file-upload.js index 1b85f578f43..75d9d0ebdfc 100644 --- a/apps/files/js/file-upload.js +++ b/apps/files/js/file-upload.js @@ -961,6 +961,7 @@ OC.Uploader.prototype = _.extend({ var bufferSize = 20; var buffer = []; var bufferIndex = 0; + var bufferIndex2 = 0; var bufferTotal = 0; for(var i = 0; i < bufferSize;i++){ buffer[i] = 0; @@ -1006,8 +1007,17 @@ OC.Uploader.prototype = _.extend({ bufferTotal = bufferTotal - (buffer[bufferIndex]) + remainingSeconds; buffer[bufferIndex] = remainingSeconds; //buffer to make it smoother bufferIndex = (bufferIndex + 1) % bufferSize; + bufferIndex2++; } - var smoothRemainingSeconds = (bufferTotal / bufferSize); //seconds + var smoothRemainingSeconds; + if (bufferIndex2 > 0 && bufferIndex2 < 20) { + smoothRemainingSeconds = bufferTotal / bufferIndex2; + } else if (bufferSize > 0) { + smoothRemainingSeconds = bufferTotal / bufferSize; + } else { + smoothRemainingSeconds = 1; + } + var h = moment.duration(smoothRemainingSeconds, "seconds").humanize(); $('#uploadprogressbar .label .mobile').text(h); $('#uploadprogressbar .label .desktop').text(h); diff --git a/apps/files/l10n/es_MX.js b/apps/files/l10n/es_MX.js index 5c35f269273..9639fc176c3 100644 --- a/apps/files/l10n/es_MX.js +++ b/apps/files/l10n/es_MX.js @@ -7,13 +7,13 @@ OC.L10N.register( "All files" : "Todos los archivos", "Recent" : "Reciente", "File could not be found" : "No fue posible encontrar el archivo", - "Home" : "Particular", + "Home" : "Inicio", "Close" : "Cerrar", "Favorites" : "Favoritos", "Could not create folder \"{dir}\"" : "No fue posible crear la carpeta \"{dir}\"", "Upload cancelled." : "Carga cancelada.", "Unable to upload {filename} as it is a directory or has 0 bytes" : "No fue posible cargar {filename} ya que es una carpeta o tiene un tamaño de 0 bytes", - "Not enough free space, you are uploading {size1} but only {size2} is left" : "No cuenta con suficiente espacio disponible, usted se encuentra cargando {size1} pero solo cuenta con {size2} disponible", + "Not enough free space, you are uploading {size1} but only {size2} is left" : "No cuenta con suficiente espacio disponible, usted se encuentra cargando {size1} pero sólo cuenta con {size2} disponible", "Target folder \"{dir}\" does not exist any more" : "La carpeta destino \"{dir}\" ya no existe", "Not enough free space" : "No cuenta con suficiente espacio disponible", "Uploading..." : "Cargando...", @@ -53,7 +53,7 @@ OC.L10N.register( "_%n file_::_%n files_" : ["%n archivo","%n archivos"], "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n escondido","incluyendo %n escondidos"], - "You don’t have permission to upload or create files here" : "Usted no cuenta con los permisos para cargar o crear archivos aqui", + "You don’t have permission to upload or create files here" : "Usted no cuenta con los permisos para cargar o crear archivos aquÃ", "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos"], "New" : "Nuevo", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", @@ -75,9 +75,9 @@ OC.L10N.register( "Upload" : "Cargar", "An error occurred while trying to update the tags" : "Se presentó un error al intentar actualizar la etiqueta", "Added to favorites" : "Agregado a los favoritos", - "Removed from favorites" : "Quitado de los favoritos", + "Removed from favorites" : "Eliminado de los favoritos", "You added {file} to your favorites" : "Usted agregó {file} a sus favoritos", - "You removed {file} from your favorites" : "Usted quitó {file} de sus favoritos", + "You removed {file} from your favorites" : "Usted eliminó {file} de sus favoritos", "File changes" : "Cambios al archivo", "Created by {user}" : "Creado por {user}", "Changed by {user}" : "Cambiado por {user}", @@ -102,7 +102,7 @@ OC.L10N.register( "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Un archivo o carpeta ha sido <strong>cambiado </strong> o <strong>renombrado</strong>", "A new file or folder has been <strong>created</strong>" : "Un nuevo archivo ha sido <strong>creado</strong>", "A new file or folder has been <strong>deleted</strong>" : "Un nuevo archivo ha sido <strong>borrado</strong>", - "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limite las notificación de la creación y cambios a sus <strong>archivos favoritos</strong> <em>(solo flujo)</em>", + "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limite las notificación de la creación y cambios a sus <strong>archivos favoritos</strong> <em>(sólo flujo)</em>", "A new file or folder has been <strong>restored</strong>" : "Un nuevo archivo ha sido <strong>restaurado</strong>", "Upload (max. %s)" : "Cargar (max. %s)", "File handling" : "Administración de archivos", @@ -126,9 +126,10 @@ OC.L10N.register( "Shared with you" : "Compartido con usted", "Shared with others" : "Compartido con otros", "Shared by link" : "Compartido por liga", + "Tags" : "Etiquetas", "Deleted files" : "Archivos borrados", "Text file" : "Archivo de texto", - "New text file.txt" : "Nuevo archivo de texto .txt", + "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["falta {hours}:{minutes}:{seconds} hora","faltan {hours}:{minutes}:{seconds} horas"], "{hours}:{minutes}h" : "{hours}:{minutes}h", "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["falta {minutes}:{seconds} minuto","faltan {minutes}:{seconds} minutos"], diff --git a/apps/files/l10n/es_MX.json b/apps/files/l10n/es_MX.json index d84f93c8172..c570d6825b9 100644 --- a/apps/files/l10n/es_MX.json +++ b/apps/files/l10n/es_MX.json @@ -5,13 +5,13 @@ "All files" : "Todos los archivos", "Recent" : "Reciente", "File could not be found" : "No fue posible encontrar el archivo", - "Home" : "Particular", + "Home" : "Inicio", "Close" : "Cerrar", "Favorites" : "Favoritos", "Could not create folder \"{dir}\"" : "No fue posible crear la carpeta \"{dir}\"", "Upload cancelled." : "Carga cancelada.", "Unable to upload {filename} as it is a directory or has 0 bytes" : "No fue posible cargar {filename} ya que es una carpeta o tiene un tamaño de 0 bytes", - "Not enough free space, you are uploading {size1} but only {size2} is left" : "No cuenta con suficiente espacio disponible, usted se encuentra cargando {size1} pero solo cuenta con {size2} disponible", + "Not enough free space, you are uploading {size1} but only {size2} is left" : "No cuenta con suficiente espacio disponible, usted se encuentra cargando {size1} pero sólo cuenta con {size2} disponible", "Target folder \"{dir}\" does not exist any more" : "La carpeta destino \"{dir}\" ya no existe", "Not enough free space" : "No cuenta con suficiente espacio disponible", "Uploading..." : "Cargando...", @@ -51,7 +51,7 @@ "_%n file_::_%n files_" : ["%n archivo","%n archivos"], "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n escondido","incluyendo %n escondidos"], - "You don’t have permission to upload or create files here" : "Usted no cuenta con los permisos para cargar o crear archivos aqui", + "You don’t have permission to upload or create files here" : "Usted no cuenta con los permisos para cargar o crear archivos aquÃ", "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos"], "New" : "Nuevo", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", @@ -73,9 +73,9 @@ "Upload" : "Cargar", "An error occurred while trying to update the tags" : "Se presentó un error al intentar actualizar la etiqueta", "Added to favorites" : "Agregado a los favoritos", - "Removed from favorites" : "Quitado de los favoritos", + "Removed from favorites" : "Eliminado de los favoritos", "You added {file} to your favorites" : "Usted agregó {file} a sus favoritos", - "You removed {file} from your favorites" : "Usted quitó {file} de sus favoritos", + "You removed {file} from your favorites" : "Usted eliminó {file} de sus favoritos", "File changes" : "Cambios al archivo", "Created by {user}" : "Creado por {user}", "Changed by {user}" : "Cambiado por {user}", @@ -100,7 +100,7 @@ "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Un archivo o carpeta ha sido <strong>cambiado </strong> o <strong>renombrado</strong>", "A new file or folder has been <strong>created</strong>" : "Un nuevo archivo ha sido <strong>creado</strong>", "A new file or folder has been <strong>deleted</strong>" : "Un nuevo archivo ha sido <strong>borrado</strong>", - "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limite las notificación de la creación y cambios a sus <strong>archivos favoritos</strong> <em>(solo flujo)</em>", + "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limite las notificación de la creación y cambios a sus <strong>archivos favoritos</strong> <em>(sólo flujo)</em>", "A new file or folder has been <strong>restored</strong>" : "Un nuevo archivo ha sido <strong>restaurado</strong>", "Upload (max. %s)" : "Cargar (max. %s)", "File handling" : "Administración de archivos", @@ -124,9 +124,10 @@ "Shared with you" : "Compartido con usted", "Shared with others" : "Compartido con otros", "Shared by link" : "Compartido por liga", + "Tags" : "Etiquetas", "Deleted files" : "Archivos borrados", "Text file" : "Archivo de texto", - "New text file.txt" : "Nuevo archivo de texto .txt", + "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["falta {hours}:{minutes}:{seconds} hora","faltan {hours}:{minutes}:{seconds} horas"], "{hours}:{minutes}h" : "{hours}:{minutes}h", "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["falta {minutes}:{seconds} minuto","faltan {minutes}:{seconds} minutos"], diff --git a/apps/files/l10n/fi.js b/apps/files/l10n/fi.js index 17e907f2786..dc5628be4b5 100644 --- a/apps/files/l10n/fi.js +++ b/apps/files/l10n/fi.js @@ -27,6 +27,7 @@ OC.L10N.register( "Delete" : "Poista", "Disconnect storage" : "Katkaise yhteys tallennustilaan", "Unshare" : "Peru jakaminen", + "Could not load info for file \"{file}\"" : "Ei voida ladata tiedoston \"{file}\" tietoja", "Files" : "Tiedostot", "Details" : "Tiedot", "Select" : "Valitse", @@ -57,6 +58,7 @@ OC.L10N.register( "New" : "Uusi", "\"{name}\" is an invalid file name." : "\"{name}\" on virheellinen tiedostonimi.", "File name cannot be empty." : "Tiedoston nimi ei voi olla tyhjä.", + "\"{name}\" is not an allowed filetype" : "\"{name}\" ei ole sallittu tiedostomuoto", "Storage of {owner} is full, files can not be updated or synced anymore!" : "Käyttäjän {owner} tallennustila on täynnä, tiedostoja ei voi enää päivittää tai synkronoida!", "Your storage is full, files can not be updated or synced anymore!" : "Tallennustila on loppu, tiedostoja ei voi enää päivittää tai synkronoida!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Käyttäjän {owner} tallennustila on melkein täynnä ({usedSpacePercent} %)", @@ -77,6 +79,12 @@ OC.L10N.register( "You added {file} to your favorites" : "Lisäsit tiedoston {file} suosikkeihin", "You removed {file} from your favorites" : "Poistit tiedoston {file} suosikeista", "File changes" : "Tiedostomuutokset", + "Created by {user}" : "Tekijänä {user}", + "Changed by {user}" : "Muokkaajana {user}", + "Deleted by {user}" : "Poistanut {user}", + "Restored by {user}" : "Palauttanut {user}", + "Renamed by {user}" : "Uudelleennimennyt {user}", + "Moved by {user}" : "Siirtänyt {user}", "You created {file}" : "Loit tiedoston {file}", "{user} created {file}" : "{user} loi tiedoston {file}", "{file} was created in a public folder" : "Tiedosto {file} luotiin julkisessa kansiossa", diff --git a/apps/files/l10n/fi.json b/apps/files/l10n/fi.json index 94596d6b91b..ce49d222cbc 100644 --- a/apps/files/l10n/fi.json +++ b/apps/files/l10n/fi.json @@ -25,6 +25,7 @@ "Delete" : "Poista", "Disconnect storage" : "Katkaise yhteys tallennustilaan", "Unshare" : "Peru jakaminen", + "Could not load info for file \"{file}\"" : "Ei voida ladata tiedoston \"{file}\" tietoja", "Files" : "Tiedostot", "Details" : "Tiedot", "Select" : "Valitse", @@ -55,6 +56,7 @@ "New" : "Uusi", "\"{name}\" is an invalid file name." : "\"{name}\" on virheellinen tiedostonimi.", "File name cannot be empty." : "Tiedoston nimi ei voi olla tyhjä.", + "\"{name}\" is not an allowed filetype" : "\"{name}\" ei ole sallittu tiedostomuoto", "Storage of {owner} is full, files can not be updated or synced anymore!" : "Käyttäjän {owner} tallennustila on täynnä, tiedostoja ei voi enää päivittää tai synkronoida!", "Your storage is full, files can not be updated or synced anymore!" : "Tallennustila on loppu, tiedostoja ei voi enää päivittää tai synkronoida!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Käyttäjän {owner} tallennustila on melkein täynnä ({usedSpacePercent} %)", @@ -75,6 +77,12 @@ "You added {file} to your favorites" : "Lisäsit tiedoston {file} suosikkeihin", "You removed {file} from your favorites" : "Poistit tiedoston {file} suosikeista", "File changes" : "Tiedostomuutokset", + "Created by {user}" : "Tekijänä {user}", + "Changed by {user}" : "Muokkaajana {user}", + "Deleted by {user}" : "Poistanut {user}", + "Restored by {user}" : "Palauttanut {user}", + "Renamed by {user}" : "Uudelleennimennyt {user}", + "Moved by {user}" : "Siirtänyt {user}", "You created {file}" : "Loit tiedoston {file}", "{user} created {file}" : "{user} loi tiedoston {file}", "{file} was created in a public folder" : "Tiedosto {file} luotiin julkisessa kansiossa", diff --git a/apps/files/l10n/hu.js b/apps/files/l10n/hu.js index 7d93ff59ec4..9c8ad41159a 100644 --- a/apps/files/l10n/hu.js +++ b/apps/files/l10n/hu.js @@ -45,6 +45,7 @@ OC.L10N.register( "Could not create file \"{file}\" because it already exists" : "{file} fájl nem létrehozható, mert már létezik", "Could not create folder \"{dir}\" because it already exists" : "{dir} mappa nem hozható létre, mert már létezik", "Error deleting file \"{fileName}\"." : "Hiba történt {fileName} fájl törlése közben.", + "No search results in other folders for {tag}{filter}{endtag}" : "Ehhez nincsenek keresési eredmények más mappákban: {tag}{filter}{endtag}", "Name" : "Név", "Size" : "Méret", "Modified" : "MódosÃtva", @@ -57,6 +58,7 @@ OC.L10N.register( "New" : "Új", "\"{name}\" is an invalid file name." : "\"{name}\" érvénytelen, mint fájlnév.", "File name cannot be empty." : "A fájlnév nem lehet semmi.", + "\"{name}\" is not an allowed filetype" : "\"{name}\" nem engedélyetett fájltÃpus", "Storage of {owner} is full, files can not be updated or synced anymore!" : "A {owner} felhasználó tárolója betelt, a fájlok nem frissÃthetÅ‘k és szinkronizálhatók többet!", "Your storage is full, files can not be updated or synced anymore!" : "A tároló tele van, a fájlok nem frissÃthetÅ‘ek vagy szinkronizálhatóak a jövÅ‘ben.", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "A {owner} felhasználó tárolója majdnem betelt ({usedSpacePercent}%)", diff --git a/apps/files/l10n/hu.json b/apps/files/l10n/hu.json index 06cefdf3a4e..edad01f94bf 100644 --- a/apps/files/l10n/hu.json +++ b/apps/files/l10n/hu.json @@ -43,6 +43,7 @@ "Could not create file \"{file}\" because it already exists" : "{file} fájl nem létrehozható, mert már létezik", "Could not create folder \"{dir}\" because it already exists" : "{dir} mappa nem hozható létre, mert már létezik", "Error deleting file \"{fileName}\"." : "Hiba történt {fileName} fájl törlése közben.", + "No search results in other folders for {tag}{filter}{endtag}" : "Ehhez nincsenek keresési eredmények más mappákban: {tag}{filter}{endtag}", "Name" : "Név", "Size" : "Méret", "Modified" : "MódosÃtva", @@ -55,6 +56,7 @@ "New" : "Új", "\"{name}\" is an invalid file name." : "\"{name}\" érvénytelen, mint fájlnév.", "File name cannot be empty." : "A fájlnév nem lehet semmi.", + "\"{name}\" is not an allowed filetype" : "\"{name}\" nem engedélyetett fájltÃpus", "Storage of {owner} is full, files can not be updated or synced anymore!" : "A {owner} felhasználó tárolója betelt, a fájlok nem frissÃthetÅ‘k és szinkronizálhatók többet!", "Your storage is full, files can not be updated or synced anymore!" : "A tároló tele van, a fájlok nem frissÃthetÅ‘ek vagy szinkronizálhatóak a jövÅ‘ben.", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "A {owner} felhasználó tárolója majdnem betelt ({usedSpacePercent}%)", diff --git a/apps/files/l10n/is.js b/apps/files/l10n/is.js index 6d92e6f2cc7..6560efafd9f 100644 --- a/apps/files/l10n/is.js +++ b/apps/files/l10n/is.js @@ -122,7 +122,7 @@ OC.L10N.register( "Upload too large" : "Innsend skrá er of stór", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Skrárnar sem þú ert að senda inn eru stærri en hámarks innsendingarstærð á þessum netþjóni.", "No favorites" : "Engin eftirlæti", - "Files and folders you mark as favorite will show up here" : "Skrár og möppur sem þú merkir sem uppáhald birtast hér", + "Files and folders you mark as favorite will show up here" : "Skrár og möppur sem þú merkir sem eftirlæti birtast hér", "Shared with you" : "Deilt með þér", "Shared with others" : "Deilt með öðrum", "Shared by link" : "Deilt með tengli", diff --git a/apps/files/l10n/is.json b/apps/files/l10n/is.json index 4abd99b106d..fc6e431d87b 100644 --- a/apps/files/l10n/is.json +++ b/apps/files/l10n/is.json @@ -120,7 +120,7 @@ "Upload too large" : "Innsend skrá er of stór", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Skrárnar sem þú ert að senda inn eru stærri en hámarks innsendingarstærð á þessum netþjóni.", "No favorites" : "Engin eftirlæti", - "Files and folders you mark as favorite will show up here" : "Skrár og möppur sem þú merkir sem uppáhald birtast hér", + "Files and folders you mark as favorite will show up here" : "Skrár og möppur sem þú merkir sem eftirlæti birtast hér", "Shared with you" : "Deilt með þér", "Shared with others" : "Deilt með öðrum", "Shared by link" : "Deilt með tengli", diff --git a/apps/files/l10n/lb.js b/apps/files/l10n/lb.js index 9fa3a0fdfaa..06669c9f94d 100644 --- a/apps/files/l10n/lb.js +++ b/apps/files/l10n/lb.js @@ -1,50 +1,143 @@ OC.L10N.register( "files", { + "Storage is temporarily not available" : "Späicherplaatz temporär net erreeschbar", + "Storage invalid" : "Späicherplatz net gülteg", "Unknown error" : "Et ass en onbekannte Fehler opgetrueden", - "There is no error, the file uploaded with success" : "Keen Feeler, Datei ass komplett ropgelueden ginn", - "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Déi ropgelueden Datei ass méi grouss wei d'MAX_FILE_SIZE Eegenschaft déi an der HTML form uginn ass", - "The uploaded file was only partially uploaded" : "Déi ropgelueden Datei ass nëmmen hallef ropgelueden ginn", - "No file was uploaded" : "Et ass kee Fichier ropgeluede ginn", - "Missing a temporary folder" : "Et feelt en temporären Dossier", - "Failed to write to disk" : "Konnt net op den Disk schreiwen", - "Files" : "Dateien", "All files" : "All d'Fichieren", + "Recent" : "Rezent", + "File could not be found" : "Datei konnt net fonnt ginn", "Home" : "Doheem", "Close" : "Zoumaachen", "Favorites" : "Favoriten", + "Could not create folder \"{dir}\"" : "Dossier \"{dir}\" konnt net erstallt ginn", "Upload cancelled." : "Upload ofgebrach.", + "Unable to upload {filename} as it is a directory or has 0 bytes" : "{filename} konnt eropgelueden ginn, well et een Dossier ass oder d'Datei 0 Bytes huet", + "Not enough free space, you are uploading {size1} but only {size2} is left" : "Net genuch Späicher, du probéiers {size1} eropzelueden, et ass awer nëmmen méi {size2} fräi", + "Target folder \"{dir}\" does not exist any more" : "Den Dossier \"{dir}\" existéiert net méi", + "Not enough free space" : "Nët genuch Späicherplaatz", "Uploading..." : "Lueden erop...", "..." : "...", - "File upload is in progress. Leaving the page now will cancel the upload." : "File Upload am gaang. Wann's de des Säit verléiss gëtt den Upload ofgebrach.", + "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} vun {totalSize} ({bitrate})", + "Actions" : "Aktiounen", "Download" : "Download", "Rename" : "Ëmbenennen", + "Move" : "Verschieben", + "Target folder" : "Ziel Dossier", "Delete" : "Läschen", + "Disconnect storage" : "Net connectéierten Späicher", "Unshare" : "Net méi deelen", + "Could not load info for file \"{file}\"" : "Et konnten keng Informatiounen zu {file} gelueden ginn", + "Files" : "Dateien", "Details" : "Detailer", "Select" : "Auswielen", + "Pending" : "Ausstoend", + "Unable to determine date" : "Datum kann net festgestallt ginn", "This operation is forbidden" : "Dës Operatioun ass verbueden.", "This directory is unavailable, please check the logs or contact the administrator" : "Dësen Dossier ass net disponibel, w.e.g. kontrolléiert d'Logs oder kontaktéiert den Administrateur", + "Could not move \"{file}\", target exists" : "\"{file}\" konnt beweegt ginn. Et existéiert do schonn.", + "Could not move \"{file}\"" : "\"{file}\" konnt verreckelt ginn", + "{newName} already exists" : "{newName} gett et schon", + "Could not rename \"{fileName}\", it does not exist any more" : "\"{fileName}\" konnt embenannt ginn, well et net méi existéiert", + "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "\"{targetName}\" konnt net gesat ginn, well dësen schon am Dossier \"{dir}\" existéiert. Wiel weg. een aaneren", + "Could not rename \"{fileName}\"" : "\"{fileName}\" konnt net embenannt ginn", + "Could not create file \"{file}\"" : "\"{file}\" konnt net erstallt ginn", + "Could not create file \"{file}\" because it already exists" : "\"{file}\" konnt net erstallt ginn, well des schon existéiert", + "Could not create folder \"{dir}\" because it already exists" : "Den Dossier \"{dir}\" konnt net erstallt ginn, well desen schon existéiert", + "Error deleting file \"{fileName}\"." : "Fehler beim läschen vun \"{fileName}\".", + "No search results in other folders for {tag}{filter}{endtag}" : "Keng Resultater an aneren Dossieren fir {tag}{filter}{endtag} fonnt", "Name" : "Numm", "Size" : "Gréisst", "Modified" : "Geännert", + "_%n folder_::_%n folders_" : ["¦%n Dossier","¦%n Dossieren"], + "_%n file_::_%n files_" : ["¦%n Datei","¦%n Dateien"], + "{dirs} and {files}" : "{dirs} an {files}", + "_including %n hidden_::_including %n hidden_" : ["Beinhaltet ¦%n verstoppte Saach","Beinhaltet ¦%n verstoppte Saachen"], + "You don’t have permission to upload or create files here" : "Du hues net genuch Rechter hei Dokumenter eropzelueden oder ze erstellen", + "_Uploading %n file_::_Uploading %n files_" : ["Am Gaangen ¦%n Datei eropzelueden","Am Gaangen ¦%n Dateien eropzelueden"], "New" : "Nei", - "\"{name}\" is an invalid file name." : "\"{Numm}\" ass een ongültegen Numm fir e Fichier.", - "File name cannot be empty." : "Den Numm vum Fichier kann net eidel sinn.", + "\"{name}\" is an invalid file name." : "\"{name}\" ass een ongültegen Numm", + "File name cannot be empty." : "D'Datei kann net eidel sinn", + "\"{name}\" is not an allowed filetype" : "\"{name}\" ass een ongültegen Typ vun Datei", + "Storage of {owner} is full, files can not be updated or synced anymore!" : "Späicher vum {owener} ass voll, et kennen keng Dokumenter méi eropgelueden oder synchroniséiert ginn!", + "Your storage is full, files can not be updated or synced anymore!" : "Däin Späicher ass voll, et kennen keng Dateien méi eropgeluden oder synchrosniséiert ginn", + "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Späicher vum {owner} ass baal voll ({usedSpacePercent}%)", + "Your storage is almost full ({usedSpacePercent}%)" : "Däin Späicher ass baal voll ({usedSpacePercent}%)", + "_matches '{filter}'_::_match '{filter}'_" : ["entsprecht","entspriechen"], + "View in folder" : "Kuk am Dossier ", + "Path" : "Pad", + "_%n byte_::_%n bytes_" : ["¦%n Byte","¦%n Byte"], + "Favorited" : "Favoriséiert", + "Favorite" : "Favorit", + "Copy local link" : "Lokale Link kopéiert", "Folder" : "Dossier", "New folder" : "Neien Dossier", "Upload" : "Eroplueden", - "Upload (max. %s)" : "Eroplueden (max. %s)", + "An error occurred while trying to update the tags" : "Beim Updaten vun den Tags ass e Fehler entstaanen", + "Added to favorites" : "Zu den Favoriten dobaigesat", + "Removed from favorites" : "Vun den Favoriten eweggeholl", + "You added {file} to your favorites" : "Du hues {file} zu denger Favortiten dobäigesat", + "You removed {file} from your favorites" : "Du hues {file} aus dengen Favortiten geläscht", + "File changes" : "Datei Ännerungen", + "Created by {user}" : "Erstallt vum {user}", + "Changed by {user}" : "Geännert vum {user}", + "Deleted by {user}" : "Geläscht vum {user}", + "Restored by {user}" : "Erem hier gestallt vum {user}", + "Renamed by {user}" : "Embenannt vum {user}", + "Moved by {user}" : "Beweegt vum {user}", + "You created {file}" : "Du hues {file} erstallt", + "{user} created {file}" : "Den {user} huet {file} erstallt", + "{file} was created in a public folder" : "{file} ass an engem ëffentlechen Dossier erstallt ginn", + "You changed {file}" : "Du hues {file} verännert", + "{user} changed {file}" : "Den {user} huet {file} verännert", + "You deleted {file}" : "Du hues {file} geläscht", + "{user} deleted {file}" : "Den {user} huet {file} geläscht", + "You restored {file}" : "Du hues {file} erem hier gestallt", + "{user} restored {file}" : "Den {user} huet {file} erem hier gestallt", + "You renamed {oldfile} to {newfile}" : "Du hues {oldfile} zu {newfile} embenannt", + "{user} renamed {oldfile} to {newfile}" : "Den {user} huet {oldfile} zu {newfile} embenannt", + "You moved {oldfile} to {newfile}" : "Du hues {oldfile} zu {newfile} verreckelt", + "{user} moved {oldfile} to {newfile}" : "Den {user} huet {oldfile} zu {newfile} verreckelt", + "A file has been added to or removed from your <strong>favorites</strong>" : "Eng Datei gouf zu dengen Favoriten <strong> dobäigesat </strong> oder aus dengen Favortien <strong> geläscht </strong>", + "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Eng Datei gouf <strong> verännert</strong> oder <strong> embenannt</strong>", + "A new file or folder has been <strong>created</strong>" : "Eng nei Datei oder e neien Dossier gouf <strong> erstallt </strong>", + "A new file or folder has been <strong>deleted</strong>" : "Eng Datei oder en Dossier gouf <strong> geläscht</strong>", + "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limitéier Notifikatiounen op d'Erstellen an Veränneren vun dengen <strong> Favoriten</strong> (nëmmen Floss)", + "A new file or folder has been <strong>restored</strong>" : "Eng Datei oder en Dossier gouf <strong> erem hier gestallt</strong>", + "Upload (max. %s)" : "Upload (maximal ¦%s)", "File handling" : "Fichier handling", "Maximum upload size" : "Maximum Upload Gréisst ", "max. possible: " : "max. méiglech:", "Save" : "Späicheren", + "With PHP-FPM it might take 5 minutes for changes to be applied." : "Mat PHP-FPM kann et 5 Minutten dauern bis d'Ännerungen iwwerholl goufen", + "Missing permissions to edit from here." : "Net genuch Recher fir hei eppes ze veränneren", "Settings" : "Astellungen", - "No files in here" : "Hei sinn keng Fichieren", + "Show hidden files" : "Weis déi verstoppten Dateien", + "WebDAV" : "WebDAV", + "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Benotz dess Address <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">, fir op deng Dateien via WebDAV zouzegräifen</a>", + "No files in here" : "Keng Dokumenter hei", + "Upload some content or sync with your devices!" : "Lued Dateien erop oder synchroniséier se mat dengen Appartaten", "No entries found in this folder" : "Keng Elementer an dësem Dossier fonnt", "Select all" : "All auswielen", "Upload too large" : "Upload ze grouss", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Déi Dateien déi Dir probéiert erop ze lueden sinn méi grouss wei déi Maximal Gréisst déi op dësem Server erlaabt ass.", - "Text file" : "Text Fichier" + "No favorites" : "Keng Favoriten", + "Files and folders you mark as favorite will show up here" : "Hei gesais du deng Favoriten", + "Shared with you" : "Mat dir gedeelt", + "Shared with others" : "Mat aaneren gedeelt", + "Shared by link" : "Mat engem Link gedeelt", + "Tags" : "Tags", + "Deleted files" : "Geläschten Dateien", + "Text file" : "Text Fichier", + "New text file.txt" : "Neien Text file.txt", + "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["{hours}:{minutes}:{seconds} Stonn iwwereg","{hours}:{minutes}:{seconds} Stonnen iwwereg"], + "{hours}:{minutes}h" : "{hours}:{minutes} Stonnen", + "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["{minutes}:{seconds} Minute iwwereg","{minutes}:{seconds} Minuten iwwereg"], + "{minutes}:{seconds}m" : "{minutes}:{seconds} Minuten", + "_{seconds} second left_::_{seconds} seconds left_" : ["{seconds} Sekonn iwwereg","{seconds} Sekonnen iwwereg"], + "{seconds}s" : "{seconds}s", + "Any moment now..." : "An engen Moment", + "Soon..." : "Geschwënn", + "File upload is in progress. Leaving the page now will cancel the upload." : "File Upload am gaang. Wann's de des Säit verléiss gëtt den Upload ofgebrach." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/lb.json b/apps/files/l10n/lb.json index 67da26b1ece..a00689bcec8 100644 --- a/apps/files/l10n/lb.json +++ b/apps/files/l10n/lb.json @@ -1,48 +1,141 @@ { "translations": { + "Storage is temporarily not available" : "Späicherplaatz temporär net erreeschbar", + "Storage invalid" : "Späicherplatz net gülteg", "Unknown error" : "Et ass en onbekannte Fehler opgetrueden", - "There is no error, the file uploaded with success" : "Keen Feeler, Datei ass komplett ropgelueden ginn", - "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Déi ropgelueden Datei ass méi grouss wei d'MAX_FILE_SIZE Eegenschaft déi an der HTML form uginn ass", - "The uploaded file was only partially uploaded" : "Déi ropgelueden Datei ass nëmmen hallef ropgelueden ginn", - "No file was uploaded" : "Et ass kee Fichier ropgeluede ginn", - "Missing a temporary folder" : "Et feelt en temporären Dossier", - "Failed to write to disk" : "Konnt net op den Disk schreiwen", - "Files" : "Dateien", "All files" : "All d'Fichieren", + "Recent" : "Rezent", + "File could not be found" : "Datei konnt net fonnt ginn", "Home" : "Doheem", "Close" : "Zoumaachen", "Favorites" : "Favoriten", + "Could not create folder \"{dir}\"" : "Dossier \"{dir}\" konnt net erstallt ginn", "Upload cancelled." : "Upload ofgebrach.", + "Unable to upload {filename} as it is a directory or has 0 bytes" : "{filename} konnt eropgelueden ginn, well et een Dossier ass oder d'Datei 0 Bytes huet", + "Not enough free space, you are uploading {size1} but only {size2} is left" : "Net genuch Späicher, du probéiers {size1} eropzelueden, et ass awer nëmmen méi {size2} fräi", + "Target folder \"{dir}\" does not exist any more" : "Den Dossier \"{dir}\" existéiert net méi", + "Not enough free space" : "Nët genuch Späicherplaatz", "Uploading..." : "Lueden erop...", "..." : "...", - "File upload is in progress. Leaving the page now will cancel the upload." : "File Upload am gaang. Wann's de des Säit verléiss gëtt den Upload ofgebrach.", + "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} vun {totalSize} ({bitrate})", + "Actions" : "Aktiounen", "Download" : "Download", "Rename" : "Ëmbenennen", + "Move" : "Verschieben", + "Target folder" : "Ziel Dossier", "Delete" : "Läschen", + "Disconnect storage" : "Net connectéierten Späicher", "Unshare" : "Net méi deelen", + "Could not load info for file \"{file}\"" : "Et konnten keng Informatiounen zu {file} gelueden ginn", + "Files" : "Dateien", "Details" : "Detailer", "Select" : "Auswielen", + "Pending" : "Ausstoend", + "Unable to determine date" : "Datum kann net festgestallt ginn", "This operation is forbidden" : "Dës Operatioun ass verbueden.", "This directory is unavailable, please check the logs or contact the administrator" : "Dësen Dossier ass net disponibel, w.e.g. kontrolléiert d'Logs oder kontaktéiert den Administrateur", + "Could not move \"{file}\", target exists" : "\"{file}\" konnt beweegt ginn. Et existéiert do schonn.", + "Could not move \"{file}\"" : "\"{file}\" konnt verreckelt ginn", + "{newName} already exists" : "{newName} gett et schon", + "Could not rename \"{fileName}\", it does not exist any more" : "\"{fileName}\" konnt embenannt ginn, well et net méi existéiert", + "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "\"{targetName}\" konnt net gesat ginn, well dësen schon am Dossier \"{dir}\" existéiert. Wiel weg. een aaneren", + "Could not rename \"{fileName}\"" : "\"{fileName}\" konnt net embenannt ginn", + "Could not create file \"{file}\"" : "\"{file}\" konnt net erstallt ginn", + "Could not create file \"{file}\" because it already exists" : "\"{file}\" konnt net erstallt ginn, well des schon existéiert", + "Could not create folder \"{dir}\" because it already exists" : "Den Dossier \"{dir}\" konnt net erstallt ginn, well desen schon existéiert", + "Error deleting file \"{fileName}\"." : "Fehler beim läschen vun \"{fileName}\".", + "No search results in other folders for {tag}{filter}{endtag}" : "Keng Resultater an aneren Dossieren fir {tag}{filter}{endtag} fonnt", "Name" : "Numm", "Size" : "Gréisst", "Modified" : "Geännert", + "_%n folder_::_%n folders_" : ["¦%n Dossier","¦%n Dossieren"], + "_%n file_::_%n files_" : ["¦%n Datei","¦%n Dateien"], + "{dirs} and {files}" : "{dirs} an {files}", + "_including %n hidden_::_including %n hidden_" : ["Beinhaltet ¦%n verstoppte Saach","Beinhaltet ¦%n verstoppte Saachen"], + "You don’t have permission to upload or create files here" : "Du hues net genuch Rechter hei Dokumenter eropzelueden oder ze erstellen", + "_Uploading %n file_::_Uploading %n files_" : ["Am Gaangen ¦%n Datei eropzelueden","Am Gaangen ¦%n Dateien eropzelueden"], "New" : "Nei", - "\"{name}\" is an invalid file name." : "\"{Numm}\" ass een ongültegen Numm fir e Fichier.", - "File name cannot be empty." : "Den Numm vum Fichier kann net eidel sinn.", + "\"{name}\" is an invalid file name." : "\"{name}\" ass een ongültegen Numm", + "File name cannot be empty." : "D'Datei kann net eidel sinn", + "\"{name}\" is not an allowed filetype" : "\"{name}\" ass een ongültegen Typ vun Datei", + "Storage of {owner} is full, files can not be updated or synced anymore!" : "Späicher vum {owener} ass voll, et kennen keng Dokumenter méi eropgelueden oder synchroniséiert ginn!", + "Your storage is full, files can not be updated or synced anymore!" : "Däin Späicher ass voll, et kennen keng Dateien méi eropgeluden oder synchrosniséiert ginn", + "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Späicher vum {owner} ass baal voll ({usedSpacePercent}%)", + "Your storage is almost full ({usedSpacePercent}%)" : "Däin Späicher ass baal voll ({usedSpacePercent}%)", + "_matches '{filter}'_::_match '{filter}'_" : ["entsprecht","entspriechen"], + "View in folder" : "Kuk am Dossier ", + "Path" : "Pad", + "_%n byte_::_%n bytes_" : ["¦%n Byte","¦%n Byte"], + "Favorited" : "Favoriséiert", + "Favorite" : "Favorit", + "Copy local link" : "Lokale Link kopéiert", "Folder" : "Dossier", "New folder" : "Neien Dossier", "Upload" : "Eroplueden", - "Upload (max. %s)" : "Eroplueden (max. %s)", + "An error occurred while trying to update the tags" : "Beim Updaten vun den Tags ass e Fehler entstaanen", + "Added to favorites" : "Zu den Favoriten dobaigesat", + "Removed from favorites" : "Vun den Favoriten eweggeholl", + "You added {file} to your favorites" : "Du hues {file} zu denger Favortiten dobäigesat", + "You removed {file} from your favorites" : "Du hues {file} aus dengen Favortiten geläscht", + "File changes" : "Datei Ännerungen", + "Created by {user}" : "Erstallt vum {user}", + "Changed by {user}" : "Geännert vum {user}", + "Deleted by {user}" : "Geläscht vum {user}", + "Restored by {user}" : "Erem hier gestallt vum {user}", + "Renamed by {user}" : "Embenannt vum {user}", + "Moved by {user}" : "Beweegt vum {user}", + "You created {file}" : "Du hues {file} erstallt", + "{user} created {file}" : "Den {user} huet {file} erstallt", + "{file} was created in a public folder" : "{file} ass an engem ëffentlechen Dossier erstallt ginn", + "You changed {file}" : "Du hues {file} verännert", + "{user} changed {file}" : "Den {user} huet {file} verännert", + "You deleted {file}" : "Du hues {file} geläscht", + "{user} deleted {file}" : "Den {user} huet {file} geläscht", + "You restored {file}" : "Du hues {file} erem hier gestallt", + "{user} restored {file}" : "Den {user} huet {file} erem hier gestallt", + "You renamed {oldfile} to {newfile}" : "Du hues {oldfile} zu {newfile} embenannt", + "{user} renamed {oldfile} to {newfile}" : "Den {user} huet {oldfile} zu {newfile} embenannt", + "You moved {oldfile} to {newfile}" : "Du hues {oldfile} zu {newfile} verreckelt", + "{user} moved {oldfile} to {newfile}" : "Den {user} huet {oldfile} zu {newfile} verreckelt", + "A file has been added to or removed from your <strong>favorites</strong>" : "Eng Datei gouf zu dengen Favoriten <strong> dobäigesat </strong> oder aus dengen Favortien <strong> geläscht </strong>", + "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "Eng Datei gouf <strong> verännert</strong> oder <strong> embenannt</strong>", + "A new file or folder has been <strong>created</strong>" : "Eng nei Datei oder e neien Dossier gouf <strong> erstallt </strong>", + "A new file or folder has been <strong>deleted</strong>" : "Eng Datei oder en Dossier gouf <strong> geläscht</strong>", + "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Limitéier Notifikatiounen op d'Erstellen an Veränneren vun dengen <strong> Favoriten</strong> (nëmmen Floss)", + "A new file or folder has been <strong>restored</strong>" : "Eng Datei oder en Dossier gouf <strong> erem hier gestallt</strong>", + "Upload (max. %s)" : "Upload (maximal ¦%s)", "File handling" : "Fichier handling", "Maximum upload size" : "Maximum Upload Gréisst ", "max. possible: " : "max. méiglech:", "Save" : "Späicheren", + "With PHP-FPM it might take 5 minutes for changes to be applied." : "Mat PHP-FPM kann et 5 Minutten dauern bis d'Ännerungen iwwerholl goufen", + "Missing permissions to edit from here." : "Net genuch Recher fir hei eppes ze veränneren", "Settings" : "Astellungen", - "No files in here" : "Hei sinn keng Fichieren", + "Show hidden files" : "Weis déi verstoppten Dateien", + "WebDAV" : "WebDAV", + "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Benotz dess Address <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">, fir op deng Dateien via WebDAV zouzegräifen</a>", + "No files in here" : "Keng Dokumenter hei", + "Upload some content or sync with your devices!" : "Lued Dateien erop oder synchroniséier se mat dengen Appartaten", "No entries found in this folder" : "Keng Elementer an dësem Dossier fonnt", "Select all" : "All auswielen", "Upload too large" : "Upload ze grouss", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Déi Dateien déi Dir probéiert erop ze lueden sinn méi grouss wei déi Maximal Gréisst déi op dësem Server erlaabt ass.", - "Text file" : "Text Fichier" + "No favorites" : "Keng Favoriten", + "Files and folders you mark as favorite will show up here" : "Hei gesais du deng Favoriten", + "Shared with you" : "Mat dir gedeelt", + "Shared with others" : "Mat aaneren gedeelt", + "Shared by link" : "Mat engem Link gedeelt", + "Tags" : "Tags", + "Deleted files" : "Geläschten Dateien", + "Text file" : "Text Fichier", + "New text file.txt" : "Neien Text file.txt", + "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["{hours}:{minutes}:{seconds} Stonn iwwereg","{hours}:{minutes}:{seconds} Stonnen iwwereg"], + "{hours}:{minutes}h" : "{hours}:{minutes} Stonnen", + "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["{minutes}:{seconds} Minute iwwereg","{minutes}:{seconds} Minuten iwwereg"], + "{minutes}:{seconds}m" : "{minutes}:{seconds} Minuten", + "_{seconds} second left_::_{seconds} seconds left_" : ["{seconds} Sekonn iwwereg","{seconds} Sekonnen iwwereg"], + "{seconds}s" : "{seconds}s", + "Any moment now..." : "An engen Moment", + "Soon..." : "Geschwënn", + "File upload is in progress. Leaving the page now will cancel the upload." : "File Upload am gaang. Wann's de des Säit verléiss gëtt den Upload ofgebrach." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js index 154b72567c7..5ae55d039ca 100644 --- a/apps/files/l10n/pt_BR.js +++ b/apps/files/l10n/pt_BR.js @@ -1,7 +1,7 @@ OC.L10N.register( "files", { - "Storage is temporarily not available" : "Storage esta, temporariamente, indisponÃvel", + "Storage is temporarily not available" : "Storage esté temporariamente indisponÃvel", "Storage invalid" : "Armazenamento inválido", "Unknown error" : "Erro desconhecido", "All files" : "Todos os arquivos", @@ -34,17 +34,18 @@ OC.L10N.register( "Pending" : "Pendente", "Unable to determine date" : "ImpossÃvel determinar a data", "This operation is forbidden" : "Esta operação é proibida", - "This directory is unavailable, please check the logs or contact the administrator" : "Este diretório não está disponÃvel, por favor, verifique os logs ou entre em contato com o administrador", - "Could not move \"{file}\", target exists" : "Não foi possÃvel mover o \"{file}\", o alvo já existe", + "This directory is unavailable, please check the logs or contact the administrator" : "Este diretório não está disponÃvel, por favor verifique os logs ou entre em contato com o administrador", + "Could not move \"{file}\", target exists" : "Não foi possÃvel mover o \"{file}\", o destino já existe", "Could not move \"{file}\"" : "Não foi possÃvel mover \"{file}\"", "{newName} already exists" : "{newName} já existe", - "Could not rename \"{fileName}\", it does not exist any more" : "Não foi possÃvel renomear \"{fileName}\", ele já não existe", - "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "O nome \"{targetName}\" já está sendo usado na pasta \"{dir}\". Por favor escolha um outro nome.", + "Could not rename \"{fileName}\", it does not exist any more" : "Não foi possÃvel renomear \"{fileName}\", ele não existe mais", + "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "O nome \"{targetName}\" já está sendo usado na pasta \"{dir}\". Por favor escolha outro nome.", "Could not rename \"{fileName}\"" : "Não foi possÃvel renomear \"{fileName}\"", "Could not create file \"{file}\"" : "Não foi possÃvel criar o arquivo \"{file}\"", "Could not create file \"{file}\" because it already exists" : "Não foi possÃvel criar o arquivo \"{file}\" porque ele já existe", "Could not create folder \"{dir}\" because it already exists" : "Não foi possÃvel criar a pasta \"{dir}\" porque ela já existe", - "Error deleting file \"{fileName}\"." : "Ocorreu um erro ao apagar o arquivo \"{fileName}\".", + "Error deleting file \"{fileName}\"." : "Ocorreu um erro ao excluir o arquivo \"{fileName}\".", + "No search results in other folders for {tag}{filter}{endtag}" : "Sem resultados de pesquisa em outras pastas para {tag}{filter}{endtag}", "Name" : "Nome", "Size" : "Tamanho", "Modified" : "Modificado", @@ -57,6 +58,7 @@ OC.L10N.register( "New" : "Novo", "\"{name}\" is an invalid file name." : "\"{name}\" é um nome de arquivo inválido.", "File name cannot be empty." : "O nome do arquivo não pode estar vazio.", + "\"{name}\" is not an allowed filetype" : "\"{name}\" não é um tipo de arquivo válido", "Storage of {owner} is full, files can not be updated or synced anymore!" : "Armazenamento do {owner} está cheio, os arquivos não podem ser mais atualizados ou sincronizados!", "Your storage is full, files can not be updated or synced anymore!" : "Seu armazenamento está cheio, arquivos não podem mais ser atualizados ou sincronizados!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Armazenamento do {owner} está quase cheio ({usedSpacePercent}%)", @@ -65,7 +67,7 @@ OC.L10N.register( "View in folder" : "Exibir na pasta", "Path" : "Caminho", "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], - "Favorited" : "Favorito", + "Favorited" : "Favoritado", "Favorite" : "Favorito", "Copy local link" : "Copiar link local", "Folder" : "Pasta", @@ -108,7 +110,7 @@ OC.L10N.register( "max. possible: " : "max. possÃvel:", "Save" : "Salvar", "With PHP-FPM it might take 5 minutes for changes to be applied." : "Com PHP-FPM pode demorar 5 minutos para que as alterações sejam aplicadas.", - "Missing permissions to edit from here." : "Faltando permissões para editar a partir daqui.", + "Missing permissions to edit from here." : "Faltando permissões para editar aqui.", "Settings" : "Configurações", "Show hidden files" : "Mostrar arquivos ocultos", "WebDAV" : "WebDAV", @@ -118,10 +120,10 @@ OC.L10N.register( "No entries found in this folder" : "Nenhuma entrada foi encontrada nesta pasta", "Select all" : "Selecionar tudo", "Upload too large" : "Arquivo muito grande para envio", - "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Os arquivos que você está tentando enviar excedeu o tamanho máximo para arquivos no servidor.", + "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Os arquivos que você está tentando enviar excederam o tamanho máximo para arquivos no servidor.", "No favorites" : "Sem favoritos", "Files and folders you mark as favorite will show up here" : "Arquivos e pastas que você marcou como favoritos são mostrados aqui", - "Shared with you" : "Compartilhado com voce", + "Shared with you" : "Compartilhado com você", "Shared with others" : "Compartilhado com outros", "Shared by link" : "Compartilhado via link", "Tags" : "Tags", @@ -130,9 +132,9 @@ OC.L10N.register( "New text file.txt" : "Novo texto file.txt", "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["{hours}:{minutes}:{seconds} hora restante","{hours}:{minutes}:{seconds} horas restantes"], "{hours}:{minutes}h" : "{hours}:{minutes}h", - "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["{minutes}:{seconds} minutos retantes","{minutes}:{seconds} minutos retantes"], + "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["{minutes}:{seconds} minutos retantes","{minutes}:{seconds} minutos restantes"], "{minutes}:{seconds}m" : "{minutes}:{seconds}m", - "_{seconds} second left_::_{seconds} seconds left_" : ["{seconds} segundos restantes","{seconds} secondos restantes"], + "_{seconds} second left_::_{seconds} seconds left_" : ["{seconds} segundos restantes","{seconds} segundos restantes"], "{seconds}s" : "{seconds}s", "Any moment now..." : "A qualquer momento...", "Soon..." : "Logo...", diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json index 4e1ba96e2ee..d263544e0e4 100644 --- a/apps/files/l10n/pt_BR.json +++ b/apps/files/l10n/pt_BR.json @@ -1,5 +1,5 @@ { "translations": { - "Storage is temporarily not available" : "Storage esta, temporariamente, indisponÃvel", + "Storage is temporarily not available" : "Storage esté temporariamente indisponÃvel", "Storage invalid" : "Armazenamento inválido", "Unknown error" : "Erro desconhecido", "All files" : "Todos os arquivos", @@ -32,17 +32,18 @@ "Pending" : "Pendente", "Unable to determine date" : "ImpossÃvel determinar a data", "This operation is forbidden" : "Esta operação é proibida", - "This directory is unavailable, please check the logs or contact the administrator" : "Este diretório não está disponÃvel, por favor, verifique os logs ou entre em contato com o administrador", - "Could not move \"{file}\", target exists" : "Não foi possÃvel mover o \"{file}\", o alvo já existe", + "This directory is unavailable, please check the logs or contact the administrator" : "Este diretório não está disponÃvel, por favor verifique os logs ou entre em contato com o administrador", + "Could not move \"{file}\", target exists" : "Não foi possÃvel mover o \"{file}\", o destino já existe", "Could not move \"{file}\"" : "Não foi possÃvel mover \"{file}\"", "{newName} already exists" : "{newName} já existe", - "Could not rename \"{fileName}\", it does not exist any more" : "Não foi possÃvel renomear \"{fileName}\", ele já não existe", - "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "O nome \"{targetName}\" já está sendo usado na pasta \"{dir}\". Por favor escolha um outro nome.", + "Could not rename \"{fileName}\", it does not exist any more" : "Não foi possÃvel renomear \"{fileName}\", ele não existe mais", + "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "O nome \"{targetName}\" já está sendo usado na pasta \"{dir}\". Por favor escolha outro nome.", "Could not rename \"{fileName}\"" : "Não foi possÃvel renomear \"{fileName}\"", "Could not create file \"{file}\"" : "Não foi possÃvel criar o arquivo \"{file}\"", "Could not create file \"{file}\" because it already exists" : "Não foi possÃvel criar o arquivo \"{file}\" porque ele já existe", "Could not create folder \"{dir}\" because it already exists" : "Não foi possÃvel criar a pasta \"{dir}\" porque ela já existe", - "Error deleting file \"{fileName}\"." : "Ocorreu um erro ao apagar o arquivo \"{fileName}\".", + "Error deleting file \"{fileName}\"." : "Ocorreu um erro ao excluir o arquivo \"{fileName}\".", + "No search results in other folders for {tag}{filter}{endtag}" : "Sem resultados de pesquisa em outras pastas para {tag}{filter}{endtag}", "Name" : "Nome", "Size" : "Tamanho", "Modified" : "Modificado", @@ -55,6 +56,7 @@ "New" : "Novo", "\"{name}\" is an invalid file name." : "\"{name}\" é um nome de arquivo inválido.", "File name cannot be empty." : "O nome do arquivo não pode estar vazio.", + "\"{name}\" is not an allowed filetype" : "\"{name}\" não é um tipo de arquivo válido", "Storage of {owner} is full, files can not be updated or synced anymore!" : "Armazenamento do {owner} está cheio, os arquivos não podem ser mais atualizados ou sincronizados!", "Your storage is full, files can not be updated or synced anymore!" : "Seu armazenamento está cheio, arquivos não podem mais ser atualizados ou sincronizados!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Armazenamento do {owner} está quase cheio ({usedSpacePercent}%)", @@ -63,7 +65,7 @@ "View in folder" : "Exibir na pasta", "Path" : "Caminho", "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], - "Favorited" : "Favorito", + "Favorited" : "Favoritado", "Favorite" : "Favorito", "Copy local link" : "Copiar link local", "Folder" : "Pasta", @@ -106,7 +108,7 @@ "max. possible: " : "max. possÃvel:", "Save" : "Salvar", "With PHP-FPM it might take 5 minutes for changes to be applied." : "Com PHP-FPM pode demorar 5 minutos para que as alterações sejam aplicadas.", - "Missing permissions to edit from here." : "Faltando permissões para editar a partir daqui.", + "Missing permissions to edit from here." : "Faltando permissões para editar aqui.", "Settings" : "Configurações", "Show hidden files" : "Mostrar arquivos ocultos", "WebDAV" : "WebDAV", @@ -116,10 +118,10 @@ "No entries found in this folder" : "Nenhuma entrada foi encontrada nesta pasta", "Select all" : "Selecionar tudo", "Upload too large" : "Arquivo muito grande para envio", - "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Os arquivos que você está tentando enviar excedeu o tamanho máximo para arquivos no servidor.", + "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Os arquivos que você está tentando enviar excederam o tamanho máximo para arquivos no servidor.", "No favorites" : "Sem favoritos", "Files and folders you mark as favorite will show up here" : "Arquivos e pastas que você marcou como favoritos são mostrados aqui", - "Shared with you" : "Compartilhado com voce", + "Shared with you" : "Compartilhado com você", "Shared with others" : "Compartilhado com outros", "Shared by link" : "Compartilhado via link", "Tags" : "Tags", @@ -128,9 +130,9 @@ "New text file.txt" : "Novo texto file.txt", "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["{hours}:{minutes}:{seconds} hora restante","{hours}:{minutes}:{seconds} horas restantes"], "{hours}:{minutes}h" : "{hours}:{minutes}h", - "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["{minutes}:{seconds} minutos retantes","{minutes}:{seconds} minutos retantes"], + "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["{minutes}:{seconds} minutos retantes","{minutes}:{seconds} minutos restantes"], "{minutes}:{seconds}m" : "{minutes}:{seconds}m", - "_{seconds} second left_::_{seconds} seconds left_" : ["{seconds} segundos restantes","{seconds} secondos restantes"], + "_{seconds} second left_::_{seconds} seconds left_" : ["{seconds} segundos restantes","{seconds} segundos restantes"], "{seconds}s" : "{seconds}s", "Any moment now..." : "A qualquer momento...", "Soon..." : "Logo...", diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js index b8981373ddd..397710545cb 100644 --- a/apps/files/l10n/ru.js +++ b/apps/files/l10n/ru.js @@ -87,7 +87,7 @@ OC.L10N.register( "Moved by {user}" : "Перемещено {user}", "You created {file}" : "Ð’Ñ‹ Ñоздали {file}", "{user} created {file}" : "{user} Ñоздал {file}", - "{file} was created in a public folder" : "{file} Ñоздан в общем каталоге", + "{file} was created in a public folder" : "{file} Ñоздан в общедоÑтупом каталоге", "You changed {file}" : "Ð’Ñ‹ изменили {file}", "{user} changed {file}" : "{user} изменил {file}", "You deleted {file}" : "Ð’Ñ‹ удалили {file}", diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json index 3e41f1eef87..7e8801c8a9f 100644 --- a/apps/files/l10n/ru.json +++ b/apps/files/l10n/ru.json @@ -85,7 +85,7 @@ "Moved by {user}" : "Перемещено {user}", "You created {file}" : "Ð’Ñ‹ Ñоздали {file}", "{user} created {file}" : "{user} Ñоздал {file}", - "{file} was created in a public folder" : "{file} Ñоздан в общем каталоге", + "{file} was created in a public folder" : "{file} Ñоздан в общедоÑтупом каталоге", "You changed {file}" : "Ð’Ñ‹ изменили {file}", "{user} changed {file}" : "{user} изменил {file}", "You deleted {file}" : "Ð’Ñ‹ удалили {file}", diff --git a/apps/files_external/js/settings.js b/apps/files_external/js/settings.js index 976c0c00b89..4e35ea531eb 100644 --- a/apps/files_external/js/settings.js +++ b/apps/files_external/js/settings.js @@ -960,7 +960,7 @@ MountConfigListView.prototype = _.extend({ success: function(result) { var onCompletion = jQuery.Deferred(); $.each(result, function(i, storageParams) { - storageParams.mountPoint = storageParams.mountPoint.substr(1); // trim leading slash + storageParams.mountPoint = (storageParams.mountPoint === '/')? '/' : storageParams.mountPoint.substr(1); // trim leading slash var storageConfig = new self._storageConfigClass(); _.extend(storageConfig, storageParams); var $tr = self.newStorage(storageConfig, onCompletion); diff --git a/apps/files_external/l10n/es_MX.js b/apps/files_external/l10n/es_MX.js index be4478ab639..5f3f0059988 100644 --- a/apps/files_external/l10n/es_MX.js +++ b/apps/files_external/l10n/es_MX.js @@ -1,27 +1,118 @@ OC.L10N.register( "files_external", { + "Fetching request tokens failed. Verify that your app key and secret are correct." : "Se presentó una falla al buscar las fichas de solicitud. Favor de verificar que su llave de aplicación y su secreto sean correctos. ", + "Fetching access tokens failed. Verify that your app key and secret are correct." : "Se presentó una falla al buscar las fichas de acceso. Favor de verificar que su llave de aplicación y su secreto sean correctos. ", + "Please provide a valid app key and secret." : "Favor de proporcionar una llave de aplicación y secreto válidos.", + "Step 1 failed. Exception: %s" : "Falla en el paso 1: Excepción %s", + "Step 2 failed. Exception: %s" : "Paso 2 falló. Excepción: %s", "External storage" : "Almacenamiento externo", + "Dropbox App Configuration" : "Configuración de la aplicación Dropbox", + "Google Drive App Configuration" : "Configuración de Aplicación Google Drive", "Personal" : "Personal", + "System" : "Sistema", "Grant access" : "Conceder acceso", + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", + "Generate keys" : "Generar llaves", + "Error generating key pair" : "Se presentó un error al generar el juego de llaves", + "All users. Type to select user or group." : "Todos los usuarios. Escriba para seleccionar el usuario o grupo", + "(group)" : "(grupo)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Admin defined" : "Administrador definido", "Saved" : "Guardado", + "Saving..." : "Guardando...", + "Save" : "Guardar", + "Empty response from the server" : "Respuesta vacÃa del servidor", + "Couldn't access. Please logout and login to activate this mount point" : "No fue posible accesar. Favor de salir e iniciar sesión para activar este punto de montaje", + "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", + "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", + "There was an error with message: " : "Se presentó un problema con el mensaje:", + "External mount error" : "Error de montaje externo", + "external-storage" : "almacenamiento externo", + "Couldn't get the list of Windows network drive mount points: empty response from the server" : "No fue posible obtener el listado de los puntos de montaje de la unidad de red de Windows: respuesta del servidor vacÃa ", + "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Algunos de los puntos de montaje externos configurados no se encuentran conectados. Favor de hacer click en los renglon(es) en rojo para más información", + "Please enter the credentials for the {mount} mount" : "Favor de ingresar las credenciales para el montaje {mount}", "Username" : "Nombre de usuario", "Password" : "Contraseña", - "Save" : "Guardar", + "Credentials saved" : "Credenciales guardadas", + "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", + "Credentials required" : "Se requieren credenciales", + "Storage with id \"%i\" not found" : "El almacenamiento con id \"%i\" no fue encontrado", + "Invalid mount point" : "Punto de montaje inválido", + "Objectstore forbidden" : "Objectstore prohibido", + "Not permitted to use authentication mechanism \"%s\"" : "No está permitido el uso del mecanismo de autenticación \"%s\"", + "Unsatisfied authentication mechanism parameters" : "Parametros no satisfechos del mecanismo de autenticación", + "Insufficient data: %s" : "Datos insuficientes: %s", + "%s" : "%s", + "Storage with id \"%i\" is not user editable" : "El almacenamiento con id \"%i\" no puede ser editado por el usuario", + "Access key" : "Llave de acceso", + "Secret key" : "Llave secreta", + "Builtin" : "Integrado", "None" : "Ninguno", - "API key" : "clave API", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "OAuth2" : "OAuth2", + "Client ID" : "ID del cliente", + "OpenStack" : "OpenStack", + "Rackspace" : "Rackspace", + "API key" : "Llave de API", + "Global credentials" : "Credenciales globales", + "Username and password" : "Nombre de usuario y contraseña", + "Log-in credentials, save in session" : "Credenciales para iniciar sesión, guardar en la sesión", + "RSA public key" : "Llave pública RSA", "Public key" : "Llave pública", + "Amazon S3" : "Amazon S3", + "Hostname" : "Nombre del servidor", "Port" : "Puerto", + "Region" : "Región", + "Enable SSL" : "Habilitar SSL", + "Enable Path Style" : "Habilitar Estilo de Ruta", "WebDAV" : "WebDAV", "URL" : "URL", + "Remote subfolder" : "Subcarpeta remota", + "Secure https://" : "Asegurar https:// ", + "Dropbox" : "Dropbox", + "FTP" : "FTP", "Host" : "Servidor", + "Google Drive" : "Google Drive", + "Local" : "Local", "Location" : "Ubicación", + "Nextcloud" : "Nextcloud", + "SFTP" : "SFTP", + "Root" : "RaÃz", + "SFTP with secret key login" : "Inicio de sesión SFTP con llave secreta", + "SMB / CIFS" : "SMB / CIFS", "Share" : "Compartir", + "Domain" : "Dominio", + "SMB / CIFS using OC login" : "SMB / CIFS usando inicio de sesión OC", + "Username as share" : "Nombre de usuario como elemento compartido", + "OpenStack Object Storage" : "OpenStack Object Storage", + "Service name" : "Nombre del servicio", + "Request timeout (seconds)" : "Tiemo de vida de la solicitud (segudos)", + "External storages" : "Almacenamiento externo", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para cURL en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Favor de solicitar a su administador su instalación. ", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Favor de solicitar a su administador su instalación. ", + "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Favor de solicitar a su administrador su instalación. ", + "No external storage configured" : "No se ha configurado el almacenamiento externo", + "You can add external storages in the personal settings" : "Usted puede agregar almacenamiento externo en los ajustes personales", "Name" : "Nombre", - "External Storage" : "Almacenamiento externo", + "Storage type" : "Tipo de almacenamiento", + "Scope" : "Alcance", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar previsualizaciones", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", "Folder name" : "Nombre de la carpeta", + "Authentication" : "Autenticación", "Configuration" : "Configuración", - "Add storage" : "Añadir almacenamiento", - "Delete" : "Eliminar" + "Available for" : "Disponible para", + "Add storage" : "Agregar almacenamiento", + "Advanced settings" : "Ajustes avanzados", + "Delete" : "Borrar", + "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo", + "Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/es_MX.json b/apps/files_external/l10n/es_MX.json index b37b125f036..de461f7d23e 100644 --- a/apps/files_external/l10n/es_MX.json +++ b/apps/files_external/l10n/es_MX.json @@ -1,25 +1,116 @@ { "translations": { + "Fetching request tokens failed. Verify that your app key and secret are correct." : "Se presentó una falla al buscar las fichas de solicitud. Favor de verificar que su llave de aplicación y su secreto sean correctos. ", + "Fetching access tokens failed. Verify that your app key and secret are correct." : "Se presentó una falla al buscar las fichas de acceso. Favor de verificar que su llave de aplicación y su secreto sean correctos. ", + "Please provide a valid app key and secret." : "Favor de proporcionar una llave de aplicación y secreto válidos.", + "Step 1 failed. Exception: %s" : "Falla en el paso 1: Excepción %s", + "Step 2 failed. Exception: %s" : "Paso 2 falló. Excepción: %s", "External storage" : "Almacenamiento externo", + "Dropbox App Configuration" : "Configuración de la aplicación Dropbox", + "Google Drive App Configuration" : "Configuración de Aplicación Google Drive", "Personal" : "Personal", + "System" : "Sistema", "Grant access" : "Conceder acceso", + "Error configuring OAuth1" : "Se presentó un error al configurar OAuth1", + "Error configuring OAuth2" : "Se presentó un error al configurar OAuth2", + "Generate keys" : "Generar llaves", + "Error generating key pair" : "Se presentó un error al generar el juego de llaves", + "All users. Type to select user or group." : "Todos los usuarios. Escriba para seleccionar el usuario o grupo", + "(group)" : "(grupo)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibilidad con codificación Mac NFD (lenta)", + "Admin defined" : "Administrador definido", "Saved" : "Guardado", + "Saving..." : "Guardando...", + "Save" : "Guardar", + "Empty response from the server" : "Respuesta vacÃa del servidor", + "Couldn't access. Please logout and login to activate this mount point" : "No fue posible accesar. Favor de salir e iniciar sesión para activar este punto de montaje", + "Couldn't get the information from the remote server: {code} {type}" : "No fue posible obtener la información del servidor remoto: {code} {type}", + "Couldn't get the list of external mount points: {type}" : "No fue posible obtener la lista de puntos de montaje externos: {type}", + "There was an error with message: " : "Se presentó un problema con el mensaje:", + "External mount error" : "Error de montaje externo", + "external-storage" : "almacenamiento externo", + "Couldn't get the list of Windows network drive mount points: empty response from the server" : "No fue posible obtener el listado de los puntos de montaje de la unidad de red de Windows: respuesta del servidor vacÃa ", + "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Algunos de los puntos de montaje externos configurados no se encuentran conectados. Favor de hacer click en los renglon(es) en rojo para más información", + "Please enter the credentials for the {mount} mount" : "Favor de ingresar las credenciales para el montaje {mount}", "Username" : "Nombre de usuario", "Password" : "Contraseña", - "Save" : "Guardar", + "Credentials saved" : "Credenciales guardadas", + "Credentials saving failed" : "Se ha presentado una falla al guardar las credenciales", + "Credentials required" : "Se requieren credenciales", + "Storage with id \"%i\" not found" : "El almacenamiento con id \"%i\" no fue encontrado", + "Invalid mount point" : "Punto de montaje inválido", + "Objectstore forbidden" : "Objectstore prohibido", + "Not permitted to use authentication mechanism \"%s\"" : "No está permitido el uso del mecanismo de autenticación \"%s\"", + "Unsatisfied authentication mechanism parameters" : "Parametros no satisfechos del mecanismo de autenticación", + "Insufficient data: %s" : "Datos insuficientes: %s", + "%s" : "%s", + "Storage with id \"%i\" is not user editable" : "El almacenamiento con id \"%i\" no puede ser editado por el usuario", + "Access key" : "Llave de acceso", + "Secret key" : "Llave secreta", + "Builtin" : "Integrado", "None" : "Ninguno", - "API key" : "clave API", + "OAuth1" : "OAuth1", + "App key" : "Llave de la aplicación", + "OAuth2" : "OAuth2", + "Client ID" : "ID del cliente", + "OpenStack" : "OpenStack", + "Rackspace" : "Rackspace", + "API key" : "Llave de API", + "Global credentials" : "Credenciales globales", + "Username and password" : "Nombre de usuario y contraseña", + "Log-in credentials, save in session" : "Credenciales para iniciar sesión, guardar en la sesión", + "RSA public key" : "Llave pública RSA", "Public key" : "Llave pública", + "Amazon S3" : "Amazon S3", + "Hostname" : "Nombre del servidor", "Port" : "Puerto", + "Region" : "Región", + "Enable SSL" : "Habilitar SSL", + "Enable Path Style" : "Habilitar Estilo de Ruta", "WebDAV" : "WebDAV", "URL" : "URL", + "Remote subfolder" : "Subcarpeta remota", + "Secure https://" : "Asegurar https:// ", + "Dropbox" : "Dropbox", + "FTP" : "FTP", "Host" : "Servidor", + "Google Drive" : "Google Drive", + "Local" : "Local", "Location" : "Ubicación", + "Nextcloud" : "Nextcloud", + "SFTP" : "SFTP", + "Root" : "RaÃz", + "SFTP with secret key login" : "Inicio de sesión SFTP con llave secreta", + "SMB / CIFS" : "SMB / CIFS", "Share" : "Compartir", + "Domain" : "Dominio", + "SMB / CIFS using OC login" : "SMB / CIFS usando inicio de sesión OC", + "Username as share" : "Nombre de usuario como elemento compartido", + "OpenStack Object Storage" : "OpenStack Object Storage", + "Service name" : "Nombre del servicio", + "Request timeout (seconds)" : "Tiemo de vida de la solicitud (segudos)", + "External storages" : "Almacenamiento externo", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para cURL en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Favor de solicitar a su administador su instalación. ", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Favor de solicitar a su administador su instalación. ", + "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Favor de solicitar a su administrador su instalación. ", + "No external storage configured" : "No se ha configurado el almacenamiento externo", + "You can add external storages in the personal settings" : "Usted puede agregar almacenamiento externo en los ajustes personales", "Name" : "Nombre", - "External Storage" : "Almacenamiento externo", + "Storage type" : "Tipo de almacenamiento", + "Scope" : "Alcance", + "Enable encryption" : "Habilitar encripción", + "Enable previews" : "Habilitar previsualizaciones", + "Enable sharing" : "Habilitar compartir", + "Check for changes" : "Verificar si hay cambios", + "Never" : "Nunca", + "Once every direct access" : "Una vez cada acceso directo", "Folder name" : "Nombre de la carpeta", + "Authentication" : "Autenticación", "Configuration" : "Configuración", - "Add storage" : "Añadir almacenamiento", - "Delete" : "Eliminar" + "Available for" : "Disponible para", + "Add storage" : "Agregar almacenamiento", + "Advanced settings" : "Ajustes avanzados", + "Delete" : "Borrar", + "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo", + "Allow users to mount the following external storage" : "Permitir a los usuarios montar el siguiente almacenamiento externo" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/fi.js b/apps/files_external/l10n/fi.js index 775874cf11a..ed06c92fe46 100644 --- a/apps/files_external/l10n/fi.js +++ b/apps/files_external/l10n/fi.js @@ -2,6 +2,8 @@ OC.L10N.register( "files_external", { "Fetching request tokens failed. Verify that your app key and secret are correct." : "Pyyntötunnisteen nouto epäonnistui. Tarkista että sovellusavaimesi ja -salaisuutesi ovat oikein.", + "Fetching access tokens failed. Verify that your app key and secret are correct." : "Pyyntötunnisteen haku epäonnistui. Tarkista että sovellusavaimesi ja -salaisuutesi ovat oikein.", + "Please provide a valid app key and secret." : "Sovellusavain ja salaus ovat virheelliset", "Step 1 failed. Exception: %s" : "Vaihe 1 epäonnistui. Poikkeus: %s", "Step 2 failed. Exception: %s" : "Vaihe 2 epäonnistui. Poikkeus: %s", "External storage" : "Ulkoinen tallennustila", @@ -16,15 +18,18 @@ OC.L10N.register( "Error generating key pair" : "Virhe luotaessa avainparia", "All users. Type to select user or group." : "Kaikki käyttäjät. Kirjoita valitaksesi käyttäjän tai ryhmän.", "(group)" : "(ryhmä)", + "Compatibility with Mac NFD encoding (slow)" : "Yhteensopivuus Mac NFD enkoodauksen kanssa (hidas)", "Admin defined" : "Ylläpitäjän määrittämä", "Saved" : "Tallennettu", "Saving..." : "Tallennetaan...", "Save" : "Tallenna", "Empty response from the server" : "Tyhjä vastaus palvelimelta", "Couldn't access. Please logout and login to activate this mount point" : "Käyttö epäonnistui. Kirjaudu ulos ja takaisin sisään aktivoidaksesi tämän liitospisteen", + "Couldn't get the information from the remote server: {code} {type}" : "Tietojen saaminen etäpalvelimelta epäonnistui: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Erillisten liitospisteiden listauksen noutaminen epäonnistui: {type}", "There was an error with message: " : "Tapahtui virhe viestillä:", "External mount error" : "Ulkoinen liitosvirhe", + "external-storage" : "ulkoinen taltio", "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Windows-verkkoasemien liitospisteiden listauksen noutaminen epäonnistui: tyhjä vastaus palvelimelta", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Jotkin määritetyt erilliset liitospisteet eivät ole yhdistettynä. Napsauta punaisia rivejä saadaksesi lisätietoja", "Please enter the credentials for the {mount} mount" : "Anna kirjautumistiedot liitokselle {mount}", @@ -36,10 +41,15 @@ OC.L10N.register( "Storage with id \"%i\" not found" : "Tallennustilaa tunnisteella \"%i\" ei löytynyt", "Invalid backend or authentication mechanism class" : "Virheellinen tietovarasto tai tunnistautumismekanismin luokka", "Invalid mount point" : "Virheellinen liitoskohta", + "Objectstore forbidden" : "Objektimuisti estetty", "Invalid storage backend \"%s\"" : "Virheellinen tietovarasto \"%s\"", "Not permitted to use backend \"%s\"" : "Ei lupaa käyttää tietovarastoa \"%s\"", + "Not permitted to use authentication mechanism \"%s\"" : "Ei lupaa käyttää tunnistautumismekanismia \"%s\"", "Unsatisfied backend parameters" : "Riittämättömät tietovaraston parametrit", + "Unsatisfied authentication mechanism parameters" : "Riittämättömät tunnistautumismekanismin parametrit", + "Insufficient data: %s" : "Puutteellinen data: %s", "%s" : "%s", + "Storage with id \"%i\" is not user editable" : "Tallennustila, jolla on \"%i\" id, ei ole muokattavissa.", "Access key" : "Pääsyavain", "Secret key" : "Salainen avain", "Builtin" : "Sisäänrakennettu", @@ -52,17 +62,23 @@ OC.L10N.register( "Client secret" : "Asiakassalaisuus", "OpenStack" : "OpenStack", "Tenant name" : "Tenant nimi", + "Identity endpoint URL" : "Määritä URL päätepiste", "Rackspace" : "Rackspace", "API key" : "API-avain", + "Global credentials" : "Globaalit valtuudet", + "Log-in credentials, save in database" : "Kirjautumistiedot, tallennetaan tietokantaan", "Username and password" : "Käyttäjätunnus ja salasana", "Log-in credentials, save in session" : "Kirjautumistiedot, tallenna istuntoon", "User entered, store in database" : "Käyttäjän antama, tallennettu tietokantaan", "RSA public key" : "Julkinen RSA-avain", "Public key" : "Julkinen avain", "Amazon S3" : "Amazon S3", + "Bucket" : "Bucket", + "Hostname" : "Isäntänimi", "Port" : "Portti", "Region" : "Alue", "Enable SSL" : "Käytä SSL:ää", + "Enable Path Style" : "Aktivoi polun tyyli", "WebDAV" : "WebDAV", "URL" : "Verkko-osoite", "Remote subfolder" : "Etäalikansio", @@ -87,10 +103,14 @@ OC.L10N.register( "Service name" : "Palvelun nimi", "Request timeout (seconds)" : "Pyynnön aikakatkaisu (sekunneissa)", "External storages" : "Ulkoiset tallennustilat", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cULR tuki PHPsta ei ole aktivoitu tai asennettu. Kohteen %s liittäminen ei ole mahdollista. Ota yhteyttä järjestelmänvalvojaan asentaaksesi puuttuvan osan.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP tuki PHPsta ei ole aktivoitu tai asennettu. Kohteen %s liittäminen ei ole mahdollista. Ota yhteyttä järjestelmänvalvojaan asentaaksesi puuttuvan osan.", + "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" ei ole asennettu. Kohteen %s liittäminen ei ole mahdollista. Pyydä järjestelmän ylläpitäjää asentamaan puuttuva kohde.", "No external storage configured" : "Erillistä tallennustilaa ei ole määritetty", "You can add external storages in the personal settings" : "Voit lisätä erillisiä tallennustiloja henkilökohtaisista asetuksistasi", "Name" : "Nimi", "Storage type" : "Tallennustilan tyyppi", + "Scope" : "Näkyvyysalue", "Enable encryption" : "Käytä salausta", "Enable previews" : "Käytä esikatseluja", "Enable sharing" : "Käytä jakamista", diff --git a/apps/files_external/l10n/fi.json b/apps/files_external/l10n/fi.json index e8c1e205f53..225a526a642 100644 --- a/apps/files_external/l10n/fi.json +++ b/apps/files_external/l10n/fi.json @@ -1,5 +1,7 @@ { "translations": { "Fetching request tokens failed. Verify that your app key and secret are correct." : "Pyyntötunnisteen nouto epäonnistui. Tarkista että sovellusavaimesi ja -salaisuutesi ovat oikein.", + "Fetching access tokens failed. Verify that your app key and secret are correct." : "Pyyntötunnisteen haku epäonnistui. Tarkista että sovellusavaimesi ja -salaisuutesi ovat oikein.", + "Please provide a valid app key and secret." : "Sovellusavain ja salaus ovat virheelliset", "Step 1 failed. Exception: %s" : "Vaihe 1 epäonnistui. Poikkeus: %s", "Step 2 failed. Exception: %s" : "Vaihe 2 epäonnistui. Poikkeus: %s", "External storage" : "Ulkoinen tallennustila", @@ -14,15 +16,18 @@ "Error generating key pair" : "Virhe luotaessa avainparia", "All users. Type to select user or group." : "Kaikki käyttäjät. Kirjoita valitaksesi käyttäjän tai ryhmän.", "(group)" : "(ryhmä)", + "Compatibility with Mac NFD encoding (slow)" : "Yhteensopivuus Mac NFD enkoodauksen kanssa (hidas)", "Admin defined" : "Ylläpitäjän määrittämä", "Saved" : "Tallennettu", "Saving..." : "Tallennetaan...", "Save" : "Tallenna", "Empty response from the server" : "Tyhjä vastaus palvelimelta", "Couldn't access. Please logout and login to activate this mount point" : "Käyttö epäonnistui. Kirjaudu ulos ja takaisin sisään aktivoidaksesi tämän liitospisteen", + "Couldn't get the information from the remote server: {code} {type}" : "Tietojen saaminen etäpalvelimelta epäonnistui: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Erillisten liitospisteiden listauksen noutaminen epäonnistui: {type}", "There was an error with message: " : "Tapahtui virhe viestillä:", "External mount error" : "Ulkoinen liitosvirhe", + "external-storage" : "ulkoinen taltio", "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Windows-verkkoasemien liitospisteiden listauksen noutaminen epäonnistui: tyhjä vastaus palvelimelta", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Jotkin määritetyt erilliset liitospisteet eivät ole yhdistettynä. Napsauta punaisia rivejä saadaksesi lisätietoja", "Please enter the credentials for the {mount} mount" : "Anna kirjautumistiedot liitokselle {mount}", @@ -34,10 +39,15 @@ "Storage with id \"%i\" not found" : "Tallennustilaa tunnisteella \"%i\" ei löytynyt", "Invalid backend or authentication mechanism class" : "Virheellinen tietovarasto tai tunnistautumismekanismin luokka", "Invalid mount point" : "Virheellinen liitoskohta", + "Objectstore forbidden" : "Objektimuisti estetty", "Invalid storage backend \"%s\"" : "Virheellinen tietovarasto \"%s\"", "Not permitted to use backend \"%s\"" : "Ei lupaa käyttää tietovarastoa \"%s\"", + "Not permitted to use authentication mechanism \"%s\"" : "Ei lupaa käyttää tunnistautumismekanismia \"%s\"", "Unsatisfied backend parameters" : "Riittämättömät tietovaraston parametrit", + "Unsatisfied authentication mechanism parameters" : "Riittämättömät tunnistautumismekanismin parametrit", + "Insufficient data: %s" : "Puutteellinen data: %s", "%s" : "%s", + "Storage with id \"%i\" is not user editable" : "Tallennustila, jolla on \"%i\" id, ei ole muokattavissa.", "Access key" : "Pääsyavain", "Secret key" : "Salainen avain", "Builtin" : "Sisäänrakennettu", @@ -50,17 +60,23 @@ "Client secret" : "Asiakassalaisuus", "OpenStack" : "OpenStack", "Tenant name" : "Tenant nimi", + "Identity endpoint URL" : "Määritä URL päätepiste", "Rackspace" : "Rackspace", "API key" : "API-avain", + "Global credentials" : "Globaalit valtuudet", + "Log-in credentials, save in database" : "Kirjautumistiedot, tallennetaan tietokantaan", "Username and password" : "Käyttäjätunnus ja salasana", "Log-in credentials, save in session" : "Kirjautumistiedot, tallenna istuntoon", "User entered, store in database" : "Käyttäjän antama, tallennettu tietokantaan", "RSA public key" : "Julkinen RSA-avain", "Public key" : "Julkinen avain", "Amazon S3" : "Amazon S3", + "Bucket" : "Bucket", + "Hostname" : "Isäntänimi", "Port" : "Portti", "Region" : "Alue", "Enable SSL" : "Käytä SSL:ää", + "Enable Path Style" : "Aktivoi polun tyyli", "WebDAV" : "WebDAV", "URL" : "Verkko-osoite", "Remote subfolder" : "Etäalikansio", @@ -85,10 +101,14 @@ "Service name" : "Palvelun nimi", "Request timeout (seconds)" : "Pyynnön aikakatkaisu (sekunneissa)", "External storages" : "Ulkoiset tallennustilat", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cULR tuki PHPsta ei ole aktivoitu tai asennettu. Kohteen %s liittäminen ei ole mahdollista. Ota yhteyttä järjestelmänvalvojaan asentaaksesi puuttuvan osan.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP tuki PHPsta ei ole aktivoitu tai asennettu. Kohteen %s liittäminen ei ole mahdollista. Ota yhteyttä järjestelmänvalvojaan asentaaksesi puuttuvan osan.", + "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" ei ole asennettu. Kohteen %s liittäminen ei ole mahdollista. Pyydä järjestelmän ylläpitäjää asentamaan puuttuva kohde.", "No external storage configured" : "Erillistä tallennustilaa ei ole määritetty", "You can add external storages in the personal settings" : "Voit lisätä erillisiä tallennustiloja henkilökohtaisista asetuksistasi", "Name" : "Nimi", "Storage type" : "Tallennustilan tyyppi", + "Scope" : "Näkyvyysalue", "Enable encryption" : "Käytä salausta", "Enable previews" : "Käytä esikatseluja", "Enable sharing" : "Käytä jakamista", diff --git a/apps/files_external/l10n/pt_BR.js b/apps/files_external/l10n/pt_BR.js index 24ac44e9aa3..bcdb72d189d 100644 --- a/apps/files_external/l10n/pt_BR.js +++ b/apps/files_external/l10n/pt_BR.js @@ -1,8 +1,8 @@ OC.L10N.register( "files_external", { - "Fetching request tokens failed. Verify that your app key and secret are correct." : "A solicitação dos tokens de requesição falhou. Verifique se a sua chave de aplicativo e segurança estão corretos.", - "Fetching access tokens failed. Verify that your app key and secret are correct." : "A solicitação dos tokens de acesso falhou. Verifique se a sua chave de aplicativo e segurança estão corretos.", + "Fetching request tokens failed. Verify that your app key and secret are correct." : "A solicitação dos tokens de requisição falhou. Verifique se sua chave de aplicativo e segurança estão corretos.", + "Fetching access tokens failed. Verify that your app key and secret are correct." : "A solicitação dos tokens de acesso falhou. Verifique se sua chave de aplicativo e segurança estão corretos.", "Please provide a valid app key and secret." : "Por favor forneça uma chave e segurança válidos.", "Step 1 failed. Exception: %s" : "Passo 1 falhou. Exceção: %s", "Step 2 failed. Exception: %s" : "Passo 2 falhou. Exceção: %s", @@ -15,7 +15,7 @@ OC.L10N.register( "Error configuring OAuth1" : "Erro configurando OAuth1", "Error configuring OAuth2" : "Erro configurando OAuth2", "Generate keys" : "Gerar chaves", - "Error generating key pair" : "Erro ao gerar um par de chaves", + "Error generating key pair" : "Erro ao gerar o par de chaves", "All users. Type to select user or group." : "Todos os usuários. Digite para selecionar usuário ou grupo.", "(group)" : "(grupo)", "Compatibility with Mac NFD encoding (slow)" : "Compatibilidade com a codificação Mac NFD (lento)", @@ -23,14 +23,14 @@ OC.L10N.register( "Saved" : "Salvo", "Saving..." : "Salvando...", "Save" : "Salvar", - "Empty response from the server" : "Resposta vazia a partir do servidor", - "Couldn't access. Please logout and login to activate this mount point" : "Não foi possÃvel acessar. Por favor, desconectar e conectar novamente para ativar este ponto de montagem", + "Empty response from the server" : "Resposta vazia do servidor", + "Couldn't access. Please logout and login to activate this mount point" : "Não foi possÃvel acessar. Por favor, desconecte e conecte novamente para ativar este ponto de montagem", "Couldn't get the information from the remote server: {code} {type}" : "Não foi possÃvel obter as informações do servidor remoto: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Não foi possÃvel obter a lista de pontos de montagem externos: {type}", "There was an error with message: " : "Houve um erro com a mensagem:", "External mount error" : "Erro de montagem externa", "external-storage" : "armazenamento-externo", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Não foi possÃvel obter a lista unidades de pontos de montagem da rede do Windows: resposta vazia a partir do servidor", + "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Não foi possÃvel obter a lista de unidades de pontos de montagem da rede Windows: resposta vazia do servidor", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Alguns dos pontos de montagem externos configurados não estão conectados. Clique na(s) linha(s) vermelha(s) para mais informações", "Please enter the credentials for the {mount} mount" : "Por favor, insira as credenciais para montar {mount}", "Username" : "Nome de Usuário", @@ -62,13 +62,13 @@ OC.L10N.register( "Client secret" : "Segredo do cliente", "OpenStack" : "OpenStack", "Tenant name" : "Nome do inquilino", - "Identity endpoint URL" : "Identidade pontofinal URL", + "Identity endpoint URL" : "URL da identidade destino", "Rackspace" : "Espaço em rack", "API key" : "Chave API", "Global credentials" : "Credenciais globais", "Log-in credentials, save in database" : "Credenciais de acesso, salvas no banco de dados", - "Username and password" : "Nome de Usuário e senha", - "Log-in credentials, save in session" : "Credenciais de login, guardados em sessão", + "Username and password" : "Nome de usuário e senha", + "Log-in credentials, save in session" : "Credenciais de login, guardadas em sessão", "User entered, store in database" : "Usuário adicionado, armazenado no banco de dados", "RSA public key" : "Chave pública RSA", "Public key" : "Chave pública", @@ -86,7 +86,7 @@ OC.L10N.register( "Dropbox" : "Dropbox", "FTP" : "FTP", "Host" : "Host", - "Secure ftps://" : "Seguro ftps://", + "Secure ftps://" : "ftps:// seguro", "Google Drive" : "Google Drive", "Local" : "Local", "Location" : "Localização", @@ -101,11 +101,11 @@ OC.L10N.register( "Username as share" : "Nome de usuário como compartilhado", "OpenStack Object Storage" : "Armazenamento de Objetos OpenStack", "Service name" : "Nome do serviço", - "Request timeout (seconds)" : "Tempo esgotado requerido (segundos)", + "Request timeout (seconds)" : "Tempo requerido esgotado (segundos)", "External storages" : "Armazenamentos externo", - "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporte a cURL no PHP não está habilitado ou instalado. Montagem de %s não é possÃvel. Por favor, solicite ao seu administrador do sistema instalá-lo.", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporte a FTP no PHP não está habilitado ou instalado. Montagem de %s não é possÃvel. Por favor, psolicite ao seu administrador do sistema instalá-lo.", - "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" não está instalado. Montagem de %s não é possÃvel. Por favor, solicite ao seu administrador do sistema instalá-lo.", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporte a cURL no PHP não está habilitado ou instalado. A montagem de %s não é possÃvel. Por favor, solicite ao administrador do sistema instalá-lo.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporte a FTP no PHP não está habilitado ou instalado. A montagem de %s não é possÃvel. Por favor, solicite ao administrador do sistema instalá-lo.", + "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" não está instalado. A montagem de %s não é possÃvel. Por favor, solicite ao administrador do sistema instalá-lo.", "No external storage configured" : "Nenhum armazendo externo foi configurado", "You can add external storages in the personal settings" : "Você pode adicionar armazenamentos externos nas configurações pessoais", "Name" : "Nome", diff --git a/apps/files_external/l10n/pt_BR.json b/apps/files_external/l10n/pt_BR.json index e9e64f3325c..b0acf8586c0 100644 --- a/apps/files_external/l10n/pt_BR.json +++ b/apps/files_external/l10n/pt_BR.json @@ -1,6 +1,6 @@ { "translations": { - "Fetching request tokens failed. Verify that your app key and secret are correct." : "A solicitação dos tokens de requesição falhou. Verifique se a sua chave de aplicativo e segurança estão corretos.", - "Fetching access tokens failed. Verify that your app key and secret are correct." : "A solicitação dos tokens de acesso falhou. Verifique se a sua chave de aplicativo e segurança estão corretos.", + "Fetching request tokens failed. Verify that your app key and secret are correct." : "A solicitação dos tokens de requisição falhou. Verifique se sua chave de aplicativo e segurança estão corretos.", + "Fetching access tokens failed. Verify that your app key and secret are correct." : "A solicitação dos tokens de acesso falhou. Verifique se sua chave de aplicativo e segurança estão corretos.", "Please provide a valid app key and secret." : "Por favor forneça uma chave e segurança válidos.", "Step 1 failed. Exception: %s" : "Passo 1 falhou. Exceção: %s", "Step 2 failed. Exception: %s" : "Passo 2 falhou. Exceção: %s", @@ -13,7 +13,7 @@ "Error configuring OAuth1" : "Erro configurando OAuth1", "Error configuring OAuth2" : "Erro configurando OAuth2", "Generate keys" : "Gerar chaves", - "Error generating key pair" : "Erro ao gerar um par de chaves", + "Error generating key pair" : "Erro ao gerar o par de chaves", "All users. Type to select user or group." : "Todos os usuários. Digite para selecionar usuário ou grupo.", "(group)" : "(grupo)", "Compatibility with Mac NFD encoding (slow)" : "Compatibilidade com a codificação Mac NFD (lento)", @@ -21,14 +21,14 @@ "Saved" : "Salvo", "Saving..." : "Salvando...", "Save" : "Salvar", - "Empty response from the server" : "Resposta vazia a partir do servidor", - "Couldn't access. Please logout and login to activate this mount point" : "Não foi possÃvel acessar. Por favor, desconectar e conectar novamente para ativar este ponto de montagem", + "Empty response from the server" : "Resposta vazia do servidor", + "Couldn't access. Please logout and login to activate this mount point" : "Não foi possÃvel acessar. Por favor, desconecte e conecte novamente para ativar este ponto de montagem", "Couldn't get the information from the remote server: {code} {type}" : "Não foi possÃvel obter as informações do servidor remoto: {code} {type}", "Couldn't get the list of external mount points: {type}" : "Não foi possÃvel obter a lista de pontos de montagem externos: {type}", "There was an error with message: " : "Houve um erro com a mensagem:", "External mount error" : "Erro de montagem externa", "external-storage" : "armazenamento-externo", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Não foi possÃvel obter a lista unidades de pontos de montagem da rede do Windows: resposta vazia a partir do servidor", + "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Não foi possÃvel obter a lista de unidades de pontos de montagem da rede Windows: resposta vazia do servidor", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Alguns dos pontos de montagem externos configurados não estão conectados. Clique na(s) linha(s) vermelha(s) para mais informações", "Please enter the credentials for the {mount} mount" : "Por favor, insira as credenciais para montar {mount}", "Username" : "Nome de Usuário", @@ -60,13 +60,13 @@ "Client secret" : "Segredo do cliente", "OpenStack" : "OpenStack", "Tenant name" : "Nome do inquilino", - "Identity endpoint URL" : "Identidade pontofinal URL", + "Identity endpoint URL" : "URL da identidade destino", "Rackspace" : "Espaço em rack", "API key" : "Chave API", "Global credentials" : "Credenciais globais", "Log-in credentials, save in database" : "Credenciais de acesso, salvas no banco de dados", - "Username and password" : "Nome de Usuário e senha", - "Log-in credentials, save in session" : "Credenciais de login, guardados em sessão", + "Username and password" : "Nome de usuário e senha", + "Log-in credentials, save in session" : "Credenciais de login, guardadas em sessão", "User entered, store in database" : "Usuário adicionado, armazenado no banco de dados", "RSA public key" : "Chave pública RSA", "Public key" : "Chave pública", @@ -84,7 +84,7 @@ "Dropbox" : "Dropbox", "FTP" : "FTP", "Host" : "Host", - "Secure ftps://" : "Seguro ftps://", + "Secure ftps://" : "ftps:// seguro", "Google Drive" : "Google Drive", "Local" : "Local", "Location" : "Localização", @@ -99,11 +99,11 @@ "Username as share" : "Nome de usuário como compartilhado", "OpenStack Object Storage" : "Armazenamento de Objetos OpenStack", "Service name" : "Nome do serviço", - "Request timeout (seconds)" : "Tempo esgotado requerido (segundos)", + "Request timeout (seconds)" : "Tempo requerido esgotado (segundos)", "External storages" : "Armazenamentos externo", - "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporte a cURL no PHP não está habilitado ou instalado. Montagem de %s não é possÃvel. Por favor, solicite ao seu administrador do sistema instalá-lo.", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporte a FTP no PHP não está habilitado ou instalado. Montagem de %s não é possÃvel. Por favor, psolicite ao seu administrador do sistema instalá-lo.", - "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" não está instalado. Montagem de %s não é possÃvel. Por favor, solicite ao seu administrador do sistema instalá-lo.", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporte a cURL no PHP não está habilitado ou instalado. A montagem de %s não é possÃvel. Por favor, solicite ao administrador do sistema instalá-lo.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporte a FTP no PHP não está habilitado ou instalado. A montagem de %s não é possÃvel. Por favor, solicite ao administrador do sistema instalá-lo.", + "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" não está instalado. A montagem de %s não é possÃvel. Por favor, solicite ao administrador do sistema instalá-lo.", "No external storage configured" : "Nenhum armazendo externo foi configurado", "You can add external storages in the personal settings" : "Você pode adicionar armazenamentos externos nas configurações pessoais", "Name" : "Nome", diff --git a/apps/files_external/l10n/tr.js b/apps/files_external/l10n/tr.js index 01eb3cc7808..e6a6996a056 100644 --- a/apps/files_external/l10n/tr.js +++ b/apps/files_external/l10n/tr.js @@ -103,9 +103,9 @@ OC.L10N.register( "Service name" : "Hizmet adı", "Request timeout (seconds)" : "İstek zaman aşımı (saniye)", "External storages" : "Dış depolama", - "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP cURL desteÄŸi etkin ya da kurulu deÄŸil. %s baÄŸlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP FTP desteÄŸi etkin ya da kurulu deÄŸil. %s baÄŸlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.", - "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "%s kurulu deÄŸil. %s baÄŸlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP cURL desteÄŸi kurulmamış ya da etkinleÅŸtirilmemiÅŸ. %s baÄŸlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP FTP desteÄŸi kuurlmamış ya da etkinleÅŸtirilmemiÅŸ. %s baÄŸlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.", + "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "%s kurulmamış. %s baÄŸlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.", "No external storage configured" : "Herhangi bir dış depolama yapılandırılmamış", "You can add external storages in the personal settings" : "KiÅŸisel ayarlar bölümünden dış depolamaları ekleyebilirsiniz", "Name" : "Ad", diff --git a/apps/files_external/l10n/tr.json b/apps/files_external/l10n/tr.json index cd86370854f..76cffec546e 100644 --- a/apps/files_external/l10n/tr.json +++ b/apps/files_external/l10n/tr.json @@ -101,9 +101,9 @@ "Service name" : "Hizmet adı", "Request timeout (seconds)" : "İstek zaman aşımı (saniye)", "External storages" : "Dış depolama", - "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP cURL desteÄŸi etkin ya da kurulu deÄŸil. %s baÄŸlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP FTP desteÄŸi etkin ya da kurulu deÄŸil. %s baÄŸlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.", - "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "%s kurulu deÄŸil. %s baÄŸlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP cURL desteÄŸi kurulmamış ya da etkinleÅŸtirilmemiÅŸ. %s baÄŸlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP FTP desteÄŸi kuurlmamış ya da etkinleÅŸtirilmemiÅŸ. %s baÄŸlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.", + "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "%s kurulmamış. %s baÄŸlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.", "No external storage configured" : "Herhangi bir dış depolama yapılandırılmamış", "You can add external storages in the personal settings" : "KiÅŸisel ayarlar bölümünden dış depolamaları ekleyebilirsiniz", "Name" : "Ad", diff --git a/apps/files_external/lib/Controller/StoragesController.php b/apps/files_external/lib/Controller/StoragesController.php index ef7cc8c6e4f..d962848bd78 100644 --- a/apps/files_external/lib/Controller/StoragesController.php +++ b/apps/files_external/lib/Controller/StoragesController.php @@ -143,7 +143,7 @@ abstract class StoragesController extends Controller { */ protected function validate(StorageConfig $storage) { $mountPoint = $storage->getMountPoint(); - if ($mountPoint === '' || $mountPoint === '/') { + if ($mountPoint === '') { return new DataResponse( array( 'message' => (string)$this->l10n->t('Invalid mount point') diff --git a/apps/files_external/lib/Lib/Storage/Swift.php b/apps/files_external/lib/Lib/Storage/Swift.php index 5fec278ef3d..105d1073ae6 100644 --- a/apps/files_external/lib/Lib/Storage/Swift.php +++ b/apps/files_external/lib/Lib/Storage/Swift.php @@ -373,6 +373,10 @@ class Swift extends \OC\Files\Storage\Common { $path = $this->normalizePath($path); switch ($mode) { + case 'a': + case 'ab': + case 'a+': + return false; case 'r': case 'rb': try { @@ -395,12 +399,9 @@ class Swift extends \OC\Files\Storage\Common { } case 'w': case 'wb': - case 'a': - case 'ab': case 'r+': case 'w+': case 'wb+': - case 'a+': case 'x': case 'x+': case 'c': @@ -419,10 +420,6 @@ class Swift extends \OC\Files\Storage\Common { } $source = $this->fopen($path, 'r'); file_put_contents($tmpFile, $source); - // Seek to end if required - if ($mode[0] === 'a') { - fseek($tmpFile, 0, SEEK_END); - } } $handle = fopen($tmpFile, $mode); return CallbackWrapper::wrap($handle, null, null, function () use ($path, $tmpFile) { diff --git a/apps/files_sharing/l10n/es_MX.js b/apps/files_sharing/l10n/es_MX.js index 9c287312e8a..cc4fe0d0938 100644 --- a/apps/files_sharing/l10n/es_MX.js +++ b/apps/files_sharing/l10n/es_MX.js @@ -1,20 +1,109 @@ OC.L10N.register( "files_sharing", { - "Cancel" : "Cancelar", + "Shared with you" : "Compartido con usted", + "Shared with others" : "Compartido con otros", + "Shared by link" : "Compartido por liga", + "Nothing shared with you yet" : "Nada ha sido compartido aún con usted", + "Files and folders others share with you will show up here" : "Los archivos y carpetas que sean compartidos con usted se mostrarán aquÃ", + "Nothing shared yet" : "Nada compartido aún", + "Files and folders you share will show up here" : "Los archivos y carpetas que comparta se mostrarán aquÃ", + "No shared links" : "No hay ligas compartidas", + "Files and folders you share by link will show up here" : "Los archivos y carpetas que comparta por ligas se mostrarán aquÃ", + "You can upload into this folder" : "Usted puede cargar archivos dentro de esta carpeta", + "No compatible server found at {remote}" : "No se encontró un servidor compatible en {remote}", + "Invalid server URL" : "URL del servidor inválido", + "Failed to add the public link to your Nextcloud" : "Se presentó una falla al agregar la liga pública a su Nextcloud", + "Share" : "Compartir", + "No expiration date set" : "No se ha establecido la fecha de expiración", "Shared by" : "Compartido por", "Sharing" : "Compartiendo", - "This share is password-protected" : "Este elemento compartido esta protegido por contraseña", - "The password is wrong. Try again." : "La contraseña introducida es errónea. Inténtelo de nuevo.", + "File shares" : "Archivos compartidos", + "Downloaded via public link" : "Descargado mediante una liga pública", + "Downloaded by {email}" : "Descargado por {email}", + "{file} downloaded via public link" : "{file} descargado mediante una liga pública", + "{email} downloaded {file}" : "{email} descargó {file}", + "Shared with group {group}" : "Compartido con el gupo {group}", + "Removed share for group {group}" : "Se eliminó el elemento compartido del grupo {group}", + "{actor} shared with group {group}" : "{actor} compartió con el grupo {group}", + "{actor} removed share for group {group}" : "{actor} eliminó el elemento compartido del grupo {group}", + "You shared {file} with group {group}" : "Usted ha compartido {file} con el grupo {group}", + "You removed group {group} from {file}" : "Usted eliminó al grupo {group} de {file}", + "{actor} shared {file} with group {group}" : "{actor} compartió {file} con el grupo {group}", + "{actor} removed group {group} from {file}" : "{actor} lo eliminó del grupo {group} de {file}", + "Shared as public link" : "Compartido como una liga pública", + "Removed public link" : "Liga pública eliminada", + "Public link expired" : "La liga pública ha expirado", + "{actor} shared as public link" : "{actor} compartió como una liga pública", + "{actor} removed public link" : "{actor} eliminó la liga pública", + "Public link of {actor} expired" : "La liga pública de {actor} ha expirado", + "You shared {file} as public link" : "Usted ha compartido {file} como una liga pública", + "You removed public link for {file}" : "Usted ha eliminado la liga pública de {file}", + "Public link expired for {file}" : "La liga pública para {file} ha expirado", + "{actor} shared {file} as public link" : "{actor} ha compatido {file} como una liga pública", + "{actor} removed public link for {file}" : "{actor} eliminó la liga pública de {file}", + "Public link of {actor} for {file} expired" : "La liga pública de {actor} para {file} ha expirado", + "{user} accepted the remote share" : "{user} aceptó el elemento compartido remoto", + "{user} declined the remote share" : "{user} declinó el elemento compartido remoto", + "You received a new remote share {file} from {user}" : "Usted ha recibido un nuevo elemento compartido remoto {file} de {user}", + "{user} accepted the remote share of {file}" : "{user} aceptó el elemento compartido remoto de {file}", + "{user} declined the remote share of {file}" : "{user} declinó el elemento compartido remoto de {file}", + "{user} unshared {file} from you" : "{user} ha dejado de compartir {file} con usted", + "Shared with {user}" : "Compartido con {user}", + "Removed share for {user}" : "Eliminó el elemento compartido para {user}", + "{actor} shared with {user}" : "{actor} compartió con {user}", + "{actor} removed share for {user}" : "{actor} eliminó el elemento compartido para {user}", + "Shared by {actor}" : "Compartido por {actor}", + "{actor} removed share" : "{actor} eliminó el elemento compartido", + "You shared {file} with {user}" : "Usted ha compartido {file} con {user}", + "You removed {user} from {file}" : "Usted eliminó a {user} de {file}", + "{actor} shared {file} with {user}" : "{actor} compartió {file} con {user}", + "{actor} removed {user} from {file}" : "{actor} eliminó a {user} de {file}", + "{actor} shared {file} with you" : "{actor} ha compartido {file} con usted", + "{actor} removed you from {file}" : "{actor} lo eliminó de {file}", + "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Un archivo o carpeta comparitdo por correo o por liga pública ha sido <strong>descargado</strong>", + "A file or folder was shared from <strong>another server</strong>" : "Un archivo o carpeta fue compartido desde <strong>otro servidor</strong>", + "A file or folder has been <strong>shared</strong>" : "Un archivo o carpeta ha sido <strong>compartido</strong>", + "Wrong share ID, share doesn't exist" : "ID del elemento compartido equivocado, el elemento compartido no existe", + "could not delete share" : "no fue posible borrar el elemento compartido", + "Could not delete share" : "No fue posible borrar el elemento compartido", + "Please specify a file or folder path" : "Favor de especificar un archivo o ruta de carpeta", + "Wrong path, file/folder doesn't exist" : "La ruta es incorrecta, el correo / carpeta no existe ", + "Could not create share" : "no fue posible crear el elemento compartido", + "invalid permissions" : "permisos inválidos", + "Please specify a valid user" : "Favor de especificar un usuario válido", + "Please specify a valid group" : "Favor de especificar un grupo valido", + "Public upload disabled by the administrator" : "Cargas públicas deshabilitadas por el administrador", + "Public upload is only possible for publicly shared folders" : "Las cargas públicas son posibles sólo para carpetas compartidas públicamente", + "Invalid date, date format must be YYYY-MM-DD" : "La fecha es inválida, favor de seguir el formato AAAA-MM-DD", + "Sharing %s failed because the back end does not allow shares from type %s" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %s", + "You cannot share to a Circle if the app is not enabled" : "Usted no puede compartir al CÃrculo si la aplicación no esta habilitada", + "Please specify a valid circle" : "Favor de especificar un cÃrculo válido", + "Not a directory" : "No es una carpeta", + "Could not lock path" : "No fue posible bloquear la ruta", + "Wrong or no update parameter given" : "El parametro de actualización esta erróneo o faltante", + "Can't change permissions for public share links" : "No es posible cambiar los permisos para ligas públicas compartidas", + "Cannot increase permissions" : "No es posible incrementar los permisos", + "%s is publicly shared" : "%s está compartido públicamente", + "Share API is disabled" : "El API para compartir está deshabilitado", + "This share is password-protected" : "Este elemento compartido esta protegido con contraseña", + "The password is wrong. Try again." : "La contraseña es incorrecta. Favor de intentarlo de nuevo.", "Password" : "Contraseña", + "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Name" : "Nombre", - "Sorry, this link doesn’t seem to work anymore." : "Lo siento, este enlace al parecer ya no funciona.", + "Expiration date" : "Fecha de expiración", + "Sorry, this link doesn’t seem to work anymore." : "Lo sentimos, esta liga no parece funcionar más. ", "Reasons might be:" : "Las causas podrÃan ser:", "the item was removed" : "el elemento fue eliminado", - "the link expired" : "el enlace expiró", - "sharing is disabled" : "compartir está desactivado", - "For more info, please ask the person who sent this link." : "Para mayor información, contacte a la persona que le envió el enlace.", + "the link expired" : "la liga expiró", + "sharing is disabled" : "compartir está deshabilitado", + "For more info, please ask the person who sent this link." : "Para mayores informes, contacte a la persona que le envió esta liga.", + "Add to your Nextcloud" : "Agregar a su Nextcloud", "Download" : "Descargar", - "Direct link" : "Enlace directo" + "Download %s" : "Descargar %s", + "Direct link" : "Liga directa", + "Upload files to %s" : "Cargar archivos a %s", + "Uploading files…" : "Cargando archivos...", + "Uploaded files:" : "Archivos cargados:" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_sharing/l10n/es_MX.json b/apps/files_sharing/l10n/es_MX.json index 26f064e346a..ee7b4c873b2 100644 --- a/apps/files_sharing/l10n/es_MX.json +++ b/apps/files_sharing/l10n/es_MX.json @@ -1,18 +1,107 @@ { "translations": { - "Cancel" : "Cancelar", + "Shared with you" : "Compartido con usted", + "Shared with others" : "Compartido con otros", + "Shared by link" : "Compartido por liga", + "Nothing shared with you yet" : "Nada ha sido compartido aún con usted", + "Files and folders others share with you will show up here" : "Los archivos y carpetas que sean compartidos con usted se mostrarán aquÃ", + "Nothing shared yet" : "Nada compartido aún", + "Files and folders you share will show up here" : "Los archivos y carpetas que comparta se mostrarán aquÃ", + "No shared links" : "No hay ligas compartidas", + "Files and folders you share by link will show up here" : "Los archivos y carpetas que comparta por ligas se mostrarán aquÃ", + "You can upload into this folder" : "Usted puede cargar archivos dentro de esta carpeta", + "No compatible server found at {remote}" : "No se encontró un servidor compatible en {remote}", + "Invalid server URL" : "URL del servidor inválido", + "Failed to add the public link to your Nextcloud" : "Se presentó una falla al agregar la liga pública a su Nextcloud", + "Share" : "Compartir", + "No expiration date set" : "No se ha establecido la fecha de expiración", "Shared by" : "Compartido por", "Sharing" : "Compartiendo", - "This share is password-protected" : "Este elemento compartido esta protegido por contraseña", - "The password is wrong. Try again." : "La contraseña introducida es errónea. Inténtelo de nuevo.", + "File shares" : "Archivos compartidos", + "Downloaded via public link" : "Descargado mediante una liga pública", + "Downloaded by {email}" : "Descargado por {email}", + "{file} downloaded via public link" : "{file} descargado mediante una liga pública", + "{email} downloaded {file}" : "{email} descargó {file}", + "Shared with group {group}" : "Compartido con el gupo {group}", + "Removed share for group {group}" : "Se eliminó el elemento compartido del grupo {group}", + "{actor} shared with group {group}" : "{actor} compartió con el grupo {group}", + "{actor} removed share for group {group}" : "{actor} eliminó el elemento compartido del grupo {group}", + "You shared {file} with group {group}" : "Usted ha compartido {file} con el grupo {group}", + "You removed group {group} from {file}" : "Usted eliminó al grupo {group} de {file}", + "{actor} shared {file} with group {group}" : "{actor} compartió {file} con el grupo {group}", + "{actor} removed group {group} from {file}" : "{actor} lo eliminó del grupo {group} de {file}", + "Shared as public link" : "Compartido como una liga pública", + "Removed public link" : "Liga pública eliminada", + "Public link expired" : "La liga pública ha expirado", + "{actor} shared as public link" : "{actor} compartió como una liga pública", + "{actor} removed public link" : "{actor} eliminó la liga pública", + "Public link of {actor} expired" : "La liga pública de {actor} ha expirado", + "You shared {file} as public link" : "Usted ha compartido {file} como una liga pública", + "You removed public link for {file}" : "Usted ha eliminado la liga pública de {file}", + "Public link expired for {file}" : "La liga pública para {file} ha expirado", + "{actor} shared {file} as public link" : "{actor} ha compatido {file} como una liga pública", + "{actor} removed public link for {file}" : "{actor} eliminó la liga pública de {file}", + "Public link of {actor} for {file} expired" : "La liga pública de {actor} para {file} ha expirado", + "{user} accepted the remote share" : "{user} aceptó el elemento compartido remoto", + "{user} declined the remote share" : "{user} declinó el elemento compartido remoto", + "You received a new remote share {file} from {user}" : "Usted ha recibido un nuevo elemento compartido remoto {file} de {user}", + "{user} accepted the remote share of {file}" : "{user} aceptó el elemento compartido remoto de {file}", + "{user} declined the remote share of {file}" : "{user} declinó el elemento compartido remoto de {file}", + "{user} unshared {file} from you" : "{user} ha dejado de compartir {file} con usted", + "Shared with {user}" : "Compartido con {user}", + "Removed share for {user}" : "Eliminó el elemento compartido para {user}", + "{actor} shared with {user}" : "{actor} compartió con {user}", + "{actor} removed share for {user}" : "{actor} eliminó el elemento compartido para {user}", + "Shared by {actor}" : "Compartido por {actor}", + "{actor} removed share" : "{actor} eliminó el elemento compartido", + "You shared {file} with {user}" : "Usted ha compartido {file} con {user}", + "You removed {user} from {file}" : "Usted eliminó a {user} de {file}", + "{actor} shared {file} with {user}" : "{actor} compartió {file} con {user}", + "{actor} removed {user} from {file}" : "{actor} eliminó a {user} de {file}", + "{actor} shared {file} with you" : "{actor} ha compartido {file} con usted", + "{actor} removed you from {file}" : "{actor} lo eliminó de {file}", + "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Un archivo o carpeta comparitdo por correo o por liga pública ha sido <strong>descargado</strong>", + "A file or folder was shared from <strong>another server</strong>" : "Un archivo o carpeta fue compartido desde <strong>otro servidor</strong>", + "A file or folder has been <strong>shared</strong>" : "Un archivo o carpeta ha sido <strong>compartido</strong>", + "Wrong share ID, share doesn't exist" : "ID del elemento compartido equivocado, el elemento compartido no existe", + "could not delete share" : "no fue posible borrar el elemento compartido", + "Could not delete share" : "No fue posible borrar el elemento compartido", + "Please specify a file or folder path" : "Favor de especificar un archivo o ruta de carpeta", + "Wrong path, file/folder doesn't exist" : "La ruta es incorrecta, el correo / carpeta no existe ", + "Could not create share" : "no fue posible crear el elemento compartido", + "invalid permissions" : "permisos inválidos", + "Please specify a valid user" : "Favor de especificar un usuario válido", + "Please specify a valid group" : "Favor de especificar un grupo valido", + "Public upload disabled by the administrator" : "Cargas públicas deshabilitadas por el administrador", + "Public upload is only possible for publicly shared folders" : "Las cargas públicas son posibles sólo para carpetas compartidas públicamente", + "Invalid date, date format must be YYYY-MM-DD" : "La fecha es inválida, favor de seguir el formato AAAA-MM-DD", + "Sharing %s failed because the back end does not allow shares from type %s" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %s", + "You cannot share to a Circle if the app is not enabled" : "Usted no puede compartir al CÃrculo si la aplicación no esta habilitada", + "Please specify a valid circle" : "Favor de especificar un cÃrculo válido", + "Not a directory" : "No es una carpeta", + "Could not lock path" : "No fue posible bloquear la ruta", + "Wrong or no update parameter given" : "El parametro de actualización esta erróneo o faltante", + "Can't change permissions for public share links" : "No es posible cambiar los permisos para ligas públicas compartidas", + "Cannot increase permissions" : "No es posible incrementar los permisos", + "%s is publicly shared" : "%s está compartido públicamente", + "Share API is disabled" : "El API para compartir está deshabilitado", + "This share is password-protected" : "Este elemento compartido esta protegido con contraseña", + "The password is wrong. Try again." : "La contraseña es incorrecta. Favor de intentarlo de nuevo.", "Password" : "Contraseña", + "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Name" : "Nombre", - "Sorry, this link doesn’t seem to work anymore." : "Lo siento, este enlace al parecer ya no funciona.", + "Expiration date" : "Fecha de expiración", + "Sorry, this link doesn’t seem to work anymore." : "Lo sentimos, esta liga no parece funcionar más. ", "Reasons might be:" : "Las causas podrÃan ser:", "the item was removed" : "el elemento fue eliminado", - "the link expired" : "el enlace expiró", - "sharing is disabled" : "compartir está desactivado", - "For more info, please ask the person who sent this link." : "Para mayor información, contacte a la persona que le envió el enlace.", + "the link expired" : "la liga expiró", + "sharing is disabled" : "compartir está deshabilitado", + "For more info, please ask the person who sent this link." : "Para mayores informes, contacte a la persona que le envió esta liga.", + "Add to your Nextcloud" : "Agregar a su Nextcloud", "Download" : "Descargar", - "Direct link" : "Enlace directo" + "Download %s" : "Descargar %s", + "Direct link" : "Liga directa", + "Upload files to %s" : "Cargar archivos a %s", + "Uploading files…" : "Cargando archivos...", + "Uploaded files:" : "Archivos cargados:" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/fi.js b/apps/files_sharing/l10n/fi.js index 19393d8d93a..809c2b76170 100644 --- a/apps/files_sharing/l10n/fi.js +++ b/apps/files_sharing/l10n/fi.js @@ -57,6 +57,7 @@ OC.L10N.register( "{actor} removed share" : "{actor} lopetti jakamisen", "You shared {file} with {user}" : "Jaoit kohteen {file} käyttäjälle {user}", "You removed {user} from {file}" : "Poistit käyttäjän {user} kohteen {file} käyttöoikeudet", + "{actor} shared {file} with {user}" : "{actor} jakoi kohteen {file} käyttäjälle {user}", "{actor} removed {user} from {file}" : "{actor} poisti käyttäjän {user} kohteen {file} käyttöoikeudet", "{actor} shared {file} with you" : "{actor} jakoi kohteen {file} kanssasi", "{actor} removed you from {file}" : "{actor} poisti käyttöoikeutesi kohteeseen {file}", diff --git a/apps/files_sharing/l10n/fi.json b/apps/files_sharing/l10n/fi.json index 195db6370fc..276b09f5a6a 100644 --- a/apps/files_sharing/l10n/fi.json +++ b/apps/files_sharing/l10n/fi.json @@ -55,6 +55,7 @@ "{actor} removed share" : "{actor} lopetti jakamisen", "You shared {file} with {user}" : "Jaoit kohteen {file} käyttäjälle {user}", "You removed {user} from {file}" : "Poistit käyttäjän {user} kohteen {file} käyttöoikeudet", + "{actor} shared {file} with {user}" : "{actor} jakoi kohteen {file} käyttäjälle {user}", "{actor} removed {user} from {file}" : "{actor} poisti käyttäjän {user} kohteen {file} käyttöoikeudet", "{actor} shared {file} with you" : "{actor} jakoi kohteen {file} kanssasi", "{actor} removed you from {file}" : "{actor} poisti käyttöoikeutesi kohteeseen {file}", diff --git a/apps/files_sharing/l10n/pt_BR.js b/apps/files_sharing/l10n/pt_BR.js index 92328bf0beb..305ec8388dd 100644 --- a/apps/files_sharing/l10n/pt_BR.js +++ b/apps/files_sharing/l10n/pt_BR.js @@ -4,15 +4,15 @@ OC.L10N.register( "Shared with you" : "Compartilhado com você", "Shared with others" : "Compartilhado com outros", "Shared by link" : "Compartilhado por link", - "Nothing shared with you yet" : "Nada compartilhado com você até agora", + "Nothing shared with you yet" : "Nada foi compartilhado com você até agora", "Files and folders others share with you will show up here" : "Arquivos e pastas que outros compartilham com você são mostrados aqui", "Nothing shared yet" : "Nada compartilhado até agora", "Files and folders you share will show up here" : "Arquivos e pastas que você compartilha são mostrados aqui", "No shared links" : "Nenhum link compartilhado", "Files and folders you share by link will show up here" : "Arquivos e pastas que você compartilha com link são mostrados aqui", "You can upload into this folder" : "Você não pode enviar arquivos para esta pasta", - "No compatible server found at {remote}" : "Nenhum servidor compativel encnotrado em {remote}", - "Invalid server URL" : "URL do servidor inválida", + "No compatible server found at {remote}" : "Nenhum servidor compativel encontrado em {remote}", + "Invalid server URL" : "URL inválida do servidor", "Failed to add the public link to your Nextcloud" : "Ocorreu uma falha ao adicionar o link público ao seu Nextcloud", "Share" : "Compartilhamento", "No expiration date set" : "Nenhuma data de expiração definida", @@ -36,19 +36,19 @@ OC.L10N.register( "Public link expired" : "O link público expirou", "{actor} shared as public link" : "{actor} compartilhado como um link publico", "{actor} removed public link" : "{actor} removido link publico", - "Public link of {actor} expired" : "O Link público de {actor} expirou.", + "Public link of {actor} expired" : "O link público de {actor} expirou.", "You shared {file} as public link" : "Voce compartilhou {file} como um link publico", "You removed public link for {file}" : "Voce removeu o link publico para {file}", - "Public link expired for {file}" : "O Link Público para {file} expirou", + "Public link expired for {file}" : "O link público para {file} expirou", "{actor} shared {file} as public link" : "{actor} compartilhado {file} como um link publico", "{actor} removed public link for {file}" : "{actor} removido link publico para {file}", - "Public link of {actor} for {file} expired" : "O Link Público de {actor} para {file} espirou", + "Public link of {actor} for {file} expired" : "O link público de {actor} para {file} espirou", "{user} accepted the remote share" : "{user} aceitou o compartilhamento remoto", "{user} declined the remote share" : "{user} declinou do compartilhamento remoto", "You received a new remote share {file} from {user}" : "Voce recebeu um novo compartilhamento remoto {file} de {user}", "{user} accepted the remote share of {file}" : "{user} aceitou o compartilhamento remoto de {file}", - "{user} declined the remote share of {file}" : "{user} declinou o compartilhamento remoto de {file}", - "{user} unshared {file} from you" : "{user} descompartilhou {file} de voce", + "{user} declined the remote share of {file}" : "{user} declinou do compartilhamento remoto de {file}", + "{user} unshared {file} from you" : "{user} descompartilhou {file} de você", "Shared with {user}" : "Compartilhado com {user}", "Removed share for {user}" : "Compartilhamento removido para {user}", "{actor} shared with {user}" : "{actor} compartilhado com {user}", @@ -57,17 +57,18 @@ OC.L10N.register( "{actor} removed share" : "{actor} compartilhamento removido", "You shared {file} with {user}" : "Voce compartilhou {arquivo} com {user}", "You removed {user} from {file}" : "Voce removeu {user} de {file}", + "{actor} shared {file} with {user}" : "{actor} compartilhado {file} com {user}", "{actor} removed {user} from {file}" : "{actor} removido {user} de {file}", - "{actor} shared {file} with you" : "{actor} compartilhado {file} com voce", - "{actor} removed you from {file}" : "{actor} removeu voce de {file}", + "{actor} shared {file} with you" : "{actor} compartilhado {file} com você", + "{actor} removed you from {file}" : "{actor} removeu você de {file}", "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Um arquivo ou pasta compartilhado por email ou por link publico foi <strong>baixado</strong>", "A file or folder was shared from <strong>another server</strong>" : "Um arquivo ou pasta foi compartilhado a partir de <strong>outro servidor</strong>", "A file or folder has been <strong>shared</strong>" : "Um arquivo ou pasta foi <strong>compartilhado</strong> ", "Wrong share ID, share doesn't exist" : "ID de compartilhamento errado, o compartilhamento não existe", "could not delete share" : "não foi possÃvel excluir o compartilhamento", - "Could not delete share" : "Não foi possÃvel eliminar o compartilhamento", + "Could not delete share" : "Não foi possÃvel excluir o compartilhamento", "Please specify a file or folder path" : "Por favor especifique um arquivo ou caminho", - "Wrong path, file/folder doesn't exist" : "Caminho errado, arquivo/pasta não existe", + "Wrong path, file/folder doesn't exist" : "Caminho errado, o arquivo ou pasta não existe", "Could not create share" : "Não foi possÃvel criar o compartilhamento", "invalid permissions" : "permissões inválidas", "Please specify a valid user" : "Por favor especifique um usuário válido", @@ -78,27 +79,29 @@ OC.L10N.register( "Public upload is only possible for publicly shared folders" : "Envio pública só é possÃvel para pastas compartilhadas publicamente", "Invalid date, date format must be YYYY-MM-DD" : "Data inválida, o formato de data deve ser YYYY-MM-DD", "Sharing %s failed because the back end does not allow shares from type %s" : "O compartilhando %s falhou porque o backend não permite ações de tipo %s", + "You cannot share to a Circle if the app is not enabled" : "Você não pode compartilhar para um cÃrculo se o aplicativo não está habiltiado", + "Please specify a valid circle" : "Por favor especifique um cÃrculo válido", "Unknown share type" : "Tipo de compartilhamento desconhecido", "Not a directory" : "Não é um diretório", "Could not lock path" : "Não foi possÃvel bloquear o caminho", - "Wrong or no update parameter given" : "Está errado ou nenhum parâmetro de atualização foi fornecido", + "Wrong or no update parameter given" : "O parâmetro de atualização fornecido está errado ou desatualizado", "Can't change permissions for public share links" : "Não é possÃvel alterar permissões para compartilhar links públicos", - "Cannot increase permissions" : "Não pode haver aumento de permissões", + "Cannot increase permissions" : "Não é possÃvel aumentar permissões", "%s is publicly shared" : "%s é um compartilhamento publico", "Share API is disabled" : "O compartilhamento de API está desabilitado.", - "This share is password-protected" : "Este compartilhamento esta protegido por senha", + "This share is password-protected" : "Este compartilhamento é protegido por senha", "The password is wrong. Try again." : "Senha incorreta. Tente novamente.", "Password" : "Senha", "No entries found in this folder" : "Nenhuma entrada foi encontrada nesta pasta", "Name" : "Nome", - "Share time" : "Data compartilhado", + "Share time" : "Data de compartilhamento", "Expiration date" : "Data de expiração", - "Sorry, this link doesn’t seem to work anymore." : "Desculpe, este link parece não mais funcionar.", + "Sorry, this link doesn’t seem to work anymore." : "Desculpe, este link parece não mais funcionar.", "Reasons might be:" : "As razões podem ser:", "the item was removed" : "o item foi removido", "the link expired" : "o link expirou", "sharing is disabled" : "o compartilhamento está desativado", - "For more info, please ask the person who sent this link." : "Para mais informações, por favor, pergunte a pessoa que enviou este link.", + "For more info, please ask the person who sent this link." : "Para mais informações, por favor, pergunte à pessoa que lhe enviou este link.", "Add to your Nextcloud" : "Adicionar ao seu Nextcloud", "Download" : "Baixar", "Download %s" : "Baixar %s", diff --git a/apps/files_sharing/l10n/pt_BR.json b/apps/files_sharing/l10n/pt_BR.json index 58ed59a7a69..cab191c7877 100644 --- a/apps/files_sharing/l10n/pt_BR.json +++ b/apps/files_sharing/l10n/pt_BR.json @@ -2,15 +2,15 @@ "Shared with you" : "Compartilhado com você", "Shared with others" : "Compartilhado com outros", "Shared by link" : "Compartilhado por link", - "Nothing shared with you yet" : "Nada compartilhado com você até agora", + "Nothing shared with you yet" : "Nada foi compartilhado com você até agora", "Files and folders others share with you will show up here" : "Arquivos e pastas que outros compartilham com você são mostrados aqui", "Nothing shared yet" : "Nada compartilhado até agora", "Files and folders you share will show up here" : "Arquivos e pastas que você compartilha são mostrados aqui", "No shared links" : "Nenhum link compartilhado", "Files and folders you share by link will show up here" : "Arquivos e pastas que você compartilha com link são mostrados aqui", "You can upload into this folder" : "Você não pode enviar arquivos para esta pasta", - "No compatible server found at {remote}" : "Nenhum servidor compativel encnotrado em {remote}", - "Invalid server URL" : "URL do servidor inválida", + "No compatible server found at {remote}" : "Nenhum servidor compativel encontrado em {remote}", + "Invalid server URL" : "URL inválida do servidor", "Failed to add the public link to your Nextcloud" : "Ocorreu uma falha ao adicionar o link público ao seu Nextcloud", "Share" : "Compartilhamento", "No expiration date set" : "Nenhuma data de expiração definida", @@ -34,19 +34,19 @@ "Public link expired" : "O link público expirou", "{actor} shared as public link" : "{actor} compartilhado como um link publico", "{actor} removed public link" : "{actor} removido link publico", - "Public link of {actor} expired" : "O Link público de {actor} expirou.", + "Public link of {actor} expired" : "O link público de {actor} expirou.", "You shared {file} as public link" : "Voce compartilhou {file} como um link publico", "You removed public link for {file}" : "Voce removeu o link publico para {file}", - "Public link expired for {file}" : "O Link Público para {file} expirou", + "Public link expired for {file}" : "O link público para {file} expirou", "{actor} shared {file} as public link" : "{actor} compartilhado {file} como um link publico", "{actor} removed public link for {file}" : "{actor} removido link publico para {file}", - "Public link of {actor} for {file} expired" : "O Link Público de {actor} para {file} espirou", + "Public link of {actor} for {file} expired" : "O link público de {actor} para {file} espirou", "{user} accepted the remote share" : "{user} aceitou o compartilhamento remoto", "{user} declined the remote share" : "{user} declinou do compartilhamento remoto", "You received a new remote share {file} from {user}" : "Voce recebeu um novo compartilhamento remoto {file} de {user}", "{user} accepted the remote share of {file}" : "{user} aceitou o compartilhamento remoto de {file}", - "{user} declined the remote share of {file}" : "{user} declinou o compartilhamento remoto de {file}", - "{user} unshared {file} from you" : "{user} descompartilhou {file} de voce", + "{user} declined the remote share of {file}" : "{user} declinou do compartilhamento remoto de {file}", + "{user} unshared {file} from you" : "{user} descompartilhou {file} de você", "Shared with {user}" : "Compartilhado com {user}", "Removed share for {user}" : "Compartilhamento removido para {user}", "{actor} shared with {user}" : "{actor} compartilhado com {user}", @@ -55,17 +55,18 @@ "{actor} removed share" : "{actor} compartilhamento removido", "You shared {file} with {user}" : "Voce compartilhou {arquivo} com {user}", "You removed {user} from {file}" : "Voce removeu {user} de {file}", + "{actor} shared {file} with {user}" : "{actor} compartilhado {file} com {user}", "{actor} removed {user} from {file}" : "{actor} removido {user} de {file}", - "{actor} shared {file} with you" : "{actor} compartilhado {file} com voce", - "{actor} removed you from {file}" : "{actor} removeu voce de {file}", + "{actor} shared {file} with you" : "{actor} compartilhado {file} com você", + "{actor} removed you from {file}" : "{actor} removeu você de {file}", "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Um arquivo ou pasta compartilhado por email ou por link publico foi <strong>baixado</strong>", "A file or folder was shared from <strong>another server</strong>" : "Um arquivo ou pasta foi compartilhado a partir de <strong>outro servidor</strong>", "A file or folder has been <strong>shared</strong>" : "Um arquivo ou pasta foi <strong>compartilhado</strong> ", "Wrong share ID, share doesn't exist" : "ID de compartilhamento errado, o compartilhamento não existe", "could not delete share" : "não foi possÃvel excluir o compartilhamento", - "Could not delete share" : "Não foi possÃvel eliminar o compartilhamento", + "Could not delete share" : "Não foi possÃvel excluir o compartilhamento", "Please specify a file or folder path" : "Por favor especifique um arquivo ou caminho", - "Wrong path, file/folder doesn't exist" : "Caminho errado, arquivo/pasta não existe", + "Wrong path, file/folder doesn't exist" : "Caminho errado, o arquivo ou pasta não existe", "Could not create share" : "Não foi possÃvel criar o compartilhamento", "invalid permissions" : "permissões inválidas", "Please specify a valid user" : "Por favor especifique um usuário válido", @@ -76,27 +77,29 @@ "Public upload is only possible for publicly shared folders" : "Envio pública só é possÃvel para pastas compartilhadas publicamente", "Invalid date, date format must be YYYY-MM-DD" : "Data inválida, o formato de data deve ser YYYY-MM-DD", "Sharing %s failed because the back end does not allow shares from type %s" : "O compartilhando %s falhou porque o backend não permite ações de tipo %s", + "You cannot share to a Circle if the app is not enabled" : "Você não pode compartilhar para um cÃrculo se o aplicativo não está habiltiado", + "Please specify a valid circle" : "Por favor especifique um cÃrculo válido", "Unknown share type" : "Tipo de compartilhamento desconhecido", "Not a directory" : "Não é um diretório", "Could not lock path" : "Não foi possÃvel bloquear o caminho", - "Wrong or no update parameter given" : "Está errado ou nenhum parâmetro de atualização foi fornecido", + "Wrong or no update parameter given" : "O parâmetro de atualização fornecido está errado ou desatualizado", "Can't change permissions for public share links" : "Não é possÃvel alterar permissões para compartilhar links públicos", - "Cannot increase permissions" : "Não pode haver aumento de permissões", + "Cannot increase permissions" : "Não é possÃvel aumentar permissões", "%s is publicly shared" : "%s é um compartilhamento publico", "Share API is disabled" : "O compartilhamento de API está desabilitado.", - "This share is password-protected" : "Este compartilhamento esta protegido por senha", + "This share is password-protected" : "Este compartilhamento é protegido por senha", "The password is wrong. Try again." : "Senha incorreta. Tente novamente.", "Password" : "Senha", "No entries found in this folder" : "Nenhuma entrada foi encontrada nesta pasta", "Name" : "Nome", - "Share time" : "Data compartilhado", + "Share time" : "Data de compartilhamento", "Expiration date" : "Data de expiração", - "Sorry, this link doesn’t seem to work anymore." : "Desculpe, este link parece não mais funcionar.", + "Sorry, this link doesn’t seem to work anymore." : "Desculpe, este link parece não mais funcionar.", "Reasons might be:" : "As razões podem ser:", "the item was removed" : "o item foi removido", "the link expired" : "o link expirou", "sharing is disabled" : "o compartilhamento está desativado", - "For more info, please ask the person who sent this link." : "Para mais informações, por favor, pergunte a pessoa que enviou este link.", + "For more info, please ask the person who sent this link." : "Para mais informações, por favor, pergunte à pessoa que lhe enviou este link.", "Add to your Nextcloud" : "Adicionar ao seu Nextcloud", "Download" : "Baixar", "Download %s" : "Baixar %s", diff --git a/apps/files_sharing/l10n/ru.js b/apps/files_sharing/l10n/ru.js index 7370d65f9d7..5065569f27a 100644 --- a/apps/files_sharing/l10n/ru.js +++ b/apps/files_sharing/l10n/ru.js @@ -19,7 +19,7 @@ OC.L10N.register( "Shared by" : "ПоделилÑÑ", "Sharing" : "Общий доÑтуп", "File shares" : "Файловые реÑурÑÑ‹ общего доÑтупа", - "Downloaded via public link" : "Скачано по открытой ÑÑылке", + "Downloaded via public link" : "Скачано по общедоÑтупной ÑÑылке", "Downloaded by {email}" : "Скачано {email}", "{file} downloaded via public link" : "{file} Ñкачан по общедоÑтупной ÑÑылке", "{email} downloaded {file}" : "{email} Ñкачал {file}", @@ -74,7 +74,7 @@ OC.L10N.register( "Please specify a valid user" : "ПожалуйÑта, укажите допуÑтимого пользователÑ", "Group sharing is disabled by the administrator" : "Общий доÑтуп Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¿ отключён админиÑтратором", "Please specify a valid group" : "ПожалуйÑта, укажите допуÑтимую группу", - "Public link sharing is disabled by the administrator" : "ÐŸÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ñ Ñ‡ÐµÑ€ÐµÐ· общие ÑÑылки отключена админиÑтратором", + "Public link sharing is disabled by the administrator" : "ÐŸÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ñ Ñ‡ÐµÑ€ÐµÐ· общедоÑтупные ÑÑылки отключена админиÑтратором", "Public upload disabled by the administrator" : "Загрузка в общедоÑтупную публикацию запрещена админиÑтратором", "Public upload is only possible for publicly shared folders" : "ОбщедоÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° возможна только в папки Ñ Ð¾Ð±Ñ‰Ð¸Ð¼ доÑтупом", "Invalid date, date format must be YYYY-MM-DD" : "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð°Ñ‚Ð°, формат даты должен быть ГГГГ-ММ-ДД", @@ -85,9 +85,9 @@ OC.L10N.register( "Not a directory" : "Ðто не каталог", "Could not lock path" : "Ðе удалоÑÑŒ заблокировать путь", "Wrong or no update parameter given" : "Параметр Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÐµÐ½ или не задан", - "Can't change permissions for public share links" : "Ðевозможно изменить права Ð´Ð»Ñ Ð¿ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ через ÑÑылку", + "Can't change permissions for public share links" : "Ðевозможно изменить права Ð´Ð»Ñ Ð¿ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ через общедоÑтупной ÑÑылку", "Cannot increase permissions" : "ÐÐµÐ»ÑŒÐ·Ñ ÑƒÐ²ÐµÐ»Ð¸Ñ‡Ð¸Ñ‚ÑŒ права", - "%s is publicly shared" : "%s опубликован", + "%s is publicly shared" : "%s опубликован ", "Share API is disabled" : "API общего доÑтупа отключён", "This share is password-protected" : "Общий реÑÑƒÑ€Ñ Ð·Ð°Ñ‰Ð¸Ñ‰ÐµÐ½ паролем", "The password is wrong. Try again." : "Ðеверный пароль. Попробуйте еще раз.", diff --git a/apps/files_sharing/l10n/ru.json b/apps/files_sharing/l10n/ru.json index 230e4d78b4a..8330a55101d 100644 --- a/apps/files_sharing/l10n/ru.json +++ b/apps/files_sharing/l10n/ru.json @@ -17,7 +17,7 @@ "Shared by" : "ПоделилÑÑ", "Sharing" : "Общий доÑтуп", "File shares" : "Файловые реÑурÑÑ‹ общего доÑтупа", - "Downloaded via public link" : "Скачано по открытой ÑÑылке", + "Downloaded via public link" : "Скачано по общедоÑтупной ÑÑылке", "Downloaded by {email}" : "Скачано {email}", "{file} downloaded via public link" : "{file} Ñкачан по общедоÑтупной ÑÑылке", "{email} downloaded {file}" : "{email} Ñкачал {file}", @@ -72,7 +72,7 @@ "Please specify a valid user" : "ПожалуйÑта, укажите допуÑтимого пользователÑ", "Group sharing is disabled by the administrator" : "Общий доÑтуп Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¿ отключён админиÑтратором", "Please specify a valid group" : "ПожалуйÑта, укажите допуÑтимую группу", - "Public link sharing is disabled by the administrator" : "ÐŸÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ñ Ñ‡ÐµÑ€ÐµÐ· общие ÑÑылки отключена админиÑтратором", + "Public link sharing is disabled by the administrator" : "ÐŸÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ñ Ñ‡ÐµÑ€ÐµÐ· общедоÑтупные ÑÑылки отключена админиÑтратором", "Public upload disabled by the administrator" : "Загрузка в общедоÑтупную публикацию запрещена админиÑтратором", "Public upload is only possible for publicly shared folders" : "ОбщедоÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° возможна только в папки Ñ Ð¾Ð±Ñ‰Ð¸Ð¼ доÑтупом", "Invalid date, date format must be YYYY-MM-DD" : "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð°Ñ‚Ð°, формат даты должен быть ГГГГ-ММ-ДД", @@ -83,9 +83,9 @@ "Not a directory" : "Ðто не каталог", "Could not lock path" : "Ðе удалоÑÑŒ заблокировать путь", "Wrong or no update parameter given" : "Параметр Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÐµÐ½ или не задан", - "Can't change permissions for public share links" : "Ðевозможно изменить права Ð´Ð»Ñ Ð¿ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ через ÑÑылку", + "Can't change permissions for public share links" : "Ðевозможно изменить права Ð´Ð»Ñ Ð¿ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸ через общедоÑтупной ÑÑылку", "Cannot increase permissions" : "ÐÐµÐ»ÑŒÐ·Ñ ÑƒÐ²ÐµÐ»Ð¸Ñ‡Ð¸Ñ‚ÑŒ права", - "%s is publicly shared" : "%s опубликован", + "%s is publicly shared" : "%s опубликован ", "Share API is disabled" : "API общего доÑтупа отключён", "This share is password-protected" : "Общий реÑÑƒÑ€Ñ Ð·Ð°Ñ‰Ð¸Ñ‰ÐµÐ½ паролем", "The password is wrong. Try again." : "Ðеверный пароль. Попробуйте еще раз.", diff --git a/apps/files_trashbin/l10n/es_MX.js b/apps/files_trashbin/l10n/es_MX.js index 109427e9d80..62c1944a81f 100644 --- a/apps/files_trashbin/l10n/es_MX.js +++ b/apps/files_trashbin/l10n/es_MX.js @@ -1,15 +1,21 @@ OC.L10N.register( "files_trashbin", { - "Couldn't delete %s permanently" : "No se puede eliminar %s permanentemente", - "Couldn't restore %s" : "No se puede restaurar %s", - "Deleted files" : "Archivos eliminados", - "Restore" : "Recuperar", - "Delete" : "Eliminar", - "Delete permanently" : "Eliminar permanentemente", + "Couldn't delete %s permanently" : "No fue posible eliminar %s permanentemente", + "Couldn't restore %s" : "No fue posible restaurar %s", + "Deleted files" : "Archivos borrados", + "Restore" : "Restaurar", + "Delete" : "Borrar", + "Delete permanently" : "Borrar permanentemente", "Error" : "Error", - "restored" : "recuperado", + "This operation is forbidden" : "Esta opración está prohibida", + "This directory is unavailable, please check the logs or contact the administrator" : "Este directorio no está disponible, favor de verificar las bitácoras o contacte al administrador", + "restored" : "restaurado", + "No deleted files" : "No hay archivos borrados", + "You will be able to recover deleted files from here" : "Usted podrá recuperar archivos borrados desde aquÃ", + "No entries found in this folder" : "No se encontraron elementos en esta carpeta", + "Select all" : "Seleccionar todo", "Name" : "Nombre", - "Deleted" : "Eliminado" + "Deleted" : "Borrado" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/es_MX.json b/apps/files_trashbin/l10n/es_MX.json index a1bbba28cde..294115a66e4 100644 --- a/apps/files_trashbin/l10n/es_MX.json +++ b/apps/files_trashbin/l10n/es_MX.json @@ -1,13 +1,19 @@ { "translations": { - "Couldn't delete %s permanently" : "No se puede eliminar %s permanentemente", - "Couldn't restore %s" : "No se puede restaurar %s", - "Deleted files" : "Archivos eliminados", - "Restore" : "Recuperar", - "Delete" : "Eliminar", - "Delete permanently" : "Eliminar permanentemente", + "Couldn't delete %s permanently" : "No fue posible eliminar %s permanentemente", + "Couldn't restore %s" : "No fue posible restaurar %s", + "Deleted files" : "Archivos borrados", + "Restore" : "Restaurar", + "Delete" : "Borrar", + "Delete permanently" : "Borrar permanentemente", "Error" : "Error", - "restored" : "recuperado", + "This operation is forbidden" : "Esta opración está prohibida", + "This directory is unavailable, please check the logs or contact the administrator" : "Este directorio no está disponible, favor de verificar las bitácoras o contacte al administrador", + "restored" : "restaurado", + "No deleted files" : "No hay archivos borrados", + "You will be able to recover deleted files from here" : "Usted podrá recuperar archivos borrados desde aquÃ", + "No entries found in this folder" : "No se encontraron elementos en esta carpeta", + "Select all" : "Seleccionar todo", "Name" : "Nombre", - "Deleted" : "Eliminado" + "Deleted" : "Borrado" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/pt_BR.js b/apps/files_trashbin/l10n/pt_BR.js index 806200ea651..105b3f5a480 100644 --- a/apps/files_trashbin/l10n/pt_BR.js +++ b/apps/files_trashbin/l10n/pt_BR.js @@ -3,16 +3,16 @@ OC.L10N.register( { "Couldn't delete %s permanently" : "Não foi possÃvel excluir %s permanentemente", "Couldn't restore %s" : "Não foi possÃvel restaurar %s", - "Deleted files" : "Arquivos apagados", + "Deleted files" : "Arquivos excluÃdos", "Restore" : "Restaurar", "Delete" : "Excluir", "Delete permanently" : "Excluir permanentemente", "Error" : "Erro", "This operation is forbidden" : "Esta operação é proibida", - "This directory is unavailable, please check the logs or contact the administrator" : "Este diretório não está disponÃvel, por favor, verifique os logs ou entre em contato com o administrador", + "This directory is unavailable, please check the logs or contact the administrator" : "Este diretório não está disponÃvel. Por favor verifique os logs ou entre em contato com o administrador", "restored" : "restaurado", "No deleted files" : "Nenhum arquivo excluÃdo", - "You will be able to recover deleted files from here" : "Neste local, você será capaz de recuperar arquivos excluÃdos", + "You will be able to recover deleted files from here" : "Neste local, você pode recuperar arquivos excluÃdos", "No entries found in this folder" : "Nenhuma entrada foi encontrada nesta pasta", "Select all" : "Selecionar tudo", "Name" : "Nome", diff --git a/apps/files_trashbin/l10n/pt_BR.json b/apps/files_trashbin/l10n/pt_BR.json index 177a377bdfd..f9cad4f911d 100644 --- a/apps/files_trashbin/l10n/pt_BR.json +++ b/apps/files_trashbin/l10n/pt_BR.json @@ -1,16 +1,16 @@ { "translations": { "Couldn't delete %s permanently" : "Não foi possÃvel excluir %s permanentemente", "Couldn't restore %s" : "Não foi possÃvel restaurar %s", - "Deleted files" : "Arquivos apagados", + "Deleted files" : "Arquivos excluÃdos", "Restore" : "Restaurar", "Delete" : "Excluir", "Delete permanently" : "Excluir permanentemente", "Error" : "Erro", "This operation is forbidden" : "Esta operação é proibida", - "This directory is unavailable, please check the logs or contact the administrator" : "Este diretório não está disponÃvel, por favor, verifique os logs ou entre em contato com o administrador", + "This directory is unavailable, please check the logs or contact the administrator" : "Este diretório não está disponÃvel. Por favor verifique os logs ou entre em contato com o administrador", "restored" : "restaurado", "No deleted files" : "Nenhum arquivo excluÃdo", - "You will be able to recover deleted files from here" : "Neste local, você será capaz de recuperar arquivos excluÃdos", + "You will be able to recover deleted files from here" : "Neste local, você pode recuperar arquivos excluÃdos", "No entries found in this folder" : "Nenhuma entrada foi encontrada nesta pasta", "Select all" : "Selecionar tudo", "Name" : "Nome", diff --git a/apps/files_trashbin/l10n/sr.js b/apps/files_trashbin/l10n/sr.js index dc3c8b46bc7..0654dc5711f 100644 --- a/apps/files_trashbin/l10n/sr.js +++ b/apps/files_trashbin/l10n/sr.js @@ -9,7 +9,7 @@ OC.L10N.register( "Delete permanently" : "Обриши заувек", "Error" : "Грешка", "This operation is forbidden" : "Ова радња је забрањена", - "This directory is unavailable, please check the logs or contact the administrator" : "Овај директоријум није доÑтупан, проверите запиÑе или контактирајте админиÑтратора", + "This directory is unavailable, please check the logs or contact the administrator" : "Овај директоријум није доÑтупан, проверите запиÑнике или контактирајте админиÑтратора", "restored" : "враћено", "No deleted files" : "Ðема обриÑаних фајлова", "You will be able to recover deleted files from here" : "Одавде ћете моћи да повратите обриÑане фајлове", diff --git a/apps/files_trashbin/l10n/sr.json b/apps/files_trashbin/l10n/sr.json index c57bbdb83d4..237a384988e 100644 --- a/apps/files_trashbin/l10n/sr.json +++ b/apps/files_trashbin/l10n/sr.json @@ -7,7 +7,7 @@ "Delete permanently" : "Обриши заувек", "Error" : "Грешка", "This operation is forbidden" : "Ова радња је забрањена", - "This directory is unavailable, please check the logs or contact the administrator" : "Овај директоријум није доÑтупан, проверите запиÑе или контактирајте админиÑтратора", + "This directory is unavailable, please check the logs or contact the administrator" : "Овај директоријум није доÑтупан, проверите запиÑнике или контактирајте админиÑтратора", "restored" : "враћено", "No deleted files" : "Ðема обриÑаних фајлова", "You will be able to recover deleted files from here" : "Одавде ћете моћи да повратите обриÑане фајлове", diff --git a/apps/files_versions/l10n/de.js b/apps/files_versions/l10n/de.js index 406f1f62142..9d9253cabf5 100644 --- a/apps/files_versions/l10n/de.js +++ b/apps/files_versions/l10n/de.js @@ -6,6 +6,8 @@ OC.L10N.register( "Failed to revert {file} to revision {timestamp}." : "Konnte {file} nicht auf Revision {timestamp} zurücksetzen.", "_%n byte_::_%n bytes_" : ["%n Byte","%n Bytes"], "Restore" : "Wiederherstellen", + "No earlier versions available" : "Keine Vorgänger-Versionen vorhanden", + "More versions …" : "Weitere Versionen...", "No versions available" : "Keine Versionen verfügbar", "More versions..." : "Weitere Versionen…" }, diff --git a/apps/files_versions/l10n/de.json b/apps/files_versions/l10n/de.json index ff62684ab68..7b36466c468 100644 --- a/apps/files_versions/l10n/de.json +++ b/apps/files_versions/l10n/de.json @@ -4,6 +4,8 @@ "Failed to revert {file} to revision {timestamp}." : "Konnte {file} nicht auf Revision {timestamp} zurücksetzen.", "_%n byte_::_%n bytes_" : ["%n Byte","%n Bytes"], "Restore" : "Wiederherstellen", + "No earlier versions available" : "Keine Vorgänger-Versionen vorhanden", + "More versions …" : "Weitere Versionen...", "No versions available" : "Keine Versionen verfügbar", "More versions..." : "Weitere Versionen…" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/files_versions/l10n/de_DE.js b/apps/files_versions/l10n/de_DE.js index 406f1f62142..9d9253cabf5 100644 --- a/apps/files_versions/l10n/de_DE.js +++ b/apps/files_versions/l10n/de_DE.js @@ -6,6 +6,8 @@ OC.L10N.register( "Failed to revert {file} to revision {timestamp}." : "Konnte {file} nicht auf Revision {timestamp} zurücksetzen.", "_%n byte_::_%n bytes_" : ["%n Byte","%n Bytes"], "Restore" : "Wiederherstellen", + "No earlier versions available" : "Keine Vorgänger-Versionen vorhanden", + "More versions …" : "Weitere Versionen...", "No versions available" : "Keine Versionen verfügbar", "More versions..." : "Weitere Versionen…" }, diff --git a/apps/files_versions/l10n/de_DE.json b/apps/files_versions/l10n/de_DE.json index ff62684ab68..7b36466c468 100644 --- a/apps/files_versions/l10n/de_DE.json +++ b/apps/files_versions/l10n/de_DE.json @@ -4,6 +4,8 @@ "Failed to revert {file} to revision {timestamp}." : "Konnte {file} nicht auf Revision {timestamp} zurücksetzen.", "_%n byte_::_%n bytes_" : ["%n Byte","%n Bytes"], "Restore" : "Wiederherstellen", + "No earlier versions available" : "Keine Vorgänger-Versionen vorhanden", + "More versions …" : "Weitere Versionen...", "No versions available" : "Keine Versionen verfügbar", "More versions..." : "Weitere Versionen…" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/files_versions/l10n/es_MX.js b/apps/files_versions/l10n/es_MX.js index 6feab9b132b..8bda31e11d3 100644 --- a/apps/files_versions/l10n/es_MX.js +++ b/apps/files_versions/l10n/es_MX.js @@ -1,11 +1,14 @@ OC.L10N.register( "files_versions", { - "Could not revert: %s" : "No se puede revertir: %s", - "Versions" : "Revisiones", - "Failed to revert {file} to revision {timestamp}." : "No se ha podido revertir {archivo} a revisión {timestamp}.", - "Restore" : "Recuperar", - "More versions..." : "Más versiones...", - "No other versions available" : "No hay otras versiones disponibles" + "Could not revert: %s" : "No fue posible revertir: %s", + "Versions" : "Versiones", + "Failed to revert {file} to revision {timestamp}." : "Falla al revertir {archivo} a revisión {timestamp}.", + "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], + "Restore" : "Restaurar", + "No earlier versions available" : "No hay versiones más antiguas disponibles", + "More versions …" : "Más versiones ...", + "No versions available" : "No hay versiones disponibles", + "More versions..." : "Más versiones..." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_versions/l10n/es_MX.json b/apps/files_versions/l10n/es_MX.json index a2ae49cf3c2..b31be35fcbc 100644 --- a/apps/files_versions/l10n/es_MX.json +++ b/apps/files_versions/l10n/es_MX.json @@ -1,9 +1,12 @@ { "translations": { - "Could not revert: %s" : "No se puede revertir: %s", - "Versions" : "Revisiones", - "Failed to revert {file} to revision {timestamp}." : "No se ha podido revertir {archivo} a revisión {timestamp}.", - "Restore" : "Recuperar", - "More versions..." : "Más versiones...", - "No other versions available" : "No hay otras versiones disponibles" + "Could not revert: %s" : "No fue posible revertir: %s", + "Versions" : "Versiones", + "Failed to revert {file} to revision {timestamp}." : "Falla al revertir {archivo} a revisión {timestamp}.", + "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], + "Restore" : "Restaurar", + "No earlier versions available" : "No hay versiones más antiguas disponibles", + "More versions …" : "Más versiones ...", + "No versions available" : "No hay versiones disponibles", + "More versions..." : "Más versiones..." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/fi.js b/apps/files_versions/l10n/fi.js index cd42bef6d3e..b89debb63c1 100644 --- a/apps/files_versions/l10n/fi.js +++ b/apps/files_versions/l10n/fi.js @@ -6,6 +6,8 @@ OC.L10N.register( "Failed to revert {file} to revision {timestamp}." : "Tiedoston {file} palautus versioon {timestamp} epäonnistui.", "_%n byte_::_%n bytes_" : ["%n tavu","%n tavua"], "Restore" : "Palauta", + "No earlier versions available" : "Ei aikaisempia versioita saatavilla", + "More versions …" : "Lisää versioita...", "No versions available" : "Ei versioita saatavilla", "More versions..." : "Lisää versioita..." }, diff --git a/apps/files_versions/l10n/fi.json b/apps/files_versions/l10n/fi.json index 6ae01393eb4..58d3311b77c 100644 --- a/apps/files_versions/l10n/fi.json +++ b/apps/files_versions/l10n/fi.json @@ -4,6 +4,8 @@ "Failed to revert {file} to revision {timestamp}." : "Tiedoston {file} palautus versioon {timestamp} epäonnistui.", "_%n byte_::_%n bytes_" : ["%n tavu","%n tavua"], "Restore" : "Palauta", + "No earlier versions available" : "Ei aikaisempia versioita saatavilla", + "More versions …" : "Lisää versioita...", "No versions available" : "Ei versioita saatavilla", "More versions..." : "Lisää versioita..." },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/files_versions/l10n/fr.js b/apps/files_versions/l10n/fr.js index fac6e07b067..ffe2aef4268 100644 --- a/apps/files_versions/l10n/fr.js +++ b/apps/files_versions/l10n/fr.js @@ -6,6 +6,8 @@ OC.L10N.register( "Failed to revert {file} to revision {timestamp}." : "Échec de la restauration du fichier {file} à la révision {timestamp}.", "_%n byte_::_%n bytes_" : ["%n octet","%n octets"], "Restore" : "Restaurer", + "No earlier versions available" : "Aucune version antérieure disponible", + "More versions …" : "Plus de versions ...", "No versions available" : "Aucune version n'est disponible", "More versions..." : "Plus de versions..." }, diff --git a/apps/files_versions/l10n/fr.json b/apps/files_versions/l10n/fr.json index 6debf34d06b..10380e10972 100644 --- a/apps/files_versions/l10n/fr.json +++ b/apps/files_versions/l10n/fr.json @@ -4,6 +4,8 @@ "Failed to revert {file} to revision {timestamp}." : "Échec de la restauration du fichier {file} à la révision {timestamp}.", "_%n byte_::_%n bytes_" : ["%n octet","%n octets"], "Restore" : "Restaurer", + "No earlier versions available" : "Aucune version antérieure disponible", + "More versions …" : "Plus de versions ...", "No versions available" : "Aucune version n'est disponible", "More versions..." : "Plus de versions..." },"pluralForm" :"nplurals=2; plural=(n > 1);" diff --git a/apps/files_versions/l10n/hu.js b/apps/files_versions/l10n/hu.js index 8cfb6ec4b4f..ecf008d08b0 100644 --- a/apps/files_versions/l10n/hu.js +++ b/apps/files_versions/l10n/hu.js @@ -6,6 +6,8 @@ OC.L10N.register( "Failed to revert {file} to revision {timestamp}." : "{file} fájlt nem sikerült erre visszaállÃtani: {timestamp}.", "_%n byte_::_%n bytes_" : ["%n bájt","%n bájt"], "Restore" : "VisszaállÃtás", + "No earlier versions available" : "Nincsenek elérhetÅ‘ korábbi verziók", + "More versions …" : "További változatok...", "No versions available" : "Nincs elérhetÅ‘ verzió", "More versions..." : "További változatok..." }, diff --git a/apps/files_versions/l10n/hu.json b/apps/files_versions/l10n/hu.json index 7a86d94cfac..dd4042722b4 100644 --- a/apps/files_versions/l10n/hu.json +++ b/apps/files_versions/l10n/hu.json @@ -4,6 +4,8 @@ "Failed to revert {file} to revision {timestamp}." : "{file} fájlt nem sikerült erre visszaállÃtani: {timestamp}.", "_%n byte_::_%n bytes_" : ["%n bájt","%n bájt"], "Restore" : "VisszaállÃtás", + "No earlier versions available" : "Nincsenek elérhetÅ‘ korábbi verziók", + "More versions …" : "További változatok...", "No versions available" : "Nincs elérhetÅ‘ verzió", "More versions..." : "További változatok..." },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/files_versions/l10n/is.js b/apps/files_versions/l10n/is.js index 0db905fec53..cf26daed813 100644 --- a/apps/files_versions/l10n/is.js +++ b/apps/files_versions/l10n/is.js @@ -6,6 +6,8 @@ OC.L10N.register( "Failed to revert {file} to revision {timestamp}." : "Mistókst að endurheimta {file} útgáfu {timestamp}.", "_%n byte_::_%n bytes_" : ["%n bæti","%n bæti"], "Restore" : "Endurheimta", + "No earlier versions available" : "Engar eldri útgáfur à boði", + "More versions …" : "Fleiri útgáfur ...", "No versions available" : "Engar aðrar útgáfur à boði", "More versions..." : "Fleiri útgáfur..." }, diff --git a/apps/files_versions/l10n/is.json b/apps/files_versions/l10n/is.json index 6b6d813bb42..b630cf52491 100644 --- a/apps/files_versions/l10n/is.json +++ b/apps/files_versions/l10n/is.json @@ -4,6 +4,8 @@ "Failed to revert {file} to revision {timestamp}." : "Mistókst að endurheimta {file} útgáfu {timestamp}.", "_%n byte_::_%n bytes_" : ["%n bæti","%n bæti"], "Restore" : "Endurheimta", + "No earlier versions available" : "Engar eldri útgáfur à boði", + "More versions …" : "Fleiri útgáfur ...", "No versions available" : "Engar aðrar útgáfur à boði", "More versions..." : "Fleiri útgáfur..." },"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);" diff --git a/apps/files_versions/l10n/ja.js b/apps/files_versions/l10n/ja.js index 176a1f3f0d1..405c12f1cb7 100644 --- a/apps/files_versions/l10n/ja.js +++ b/apps/files_versions/l10n/ja.js @@ -6,6 +6,8 @@ OC.L10N.register( "Failed to revert {file} to revision {timestamp}." : "{file} ã‚’ {timestamp} ã®ãƒªãƒ“ã‚¸ãƒ§ãƒ³ã«æˆ»ã™ã“ã¨ãŒã§ãã¾ã›ã‚“。", "_%n byte_::_%n bytes_" : ["%n ãƒã‚¤ãƒˆ"], "Restore" : "復元", + "No earlier versions available" : "以å‰ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“", + "More versions …" : "ä»–ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ …", "No versions available" : "å±¥æ´ã¯ã‚りã¾ã›ã‚“", "More versions..." : "ä»–ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³..." }, diff --git a/apps/files_versions/l10n/ja.json b/apps/files_versions/l10n/ja.json index 46348c4eb22..81f32fd61cf 100644 --- a/apps/files_versions/l10n/ja.json +++ b/apps/files_versions/l10n/ja.json @@ -4,6 +4,8 @@ "Failed to revert {file} to revision {timestamp}." : "{file} ã‚’ {timestamp} ã®ãƒªãƒ“ã‚¸ãƒ§ãƒ³ã«æˆ»ã™ã“ã¨ãŒã§ãã¾ã›ã‚“。", "_%n byte_::_%n bytes_" : ["%n ãƒã‚¤ãƒˆ"], "Restore" : "復元", + "No earlier versions available" : "以å‰ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“", + "More versions …" : "ä»–ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ …", "No versions available" : "å±¥æ´ã¯ã‚りã¾ã›ã‚“", "More versions..." : "ä»–ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³..." },"pluralForm" :"nplurals=1; plural=0;" diff --git a/apps/files_versions/l10n/nl.js b/apps/files_versions/l10n/nl.js index 4095f26dd17..b20dfe45af5 100644 --- a/apps/files_versions/l10n/nl.js +++ b/apps/files_versions/l10n/nl.js @@ -6,6 +6,8 @@ OC.L10N.register( "Failed to revert {file} to revision {timestamp}." : "Kon {file} niet terugdraaien naar revisie {timestamp}.", "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Restore" : "Herstellen", + "No earlier versions available" : "Geen oudere versies beschikbaar", + "More versions …" : "Meer versies...", "No versions available" : "Geen versies beschikbaar", "More versions..." : "Meer versies..." }, diff --git a/apps/files_versions/l10n/nl.json b/apps/files_versions/l10n/nl.json index dbca3ba272c..4b6243f9be2 100644 --- a/apps/files_versions/l10n/nl.json +++ b/apps/files_versions/l10n/nl.json @@ -4,6 +4,8 @@ "Failed to revert {file} to revision {timestamp}." : "Kon {file} niet terugdraaien naar revisie {timestamp}.", "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Restore" : "Herstellen", + "No earlier versions available" : "Geen oudere versies beschikbaar", + "More versions …" : "Meer versies...", "No versions available" : "Geen versies beschikbaar", "More versions..." : "Meer versies..." },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/files_versions/l10n/pl.js b/apps/files_versions/l10n/pl.js index 2fa561c46f6..525e5c2f4da 100644 --- a/apps/files_versions/l10n/pl.js +++ b/apps/files_versions/l10n/pl.js @@ -6,6 +6,8 @@ OC.L10N.register( "Failed to revert {file} to revision {timestamp}." : "Nie udaÅ‚o siÄ™ przywrócić {file} do wersji z {timestamp}.", "_%n byte_::_%n bytes_" : ["%n bajt","%n bajtów","%n bajtów","%n bajtów"], "Restore" : "Przywróć", + "No earlier versions available" : "Brak dostÄ™pnych wczeÅ›niejszych wersji", + "More versions …" : "WiÄ™cej wersji...", "No versions available" : "Brak wersji", "More versions..." : "WiÄ™cej wersji..." }, diff --git a/apps/files_versions/l10n/pl.json b/apps/files_versions/l10n/pl.json index 97f72cf5f77..236bdd26504 100644 --- a/apps/files_versions/l10n/pl.json +++ b/apps/files_versions/l10n/pl.json @@ -4,6 +4,8 @@ "Failed to revert {file} to revision {timestamp}." : "Nie udaÅ‚o siÄ™ przywrócić {file} do wersji z {timestamp}.", "_%n byte_::_%n bytes_" : ["%n bajt","%n bajtów","%n bajtów","%n bajtów"], "Restore" : "Przywróć", + "No earlier versions available" : "Brak dostÄ™pnych wczeÅ›niejszych wersji", + "More versions …" : "WiÄ™cej wersji...", "No versions available" : "Brak wersji", "More versions..." : "WiÄ™cej wersji..." },"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);" diff --git a/apps/files_versions/l10n/pt_BR.js b/apps/files_versions/l10n/pt_BR.js index 8d3eaa411ae..08d063a2d2c 100644 --- a/apps/files_versions/l10n/pt_BR.js +++ b/apps/files_versions/l10n/pt_BR.js @@ -6,6 +6,8 @@ OC.L10N.register( "Failed to revert {file} to revision {timestamp}." : "Falha ao reverter {file} para a revisão {timestamp}.", "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Restore" : "Restaurar", + "No earlier versions available" : "Não há versões mais novas disponÃveis", + "More versions …" : "Mais versões ...", "No versions available" : "Não há versões disponÃveis", "More versions..." : "Mais versões..." }, diff --git a/apps/files_versions/l10n/pt_BR.json b/apps/files_versions/l10n/pt_BR.json index 2000ba2fd73..9da5f7efac2 100644 --- a/apps/files_versions/l10n/pt_BR.json +++ b/apps/files_versions/l10n/pt_BR.json @@ -4,6 +4,8 @@ "Failed to revert {file} to revision {timestamp}." : "Falha ao reverter {file} para a revisão {timestamp}.", "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Restore" : "Restaurar", + "No earlier versions available" : "Não há versões mais novas disponÃveis", + "More versions …" : "Mais versões ...", "No versions available" : "Não há versões disponÃveis", "More versions..." : "Mais versões..." },"pluralForm" :"nplurals=2; plural=(n > 1);" diff --git a/apps/files_versions/l10n/ru.js b/apps/files_versions/l10n/ru.js index 2b1f0e8bed0..0d128bb0703 100644 --- a/apps/files_versions/l10n/ru.js +++ b/apps/files_versions/l10n/ru.js @@ -6,6 +6,8 @@ OC.L10N.register( "Failed to revert {file} to revision {timestamp}." : "Ðе удалоÑÑŒ откатить {file} к ревизии {timestamp}.", "_%n byte_::_%n bytes_" : ["%n байт","%n байта","%n байт","%n байт"], "Restore" : "Откатить", + "No earlier versions available" : "Ðет более ранних верÑий…", + "More versions …" : "Ещё верÑии…", "No versions available" : "Ðет доÑтупных верÑий", "More versions..." : "Ещё верÑии..." }, diff --git a/apps/files_versions/l10n/ru.json b/apps/files_versions/l10n/ru.json index 2dd932bb62f..d8577d33573 100644 --- a/apps/files_versions/l10n/ru.json +++ b/apps/files_versions/l10n/ru.json @@ -4,6 +4,8 @@ "Failed to revert {file} to revision {timestamp}." : "Ðе удалоÑÑŒ откатить {file} к ревизии {timestamp}.", "_%n byte_::_%n bytes_" : ["%n байт","%n байта","%n байт","%n байт"], "Restore" : "Откатить", + "No earlier versions available" : "Ðет более ранних верÑий…", + "More versions …" : "Ещё верÑии…", "No versions available" : "Ðет доÑтупных верÑий", "More versions..." : "Ещё верÑии..." },"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);" diff --git a/apps/files_versions/l10n/tr.js b/apps/files_versions/l10n/tr.js index 0f439a6abb6..a3861ead6fe 100644 --- a/apps/files_versions/l10n/tr.js +++ b/apps/files_versions/l10n/tr.js @@ -6,6 +6,8 @@ OC.L10N.register( "Failed to revert {file} to revision {timestamp}." : "{file} dosyası {timestamp} sürümüne geri alınamadı.", "_%n byte_::_%n bytes_" : ["%n bayt","%n bayt"], "Restore" : "Geri yükle", + "No earlier versions available" : "Kullanılabilecek daha önceki bir sürüm yok", + "More versions …" : "DiÄŸer sürümler ...", "No versions available" : "Herhangi bir sürüm yok", "More versions..." : "DiÄŸer sürümler..." }, diff --git a/apps/files_versions/l10n/tr.json b/apps/files_versions/l10n/tr.json index 930ff06f3b8..4f6898c0f67 100644 --- a/apps/files_versions/l10n/tr.json +++ b/apps/files_versions/l10n/tr.json @@ -4,6 +4,8 @@ "Failed to revert {file} to revision {timestamp}." : "{file} dosyası {timestamp} sürümüne geri alınamadı.", "_%n byte_::_%n bytes_" : ["%n bayt","%n bayt"], "Restore" : "Geri yükle", + "No earlier versions available" : "Kullanılabilecek daha önceki bir sürüm yok", + "More versions …" : "DiÄŸer sürümler ...", "No versions available" : "Herhangi bir sürüm yok", "More versions..." : "DiÄŸer sürümler..." },"pluralForm" :"nplurals=2; plural=(n > 1);" diff --git a/apps/files_versions/l10n/zh_CN.js b/apps/files_versions/l10n/zh_CN.js index bc7c43ff1e2..cd3f22b2ba4 100644 --- a/apps/files_versions/l10n/zh_CN.js +++ b/apps/files_versions/l10n/zh_CN.js @@ -1,11 +1,13 @@ OC.L10N.register( "files_versions", { - "Could not revert: %s" : "æ— æ³•æ¢å¤: %s", + "Could not revert: %s" : "æ— æ³•æ¢å¤ï¼š%s", "Versions" : "版本", "Failed to revert {file} to revision {timestamp}." : "æ— æ³•æ¢å¤ {file} 到 {timestamp} 的版本。", "_%n byte_::_%n bytes_" : ["%n 比特"], "Restore" : "æ¢å¤", + "No earlier versions available" : "æ— å¯ç”¨çš„æ›´æ—©çš„版本", + "More versions …" : "更多版本…", "No versions available" : "没有å¯ç”¨çš„版本", "More versions..." : "更多版本..." }, diff --git a/apps/files_versions/l10n/zh_CN.json b/apps/files_versions/l10n/zh_CN.json index 5c7482c5e19..865d994e74f 100644 --- a/apps/files_versions/l10n/zh_CN.json +++ b/apps/files_versions/l10n/zh_CN.json @@ -1,9 +1,11 @@ { "translations": { - "Could not revert: %s" : "æ— æ³•æ¢å¤: %s", + "Could not revert: %s" : "æ— æ³•æ¢å¤ï¼š%s", "Versions" : "版本", "Failed to revert {file} to revision {timestamp}." : "æ— æ³•æ¢å¤ {file} 到 {timestamp} 的版本。", "_%n byte_::_%n bytes_" : ["%n 比特"], "Restore" : "æ¢å¤", + "No earlier versions available" : "æ— å¯ç”¨çš„æ›´æ—©çš„版本", + "More versions …" : "更多版本…", "No versions available" : "没有å¯ç”¨çš„版本", "More versions..." : "更多版本..." },"pluralForm" :"nplurals=1; plural=0;" diff --git a/apps/sharebymail/l10n/es_MX.js b/apps/sharebymail/l10n/es_MX.js new file mode 100644 index 00000000000..68240925f4c --- /dev/null +++ b/apps/sharebymail/l10n/es_MX.js @@ -0,0 +1,24 @@ +OC.L10N.register( + "sharebymail", + { + "Shared with %1$s" : "Compartido con %1$s", + "Shared with {email}" : "Compartido con {email}", + "Shared with %1$s by %2$s" : "Compartido con %1$s por %2$s", + "Shared with {email} by {actor}" : "Compartido con {email} por {actor}", + "You shared %1$s with %2$s by mail" : "Usted ha compartido %1$s con %2$s por correo", + "You shared {file} with {email} by mail" : "Usted ha compartido {file} con {email} por correo", + "%3$s shared %1$s with %2$s by mail" : "%3$s ha compartido %1$s con %2$s por correo ", + "{actor} shared {file} with {email} by mail" : "{actor} ha compartido {file} con {email} por correo", + "Sharing %s failed, this item is already shared with %s" : "Se presentó una falla al compartir %s, este elemento ya ha sido compartido con %s", + "Failed to send share by E-mail" : "Se presentó una falla al enviar el recurso compartido por correo electrónico", + "%s shared »%s« with you" : "%s ha compartido »%s« con usted", + "%s shared »%s« with you on behalf of %s" : "%s ha compartido »%s« con usted a nombre de %s", + "Failed to create the E-mail" : "Se presentó una falla al crear el correo electrónico", + "Could not find share" : "No fue posible encontrar el elemento compartido", + "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Hola,\n\n%s ha compartido »%s« con usted a nombre de %s.\n\n%s\n", + "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Hola,\n\n%s ha compartido »%s« con usted.\n\n%s\n", + "Cheers!" : "¡Saludos!", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you on behalf of %s.<br><br>" : "Hola,<br><br>%s ha compartido <a href=\"%s\">%s</a> con usted a nombre de %s.<br><br> ", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you.<br><br>" : "Hola, <br><br>%s ha compartido <a href=\"%s\">%s</a> con usted.<br><br> " +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/sharebymail/l10n/es_MX.json b/apps/sharebymail/l10n/es_MX.json new file mode 100644 index 00000000000..b73e92c967f --- /dev/null +++ b/apps/sharebymail/l10n/es_MX.json @@ -0,0 +1,22 @@ +{ "translations": { + "Shared with %1$s" : "Compartido con %1$s", + "Shared with {email}" : "Compartido con {email}", + "Shared with %1$s by %2$s" : "Compartido con %1$s por %2$s", + "Shared with {email} by {actor}" : "Compartido con {email} por {actor}", + "You shared %1$s with %2$s by mail" : "Usted ha compartido %1$s con %2$s por correo", + "You shared {file} with {email} by mail" : "Usted ha compartido {file} con {email} por correo", + "%3$s shared %1$s with %2$s by mail" : "%3$s ha compartido %1$s con %2$s por correo ", + "{actor} shared {file} with {email} by mail" : "{actor} ha compartido {file} con {email} por correo", + "Sharing %s failed, this item is already shared with %s" : "Se presentó una falla al compartir %s, este elemento ya ha sido compartido con %s", + "Failed to send share by E-mail" : "Se presentó una falla al enviar el recurso compartido por correo electrónico", + "%s shared »%s« with you" : "%s ha compartido »%s« con usted", + "%s shared »%s« with you on behalf of %s" : "%s ha compartido »%s« con usted a nombre de %s", + "Failed to create the E-mail" : "Se presentó una falla al crear el correo electrónico", + "Could not find share" : "No fue posible encontrar el elemento compartido", + "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Hola,\n\n%s ha compartido »%s« con usted a nombre de %s.\n\n%s\n", + "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Hola,\n\n%s ha compartido »%s« con usted.\n\n%s\n", + "Cheers!" : "¡Saludos!", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you on behalf of %s.<br><br>" : "Hola,<br><br>%s ha compartido <a href=\"%s\">%s</a> con usted a nombre de %s.<br><br> ", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you.<br><br>" : "Hola, <br><br>%s ha compartido <a href=\"%s\">%s</a> con usted.<br><br> " +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/sharebymail/l10n/ja.js b/apps/sharebymail/l10n/ja.js new file mode 100644 index 00000000000..902780730d7 --- /dev/null +++ b/apps/sharebymail/l10n/ja.js @@ -0,0 +1,24 @@ +OC.L10N.register( + "sharebymail", + { + "Shared with %1$s" : "%1$s ã¨å…±æœ‰", + "Shared with {email}" : "{email} ã¨å…±æœ‰", + "Shared with %1$s by %2$s" : "%2$s ã§ %1$s ã¨å…±æœ‰", + "Shared with {email} by {actor}" : "{actor} ã§ {email} ã¨å…±æœ‰ ", + "You shared %1$s with %2$s by mail" : "メール㧠%2$s 㨠%1$s を共有ã—ã¾ã—ãŸ", + "You shared {file} with {email} by mail" : "メール㧠{email} 㨠{file} を共有ã—ã¾ã—ãŸ", + "%3$s shared %1$s with %2$s by mail" : "%3$s ãŒãƒ¡ãƒ¼ãƒ«ã§ %2$s 㨠%1$s を共有ã—ã¾ã—ãŸ", + "{actor} shared {file} with {email} by mail" : "{actor} ㌠{email} 㨠{file} を共有ã—ã¾ã—ãŸ", + "Sharing %s failed, this item is already shared with %s" : "%s ã®å…±æœ‰ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ ã“ã®ã‚¢ã‚¤ãƒ†ãƒ ã¯ã™ã§ã« %s ã¨å…±æœ‰ã—ã¦ã„ã¾ã™", + "Failed to send share by E-mail" : "メールã§å…±æœ‰ã®é€ä¿¡ã«å¤±æ•—ã—ã¾ã—ãŸ", + "%s shared »%s« with you" : "%s ãŒã‚ãªãŸã¨ »%s« を共有ã—ã¾ã—ãŸ", + "%s shared »%s« with you on behalf of %s" : "%s ãŒã‚ãªãŸã¨ »%s« ã‚’ %s ã®ãŸã‚ã«å…±æœ‰ã—ã¾ã—ãŸ", + "Failed to create the E-mail" : "メールã®ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸ", + "Could not find share" : "共有ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ", + "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "ã“ã‚“ã«ã¡ã¯ã€‚\n\n%s ㌠»%s« ã‚’ã‚ãªãŸã¨ %s ã®ãŸã‚ã«å…±æœ‰ã—ã¾ã—ãŸã€‚\n\n%s\n", + "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "ã“ã‚“ã«ã¡ã¯ã€‚\n\n%s ㌠»%s« ã‚’ã‚ãªãŸã¨å…±æœ‰ã—ã¾ã—ãŸã€‚\n\n%s\n", + "Cheers!" : "ãれã§ã¯ï¼", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you on behalf of %s.<br><br>" : "ã“ã‚“ã«ã¡ã¯ã€‚<br><br>%s ㌠<a href=\"%s\">%s</a> ã‚’ã‚ãªãŸã¨ %s ã®ãŸã‚ã«å…±æœ‰ã—ã¾ã—ãŸã€‚<br><br>", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you.<br><br>" : "ã“ã‚“ã«ã¡ã¯ã€‚<br><br>%s ㌠<a href=\"%s\">%s</a> ã‚’ã‚ãªãŸã¨å…±æœ‰ã—ã¾ã—ãŸã€‚<br><br>" +}, +"nplurals=1; plural=0;"); diff --git a/apps/sharebymail/l10n/ja.json b/apps/sharebymail/l10n/ja.json new file mode 100644 index 00000000000..af492e8c6ce --- /dev/null +++ b/apps/sharebymail/l10n/ja.json @@ -0,0 +1,22 @@ +{ "translations": { + "Shared with %1$s" : "%1$s ã¨å…±æœ‰", + "Shared with {email}" : "{email} ã¨å…±æœ‰", + "Shared with %1$s by %2$s" : "%2$s ã§ %1$s ã¨å…±æœ‰", + "Shared with {email} by {actor}" : "{actor} ã§ {email} ã¨å…±æœ‰ ", + "You shared %1$s with %2$s by mail" : "メール㧠%2$s 㨠%1$s を共有ã—ã¾ã—ãŸ", + "You shared {file} with {email} by mail" : "メール㧠{email} 㨠{file} を共有ã—ã¾ã—ãŸ", + "%3$s shared %1$s with %2$s by mail" : "%3$s ãŒãƒ¡ãƒ¼ãƒ«ã§ %2$s 㨠%1$s を共有ã—ã¾ã—ãŸ", + "{actor} shared {file} with {email} by mail" : "{actor} ㌠{email} 㨠{file} を共有ã—ã¾ã—ãŸ", + "Sharing %s failed, this item is already shared with %s" : "%s ã®å…±æœ‰ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ ã“ã®ã‚¢ã‚¤ãƒ†ãƒ ã¯ã™ã§ã« %s ã¨å…±æœ‰ã—ã¦ã„ã¾ã™", + "Failed to send share by E-mail" : "メールã§å…±æœ‰ã®é€ä¿¡ã«å¤±æ•—ã—ã¾ã—ãŸ", + "%s shared »%s« with you" : "%s ãŒã‚ãªãŸã¨ »%s« を共有ã—ã¾ã—ãŸ", + "%s shared »%s« with you on behalf of %s" : "%s ãŒã‚ãªãŸã¨ »%s« ã‚’ %s ã®ãŸã‚ã«å…±æœ‰ã—ã¾ã—ãŸ", + "Failed to create the E-mail" : "メールã®ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸ", + "Could not find share" : "共有ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ", + "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "ã“ã‚“ã«ã¡ã¯ã€‚\n\n%s ㌠»%s« ã‚’ã‚ãªãŸã¨ %s ã®ãŸã‚ã«å…±æœ‰ã—ã¾ã—ãŸã€‚\n\n%s\n", + "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "ã“ã‚“ã«ã¡ã¯ã€‚\n\n%s ㌠»%s« ã‚’ã‚ãªãŸã¨å…±æœ‰ã—ã¾ã—ãŸã€‚\n\n%s\n", + "Cheers!" : "ãれã§ã¯ï¼", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you on behalf of %s.<br><br>" : "ã“ã‚“ã«ã¡ã¯ã€‚<br><br>%s ㌠<a href=\"%s\">%s</a> ã‚’ã‚ãªãŸã¨ %s ã®ãŸã‚ã«å…±æœ‰ã—ã¾ã—ãŸã€‚<br><br>", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you.<br><br>" : "ã“ã‚“ã«ã¡ã¯ã€‚<br><br>%s ㌠<a href=\"%s\">%s</a> ã‚’ã‚ãªãŸã¨å…±æœ‰ã—ã¾ã—ãŸã€‚<br><br>" +},"pluralForm" :"nplurals=1; plural=0;" +}
\ No newline at end of file diff --git a/apps/systemtags/l10n/es_MX.js b/apps/systemtags/l10n/es_MX.js index e5c543ce18b..b0ab0534c92 100644 --- a/apps/systemtags/l10n/es_MX.js +++ b/apps/systemtags/l10n/es_MX.js @@ -2,7 +2,54 @@ OC.L10N.register( "systemtags", { "Tags" : "Etiquetas", + "Update" : "Actualizar", + "Create" : "Crear", + "Select tag…" : "Seleccionar etiqueta...", + "Tagged files" : "Archivos etiquetados", + "Select tags to filter by" : "Seleccione las etiquetas para el filtro", + "No tags found" : "No se encontraron etiquetas", + "Please select tags to filter by" : "Favor de seleccionar etiquetas para el filtro", + "No files found for the selected tags" : "No se encontraron archivos para las etiquetas seleccionadas", + "Added system tag %1$s" : "Etiqueta del sistema %1$s agregada", + "Added system tag {systemtag}" : "Etiqueta del sistema {systemtag} agregada", + "%1$s added system tag %2$s" : "%1$s agregó la etiqueta del sistema %2$s", + "{actor} added system tag {systemtag}" : "{actor} agregó la etiqueta del sistema {systemtag}", + "Removed system tag %1$s" : "Eliminó la etiqueta del sistema %1$s", + "Removed system tag {systemtag}" : "Eliminó la etiqueta del sistema {systemtag}", + "%1$s removed system tag %2$s" : "%1$s eliminó la etiqueta del sistema %2$s", + "{actor} removed system tag {systemtag}" : "{actor} eliminó la etiqueta del sistema {systemtag}", + "You created system tag %1$s" : "Usted creó la etiqueta del sistema %1$s", + "You created system tag {systemtag}" : "Usted creó la etiqueta del sistema {systemtag}", + "%1$s created system tag %2$s" : "%1$s creo la etiqueta del sistema %2$s", + "{actor} created system tag {systemtag}" : "{actor} creó la etiqueta del sistema {systemtag}", + "You deleted system tag %1$s" : "Usted borró la etiqueta del sistema %1$s", + "You deleted system tag {systemtag}" : "Usted borró la etiqueta del sistema {systemtag}", + "%1$s deleted system tag %2$s" : "%1$s borró la etiqueta del sistema %2$s", + "{actor} deleted system tag {systemtag}" : "{actor} borró la etiqueta del sistema {systemtag}", + "You updated system tag %2$s to %1$s" : "Usted actualizó la etiqueta del sistema %2$s a %1$s", + "You updated system tag {oldsystemtag} to {newsystemtag}" : "Usted actualizó la etiqueta del sistema {oldsystemtag} a {newsystemtag}", + "%1$s updated system tag %3$s to %2$s" : "%1$s actualizó la etiqueta del sistema %3$s a %2$s", + "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} actualizó la etiqueta del sistema {oldsystemtag} a {newsystemtag}", + "You added system tag %2$s to %1$s" : "Usted agregó la etiqueta del sistema %2$s a %1$s", + "You added system tag {systemtag} to {file}" : "Usted agregó la etiqueta del sistema {systemtag} a {file}", + "%1$s added system tag %3$s to %2$s" : "%1$s agregó la etiqueta del sistema %3$s a %2$s", + "{actor} added system tag {systemtag} to {file}" : "{actor} agregó la etiqueta del sistema {systemtag} a {file}", + "You removed system tag %2$s from %1$s" : "Usted eliminó la etiqueta del sistema %2$s de %1$s", + "You removed system tag {systemtag} from {file}" : "Usted eliminó la etiqueta del sistema {systemtag} de {file}", + "%1$s removed system tag %3$s from %2$s" : "%1$s eliminó la etiqueta del sistema %3$s de %2$s", + "{actor} removed system tag {systemtag} from {file}" : "{actor} eliminó la etiqueta del sistema {systemtag} de {file}", + "%s (restricted)" : "%s (restringido)", + "%s (invisible)" : "%s (invisible) ", + "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", + "Collaborative tags" : "Etiquetas colaborativas", "Name" : "Nombre", + "Delete" : "Borrar", + "Public" : "Público", + "Restricted" : "Restringido", + "Invisible" : "Invisible", + "Reset" : "Restaurar", + "No files in here" : "No hay archivos aquÃ", + "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", "Modified" : "Modificado" }, diff --git a/apps/systemtags/l10n/es_MX.json b/apps/systemtags/l10n/es_MX.json index 5bae74d482d..601cb331a23 100644 --- a/apps/systemtags/l10n/es_MX.json +++ b/apps/systemtags/l10n/es_MX.json @@ -1,6 +1,53 @@ { "translations": { "Tags" : "Etiquetas", + "Update" : "Actualizar", + "Create" : "Crear", + "Select tag…" : "Seleccionar etiqueta...", + "Tagged files" : "Archivos etiquetados", + "Select tags to filter by" : "Seleccione las etiquetas para el filtro", + "No tags found" : "No se encontraron etiquetas", + "Please select tags to filter by" : "Favor de seleccionar etiquetas para el filtro", + "No files found for the selected tags" : "No se encontraron archivos para las etiquetas seleccionadas", + "Added system tag %1$s" : "Etiqueta del sistema %1$s agregada", + "Added system tag {systemtag}" : "Etiqueta del sistema {systemtag} agregada", + "%1$s added system tag %2$s" : "%1$s agregó la etiqueta del sistema %2$s", + "{actor} added system tag {systemtag}" : "{actor} agregó la etiqueta del sistema {systemtag}", + "Removed system tag %1$s" : "Eliminó la etiqueta del sistema %1$s", + "Removed system tag {systemtag}" : "Eliminó la etiqueta del sistema {systemtag}", + "%1$s removed system tag %2$s" : "%1$s eliminó la etiqueta del sistema %2$s", + "{actor} removed system tag {systemtag}" : "{actor} eliminó la etiqueta del sistema {systemtag}", + "You created system tag %1$s" : "Usted creó la etiqueta del sistema %1$s", + "You created system tag {systemtag}" : "Usted creó la etiqueta del sistema {systemtag}", + "%1$s created system tag %2$s" : "%1$s creo la etiqueta del sistema %2$s", + "{actor} created system tag {systemtag}" : "{actor} creó la etiqueta del sistema {systemtag}", + "You deleted system tag %1$s" : "Usted borró la etiqueta del sistema %1$s", + "You deleted system tag {systemtag}" : "Usted borró la etiqueta del sistema {systemtag}", + "%1$s deleted system tag %2$s" : "%1$s borró la etiqueta del sistema %2$s", + "{actor} deleted system tag {systemtag}" : "{actor} borró la etiqueta del sistema {systemtag}", + "You updated system tag %2$s to %1$s" : "Usted actualizó la etiqueta del sistema %2$s a %1$s", + "You updated system tag {oldsystemtag} to {newsystemtag}" : "Usted actualizó la etiqueta del sistema {oldsystemtag} a {newsystemtag}", + "%1$s updated system tag %3$s to %2$s" : "%1$s actualizó la etiqueta del sistema %3$s a %2$s", + "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} actualizó la etiqueta del sistema {oldsystemtag} a {newsystemtag}", + "You added system tag %2$s to %1$s" : "Usted agregó la etiqueta del sistema %2$s a %1$s", + "You added system tag {systemtag} to {file}" : "Usted agregó la etiqueta del sistema {systemtag} a {file}", + "%1$s added system tag %3$s to %2$s" : "%1$s agregó la etiqueta del sistema %3$s a %2$s", + "{actor} added system tag {systemtag} to {file}" : "{actor} agregó la etiqueta del sistema {systemtag} a {file}", + "You removed system tag %2$s from %1$s" : "Usted eliminó la etiqueta del sistema %2$s de %1$s", + "You removed system tag {systemtag} from {file}" : "Usted eliminó la etiqueta del sistema {systemtag} de {file}", + "%1$s removed system tag %3$s from %2$s" : "%1$s eliminó la etiqueta del sistema %3$s de %2$s", + "{actor} removed system tag {systemtag} from {file}" : "{actor} eliminó la etiqueta del sistema {systemtag} de {file}", + "%s (restricted)" : "%s (restringido)", + "%s (invisible)" : "%s (invisible) ", + "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", + "Collaborative tags" : "Etiquetas colaborativas", "Name" : "Nombre", + "Delete" : "Borrar", + "Public" : "Público", + "Restricted" : "Restringido", + "Invisible" : "Invisible", + "Reset" : "Restaurar", + "No files in here" : "No hay archivos aquÃ", + "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", "Modified" : "Modificado" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/theming/l10n/bg.js b/apps/theming/l10n/bg.js new file mode 100644 index 00000000000..a0fd44abeae --- /dev/null +++ b/apps/theming/l10n/bg.js @@ -0,0 +1,27 @@ +OC.L10N.register( + "theming", + { + "Admin" : "Ðдмин", + "a safe home for all your data" : "безопаÑен дом за вÑички ваши данни", + "The given name is too long" : "Името е прекалено дълго", + "The given web address is too long" : "web адреÑа е прекалено дълъг", + "The given slogan is too long" : "ИзбраниÑÑ‚ лозунг е твърде дълъг", + "The given color is invalid" : "ИзбраниÑÑ‚ цвÑÑ‚ е невалиден", + "Saved" : "Запазено", + "No file uploaded" : "ÐÑма качен файл", + "Unsupported image type" : "Ðеподдържан тип изображение", + "You are already using a custom theme" : "Вие вече използвате перÑонализирана тема", + "Theming" : "Теми", + "Name" : "Име", + "reset to default" : "възÑтановÑване към Ñтандартни", + "Web address" : "Уеб адреÑ", + "Web address https://…" : "Уеб Ð°Ð´Ñ€ÐµÑ https://...", + "Slogan" : "Лозунг", + "Color" : "ЦвÑÑ‚", + "Logo" : "Лого", + "Upload new logo" : "Качване на ново лого", + "Login image" : "Изображение при впиÑване", + "Upload new login background" : "Качване на нов фон за входа", + "Log in image" : "Изображение при впиÑване" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/theming/l10n/bg.json b/apps/theming/l10n/bg.json new file mode 100644 index 00000000000..0b842b12b1a --- /dev/null +++ b/apps/theming/l10n/bg.json @@ -0,0 +1,25 @@ +{ "translations": { + "Admin" : "Ðдмин", + "a safe home for all your data" : "безопаÑен дом за вÑички ваши данни", + "The given name is too long" : "Името е прекалено дълго", + "The given web address is too long" : "web адреÑа е прекалено дълъг", + "The given slogan is too long" : "ИзбраниÑÑ‚ лозунг е твърде дълъг", + "The given color is invalid" : "ИзбраниÑÑ‚ цвÑÑ‚ е невалиден", + "Saved" : "Запазено", + "No file uploaded" : "ÐÑма качен файл", + "Unsupported image type" : "Ðеподдържан тип изображение", + "You are already using a custom theme" : "Вие вече използвате перÑонализирана тема", + "Theming" : "Теми", + "Name" : "Име", + "reset to default" : "възÑтановÑване към Ñтандартни", + "Web address" : "Уеб адреÑ", + "Web address https://…" : "Уеб Ð°Ð´Ñ€ÐµÑ https://...", + "Slogan" : "Лозунг", + "Color" : "ЦвÑÑ‚", + "Logo" : "Лого", + "Upload new logo" : "Качване на ново лого", + "Login image" : "Изображение при впиÑване", + "Upload new login background" : "Качване на нов фон за входа", + "Log in image" : "Изображение при впиÑване" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/theming/l10n/es_MX.js b/apps/theming/l10n/es_MX.js new file mode 100644 index 00000000000..fb1bfca4914 --- /dev/null +++ b/apps/theming/l10n/es_MX.js @@ -0,0 +1,27 @@ +OC.L10N.register( + "theming", + { + "Admin" : "Administración", + "a safe home for all your data" : "un lugar seguro para todos sus datos", + "The given name is too long" : "El nombre dado es demasiado largo", + "The given web address is too long" : "La dirección web dada es demasiado larga", + "The given slogan is too long" : "El lema dado es demasiado largo", + "The given color is invalid" : "El color dado es inválido", + "Saved" : "Guardado", + "No file uploaded" : "No hay archivos cargados", + "Unsupported image type" : "Tipo de imagen no soportado", + "You are already using a custom theme" : "Usted ya se encuentra usando un tema personalizado", + "Theming" : "Tematizar", + "Name" : "Nombre", + "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", + "Slogan" : "Lema", + "Color" : "Color", + "Logo" : "Logotipo", + "Upload new logo" : "Cargar nuevo logotipo", + "Login image" : "Imágen de inicio de sesión", + "Upload new login background" : "Cargar nueva imagen de fondo para inicio de sesión", + "Log in image" : "Imagen de inicio de sesión" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/theming/l10n/es_MX.json b/apps/theming/l10n/es_MX.json new file mode 100644 index 00000000000..d2d65f4b0c8 --- /dev/null +++ b/apps/theming/l10n/es_MX.json @@ -0,0 +1,25 @@ +{ "translations": { + "Admin" : "Administración", + "a safe home for all your data" : "un lugar seguro para todos sus datos", + "The given name is too long" : "El nombre dado es demasiado largo", + "The given web address is too long" : "La dirección web dada es demasiado larga", + "The given slogan is too long" : "El lema dado es demasiado largo", + "The given color is invalid" : "El color dado es inválido", + "Saved" : "Guardado", + "No file uploaded" : "No hay archivos cargados", + "Unsupported image type" : "Tipo de imagen no soportado", + "You are already using a custom theme" : "Usted ya se encuentra usando un tema personalizado", + "Theming" : "Tematizar", + "Name" : "Nombre", + "reset to default" : "restaurar a predeterminado", + "Web address" : "Dirección web", + "Web address https://…" : "Dirección web https://...", + "Slogan" : "Lema", + "Color" : "Color", + "Logo" : "Logotipo", + "Upload new logo" : "Cargar nuevo logotipo", + "Login image" : "Imágen de inicio de sesión", + "Upload new login background" : "Cargar nueva imagen de fondo para inicio de sesión", + "Log in image" : "Imagen de inicio de sesión" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/twofactor_backupcodes/l10n/el.js b/apps/twofactor_backupcodes/l10n/el.js new file mode 100644 index 00000000000..c6d3817011d --- /dev/null +++ b/apps/twofactor_backupcodes/l10n/el.js @@ -0,0 +1,21 @@ +OC.L10N.register( + "twofactor_backupcodes", + { + "Generate backup codes" : "ΔημιουÏγία εφεδÏικών κωδικών", + "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Οι εφεδÏικοί κωδικοί Îχουν δημιουÏγηθεί. {{χÏησιμοποιοÏνται}} του {{συνολικοÏ}} κωδικοί Îχουν χÏησιμοποιηθεί.", + "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Αυτοί είναι είναι οι εφεδÏικοί σας κωδικοί. ΠαÏακαλοÏμε αποθηκεÏστε τους και/ή εκτυπώστε τους καθώς δεν θα είστε σε θÎση να τους διαβάσετε ξανά αÏγότεÏα.", + "Save backup codes" : "Αποθήκευση εφεδÏικών κωδικών", + "Print backup codes" : "ΕκτÏπωση εφεδÏικών κωδικών", + "Regenerate backup codes" : "ΔημιουÏγία εφεδÏικών κωδικών", + "If you regenerate backup codes, you automatically invalidate old codes." : "Εάν αναδημιουÏγήσετε εφεδÏικοÏÏ‚ κωδικοÏÏ‚, οι παλιοί κωδικοί ακυÏώνονται αυτόματα.", + "An error occurred while generating your backup codes" : "Ένα σφάλμα Ï€ÏοÎκυψε κατά τη δημιουÏγία των εφεδÏικών κωδικών.", + "Nextcloud backup codes" : "ΕφεδÏικοί κωδικοί Nextcloud", + "Two-factor authentication" : "Έλεγχος πιστοποίησης δÏο βημάτων", + "You successfully logged in using two-factor authentication (%1$s)" : "Έχετε συνδεθεί επιτυχώς με τη χÏήση ελÎγχου ταυτότητας δÏο-παÏαγόντων (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Μία Ï€Ïοσπάθεια σÏνδεσης με τη χÏήση ελÎγχου ταυτότητας δÏο-παÏαγόντων απÎτυχε (%1$s)", + "You created two-factor backup codes for your account" : "ΜποÏείτε να δημιουÏγήσετε τον παÏάγοντα Î´Î¹Ï€Î»Î¿Ï ÎµÎ»Îγχου ταυτότητας για το λογαÏιασμό σας ΤΟΤΡ", + "Backup code" : "ΕφεδÏικός κωδικός", + "Use backup code" : "ΧÏησιμοποιήστε Îναν εφεδÏικό κωδικό", + "Second-factor backup codes" : "ΕφεδÏικοί κωδικοί δεÏτεÏου-παÏάγοντα" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/twofactor_backupcodes/l10n/el.json b/apps/twofactor_backupcodes/l10n/el.json new file mode 100644 index 00000000000..ba0f6831a22 --- /dev/null +++ b/apps/twofactor_backupcodes/l10n/el.json @@ -0,0 +1,19 @@ +{ "translations": { + "Generate backup codes" : "ΔημιουÏγία εφεδÏικών κωδικών", + "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Οι εφεδÏικοί κωδικοί Îχουν δημιουÏγηθεί. {{χÏησιμοποιοÏνται}} του {{συνολικοÏ}} κωδικοί Îχουν χÏησιμοποιηθεί.", + "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Αυτοί είναι είναι οι εφεδÏικοί σας κωδικοί. ΠαÏακαλοÏμε αποθηκεÏστε τους και/ή εκτυπώστε τους καθώς δεν θα είστε σε θÎση να τους διαβάσετε ξανά αÏγότεÏα.", + "Save backup codes" : "Αποθήκευση εφεδÏικών κωδικών", + "Print backup codes" : "ΕκτÏπωση εφεδÏικών κωδικών", + "Regenerate backup codes" : "ΔημιουÏγία εφεδÏικών κωδικών", + "If you regenerate backup codes, you automatically invalidate old codes." : "Εάν αναδημιουÏγήσετε εφεδÏικοÏÏ‚ κωδικοÏÏ‚, οι παλιοί κωδικοί ακυÏώνονται αυτόματα.", + "An error occurred while generating your backup codes" : "Ένα σφάλμα Ï€ÏοÎκυψε κατά τη δημιουÏγία των εφεδÏικών κωδικών.", + "Nextcloud backup codes" : "ΕφεδÏικοί κωδικοί Nextcloud", + "Two-factor authentication" : "Έλεγχος πιστοποίησης δÏο βημάτων", + "You successfully logged in using two-factor authentication (%1$s)" : "Έχετε συνδεθεί επιτυχώς με τη χÏήση ελÎγχου ταυτότητας δÏο-παÏαγόντων (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Μία Ï€Ïοσπάθεια σÏνδεσης με τη χÏήση ελÎγχου ταυτότητας δÏο-παÏαγόντων απÎτυχε (%1$s)", + "You created two-factor backup codes for your account" : "ΜποÏείτε να δημιουÏγήσετε τον παÏάγοντα Î´Î¹Ï€Î»Î¿Ï ÎµÎ»Îγχου ταυτότητας για το λογαÏιασμό σας ΤΟΤΡ", + "Backup code" : "ΕφεδÏικός κωδικός", + "Use backup code" : "ΧÏησιμοποιήστε Îναν εφεδÏικό κωδικό", + "Second-factor backup codes" : "ΕφεδÏικοί κωδικοί δεÏτεÏου-παÏάγοντα" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/twofactor_backupcodes/l10n/es_MX.js b/apps/twofactor_backupcodes/l10n/es_MX.js new file mode 100644 index 00000000000..8ef88c0cef3 --- /dev/null +++ b/apps/twofactor_backupcodes/l10n/es_MX.js @@ -0,0 +1,21 @@ +OC.L10N.register( + "twofactor_backupcodes", + { + "Generate backup codes" : "Generar códigos de respaldo", + "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Los códigos de respaldo han sido generados. {{used}} de {{total}} códigos han sido usados.", + "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Estos son sus códigos de respaldo. Favor de resguardarlos y/o imprimirlos ya que no podrá leerlos otra vez después. ", + "Save backup codes" : "Guardar códigos de respaldo", + "Print backup codes" : "Imprimir códigos de respaldo", + "Regenerate backup codes" : "Regenerar códigos de respaldo", + "If you regenerate backup codes, you automatically invalidate old codes." : "Si usted regenera los códigos de respaldo, automáticamente invalidará los anteriores. ", + "An error occurred while generating your backup codes" : "Se presentó un error al generar sus códigos de respaldo. ", + "Nextcloud backup codes" : "Códigos de respaldo de Nextcloud", + "Two-factor authentication" : "Autenticación de dos factores", + "You successfully logged in using two-factor authentication (%1$s)" : "Usted ha iniciado sesión exitosamente usando autenticación de dos factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento por ingresar usando autenticación de dos factores falló (%1$s)", + "You created two-factor backup codes for your account" : "Usted ha creado códigos de respaldo de dos factores para su cuenta", + "Backup code" : "Código de respaldo", + "Use backup code" : "Use el código de respaldo", + "Second-factor backup codes" : "Códigos de respaldo del segundo factor" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/twofactor_backupcodes/l10n/es_MX.json b/apps/twofactor_backupcodes/l10n/es_MX.json new file mode 100644 index 00000000000..179b29fd060 --- /dev/null +++ b/apps/twofactor_backupcodes/l10n/es_MX.json @@ -0,0 +1,19 @@ +{ "translations": { + "Generate backup codes" : "Generar códigos de respaldo", + "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Los códigos de respaldo han sido generados. {{used}} de {{total}} códigos han sido usados.", + "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Estos son sus códigos de respaldo. Favor de resguardarlos y/o imprimirlos ya que no podrá leerlos otra vez después. ", + "Save backup codes" : "Guardar códigos de respaldo", + "Print backup codes" : "Imprimir códigos de respaldo", + "Regenerate backup codes" : "Regenerar códigos de respaldo", + "If you regenerate backup codes, you automatically invalidate old codes." : "Si usted regenera los códigos de respaldo, automáticamente invalidará los anteriores. ", + "An error occurred while generating your backup codes" : "Se presentó un error al generar sus códigos de respaldo. ", + "Nextcloud backup codes" : "Códigos de respaldo de Nextcloud", + "Two-factor authentication" : "Autenticación de dos factores", + "You successfully logged in using two-factor authentication (%1$s)" : "Usted ha iniciado sesión exitosamente usando autenticación de dos factores (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "Un intento por ingresar usando autenticación de dos factores falló (%1$s)", + "You created two-factor backup codes for your account" : "Usted ha creado códigos de respaldo de dos factores para su cuenta", + "Backup code" : "Código de respaldo", + "Use backup code" : "Use el código de respaldo", + "Second-factor backup codes" : "Códigos de respaldo del segundo factor" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/updatenotification/l10n/es_MX.js b/apps/updatenotification/l10n/es_MX.js new file mode 100644 index 00000000000..084dd1f1655 --- /dev/null +++ b/apps/updatenotification/l10n/es_MX.js @@ -0,0 +1,25 @@ +OC.L10N.register( + "updatenotification", + { + "Update notifications" : "Actualizar notificaciones", + "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, favor de intentar la actualización manual", + "{version} is available. Get more information on how to update." : "{version} no está disponible. Obtenga más información acerca de cómo actualizar. ", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d dÃas para verificar actualizaciones. ", + "Please check the nextcloud and server log files for errors." : "Favor de verificar los archivos de bitacoras de nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", + "A new version is available: %s" : "Una nueva versión está disponible: %s", + "Open updater" : "Abrir actualizador", + "Download now" : "Descargar ahora", + "Your version is up to date." : "Su verisón está actualizada.", + "Checked on %s" : "Verificado el %s", + "Update channel:" : "Actualizar el canal:", + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puede actualizar a una versión más reciente / canal experimental. Sinembargo nunca podrá desactualizar la versión a un canal más estable. ", + "Notify members of the following groups about available updates:" : "Notificar a los miembros de los siguientes grupos de las actualizaciones disponibles:", + "Only notification for app updates are available." : "Sólo se tienen disponibles notificaciones de actualizaciones de la aplicación.", + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", + "The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor. " +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/es_MX.json b/apps/updatenotification/l10n/es_MX.json new file mode 100644 index 00000000000..dcbfab39f99 --- /dev/null +++ b/apps/updatenotification/l10n/es_MX.json @@ -0,0 +1,23 @@ +{ "translations": { + "Update notifications" : "Actualizar notificaciones", + "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, favor de intentar la actualización manual", + "{version} is available. Get more information on how to update." : "{version} no está disponible. Obtenga más información acerca de cómo actualizar. ", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d dÃas para verificar actualizaciones. ", + "Please check the nextcloud and server log files for errors." : "Favor de verificar los archivos de bitacoras de nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", + "A new version is available: %s" : "Una nueva versión está disponible: %s", + "Open updater" : "Abrir actualizador", + "Download now" : "Descargar ahora", + "Your version is up to date." : "Su verisón está actualizada.", + "Checked on %s" : "Verificado el %s", + "Update channel:" : "Actualizar el canal:", + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puede actualizar a una versión más reciente / canal experimental. Sinembargo nunca podrá desactualizar la versión a un canal más estable. ", + "Notify members of the following groups about available updates:" : "Notificar a los miembros de los siguientes grupos de las actualizaciones disponibles:", + "Only notification for app updates are available." : "Sólo se tienen disponibles notificaciones de actualizaciones de la aplicación.", + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", + "The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor. " +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/updatenotification/l10n/fi.js b/apps/updatenotification/l10n/fi.js new file mode 100644 index 00000000000..7b899362aec --- /dev/null +++ b/apps/updatenotification/l10n/fi.js @@ -0,0 +1,23 @@ +OC.L10N.register( + "updatenotification", + { + "Update notifications" : "Päivitysilmoitukset", + "Could not start updater, please try the manual update" : "Ei voitu aloittaa päivitystä, kokeile päivittämistä manuaalisesti", + "{version} is available. Get more information on how to update." : "{version} on saatavilla. Tarjolla on lisätietoja päivittämisestä.", + "Channel updated" : "Päivityskanava päivitetty", + "The update server could not be reached since %d days to check for new updates." : "Päivityspalvelinta ei tavoitettu %d päivään, uusia päivityksiä ei voida tarkistaa.", + "Please check the nextcloud and server log files for errors." : "Tarkista nextcloudin ja palvelimen loki tiedostot virheiden varalta.", + "Update to %1$s is available." : "Kohteen %1$s päivitys on saatavilla.", + "Update for %1$s to version %2$s is available." : "Kohteen %1$s päivitys versioon %2$s on saatavilla.", + "Update for {app} to version %s is available." : "Sovelluksen {app} päivitys versioon %s on saatavilla.", + "A new version is available: %s" : "Uusi versio on saatavilla: %s", + "Open updater" : "Avaa päivittäjä", + "Download now" : "Lataa heti", + "Your version is up to date." : "Versiosi on ajan tasalla.", + "Checked on %s" : "Tarkistettu %s", + "Update channel:" : "Päivityskanava:", + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Voit aina päivittää uudempaan versioon tai kokeellisen jakelukanavan versioon. Et voi kuitenkaan palata aiempaan, vakaan julkaisukanavan versioon.", + "Notify members of the following groups about available updates:" : "Ilmoita seuraavien ryhmien jäsenille saatavilla olevista päivityksistä:", + "Only notification for app updates are available." : "Sovelluspäivityksiin on saatavilla vain huomautuksia." +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/fi.json b/apps/updatenotification/l10n/fi.json new file mode 100644 index 00000000000..980b327b189 --- /dev/null +++ b/apps/updatenotification/l10n/fi.json @@ -0,0 +1,21 @@ +{ "translations": { + "Update notifications" : "Päivitysilmoitukset", + "Could not start updater, please try the manual update" : "Ei voitu aloittaa päivitystä, kokeile päivittämistä manuaalisesti", + "{version} is available. Get more information on how to update." : "{version} on saatavilla. Tarjolla on lisätietoja päivittämisestä.", + "Channel updated" : "Päivityskanava päivitetty", + "The update server could not be reached since %d days to check for new updates." : "Päivityspalvelinta ei tavoitettu %d päivään, uusia päivityksiä ei voida tarkistaa.", + "Please check the nextcloud and server log files for errors." : "Tarkista nextcloudin ja palvelimen loki tiedostot virheiden varalta.", + "Update to %1$s is available." : "Kohteen %1$s päivitys on saatavilla.", + "Update for %1$s to version %2$s is available." : "Kohteen %1$s päivitys versioon %2$s on saatavilla.", + "Update for {app} to version %s is available." : "Sovelluksen {app} päivitys versioon %s on saatavilla.", + "A new version is available: %s" : "Uusi versio on saatavilla: %s", + "Open updater" : "Avaa päivittäjä", + "Download now" : "Lataa heti", + "Your version is up to date." : "Versiosi on ajan tasalla.", + "Checked on %s" : "Tarkistettu %s", + "Update channel:" : "Päivityskanava:", + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Voit aina päivittää uudempaan versioon tai kokeellisen jakelukanavan versioon. Et voi kuitenkaan palata aiempaan, vakaan julkaisukanavan versioon.", + "Notify members of the following groups about available updates:" : "Ilmoita seuraavien ryhmien jäsenille saatavilla olevista päivityksistä:", + "Only notification for app updates are available." : "Sovelluspäivityksiin on saatavilla vain huomautuksia." +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/updatenotification/l10n/ja.js b/apps/updatenotification/l10n/ja.js index 2f55b714507..967b81ec21f 100644 --- a/apps/updatenotification/l10n/ja.js +++ b/apps/updatenotification/l10n/ja.js @@ -5,6 +5,8 @@ OC.L10N.register( "Could not start updater, please try the manual update" : "アップデータを起動ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚手動アップデートをãŠè©¦ã—ãã ã•ã„", "{version} is available. Get more information on how to update." : "{version} ãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚アップデート方法ã«ã¤ã„ã¦è©³ç´°æƒ…å ±ã‚’ç¢ºèªã—ã¦ãã ã•ã„。", "Channel updated" : "ãƒãƒ£ãƒ³ãƒãƒ«ãŒæ›´æ–°ã•れã¾ã—ãŸ", + "The update server could not be reached since %d days to check for new updates." : "%d日以é™ã€æ–°ã—ã„æ›´æ–°ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹æ›´æ–°ã‚µãƒ¼ãƒãƒ¼ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚", + "Please check the nextcloud and server log files for errors." : "Nextcloudã¨ã‚µãƒ¼ãƒãƒ¼ãƒã‚°ãƒ•ァイルã§ã‚¨ãƒ©ãƒ¼ãŒãªã„ã‹ç¢ºèªã—ã¦ãã ã•ã„。", "Update to %1$s is available." : "%1$s ã¸ã®æ›´æ–°ãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚", "Update for %1$s to version %2$s is available." : "%1$s ã«å¯¾ã™ã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %2$s ã¸ã‚¢ãƒƒãƒ—デートãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚", "Update for {app} to version %s is available." : " {app} ã«å¯¾ã™ã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s ã¸ã‚¢ãƒƒãƒ—デートãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚", diff --git a/apps/updatenotification/l10n/ja.json b/apps/updatenotification/l10n/ja.json index 25f9244798b..8ef6d433db3 100644 --- a/apps/updatenotification/l10n/ja.json +++ b/apps/updatenotification/l10n/ja.json @@ -3,6 +3,8 @@ "Could not start updater, please try the manual update" : "アップデータを起動ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚手動アップデートをãŠè©¦ã—ãã ã•ã„", "{version} is available. Get more information on how to update." : "{version} ãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚アップデート方法ã«ã¤ã„ã¦è©³ç´°æƒ…å ±ã‚’ç¢ºèªã—ã¦ãã ã•ã„。", "Channel updated" : "ãƒãƒ£ãƒ³ãƒãƒ«ãŒæ›´æ–°ã•れã¾ã—ãŸ", + "The update server could not be reached since %d days to check for new updates." : "%d日以é™ã€æ–°ã—ã„æ›´æ–°ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹æ›´æ–°ã‚µãƒ¼ãƒãƒ¼ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚", + "Please check the nextcloud and server log files for errors." : "Nextcloudã¨ã‚µãƒ¼ãƒãƒ¼ãƒã‚°ãƒ•ァイルã§ã‚¨ãƒ©ãƒ¼ãŒãªã„ã‹ç¢ºèªã—ã¦ãã ã•ã„。", "Update to %1$s is available." : "%1$s ã¸ã®æ›´æ–°ãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚", "Update for %1$s to version %2$s is available." : "%1$s ã«å¯¾ã™ã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %2$s ã¸ã‚¢ãƒƒãƒ—デートãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚", "Update for {app} to version %s is available." : " {app} ã«å¯¾ã™ã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s ã¸ã‚¢ãƒƒãƒ—デートãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚", diff --git a/apps/updatenotification/l10n/pt_BR.js b/apps/updatenotification/l10n/pt_BR.js index 116f5d92e05..efaffb633cc 100644 --- a/apps/updatenotification/l10n/pt_BR.js +++ b/apps/updatenotification/l10n/pt_BR.js @@ -5,6 +5,8 @@ OC.L10N.register( "Could not start updater, please try the manual update" : "Não foi possÃvel iniciar o atualizador, tente a atualização manual", "{version} is available. Get more information on how to update." : "{version} está disponÃvel. Obtenha mais informações sobre como atualizar.", "Channel updated" : "Canal atualizado", + "The update server could not be reached since %d days to check for new updates." : "O servidor de atualização não foi alcançado já há %d dias para verificar por novas atualizações.", + "Please check the nextcloud and server log files for errors." : "Por favor verifique os logs do servidor e do Nextcloud por erros.", "Update to %1$s is available." : "Atualização para %1$s está disponÃvel.", "Update for %1$s to version %2$s is available." : "Atualização de %1$s para versão %2$s está disponÃvel.", "Update for {app} to version %s is available." : "Atualização do {app} para a versão %s está disponÃvel.", diff --git a/apps/updatenotification/l10n/pt_BR.json b/apps/updatenotification/l10n/pt_BR.json index 24953399ece..5a675c0b6e3 100644 --- a/apps/updatenotification/l10n/pt_BR.json +++ b/apps/updatenotification/l10n/pt_BR.json @@ -3,6 +3,8 @@ "Could not start updater, please try the manual update" : "Não foi possÃvel iniciar o atualizador, tente a atualização manual", "{version} is available. Get more information on how to update." : "{version} está disponÃvel. Obtenha mais informações sobre como atualizar.", "Channel updated" : "Canal atualizado", + "The update server could not be reached since %d days to check for new updates." : "O servidor de atualização não foi alcançado já há %d dias para verificar por novas atualizações.", + "Please check the nextcloud and server log files for errors." : "Por favor verifique os logs do servidor e do Nextcloud por erros.", "Update to %1$s is available." : "Atualização para %1$s está disponÃvel.", "Update for %1$s to version %2$s is available." : "Atualização de %1$s para versão %2$s está disponÃvel.", "Update for {app} to version %s is available." : "Atualização do {app} para a versão %s está disponÃvel.", diff --git a/apps/user_ldap/l10n/ast.js b/apps/user_ldap/l10n/ast.js index 6819476a4e4..401c592d725 100644 --- a/apps/user_ldap/l10n/ast.js +++ b/apps/user_ldap/l10n/ast.js @@ -142,7 +142,6 @@ OC.L10N.register( "Special Attributes" : "Atributos especiales", "Quota Field" : "Cuota", "Quota Default" : "Cuota por defeutu", - "in bytes" : "en bytes", "Email Field" : "E-mail", "User Home Folder Naming Rule" : "Regla pa la carpeta Home d'usuariu", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Baleru pal nome d'usuariu (por defeutu). N'otru casu, especifica un atributu LDAP/AD.", @@ -156,6 +155,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nomes d'usuariu usense p'atroxar (meta) datos. En cuenta d'identificar y reconocer usuarios, cada usuariu de LDAP tendrá'l so nome d'usuariu internu polo que rique un mapéu dende'l so nome d'usuariu al usuariu de LDAP. El nome d'usuariu creáu mapeáse al UUID del usuariu de LDAP. Amás cacheamos tamién la DN p'amenorgar la intecractividá de LDAP, pero ensin usala pa la identificación. Si la DN camuda, atoparanse los cambios. L'usu internu del nome d'usuariu ye perdayures. ", "Clear Username-LDAP User Mapping" : "Llimpiar l'asignación de los Nomes d'usuariu de los usuarios LDAP", "Clear Groupname-LDAP Group Mapping" : "Llimpiar l'asignación de los Nomes de grupu de los grupos de LDAP", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Axustes verificaos, pero atopose un usuariu . Namá'l primeru d'ellos va ser capaz d'empecipiar sesión. Considere un filtru más acutáu." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Axustes verificaos, pero atopose un usuariu . Namá'l primeru d'ellos va ser capaz d'empecipiar sesión. Considere un filtru más acutáu.", + "in bytes" : "en bytes" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/user_ldap/l10n/ast.json b/apps/user_ldap/l10n/ast.json index 0531ae4347a..84b1bd7fc6c 100644 --- a/apps/user_ldap/l10n/ast.json +++ b/apps/user_ldap/l10n/ast.json @@ -140,7 +140,6 @@ "Special Attributes" : "Atributos especiales", "Quota Field" : "Cuota", "Quota Default" : "Cuota por defeutu", - "in bytes" : "en bytes", "Email Field" : "E-mail", "User Home Folder Naming Rule" : "Regla pa la carpeta Home d'usuariu", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Baleru pal nome d'usuariu (por defeutu). N'otru casu, especifica un atributu LDAP/AD.", @@ -154,6 +153,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nomes d'usuariu usense p'atroxar (meta) datos. En cuenta d'identificar y reconocer usuarios, cada usuariu de LDAP tendrá'l so nome d'usuariu internu polo que rique un mapéu dende'l so nome d'usuariu al usuariu de LDAP. El nome d'usuariu creáu mapeáse al UUID del usuariu de LDAP. Amás cacheamos tamién la DN p'amenorgar la intecractividá de LDAP, pero ensin usala pa la identificación. Si la DN camuda, atoparanse los cambios. L'usu internu del nome d'usuariu ye perdayures. ", "Clear Username-LDAP User Mapping" : "Llimpiar l'asignación de los Nomes d'usuariu de los usuarios LDAP", "Clear Groupname-LDAP Group Mapping" : "Llimpiar l'asignación de los Nomes de grupu de los grupos de LDAP", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Axustes verificaos, pero atopose un usuariu . Namá'l primeru d'ellos va ser capaz d'empecipiar sesión. Considere un filtru más acutáu." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Axustes verificaos, pero atopose un usuariu . Namá'l primeru d'ellos va ser capaz d'empecipiar sesión. Considere un filtru más acutáu.", + "in bytes" : "en bytes" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/cs.js b/apps/user_ldap/l10n/cs.js index 3e24f373e0b..ed85f70eee5 100644 --- a/apps/user_ldap/l10n/cs.js +++ b/apps/user_ldap/l10n/cs.js @@ -149,7 +149,6 @@ OC.L10N.register( "Special Attributes" : "Speciálnà atributy", "Quota Field" : "Pole pro kvótu", "Quota Default" : "Výchozà kvóta", - "in bytes" : "v bajtech", "Email Field" : "Pole emailu", "User Home Folder Naming Rule" : "Pravidlo pojmenovánà domovského adresáře uživatele", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Ponechte prázdné pro uživatelské jméno (výchozÃ). Jinak uveÄte LDAP/AD parametr.", @@ -164,6 +163,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Uživatelská jména jsou použÃvána pro uchovávánà a pÅ™iÅ™azovánà (meta)dat. Pro správnou identifikaci a rozpoznánà uživatelů bude mÃt každý LDAP uživatel internà uživatelské jméno. To vyžaduje mapovánà uživatelských jmen na uživatele LDAP. VytvoÅ™ené uživatelské jméno je mapováno na UUID uživatele v LDAP. DN informace je navÃc udržována v pamÄ›ti pro snÞenà interakce s LDAP, ale nenà použÃvána pro identifikaci. Pokud se DN zmÄ›nÃ, bude to správnÄ› rozpoznáno. Internà uživatelské jméno se použÃvá celé. VyÄiÅ¡tÄ›nà mapovánà zanechá zbytky vÅ¡ude. VyÄiÅ¡tÄ›nà navÃc nenà specifické pro každou konfiguraci, bude mÃt vliv na vÅ¡echny LDAP konfigurace! Nikdy neÄistÄ›te mapovánà v produkÄnÃm prostÅ™edÃ, ale pouze v testovacà nebo experimentálnà fázi.", "Clear Username-LDAP User Mapping" : "ZruÅ¡it mapovánà uživatelských jmen LDAPu", "Clear Groupname-LDAP Group Mapping" : "ZruÅ¡it mapovánà názvů skupin LDAPu", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavenà ověřena, nalezen jeden uživatel. Pouze prvnà se bude moci pÅ™ihlásit. Zvažte nasazenà užšÃho filtru." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavenà ověřena, nalezen jeden uživatel. Pouze prvnà se bude moci pÅ™ihlásit. Zvažte nasazenà užšÃho filtru.", + "in bytes" : "v bajtech" }, "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); diff --git a/apps/user_ldap/l10n/cs.json b/apps/user_ldap/l10n/cs.json index fa7a9e932ad..ab53048d006 100644 --- a/apps/user_ldap/l10n/cs.json +++ b/apps/user_ldap/l10n/cs.json @@ -147,7 +147,6 @@ "Special Attributes" : "Speciálnà atributy", "Quota Field" : "Pole pro kvótu", "Quota Default" : "Výchozà kvóta", - "in bytes" : "v bajtech", "Email Field" : "Pole emailu", "User Home Folder Naming Rule" : "Pravidlo pojmenovánà domovského adresáře uživatele", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Ponechte prázdné pro uživatelské jméno (výchozÃ). Jinak uveÄte LDAP/AD parametr.", @@ -162,6 +161,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Uživatelská jména jsou použÃvána pro uchovávánà a pÅ™iÅ™azovánà (meta)dat. Pro správnou identifikaci a rozpoznánà uživatelů bude mÃt každý LDAP uživatel internà uživatelské jméno. To vyžaduje mapovánà uživatelských jmen na uživatele LDAP. VytvoÅ™ené uživatelské jméno je mapováno na UUID uživatele v LDAP. DN informace je navÃc udržována v pamÄ›ti pro snÞenà interakce s LDAP, ale nenà použÃvána pro identifikaci. Pokud se DN zmÄ›nÃ, bude to správnÄ› rozpoznáno. Internà uživatelské jméno se použÃvá celé. VyÄiÅ¡tÄ›nà mapovánà zanechá zbytky vÅ¡ude. VyÄiÅ¡tÄ›nà navÃc nenà specifické pro každou konfiguraci, bude mÃt vliv na vÅ¡echny LDAP konfigurace! Nikdy neÄistÄ›te mapovánà v produkÄnÃm prostÅ™edÃ, ale pouze v testovacà nebo experimentálnà fázi.", "Clear Username-LDAP User Mapping" : "ZruÅ¡it mapovánà uživatelských jmen LDAPu", "Clear Groupname-LDAP Group Mapping" : "ZruÅ¡it mapovánà názvů skupin LDAPu", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavenà ověřena, nalezen jeden uživatel. Pouze prvnà se bude moci pÅ™ihlásit. Zvažte nasazenà užšÃho filtru." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavenà ověřena, nalezen jeden uživatel. Pouze prvnà se bude moci pÅ™ihlásit. Zvažte nasazenà užšÃho filtru.", + "in bytes" : "v bajtech" },"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/da.js b/apps/user_ldap/l10n/da.js index 044e8e3df02..077a0e7d872 100644 --- a/apps/user_ldap/l10n/da.js +++ b/apps/user_ldap/l10n/da.js @@ -142,7 +142,6 @@ OC.L10N.register( "Special Attributes" : "Specielle attributter", "Quota Field" : "Kvote Felt", "Quota Default" : "Standard for kvota", - "in bytes" : "i bytes", "Email Field" : "Felt for e-mail", "User Home Folder Naming Rule" : "Navneregel for brugerens hjemmemappe", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Lad stå tom for brugernavn (standard). Alternativt, angiv en LDAP/AD-attribut.", @@ -156,6 +155,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Brugernavne bruges til at lagre og tildele (meta)data. For at kunne identificere og genkende brugere præcist, så vil hver LDAP-bruger have et internt brugernavn. Det oprettede brugernavn kortlægges til UUID'et for LDAP-brugeren. I tillæg mellemlagres DN'et for at mindske LDAP-interaktioner, men det benyttes ikke til identifikation. Hvis DN'et ændres, så vil ændringerne blive registreret. Det interne brugernavn anvendes overalt. Hvis kortlægningerne ryddes, så vil der være rester overalt. Rydning af kortlægningerne er ikke konfigurationssensitivt - det påvirker alle LDAP-konfigurationer! Ryd aldrig kortlægningerne i et produktionsmiljø, kun i et teststadie eller eksperimentelt stadie.", "Clear Username-LDAP User Mapping" : "Ryd kortlægning mellem brugernavn og LDAP-bruger", "Clear Groupname-LDAP Group Mapping" : "Ryd kortlægning mellem gruppenavn og LDAP-gruppe", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Indstillingerne blev verificieret, men én bruger blev fundet. Kun den første, vil kunne logge ind. Overvej et mere begrænset filter." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Indstillingerne blev verificieret, men én bruger blev fundet. Kun den første, vil kunne logge ind. Overvej et mere begrænset filter.", + "in bytes" : "i bytes" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/user_ldap/l10n/da.json b/apps/user_ldap/l10n/da.json index ce851e31ed2..778ebca2dda 100644 --- a/apps/user_ldap/l10n/da.json +++ b/apps/user_ldap/l10n/da.json @@ -140,7 +140,6 @@ "Special Attributes" : "Specielle attributter", "Quota Field" : "Kvote Felt", "Quota Default" : "Standard for kvota", - "in bytes" : "i bytes", "Email Field" : "Felt for e-mail", "User Home Folder Naming Rule" : "Navneregel for brugerens hjemmemappe", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Lad stå tom for brugernavn (standard). Alternativt, angiv en LDAP/AD-attribut.", @@ -154,6 +153,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Brugernavne bruges til at lagre og tildele (meta)data. For at kunne identificere og genkende brugere præcist, så vil hver LDAP-bruger have et internt brugernavn. Det oprettede brugernavn kortlægges til UUID'et for LDAP-brugeren. I tillæg mellemlagres DN'et for at mindske LDAP-interaktioner, men det benyttes ikke til identifikation. Hvis DN'et ændres, så vil ændringerne blive registreret. Det interne brugernavn anvendes overalt. Hvis kortlægningerne ryddes, så vil der være rester overalt. Rydning af kortlægningerne er ikke konfigurationssensitivt - det påvirker alle LDAP-konfigurationer! Ryd aldrig kortlægningerne i et produktionsmiljø, kun i et teststadie eller eksperimentelt stadie.", "Clear Username-LDAP User Mapping" : "Ryd kortlægning mellem brugernavn og LDAP-bruger", "Clear Groupname-LDAP Group Mapping" : "Ryd kortlægning mellem gruppenavn og LDAP-gruppe", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Indstillingerne blev verificieret, men én bruger blev fundet. Kun den første, vil kunne logge ind. Overvej et mere begrænset filter." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Indstillingerne blev verificieret, men én bruger blev fundet. Kun den første, vil kunne logge ind. Overvej et mere begrænset filter.", + "in bytes" : "i bytes" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/de.js b/apps/user_ldap/l10n/de.js index 2284354faac..76905615bfa 100644 --- a/apps/user_ldap/l10n/de.js +++ b/apps/user_ldap/l10n/de.js @@ -148,9 +148,11 @@ OC.L10N.register( "(New password is sent as plain text to LDAP)" : "(Das neue Passwort wurde als einfacher Text an LDAP gesendet)", "Special Attributes" : "Spezielle Eigenschaften", "Quota Field" : "Kontingent Feld", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Ohne Eingabe wird das Standard-Kontingent des Benutzers verwendet. Andernfall trage ein LDAP/AD-Attribut ein.", "Quota Default" : "Standard Kontingent", - "in bytes" : "in Bytes", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Standard-Kontingent ignorieren für Benutzer von LDAP, die kein Kontingent festgelegt haben.", "Email Field" : "E-Mail-Feld", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "E-Mail-Adresse des Benutzers aus seinem LDAP-Attribut generieren. Für Standard-Verhalten leer lassen.", "User Home Folder Naming Rule" : "Benennungsregel für das Home-Verzeichnis des Benutzers", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Ohne Eingabe wird der Benutzername (Standard) verwendet. Anderenfall trage ein LDAP/AD-Attribut ein.", "Internal Username" : "Interner Benutzername", @@ -164,6 +166,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Die Benutzernamen werden genutzt, um (Meta-)Daten zuzuordnen und zu speichern. Um Benutzer eindeutig und präzise zu identifizieren, hat jeder LDAP-Benutzer einen internen Benutzernamen. Dies erfordert eine Zuordnung (mappen) von Benutzernamen zum LDAP-Benutzer. Der erstellte Benutzername wird der UUID des LDAP-Benutzernamens zugeordnet. Zusätzlich wird der DN zwischengespeichert, um die Interaktion mit dem LDAP zu minimieren, was aber nicht der Identifikation dient. Ändert sich der DN, werden die Änderungen durch gefunden. Der interne Benutzername, wird in überall verwendet. Werden die Zuordnungen gelöscht, bleiben überall Reste zurück. Die Löschung der Zuordnungen kann nicht in der Konfiguration vorgenommen werden, beeinflusst aber die LDAP-Konfiguration! Löschen Sie niemals die Zuordnungen in einer produktiven Umgebung. Lösche die Zuordnungen nur in einer Test- oder Experimentierumgebung.", "Clear Username-LDAP User Mapping" : "LDAP-Benutzernamenzuordnung löschen", "Clear Groupname-LDAP Group Mapping" : "LDAP-Gruppennamenzuordnung löschen", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwende möglicherweise einen engeren Filter." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwende möglicherweise einen engeren Filter.", + "in bytes" : "in Bytes" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/user_ldap/l10n/de.json b/apps/user_ldap/l10n/de.json index 26432e7a62d..fedd3be08e8 100644 --- a/apps/user_ldap/l10n/de.json +++ b/apps/user_ldap/l10n/de.json @@ -146,9 +146,11 @@ "(New password is sent as plain text to LDAP)" : "(Das neue Passwort wurde als einfacher Text an LDAP gesendet)", "Special Attributes" : "Spezielle Eigenschaften", "Quota Field" : "Kontingent Feld", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Ohne Eingabe wird das Standard-Kontingent des Benutzers verwendet. Andernfall trage ein LDAP/AD-Attribut ein.", "Quota Default" : "Standard Kontingent", - "in bytes" : "in Bytes", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Standard-Kontingent ignorieren für Benutzer von LDAP, die kein Kontingent festgelegt haben.", "Email Field" : "E-Mail-Feld", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "E-Mail-Adresse des Benutzers aus seinem LDAP-Attribut generieren. Für Standard-Verhalten leer lassen.", "User Home Folder Naming Rule" : "Benennungsregel für das Home-Verzeichnis des Benutzers", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Ohne Eingabe wird der Benutzername (Standard) verwendet. Anderenfall trage ein LDAP/AD-Attribut ein.", "Internal Username" : "Interner Benutzername", @@ -162,6 +164,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Die Benutzernamen werden genutzt, um (Meta-)Daten zuzuordnen und zu speichern. Um Benutzer eindeutig und präzise zu identifizieren, hat jeder LDAP-Benutzer einen internen Benutzernamen. Dies erfordert eine Zuordnung (mappen) von Benutzernamen zum LDAP-Benutzer. Der erstellte Benutzername wird der UUID des LDAP-Benutzernamens zugeordnet. Zusätzlich wird der DN zwischengespeichert, um die Interaktion mit dem LDAP zu minimieren, was aber nicht der Identifikation dient. Ändert sich der DN, werden die Änderungen durch gefunden. Der interne Benutzername, wird in überall verwendet. Werden die Zuordnungen gelöscht, bleiben überall Reste zurück. Die Löschung der Zuordnungen kann nicht in der Konfiguration vorgenommen werden, beeinflusst aber die LDAP-Konfiguration! Löschen Sie niemals die Zuordnungen in einer produktiven Umgebung. Lösche die Zuordnungen nur in einer Test- oder Experimentierumgebung.", "Clear Username-LDAP User Mapping" : "LDAP-Benutzernamenzuordnung löschen", "Clear Groupname-LDAP Group Mapping" : "LDAP-Gruppennamenzuordnung löschen", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwende möglicherweise einen engeren Filter." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwende möglicherweise einen engeren Filter.", + "in bytes" : "in Bytes" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/de_DE.js b/apps/user_ldap/l10n/de_DE.js index a5c74943a28..7f5a7633727 100644 --- a/apps/user_ldap/l10n/de_DE.js +++ b/apps/user_ldap/l10n/de_DE.js @@ -148,9 +148,11 @@ OC.L10N.register( "(New password is sent as plain text to LDAP)" : "(Das neue Passwort wurde als einfacher Text an LDAP gesendet)", "Special Attributes" : "Spezielle Eigenschaften", "Quota Field" : "Kontingent-Feld", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Ohne Eingabe wird das Standard-Kontingent des Benutzers verwendet. Andernfall trage ein LDAP/AD-Attribut ein.", "Quota Default" : "Standard-Kontingent", - "in bytes" : "in Bytes", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Standard-Kontingent ignorieren für Benutzer von LDAP, die kein Kontingent festgelegt haben.", "Email Field" : "E-Mail-Feld", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "E-Mail-Adresse des Benutzers aus seinem LDAP-Attribut generieren. Für Standard-Verhalten leer lassen.", "User Home Folder Naming Rule" : "Benennungsregel für das Home-Verzeichnis des Benutzers", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Ohne Eingabe wird der Benutzername (Standard) verwendet. Anderenfalls tragen Sie bitte ein LDAP/AD-Attribut ein.", "Internal Username" : "Interner Benutzername", @@ -164,6 +166,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Benutzernamen dienen zum Speichern und Zuweisen von (Meta-)Daten. Um Benutzer eindeutig zu identifizieren und zu erkennen, besitzt jeder LDAP-Benutzer einen internen Benutzernamen. Dies erfordert eine Zuordnung des jeweiligen Benutzernamens zum LDAP-Benutzer. Der erstellte Benutzername wird der UUID des LDAP-Benutzers zugeordnet. Darüber hinaus wird der DN auch zwischengespeichert, um die Interaktion über LDAP zu reduzieren, was aber nicht zur Identifikation dient. Ändert sich der DN, werden die Änderungen gefunden. Der interne Benutzername wird durchgängig verwendet. Ein Löschen der Zuordnungen führt zum systemweiten Verbleib von Restdaten. Es bleibt nicht auf eine einzelne Konfiguration beschränkt, sondern wirkt sich auf alle LDAP-Konfigurationen aus! Löschen Sie die Zuordnungen nie innerhalb einer Produktivumgebung, sondern nur in einer Test- oder Experimentierumgebung.", "Clear Username-LDAP User Mapping" : "Lösche LDAP-Benutzernamenzuordnung", "Clear Groupname-LDAP Group Mapping" : "Lösche LDAP-Gruppennamenzuordnung", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwenden Sie möglicherweise einen engeren Filter." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwenden Sie möglicherweise einen engeren Filter.", + "in bytes" : "in Bytes" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/user_ldap/l10n/de_DE.json b/apps/user_ldap/l10n/de_DE.json index 02946cdafb2..7ae3293e12a 100644 --- a/apps/user_ldap/l10n/de_DE.json +++ b/apps/user_ldap/l10n/de_DE.json @@ -146,9 +146,11 @@ "(New password is sent as plain text to LDAP)" : "(Das neue Passwort wurde als einfacher Text an LDAP gesendet)", "Special Attributes" : "Spezielle Eigenschaften", "Quota Field" : "Kontingent-Feld", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Ohne Eingabe wird das Standard-Kontingent des Benutzers verwendet. Andernfall trage ein LDAP/AD-Attribut ein.", "Quota Default" : "Standard-Kontingent", - "in bytes" : "in Bytes", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Standard-Kontingent ignorieren für Benutzer von LDAP, die kein Kontingent festgelegt haben.", "Email Field" : "E-Mail-Feld", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "E-Mail-Adresse des Benutzers aus seinem LDAP-Attribut generieren. Für Standard-Verhalten leer lassen.", "User Home Folder Naming Rule" : "Benennungsregel für das Home-Verzeichnis des Benutzers", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Ohne Eingabe wird der Benutzername (Standard) verwendet. Anderenfalls tragen Sie bitte ein LDAP/AD-Attribut ein.", "Internal Username" : "Interner Benutzername", @@ -162,6 +164,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Benutzernamen dienen zum Speichern und Zuweisen von (Meta-)Daten. Um Benutzer eindeutig zu identifizieren und zu erkennen, besitzt jeder LDAP-Benutzer einen internen Benutzernamen. Dies erfordert eine Zuordnung des jeweiligen Benutzernamens zum LDAP-Benutzer. Der erstellte Benutzername wird der UUID des LDAP-Benutzers zugeordnet. Darüber hinaus wird der DN auch zwischengespeichert, um die Interaktion über LDAP zu reduzieren, was aber nicht zur Identifikation dient. Ändert sich der DN, werden die Änderungen gefunden. Der interne Benutzername wird durchgängig verwendet. Ein Löschen der Zuordnungen führt zum systemweiten Verbleib von Restdaten. Es bleibt nicht auf eine einzelne Konfiguration beschränkt, sondern wirkt sich auf alle LDAP-Konfigurationen aus! Löschen Sie die Zuordnungen nie innerhalb einer Produktivumgebung, sondern nur in einer Test- oder Experimentierumgebung.", "Clear Username-LDAP User Mapping" : "Lösche LDAP-Benutzernamenzuordnung", "Clear Groupname-LDAP Group Mapping" : "Lösche LDAP-Gruppennamenzuordnung", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwenden Sie möglicherweise einen engeren Filter." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Einstellungen überprüft, aber einen Nutzer gefunden. Nur der Erste kann sich anmelden. Verwenden Sie möglicherweise einen engeren Filter.", + "in bytes" : "in Bytes" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/el.js b/apps/user_ldap/l10n/el.js index 8898e065d8e..1cd49e9b1b6 100644 --- a/apps/user_ldap/l10n/el.js +++ b/apps/user_ldap/l10n/el.js @@ -138,7 +138,6 @@ OC.L10N.register( "Special Attributes" : "Ειδικά ΧαÏακτηÏιστικά ", "Quota Field" : "Ποσοσταση πεδιου", "Quota Default" : "Î Ïοκαθισμενο πεδιο", - "in bytes" : "σε bytes", "Email Field" : "Email τυπος", "User Home Folder Naming Rule" : "ΧÏήστης Î Ïοσωπικόςφάκελος Ονομασία Κανόνας ", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Αφήστε το κενό για το όνομα χÏήστη (Ï€Ïοεπιλογή). ΔιαφοÏετικά, συμπληÏώστε μία ιδιότητα LDAP/AD.", @@ -152,6 +151,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Τα ονόματα χÏηστών χÏησιμοποιοÏνται για την αποθήκευση και τον Ï€ÏοσδιοÏισμό των (μετα) δεδομÎνων. Î ÏοκειμÎνου να Ï€ÏοσδιοÏιστοÏν με ακÏίβεια και να αναγνωÏιστοÏν οι χÏήστες, κάθε χÏήστης LDAP θα Îχει Îνα εσωτεÏικό όνομα. Αυτό απαιτεί μια αντιστοίχιση του ονόματος χÏήστη με το χÏήστη LDAP. Το όνομα χÏήστη που δημιουÏγήθηκαν αντιστοιχίζεται στην UUID του χÏήστη LDAP. ΕπιπÏοσθÎτως, το DN αποθηκεÏεται Ï€ÏοσωÏινά (cache) ώστε να μειωθεί η αλληλεπίδÏαση LDAP, αλλά δεν χÏησιμοποιείται για την ταυτοποίηση. Αν το DN αλλάξει, οι αλλαγÎÏ‚ θα εντοπιστοÏν. Το εσωτεÏικό όνομα χÏήστη χÏησιμοποιείται παντοÏ. Η εκκαθάÏιση των αντιστοιχίσεων θα αφήσει υπολείμματα παντοÏ. Η εκκαθάÏιση των αντιστοιχίσεων δεν επηÏεάζεται από τη διαμόÏφωση, επηÏεάζει όλες τις διαμοÏφώσεις LDAP! Μην διαγÏάψετε ποτΠτις αντιστοιχίσεις σε Îνα λειτουÏγικό πεÏιβάλλον παÏά μόνο σε δοκιμÎÏ‚ ή σε πειÏαματικό στάδιο.", "Clear Username-LDAP User Mapping" : "ΔιαγÏαφή αντιστοίχησης Ονόματος ΧÏήστη LDAP-ΧÏήστη", "Clear Groupname-LDAP Group Mapping" : "ΔιαγÏαφή αντιστοίχησης Ονόματος Ομάδας-LDAP Ομάδας", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Οι Ïυθμίσεις επαληθεÏτηκαν αλλά βÏÎθηκε Îνας χÏήστης. Μόνο ο Ï€Ïώτος θα μποÏÎσει να συνδεθεί. Εξετάστε τη χÏήση πιο ÎµÏ€Î¹Î»ÎµÎºÏ„Î¹ÎºÎ¿Ï Ï†Î¯Î»Ï„Ïου." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Οι Ïυθμίσεις επαληθεÏτηκαν αλλά βÏÎθηκε Îνας χÏήστης. Μόνο ο Ï€Ïώτος θα μποÏÎσει να συνδεθεί. Εξετάστε τη χÏήση πιο ÎµÏ€Î¹Î»ÎµÎºÏ„Î¹ÎºÎ¿Ï Ï†Î¯Î»Ï„Ïου.", + "in bytes" : "σε bytes" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/user_ldap/l10n/el.json b/apps/user_ldap/l10n/el.json index 01e90a84c3a..42ad5cab7bf 100644 --- a/apps/user_ldap/l10n/el.json +++ b/apps/user_ldap/l10n/el.json @@ -136,7 +136,6 @@ "Special Attributes" : "Ειδικά ΧαÏακτηÏιστικά ", "Quota Field" : "Ποσοσταση πεδιου", "Quota Default" : "Î Ïοκαθισμενο πεδιο", - "in bytes" : "σε bytes", "Email Field" : "Email τυπος", "User Home Folder Naming Rule" : "ΧÏήστης Î Ïοσωπικόςφάκελος Ονομασία Κανόνας ", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Αφήστε το κενό για το όνομα χÏήστη (Ï€Ïοεπιλογή). ΔιαφοÏετικά, συμπληÏώστε μία ιδιότητα LDAP/AD.", @@ -150,6 +149,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Τα ονόματα χÏηστών χÏησιμοποιοÏνται για την αποθήκευση και τον Ï€ÏοσδιοÏισμό των (μετα) δεδομÎνων. Î ÏοκειμÎνου να Ï€ÏοσδιοÏιστοÏν με ακÏίβεια και να αναγνωÏιστοÏν οι χÏήστες, κάθε χÏήστης LDAP θα Îχει Îνα εσωτεÏικό όνομα. Αυτό απαιτεί μια αντιστοίχιση του ονόματος χÏήστη με το χÏήστη LDAP. Το όνομα χÏήστη που δημιουÏγήθηκαν αντιστοιχίζεται στην UUID του χÏήστη LDAP. ΕπιπÏοσθÎτως, το DN αποθηκεÏεται Ï€ÏοσωÏινά (cache) ώστε να μειωθεί η αλληλεπίδÏαση LDAP, αλλά δεν χÏησιμοποιείται για την ταυτοποίηση. Αν το DN αλλάξει, οι αλλαγÎÏ‚ θα εντοπιστοÏν. Το εσωτεÏικό όνομα χÏήστη χÏησιμοποιείται παντοÏ. Η εκκαθάÏιση των αντιστοιχίσεων θα αφήσει υπολείμματα παντοÏ. Η εκκαθάÏιση των αντιστοιχίσεων δεν επηÏεάζεται από τη διαμόÏφωση, επηÏεάζει όλες τις διαμοÏφώσεις LDAP! Μην διαγÏάψετε ποτΠτις αντιστοιχίσεις σε Îνα λειτουÏγικό πεÏιβάλλον παÏά μόνο σε δοκιμÎÏ‚ ή σε πειÏαματικό στάδιο.", "Clear Username-LDAP User Mapping" : "ΔιαγÏαφή αντιστοίχησης Ονόματος ΧÏήστη LDAP-ΧÏήστη", "Clear Groupname-LDAP Group Mapping" : "ΔιαγÏαφή αντιστοίχησης Ονόματος Ομάδας-LDAP Ομάδας", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Οι Ïυθμίσεις επαληθεÏτηκαν αλλά βÏÎθηκε Îνας χÏήστης. Μόνο ο Ï€Ïώτος θα μποÏÎσει να συνδεθεί. Εξετάστε τη χÏήση πιο ÎµÏ€Î¹Î»ÎµÎºÏ„Î¹ÎºÎ¿Ï Ï†Î¯Î»Ï„Ïου." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Οι Ïυθμίσεις επαληθεÏτηκαν αλλά βÏÎθηκε Îνας χÏήστης. Μόνο ο Ï€Ïώτος θα μποÏÎσει να συνδεθεί. Εξετάστε τη χÏήση πιο ÎµÏ€Î¹Î»ÎµÎºÏ„Î¹ÎºÎ¿Ï Ï†Î¯Î»Ï„Ïου.", + "in bytes" : "σε bytes" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/en_GB.js b/apps/user_ldap/l10n/en_GB.js index c4df3453766..2ec2f604ea8 100644 --- a/apps/user_ldap/l10n/en_GB.js +++ b/apps/user_ldap/l10n/en_GB.js @@ -142,7 +142,6 @@ OC.L10N.register( "Special Attributes" : "Special Attributes", "Quota Field" : "Quota Field", "Quota Default" : "Quota Default", - "in bytes" : "in bytes", "Email Field" : "Email Field", "User Home Folder Naming Rule" : "User Home Folder Naming Rule", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute.", @@ -157,6 +156,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Usernames are used to store and assign (meta) data. In order to precisely identify and recognise users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage.", "Clear Username-LDAP User Mapping" : "Clear Username-LDAP User Mapping", "Clear Groupname-LDAP Group Mapping" : "Clear Groupname-LDAP Group Mapping", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter.", + "in bytes" : "in bytes" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/user_ldap/l10n/en_GB.json b/apps/user_ldap/l10n/en_GB.json index 07fea61cd3d..f5c09079a27 100644 --- a/apps/user_ldap/l10n/en_GB.json +++ b/apps/user_ldap/l10n/en_GB.json @@ -140,7 +140,6 @@ "Special Attributes" : "Special Attributes", "Quota Field" : "Quota Field", "Quota Default" : "Quota Default", - "in bytes" : "in bytes", "Email Field" : "Email Field", "User Home Folder Naming Rule" : "User Home Folder Naming Rule", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute.", @@ -155,6 +154,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Usernames are used to store and assign (meta) data. In order to precisely identify and recognise users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage.", "Clear Username-LDAP User Mapping" : "Clear Username-LDAP User Mapping", "Clear Groupname-LDAP Group Mapping" : "Clear Groupname-LDAP Group Mapping", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter.", + "in bytes" : "in bytes" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/es.js b/apps/user_ldap/l10n/es.js index 78b2f6516bc..bac5a78ae88 100644 --- a/apps/user_ldap/l10n/es.js +++ b/apps/user_ldap/l10n/es.js @@ -149,7 +149,6 @@ OC.L10N.register( "Special Attributes" : "Atributos especiales", "Quota Field" : "Cuota", "Quota Default" : "Cuota por defecto", - "in bytes" : "en bytes", "Email Field" : "E-mail", "User Home Folder Naming Rule" : "Regla para la carpeta Home de usuario", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "VacÃo para el nombre de usuario (por defecto). En otro caso, especifique un atributo LDAP/AD.", @@ -164,6 +163,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los usuarios son usados para almacenar y asignar (meta) datos. Con el fin de identificar de forma precisa y reconocer usuarios, cada usuario de LDAP tendrá un nombre de usuario interno. Esto requiere un mapeo entre el nombre de usuario y el usuario del LDAP. El nombre de usuario creado es mapeado respecto al UUID del usuario en el LDAP. De forma adicional, el DN es cacheado para reducir la interacción entre el LDAP, pero no es usado para identificar. Si el DN cambia, los cambios serán aplicados. El nombre de usuario interno es usado por encima de todo. Limpiar los mapeos dejará restos por todas partes, no es sensible a configuración, ¡afecta a todas las configuraciones del LDAP! Nunca limpies los mapeos en un entorno de producción, únicamente en una fase de desarrollo o experimental.", "Clear Username-LDAP User Mapping" : "Borrar la asignación de los Nombres de usuario de los usuarios LDAP", "Clear Groupname-LDAP Group Mapping" : "Borrar la asignación de los Nombres de grupo de los grupos de LDAP", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Configuración verificada, pero no se encuentra ningún usuario. Sólo el primero podrá iniciar sesión. Considere un filtro más estrecho." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Configuración verificada, pero no se encuentra ningún usuario. Sólo el primero podrá iniciar sesión. Considere un filtro más estrecho.", + "in bytes" : "en bytes" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/user_ldap/l10n/es.json b/apps/user_ldap/l10n/es.json index 07346cd2bab..55fc0ba08ef 100644 --- a/apps/user_ldap/l10n/es.json +++ b/apps/user_ldap/l10n/es.json @@ -147,7 +147,6 @@ "Special Attributes" : "Atributos especiales", "Quota Field" : "Cuota", "Quota Default" : "Cuota por defecto", - "in bytes" : "en bytes", "Email Field" : "E-mail", "User Home Folder Naming Rule" : "Regla para la carpeta Home de usuario", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "VacÃo para el nombre de usuario (por defecto). En otro caso, especifique un atributo LDAP/AD.", @@ -162,6 +161,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los usuarios son usados para almacenar y asignar (meta) datos. Con el fin de identificar de forma precisa y reconocer usuarios, cada usuario de LDAP tendrá un nombre de usuario interno. Esto requiere un mapeo entre el nombre de usuario y el usuario del LDAP. El nombre de usuario creado es mapeado respecto al UUID del usuario en el LDAP. De forma adicional, el DN es cacheado para reducir la interacción entre el LDAP, pero no es usado para identificar. Si el DN cambia, los cambios serán aplicados. El nombre de usuario interno es usado por encima de todo. Limpiar los mapeos dejará restos por todas partes, no es sensible a configuración, ¡afecta a todas las configuraciones del LDAP! Nunca limpies los mapeos en un entorno de producción, únicamente en una fase de desarrollo o experimental.", "Clear Username-LDAP User Mapping" : "Borrar la asignación de los Nombres de usuario de los usuarios LDAP", "Clear Groupname-LDAP Group Mapping" : "Borrar la asignación de los Nombres de grupo de los grupos de LDAP", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Configuración verificada, pero no se encuentra ningún usuario. Sólo el primero podrá iniciar sesión. Considere un filtro más estrecho." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Configuración verificada, pero no se encuentra ningún usuario. Sólo el primero podrá iniciar sesión. Considere un filtro más estrecho.", + "in bytes" : "en bytes" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/es_MX.js b/apps/user_ldap/l10n/es_MX.js index 0b7eb8085b9..8a48a7620d2 100644 --- a/apps/user_ldap/l10n/es_MX.js +++ b/apps/user_ldap/l10n/es_MX.js @@ -1,90 +1,165 @@ OC.L10N.register( "user_ldap", { - "Failed to clear the mappings." : "Ocurrió un fallo al borrar las asignaciones.", - "Failed to delete the server configuration" : "No se pudo borrar la configuración del servidor", - "The configuration is valid and the connection could be established!" : "¡La configuración es válida y la conexión puede establecerse!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuración es válida, pero falló el Enlace. Por favor, compruebe la configuración del servidor y las credenciales.", - "The configuration is invalid. Please have a look at the logs for further details." : "La configuración no es válida. Por favor, busque en el log para más detalles.", - "No action specified" : "No se ha especificado la acción", - "No configuration specified" : "No se ha especificado la configuración", - "No data specified" : "No se han especificado los datos", - " Could not set configuration %s" : "No se pudo establecer la configuración %s", + "Failed to clear the mappings." : "Se presentó una falla al borrar los mapeos.", + "Failed to delete the server configuration" : "Se presentó una falla al borrar la configuración del servidor", + "The configuration is invalid: anonymous bind is not allowed." : "La configuración es inválida: No se permite hacer una vinculación anónima . ", + "The configuration is valid and the connection could be established!" : "¡La configuración es válida y la conexión pudo ser establecida!", + "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuración es válida, pero falló la Vinculación. Favor de verificar los ajustes del servidor y las credenciales.", + "The configuration is invalid. Please have a look at the logs for further details." : "La configuración es inválida. Favor de consultar las bitácoras para más detalles.", + "No action specified" : "No se ha especificado una acción", + "No configuration specified" : "No se ha especificado una configuración", + "No data specified" : "No se han especificado datos", + " Could not set configuration %s" : "No fue posible establecer la configuración %s", + "Action does not exist" : "La acción no existe", + "The Base DN appears to be wrong" : "El DN Base parece estar incorrecto", + "Testing configuration…" : "Probando configuracion... ", "Configuration incorrect" : "Configuración Incorrecta", "Configuration incomplete" : "Configuración incompleta", - "Configuration OK" : "Configuración OK", + "Configuration OK" : "Configuración correcta", "Select groups" : "Seleccionar grupos", - "Select object classes" : "Seleccionar la clase de objeto", + "Select object classes" : "Seleccionar las clases de objeto", + "Please check the credentials, they seem to be wrong." : "Favor de verificar sus credenciales, al parecer están equivocadas.", + "Please specify the port, it could not be auto-detected." : "No fue posible auto-detectar el puerto, favor de especificarlo.", + "Base DN could not be auto-detected, please revise credentials, host and port." : "No fue posible auto detectar el DN base, favor de verificar las credenciales, servidor y puerto.", + "Could not detect Base DN, please enter it manually." : "No fue posible detectar el DN Base, favor de ingresarlo manualmente.", + "{nthServer}. Server" : "{nthServer}. Servidor", + "No object found in the given Base DN. Please revise." : "No fue posible encontrar ningún objeto en el DN Base dado. Favor de verificar. ", + "More than 1,000 directory entries available." : "Se encuentran disponibles más de 1,000 elementos de directoiros. ", + " entries available within the provided Base DN" : "elementos disponibles dentro del DN Base proporcionado", + "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Se presentó un error. Favor de verificar la Base DN, asà como los ajustes de la conexión y las credenciales.", "Do you really want to delete the current Server Configuration?" : "¿Realmente desea eliminar la configuración actual del servidor?", - "Confirm Deletion" : "Confirmar eliminación", + "Confirm Deletion" : "Confirmar el borrado", + "Mappings cleared successfully!" : "¡Los mapeos se borraron exitosamente!", + "Error while clearing the mappings." : "Se presentó un error al borrar los mapeos. ", + "Anonymous bind is not allowed. Please provide a User DN and Password." : "La vinculación anónima no está permitida. Favor de proporcionar un Usuario DN y una Contaseña.", + "LDAP Operations error. Anonymous bind might not be allowed." : "Error de Operaciones LDAP. Las vinculaciones anónimas pueden no estar permitidas. ", + "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Se presentó una falla en el guardado. Favor de verificar que la base de datos esté operando. Recargue antes de continuar. ", + "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Cambiar la modalidad habilitará las consultas automaticas de LDAP. Dependiendo del tamaño de su LDAP esto puede tomar algun tiempo. ¿Aún desea cambiar la modalidad?", + "Mode switch" : "Cambio de modo", "Select attributes" : "Seleccionar atributos", - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","Grupos %s encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","Usuarios %s encontrados"], - "Could not find the desired feature" : "No se puede encontrar la función deseada.", - "Invalid Host" : "Host inválido", - "Users" : "Usuarios", - "Groups" : "Grupos", - "Test Configuration" : "Configuración de prueba", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "El usuario no fue encontrado. Favor de verficiar los atributos de inicio de sesión y su nombre de usuario. Filtrado efectivo (para copiar y pegar a la validación de lÃnea de comandos): </br>", + "User found and settings verified." : "Usuario encontrado y ajustes verificados. ", + "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Ajustes verficados, pero más de un usuario fue encontrado. Sólo el primero será capaz de iniciar sesión. Considere un filtro más refinado.", + "An unspecified error occurred. Please check the settings and the log." : "Se presentó un error no especificado. Favor de verificar los ajustes y la bitácroa. ", + "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Favor de verificar. ", + "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Se presentó una falla con la conexión al servidor LDAP / AD, favor de verificar el servidor, puerto y credenciales. ", + "Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar", + "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ", + "LDAP / AD integration" : "Integración con LDAP / AD", + "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados"], + "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados"], + "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "No fue posible detectar el atributo nombre a desplegar del usuario. Favor de especificarlo usted mismo en los ajustes avanzados de LDAP.", + "Could not find the desired feature" : "No fue posible encontrar la función deseada.", + "Invalid Host" : "Servidor inválido", + "Test Configuration" : "Probar configuración", "Help" : "Ayuda", - "The filter specifies which LDAP groups shall have access to the %s instance." : "El filtro especifica que grupos LDAP tendrán acceso a %s.", + "Only these object classes:" : "Sólo estas clases de objetos:", + "Only from these groups:" : "Sólo desde estos grupos:", + "Search groups" : "Buscar grupos", + "Available groups" : "Grupos disponibles", + "Selected groups" : "Grupos seleccionados", + "Edit LDAP Query" : "Editar consulta a LDAP", + "LDAP Filter:" : "Filtro de LDAP:", + "The filter specifies which LDAP groups shall have access to the %s instance." : "El filtro especifica cuales grupos LDAP tendrán acceso a la instancia %s.", + "Verify settings and count groups" : "Verificar ajustes y contar grupos", + "When logging in, %s will find the user based on the following attributes:" : "Al iniciar sesion, %s encontrará al usuario con base en los siguientes atributos:", + "LDAP / AD Username:" : "Nombre de usuario LDAP / AD", + "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Permite iniciar sesión contra el nombre de usuario LDAP / AD, que es el uid o el samaccountname y será detectado. ", + "LDAP / AD Email Address:" : "Dirección de correo electrónico LDAP / AD", + "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Permite iniciar sesión contra el atributo correo electrónico. Mail y mailPrimaryAddress serán permitidos.", "Other Attributes:" : "Otros atributos:", - "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Define el filtro a aplicar cuando se intenta identificar. %%uid remplazará al nombre de usuario en el proceso de identificación. Por ejemplo: \"uid=%%uid\"", + "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Define el filtro a aplicar al intentar ingresar. %% uid remplaza al nombre de usuario al intentar ingresar. Por ejemplo: \"uid=%%uid\"", + "Test Loginname" : "Probar nombre de usuario", + "Verify settings" : "Verificar ajustes", + "1. Server" : "1. Servidor", + "%s. Server:" : "%s. Servidor:", + "Add a new and blank configuration" : "Agregar una configuración nueva y en blanco", + "Copy current configuration into new directory binding" : "Copiar la configuración actual a un nuevo directorio de vinculación", + "Delete the current configuration" : "Borrar la configuración actual", "Host" : "Servidor", "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Puede omitir el protocolo, excepto si requiere SSL. En ese caso, empiece con ldaps://", "Port" : "Puerto", - "User DN" : "DN usuario", + "Detect Port" : "Detectar Puerto", + "User DN" : "DN del usuario", "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "El DN del usuario cliente con el que se hará la asociación, p.ej. uid=agente,dc=ejemplo,dc=com. Para acceso anónimo, deje DN y contraseña vacÃos.", "Password" : "Contraseña", - "For anonymous access, leave DN and Password empty." : "Para acceso anónimo, deje DN y contraseña vacÃos.", + "For anonymous access, leave DN and Password empty." : "Para acceso anónimo, deje la contraseña y DN vacÃos.", "One Base DN per line" : "Un DN Base por lÃnea", "You can specify Base DN for users and groups in the Advanced tab" : "Puede especificar el DN base para usuarios y grupos en la pestaña Avanzado", - "The filter specifies which LDAP users shall have access to the %s instance." : "El filtro especifica que usuarios LDAP pueden tener acceso a %s.", + "Detect Base DN" : "Detectar DN Base", + "Test Base DN" : "Probar la base DN", + "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Evita solicitudes automaticas de LDAP. Es mejor para ambientes más grandes pero requiere mayor conocimiento de LDAP. ", + "Manually enter LDAP filters (recommended for large directories)" : "Ingresar los filtros LDAP manualmente (recomendado para directorios grandes)", + "Listing and searching for users is constrained by these criteria:" : "Los enlistados y las busquedas para los usuarios están acotados por estos criterios:", + "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Las clases de objetos más comunes para usuarios son organizationalPerson, person, user, and inetOrgPerson. Si no está seguro de cuál clase de objeto selecciónar, favor de consultar su directorio admin.", + "The filter specifies which LDAP users shall have access to the %s instance." : "El filtro especifica cuáles usuarios LDAP tendrán acceso a la instancia %s.", + "Verify settings and count users" : "Verificar ajustes y contar ususarios", + "Saving" : "Guardando", "Back" : "Atrás", "Continue" : "Continuar", + "LDAP" : "LDAP", + "Server" : "Servidor", + "Users" : "Usuarios", + "Login Attributes" : "Atriburos de Inicio de Sesión", + "Groups" : "Grupos", + "Expert" : "Experto", "Advanced" : "Avanzado", - "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Advertencia:</b> Las apps user_ldap y user_webdavauth son incompatibles. Puede que experimente un comportamiento inesperado. Pregunte al su administrador de sistemas para desactivar uno de ellos.", - "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Advertencia:</b> El módulo LDAP de PHP no está instalado, el sistema no funcionará. Por favor consulte al administrador del sistema para instalarlo.", - "Connection Settings" : "Configuración de conexión", - "Configuration Active" : "Configuracion activa", + "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Advertencia:</b> Las aplicaciones user_ldap y user_webdavauth son incompatibles. Usted puede expermientar comportamientos inesperados. Favor de solicitar a su administrador del sistema deshabilitar alguno de ellos.", + "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Advertencia:</b> El módulo LDAP de PHP no está instalado, el sistema no funcionará. Favor de solicitar su instalación a su administrador del sistema.", + "Connection Settings" : "Ajustes de la conexión", + "Configuration Active" : "Configuracion Activa", "When unchecked, this configuration will be skipped." : "Cuando deseleccione, esta configuracion sera omitida.", "Backup (Replica) Host" : "Servidor de copia de seguridad (Replica)", - "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Dar un servidor de copia de seguridad opcional. Debe ser una réplica del servidor principal LDAP / AD.", - "Backup (Replica) Port" : "Puerto para copias de seguridad (Replica)", + "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Favor de proporcionar un servidor de copia de seguridad opcional. Debe ser una réplica del servidor LDAP / AD principal.", + "Backup (Replica) Port" : "Puerto para copias de seguridad (Réplica)", "Disable Main Server" : "Deshabilitar servidor principal", - "Only connect to the replica server." : "Conectar sólo con el servidor de réplica.", + "Only connect to the replica server." : "Sólo contectarse al servidor de réplica.", "Turn off SSL certificate validation." : "Apagar la validación por certificado SSL.", - "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "No se recomienda, ¡utilÃzalo únicamente para pruebas! Si la conexión únicamente funciona con esta opción, importa el certificado SSL del servidor LDAP en tu servidor %s.", + "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "¡No se recomienda, úselo únicamente para pruebas! Si la conexión sólo funciona con esta opción, importe el certificado SSL del servidor LDAP a su servidor %s.", "Cache Time-To-Live" : "Cache TTL", "in seconds. A change empties the cache." : "en segundos. Un cambio vacÃa la caché.", - "Directory Settings" : "Configuración de directorio", - "User Display Name Field" : "Campo de nombre de usuario a mostrar", - "The LDAP attribute to use to generate the user's display name." : "El campo LDAP a usar para generar el nombre para mostrar del usuario.", - "Base User Tree" : "Ãrbol base de usuario", + "Directory Settings" : "Ajustes del directorio", + "User Display Name Field" : "Campo de nombre del usuario a desplegar", + "The LDAP attribute to use to generate the user's display name." : "El atributo LDAP a usar para generar el nombre del usuario a desplegar.", + "2nd User Display Name Field" : "2do Campo de Nombre a Desplegar del Usuario", + "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Opcional. Un atributo LDAP puede ser agregado al nombre a despelegar entre corchetes. Ejemplos de resultados »John Doe (john.doe@example.org)«.", + "Base User Tree" : "Ãrbol de Usuario Base", "One User Base DN per line" : "Un DN Base de Usuario por lÃnea", - "User Search Attributes" : "Atributos de la busqueda de usuario", + "User Search Attributes" : "Atributos de búsqueda de usuario", "Optional; one attribute per line" : "Opcional; un atributo por linea", - "Group Display Name Field" : "Campo de nombre de grupo a mostrar", + "Group Display Name Field" : "Campo de Nombre de Grupo a Desplegar", "The LDAP attribute to use to generate the groups's display name." : "El campo LDAP a usar para generar el nombre para mostrar del grupo.", "Base Group Tree" : "Ãrbol base de grupo", "One Group Base DN per line" : "Un DN Base de Grupo por lÃnea", - "Group Search Attributes" : "Atributos de busqueda de grupo", + "Group Search Attributes" : "Atributos de Búsqueda de Grupo", "Group-Member association" : "Asociación Grupo-Miembro", - "Special Attributes" : "Atributos especiales", - "Quota Field" : "Cuota", - "Quota Default" : "Cuota por defecto", - "in bytes" : "en bytes", - "Email Field" : "E-mail", - "User Home Folder Naming Rule" : "Regla para la carpeta Home de usuario", - "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "VacÃo para el nombre de usuario (por defecto). En otro caso, especifique un atributo LDAP/AD.", + "Dynamic Group Member URL" : "URL de Miembro de Grupo Dinámico ", + "Nested Groups" : "Grupos Anidados", + "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Cuando se enciende, los grupos que contengan grupos están soportados. (Sólo funciona si el atributo de miembro de grupo contiene los DNs). ", + "Paging chunksize" : "Tamaño del chunk de paginación", + "Enable LDAP password changes per user" : "Habilitar cambio de contraseñas en LDAP por el usuario", + "(New password is sent as plain text to LDAP)" : "(La nueva contraseña se envÃa como texto plano a LDAP)", + "Special Attributes" : "Atributos Especiales", + "Quota Field" : "Campo de cuota", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Dejar en blanco para usar la cuota predeterminada del usuario. En caso contrario, favor de especificar el atributo LDAP / AD.", + "Quota Default" : "Cuota predeterminada", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Anular la cuota predeterminada para usuarios LDAP que no tienen una cuota establecida en el Campo Cuota. ", + "Email Field" : "Campo de correo electrónico", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Establecer el correo electrónico del usuario con base en el atributo LDAP. Dejelo vacÃo para el comportamiento predeterminado. ", + "User Home Folder Naming Rule" : "Regla de Nomenclatura para la Carpeta Inicio del Usuario", + "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Dejar vacÃo para el nombre de usuario (predeterminado). En otro caso, especifique un atributo LDAP/AD.", "Internal Username" : "Nombre de usuario interno", - "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "El nombre de usuario interno será creado de forma predeterminada desde el atributo UUID. Esto asegura que el nombre de usuario es único y los caracteres no necesitan ser convertidos. En el nombre de usuario interno sólo se pueden usar estos caracteres: [ a-zA-Z0-9_.@- ]. El resto de caracteres son sustituidos por su correspondiente en ASCII o simplemente omitidos. En caso de duplicidades, se añadirá o incrementará un número. El nombre de usuario interno es usado para identificar un usuario. Es también el nombre predeterminado para la carpeta personal del usuario en ownCloud. También es parte de URLs remotas, por ejemplo, para todos los servicios *DAV. Con esta configuración el comportamiento predeterminado puede ser cambiado. Para conseguir un comportamiento similar a como era antes de ownCloud 5, introduzca el campo del nombre para mostrar del usuario en la siguiente caja. Déjelo vacÃo para el comportamiento predeterminado. Los cambios solo tendrán efecto en los usuarios LDAP mapeados (añadidos) recientemente.", - "Internal Username Attribute:" : "Atributo Nombre de usuario Interno:", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Por defecto, el nombre de usuario interno se creará con base en el atributo UUID. Esto asegura que el nombre de usuario sea único y que los caracteres no tengan que ser convertidos. El nombre de usuario intenro tiene la restricción de que sólo los siguienes caracteres están permitidos: [ a-zA-Z0-9_.@- ]. El resto de los caracteres son reemplazados con su correspondencia ASCII o simplemente se omiten. En caso de colisiones, se agregará/ incrementará un numero. El nombre de usuario interno se usa para identificar a un usuario internamente. Adicionalmente es el nombre predeterminado para la carpeta de inicio. También es parte de las URLs remotas, por ejemplo, para todos los servicios *DAV. Con este ajuste se puede anular el comportamiento predeterminado. Mantengalo vacÃo para mantener el comportamiento predeterminado. Los cambios surtiran efecto sólo en los usuarios mapeados (agregados) nuevos a LDAP. ", + "Internal Username Attribute:" : "Atributo de nombre de usuario Interno:", "Override UUID detection" : "Sobrescribir la detección UUID", - "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Por defecto, el atributo UUID es autodetectado. Este atributo es usado para identificar indudablemente usuarios y grupos LDAP. Además, el nombre de usuario interno será creado en base al UUID, si no ha sido especificado otro comportamiento arriba. Puedes sobrescribir la configuración y pasar un atributo de tu elección. Debes asegurarte de que el atributo de tu elección sea accesible por los usuarios y grupos y ser único. Déjalo en blanco para usar el comportamiento por defecto. Los cambios tendrán efecto solo en los usuarios y grupos de LDAP mapeados (añadidos) recientemente.", - "UUID Attribute for Users:" : "Atributo UUID para usuarios:", + "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Por defecto, el atributo UUID se detecta automáticamente. Este atributo se usa para identificar, sin ninguna duda, a usuarios y grupos LDAP. Adicionalmente, el nombre de usuario interno se creará con base en el UUID, si no ha sido especificado otro comportamiento en la parte de arriba. Puede anular el ajuste y proporcionar el atributo que desee. Debe asegurarse de que el atributo que desee sea accesible por los usuarios y grupos y que sea único. Mantengalo vacÃo para el comportamiento predeterminado . Los cambios surtirán efecto sólo en los usuarios y grupos mapeados (agregados) nuevos a LDAP.", + "UUID Attribute for Users:" : "Atributo UUID para Usuarios:", "UUID Attribute for Groups:" : "Atributo UUID para Grupos:", - "Username-LDAP User Mapping" : "Asignación del Nombre de usuario de un usuario LDAP", - "Clear Username-LDAP User Mapping" : "Borrar la asignación de los Nombres de usuario de los usuarios LDAP", - "Clear Groupname-LDAP Group Mapping" : "Borrar la asignación de los Nombres de grupo de los grupos de LDAP" + "Username-LDAP User Mapping" : "Mapeo del Nombre del usuario al Usuario LDAP", + "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nombres de usuario son usados para almacenar y asignar (meta) datos. Para poder identificar y reconocer con precisión a los usuarios, cada usuario LDAP contará con un Nombre de usuario interno. Esto requiere un mapeo del Nombre de usuario al usuario LDAP. El nombre de usuario creado se mapea al UUID del usuario LDAP. Adicionalmente el DN se guarda en caché para reducir las interacciones con LDAP, pero no se usa para identificación. Si el DN cambia, las modficaciones serán encontradas. El Nombre del usuario interno se usa en todos lados. Limpiar los mapeos dejará sobras en todos lados. ¡Limpiar los mapeos no es senible a la configuración, afecta a todas las configuraciones LDAP! Nunca borre las configuraciones en el ambiente de producción, sólo hágalo en los ambientes de pruebas o de experimentación. ", + "Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Nombres de usuario a los Usuarios LDAP", + "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos de LDAP", + "in bytes" : "en bytes" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/user_ldap/l10n/es_MX.json b/apps/user_ldap/l10n/es_MX.json index d458644b137..30053d52e57 100644 --- a/apps/user_ldap/l10n/es_MX.json +++ b/apps/user_ldap/l10n/es_MX.json @@ -1,88 +1,163 @@ { "translations": { - "Failed to clear the mappings." : "Ocurrió un fallo al borrar las asignaciones.", - "Failed to delete the server configuration" : "No se pudo borrar la configuración del servidor", - "The configuration is valid and the connection could be established!" : "¡La configuración es válida y la conexión puede establecerse!", - "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuración es válida, pero falló el Enlace. Por favor, compruebe la configuración del servidor y las credenciales.", - "The configuration is invalid. Please have a look at the logs for further details." : "La configuración no es válida. Por favor, busque en el log para más detalles.", - "No action specified" : "No se ha especificado la acción", - "No configuration specified" : "No se ha especificado la configuración", - "No data specified" : "No se han especificado los datos", - " Could not set configuration %s" : "No se pudo establecer la configuración %s", + "Failed to clear the mappings." : "Se presentó una falla al borrar los mapeos.", + "Failed to delete the server configuration" : "Se presentó una falla al borrar la configuración del servidor", + "The configuration is invalid: anonymous bind is not allowed." : "La configuración es inválida: No se permite hacer una vinculación anónima . ", + "The configuration is valid and the connection could be established!" : "¡La configuración es válida y la conexión pudo ser establecida!", + "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "La configuración es válida, pero falló la Vinculación. Favor de verificar los ajustes del servidor y las credenciales.", + "The configuration is invalid. Please have a look at the logs for further details." : "La configuración es inválida. Favor de consultar las bitácoras para más detalles.", + "No action specified" : "No se ha especificado una acción", + "No configuration specified" : "No se ha especificado una configuración", + "No data specified" : "No se han especificado datos", + " Could not set configuration %s" : "No fue posible establecer la configuración %s", + "Action does not exist" : "La acción no existe", + "The Base DN appears to be wrong" : "El DN Base parece estar incorrecto", + "Testing configuration…" : "Probando configuracion... ", "Configuration incorrect" : "Configuración Incorrecta", "Configuration incomplete" : "Configuración incompleta", - "Configuration OK" : "Configuración OK", + "Configuration OK" : "Configuración correcta", "Select groups" : "Seleccionar grupos", - "Select object classes" : "Seleccionar la clase de objeto", + "Select object classes" : "Seleccionar las clases de objeto", + "Please check the credentials, they seem to be wrong." : "Favor de verificar sus credenciales, al parecer están equivocadas.", + "Please specify the port, it could not be auto-detected." : "No fue posible auto-detectar el puerto, favor de especificarlo.", + "Base DN could not be auto-detected, please revise credentials, host and port." : "No fue posible auto detectar el DN base, favor de verificar las credenciales, servidor y puerto.", + "Could not detect Base DN, please enter it manually." : "No fue posible detectar el DN Base, favor de ingresarlo manualmente.", + "{nthServer}. Server" : "{nthServer}. Servidor", + "No object found in the given Base DN. Please revise." : "No fue posible encontrar ningún objeto en el DN Base dado. Favor de verificar. ", + "More than 1,000 directory entries available." : "Se encuentran disponibles más de 1,000 elementos de directoiros. ", + " entries available within the provided Base DN" : "elementos disponibles dentro del DN Base proporcionado", + "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Se presentó un error. Favor de verificar la Base DN, asà como los ajustes de la conexión y las credenciales.", "Do you really want to delete the current Server Configuration?" : "¿Realmente desea eliminar la configuración actual del servidor?", - "Confirm Deletion" : "Confirmar eliminación", + "Confirm Deletion" : "Confirmar el borrado", + "Mappings cleared successfully!" : "¡Los mapeos se borraron exitosamente!", + "Error while clearing the mappings." : "Se presentó un error al borrar los mapeos. ", + "Anonymous bind is not allowed. Please provide a User DN and Password." : "La vinculación anónima no está permitida. Favor de proporcionar un Usuario DN y una Contaseña.", + "LDAP Operations error. Anonymous bind might not be allowed." : "Error de Operaciones LDAP. Las vinculaciones anónimas pueden no estar permitidas. ", + "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Se presentó una falla en el guardado. Favor de verificar que la base de datos esté operando. Recargue antes de continuar. ", + "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "Cambiar la modalidad habilitará las consultas automaticas de LDAP. Dependiendo del tamaño de su LDAP esto puede tomar algun tiempo. ¿Aún desea cambiar la modalidad?", + "Mode switch" : "Cambio de modo", "Select attributes" : "Seleccionar atributos", - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","Grupos %s encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","Usuarios %s encontrados"], - "Could not find the desired feature" : "No se puede encontrar la función deseada.", - "Invalid Host" : "Host inválido", - "Users" : "Usuarios", - "Groups" : "Grupos", - "Test Configuration" : "Configuración de prueba", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "El usuario no fue encontrado. Favor de verficiar los atributos de inicio de sesión y su nombre de usuario. Filtrado efectivo (para copiar y pegar a la validación de lÃnea de comandos): </br>", + "User found and settings verified." : "Usuario encontrado y ajustes verificados. ", + "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "Ajustes verficados, pero más de un usuario fue encontrado. Sólo el primero será capaz de iniciar sesión. Considere un filtro más refinado.", + "An unspecified error occurred. Please check the settings and the log." : "Se presentó un error no especificado. Favor de verificar los ajustes y la bitácroa. ", + "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de la búsqueda es inválido, posiblemente debido a temas de sintaxis como un número diferente de corchetes abiertos y cerrados. Favor de verificar. ", + "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Se presentó una falla con la conexión al servidor LDAP / AD, favor de verificar el servidor, puerto y credenciales. ", + "Please provide a login name to test against" : "Favor de proporcionar un nombre de usuario contra el cual probar", + "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ", + "LDAP / AD integration" : "Integración con LDAP / AD", + "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados"], + "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados"], + "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "No fue posible detectar el atributo nombre a desplegar del usuario. Favor de especificarlo usted mismo en los ajustes avanzados de LDAP.", + "Could not find the desired feature" : "No fue posible encontrar la función deseada.", + "Invalid Host" : "Servidor inválido", + "Test Configuration" : "Probar configuración", "Help" : "Ayuda", - "The filter specifies which LDAP groups shall have access to the %s instance." : "El filtro especifica que grupos LDAP tendrán acceso a %s.", + "Only these object classes:" : "Sólo estas clases de objetos:", + "Only from these groups:" : "Sólo desde estos grupos:", + "Search groups" : "Buscar grupos", + "Available groups" : "Grupos disponibles", + "Selected groups" : "Grupos seleccionados", + "Edit LDAP Query" : "Editar consulta a LDAP", + "LDAP Filter:" : "Filtro de LDAP:", + "The filter specifies which LDAP groups shall have access to the %s instance." : "El filtro especifica cuales grupos LDAP tendrán acceso a la instancia %s.", + "Verify settings and count groups" : "Verificar ajustes y contar grupos", + "When logging in, %s will find the user based on the following attributes:" : "Al iniciar sesion, %s encontrará al usuario con base en los siguientes atributos:", + "LDAP / AD Username:" : "Nombre de usuario LDAP / AD", + "Allows login against the LDAP / AD username, which is either uid or samaccountname and will be detected." : "Permite iniciar sesión contra el nombre de usuario LDAP / AD, que es el uid o el samaccountname y será detectado. ", + "LDAP / AD Email Address:" : "Dirección de correo electrónico LDAP / AD", + "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Permite iniciar sesión contra el atributo correo electrónico. Mail y mailPrimaryAddress serán permitidos.", "Other Attributes:" : "Otros atributos:", - "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Define el filtro a aplicar cuando se intenta identificar. %%uid remplazará al nombre de usuario en el proceso de identificación. Por ejemplo: \"uid=%%uid\"", + "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Define el filtro a aplicar al intentar ingresar. %% uid remplaza al nombre de usuario al intentar ingresar. Por ejemplo: \"uid=%%uid\"", + "Test Loginname" : "Probar nombre de usuario", + "Verify settings" : "Verificar ajustes", + "1. Server" : "1. Servidor", + "%s. Server:" : "%s. Servidor:", + "Add a new and blank configuration" : "Agregar una configuración nueva y en blanco", + "Copy current configuration into new directory binding" : "Copiar la configuración actual a un nuevo directorio de vinculación", + "Delete the current configuration" : "Borrar la configuración actual", "Host" : "Servidor", "You can omit the protocol, except you require SSL. Then start with ldaps://" : "Puede omitir el protocolo, excepto si requiere SSL. En ese caso, empiece con ldaps://", "Port" : "Puerto", - "User DN" : "DN usuario", + "Detect Port" : "Detectar Puerto", + "User DN" : "DN del usuario", "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "El DN del usuario cliente con el que se hará la asociación, p.ej. uid=agente,dc=ejemplo,dc=com. Para acceso anónimo, deje DN y contraseña vacÃos.", "Password" : "Contraseña", - "For anonymous access, leave DN and Password empty." : "Para acceso anónimo, deje DN y contraseña vacÃos.", + "For anonymous access, leave DN and Password empty." : "Para acceso anónimo, deje la contraseña y DN vacÃos.", "One Base DN per line" : "Un DN Base por lÃnea", "You can specify Base DN for users and groups in the Advanced tab" : "Puede especificar el DN base para usuarios y grupos en la pestaña Avanzado", - "The filter specifies which LDAP users shall have access to the %s instance." : "El filtro especifica que usuarios LDAP pueden tener acceso a %s.", + "Detect Base DN" : "Detectar DN Base", + "Test Base DN" : "Probar la base DN", + "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Evita solicitudes automaticas de LDAP. Es mejor para ambientes más grandes pero requiere mayor conocimiento de LDAP. ", + "Manually enter LDAP filters (recommended for large directories)" : "Ingresar los filtros LDAP manualmente (recomendado para directorios grandes)", + "Listing and searching for users is constrained by these criteria:" : "Los enlistados y las busquedas para los usuarios están acotados por estos criterios:", + "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Las clases de objetos más comunes para usuarios son organizationalPerson, person, user, and inetOrgPerson. Si no está seguro de cuál clase de objeto selecciónar, favor de consultar su directorio admin.", + "The filter specifies which LDAP users shall have access to the %s instance." : "El filtro especifica cuáles usuarios LDAP tendrán acceso a la instancia %s.", + "Verify settings and count users" : "Verificar ajustes y contar ususarios", + "Saving" : "Guardando", "Back" : "Atrás", "Continue" : "Continuar", + "LDAP" : "LDAP", + "Server" : "Servidor", + "Users" : "Usuarios", + "Login Attributes" : "Atriburos de Inicio de Sesión", + "Groups" : "Grupos", + "Expert" : "Experto", "Advanced" : "Avanzado", - "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Advertencia:</b> Las apps user_ldap y user_webdavauth son incompatibles. Puede que experimente un comportamiento inesperado. Pregunte al su administrador de sistemas para desactivar uno de ellos.", - "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Advertencia:</b> El módulo LDAP de PHP no está instalado, el sistema no funcionará. Por favor consulte al administrador del sistema para instalarlo.", - "Connection Settings" : "Configuración de conexión", - "Configuration Active" : "Configuracion activa", + "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Advertencia:</b> Las aplicaciones user_ldap y user_webdavauth son incompatibles. Usted puede expermientar comportamientos inesperados. Favor de solicitar a su administrador del sistema deshabilitar alguno de ellos.", + "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Advertencia:</b> El módulo LDAP de PHP no está instalado, el sistema no funcionará. Favor de solicitar su instalación a su administrador del sistema.", + "Connection Settings" : "Ajustes de la conexión", + "Configuration Active" : "Configuracion Activa", "When unchecked, this configuration will be skipped." : "Cuando deseleccione, esta configuracion sera omitida.", "Backup (Replica) Host" : "Servidor de copia de seguridad (Replica)", - "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Dar un servidor de copia de seguridad opcional. Debe ser una réplica del servidor principal LDAP / AD.", - "Backup (Replica) Port" : "Puerto para copias de seguridad (Replica)", + "Give an optional backup host. It must be a replica of the main LDAP/AD server." : "Favor de proporcionar un servidor de copia de seguridad opcional. Debe ser una réplica del servidor LDAP / AD principal.", + "Backup (Replica) Port" : "Puerto para copias de seguridad (Réplica)", "Disable Main Server" : "Deshabilitar servidor principal", - "Only connect to the replica server." : "Conectar sólo con el servidor de réplica.", + "Only connect to the replica server." : "Sólo contectarse al servidor de réplica.", "Turn off SSL certificate validation." : "Apagar la validación por certificado SSL.", - "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "No se recomienda, ¡utilÃzalo únicamente para pruebas! Si la conexión únicamente funciona con esta opción, importa el certificado SSL del servidor LDAP en tu servidor %s.", + "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "¡No se recomienda, úselo únicamente para pruebas! Si la conexión sólo funciona con esta opción, importe el certificado SSL del servidor LDAP a su servidor %s.", "Cache Time-To-Live" : "Cache TTL", "in seconds. A change empties the cache." : "en segundos. Un cambio vacÃa la caché.", - "Directory Settings" : "Configuración de directorio", - "User Display Name Field" : "Campo de nombre de usuario a mostrar", - "The LDAP attribute to use to generate the user's display name." : "El campo LDAP a usar para generar el nombre para mostrar del usuario.", - "Base User Tree" : "Ãrbol base de usuario", + "Directory Settings" : "Ajustes del directorio", + "User Display Name Field" : "Campo de nombre del usuario a desplegar", + "The LDAP attribute to use to generate the user's display name." : "El atributo LDAP a usar para generar el nombre del usuario a desplegar.", + "2nd User Display Name Field" : "2do Campo de Nombre a Desplegar del Usuario", + "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Opcional. Un atributo LDAP puede ser agregado al nombre a despelegar entre corchetes. Ejemplos de resultados »John Doe (john.doe@example.org)«.", + "Base User Tree" : "Ãrbol de Usuario Base", "One User Base DN per line" : "Un DN Base de Usuario por lÃnea", - "User Search Attributes" : "Atributos de la busqueda de usuario", + "User Search Attributes" : "Atributos de búsqueda de usuario", "Optional; one attribute per line" : "Opcional; un atributo por linea", - "Group Display Name Field" : "Campo de nombre de grupo a mostrar", + "Group Display Name Field" : "Campo de Nombre de Grupo a Desplegar", "The LDAP attribute to use to generate the groups's display name." : "El campo LDAP a usar para generar el nombre para mostrar del grupo.", "Base Group Tree" : "Ãrbol base de grupo", "One Group Base DN per line" : "Un DN Base de Grupo por lÃnea", - "Group Search Attributes" : "Atributos de busqueda de grupo", + "Group Search Attributes" : "Atributos de Búsqueda de Grupo", "Group-Member association" : "Asociación Grupo-Miembro", - "Special Attributes" : "Atributos especiales", - "Quota Field" : "Cuota", - "Quota Default" : "Cuota por defecto", - "in bytes" : "en bytes", - "Email Field" : "E-mail", - "User Home Folder Naming Rule" : "Regla para la carpeta Home de usuario", - "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "VacÃo para el nombre de usuario (por defecto). En otro caso, especifique un atributo LDAP/AD.", + "Dynamic Group Member URL" : "URL de Miembro de Grupo Dinámico ", + "Nested Groups" : "Grupos Anidados", + "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Cuando se enciende, los grupos que contengan grupos están soportados. (Sólo funciona si el atributo de miembro de grupo contiene los DNs). ", + "Paging chunksize" : "Tamaño del chunk de paginación", + "Enable LDAP password changes per user" : "Habilitar cambio de contraseñas en LDAP por el usuario", + "(New password is sent as plain text to LDAP)" : "(La nueva contraseña se envÃa como texto plano a LDAP)", + "Special Attributes" : "Atributos Especiales", + "Quota Field" : "Campo de cuota", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Dejar en blanco para usar la cuota predeterminada del usuario. En caso contrario, favor de especificar el atributo LDAP / AD.", + "Quota Default" : "Cuota predeterminada", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Anular la cuota predeterminada para usuarios LDAP que no tienen una cuota establecida en el Campo Cuota. ", + "Email Field" : "Campo de correo electrónico", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Establecer el correo electrónico del usuario con base en el atributo LDAP. Dejelo vacÃo para el comportamiento predeterminado. ", + "User Home Folder Naming Rule" : "Regla de Nomenclatura para la Carpeta Inicio del Usuario", + "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Dejar vacÃo para el nombre de usuario (predeterminado). En otro caso, especifique un atributo LDAP/AD.", "Internal Username" : "Nombre de usuario interno", - "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "El nombre de usuario interno será creado de forma predeterminada desde el atributo UUID. Esto asegura que el nombre de usuario es único y los caracteres no necesitan ser convertidos. En el nombre de usuario interno sólo se pueden usar estos caracteres: [ a-zA-Z0-9_.@- ]. El resto de caracteres son sustituidos por su correspondiente en ASCII o simplemente omitidos. En caso de duplicidades, se añadirá o incrementará un número. El nombre de usuario interno es usado para identificar un usuario. Es también el nombre predeterminado para la carpeta personal del usuario en ownCloud. También es parte de URLs remotas, por ejemplo, para todos los servicios *DAV. Con esta configuración el comportamiento predeterminado puede ser cambiado. Para conseguir un comportamiento similar a como era antes de ownCloud 5, introduzca el campo del nombre para mostrar del usuario en la siguiente caja. Déjelo vacÃo para el comportamiento predeterminado. Los cambios solo tendrán efecto en los usuarios LDAP mapeados (añadidos) recientemente.", - "Internal Username Attribute:" : "Atributo Nombre de usuario Interno:", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Por defecto, el nombre de usuario interno se creará con base en el atributo UUID. Esto asegura que el nombre de usuario sea único y que los caracteres no tengan que ser convertidos. El nombre de usuario intenro tiene la restricción de que sólo los siguienes caracteres están permitidos: [ a-zA-Z0-9_.@- ]. El resto de los caracteres son reemplazados con su correspondencia ASCII o simplemente se omiten. En caso de colisiones, se agregará/ incrementará un numero. El nombre de usuario interno se usa para identificar a un usuario internamente. Adicionalmente es el nombre predeterminado para la carpeta de inicio. También es parte de las URLs remotas, por ejemplo, para todos los servicios *DAV. Con este ajuste se puede anular el comportamiento predeterminado. Mantengalo vacÃo para mantener el comportamiento predeterminado. Los cambios surtiran efecto sólo en los usuarios mapeados (agregados) nuevos a LDAP. ", + "Internal Username Attribute:" : "Atributo de nombre de usuario Interno:", "Override UUID detection" : "Sobrescribir la detección UUID", - "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Por defecto, el atributo UUID es autodetectado. Este atributo es usado para identificar indudablemente usuarios y grupos LDAP. Además, el nombre de usuario interno será creado en base al UUID, si no ha sido especificado otro comportamiento arriba. Puedes sobrescribir la configuración y pasar un atributo de tu elección. Debes asegurarte de que el atributo de tu elección sea accesible por los usuarios y grupos y ser único. Déjalo en blanco para usar el comportamiento por defecto. Los cambios tendrán efecto solo en los usuarios y grupos de LDAP mapeados (añadidos) recientemente.", - "UUID Attribute for Users:" : "Atributo UUID para usuarios:", + "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Por defecto, el atributo UUID se detecta automáticamente. Este atributo se usa para identificar, sin ninguna duda, a usuarios y grupos LDAP. Adicionalmente, el nombre de usuario interno se creará con base en el UUID, si no ha sido especificado otro comportamiento en la parte de arriba. Puede anular el ajuste y proporcionar el atributo que desee. Debe asegurarse de que el atributo que desee sea accesible por los usuarios y grupos y que sea único. Mantengalo vacÃo para el comportamiento predeterminado . Los cambios surtirán efecto sólo en los usuarios y grupos mapeados (agregados) nuevos a LDAP.", + "UUID Attribute for Users:" : "Atributo UUID para Usuarios:", "UUID Attribute for Groups:" : "Atributo UUID para Grupos:", - "Username-LDAP User Mapping" : "Asignación del Nombre de usuario de un usuario LDAP", - "Clear Username-LDAP User Mapping" : "Borrar la asignación de los Nombres de usuario de los usuarios LDAP", - "Clear Groupname-LDAP Group Mapping" : "Borrar la asignación de los Nombres de grupo de los grupos de LDAP" + "Username-LDAP User Mapping" : "Mapeo del Nombre del usuario al Usuario LDAP", + "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nombres de usuario son usados para almacenar y asignar (meta) datos. Para poder identificar y reconocer con precisión a los usuarios, cada usuario LDAP contará con un Nombre de usuario interno. Esto requiere un mapeo del Nombre de usuario al usuario LDAP. El nombre de usuario creado se mapea al UUID del usuario LDAP. Adicionalmente el DN se guarda en caché para reducir las interacciones con LDAP, pero no se usa para identificación. Si el DN cambia, las modficaciones serán encontradas. El Nombre del usuario interno se usa en todos lados. Limpiar los mapeos dejará sobras en todos lados. ¡Limpiar los mapeos no es senible a la configuración, afecta a todas las configuraciones LDAP! Nunca borre las configuraciones en el ambiente de producción, sólo hágalo en los ambientes de pruebas o de experimentación. ", + "Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Nombres de usuario a los Usuarios LDAP", + "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos de LDAP", + "in bytes" : "en bytes" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/fr.js b/apps/user_ldap/l10n/fr.js index 70ab8597a08..a6b99481bac 100644 --- a/apps/user_ldap/l10n/fr.js +++ b/apps/user_ldap/l10n/fr.js @@ -148,9 +148,11 @@ OC.L10N.register( "(New password is sent as plain text to LDAP)" : "(Le nouveau mot de passe a été envoyé en tant que texte brut par LDAP)", "Special Attributes" : "Attributs spéciaux", "Quota Field" : "Champ du quota", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Laissez vide pour appliquer le quota par défaut de l'utilisateur. Sinon, spécifiez un attribut LDAP / AD.", "Quota Default" : "Quota par défaut", - "in bytes" : "en octets", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Remplacez le quota par défaut des utilisateurs LDAP qui ne disposent pas d'un quota dans le champ Quota.", "Email Field" : "Champ Email", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Définissez le courrier électronique de l'utilisateur à partir de leur attribut LDAP. Laissez le champ vide pour appliquer le comportement par défaut.", "User Home Folder Naming Rule" : "Règle de nommage du répertoire utilisateur", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Laisser vide pour user name (défaut). Vous pouvez aussi spécifier un attribut LDAP / AD.", "Internal Username" : "Nom d'utilisateur interne", @@ -164,6 +166,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Les noms d'utilisateurs sont utilisés pour le stockage et l'assignation de (meta) données. Pour identifier et reconnaître précisément les utilisateurs, chaque utilisateur LDAP aura un nom interne spécifique. Cela requiert l'association d'un nom d'utilisateur ownCloud à un nom d'utilisateur LDAP. Le nom d'utilisateur créé est associé à l'attribut UUID de l'utilisateur LDAP. Par ailleurs, le DN est mémorisé en cache pour limiter les interactions LDAP mais il n'est pas utilisé pour l'identification. Si le DN est modifié, ces modifications seront retrouvées. Seul le nom interne à ownCloud est utilisé au sein du produit. Supprimer les associations créera des orphelins et l'action affectera toutes les configurations LDAP. NE JAMAIS SUPPRIMER LES ASSOCIATIONS EN ENVIRONNEMENT DE PRODUCTION, mais uniquement sur des environnements de tests et d'expérimentations.", "Clear Username-LDAP User Mapping" : "Supprimer l'association utilisateur interne-utilisateur LDAP", "Clear Groupname-LDAP Group Mapping" : "Supprimer l'association nom de groupe-groupe LDAP", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Les paramètres ont été vérifiés, mais la recherche retourne plus d'un utilisateur. Seul le premier trouvé pourra se connecter. Nous vous conseillons d'utiliser un filtre plus restrictif." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Les paramètres ont été vérifiés, mais la recherche retourne plus d'un utilisateur. Seul le premier trouvé pourra se connecter. Nous vous conseillons d'utiliser un filtre plus restrictif.", + "in bytes" : "en octets" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/user_ldap/l10n/fr.json b/apps/user_ldap/l10n/fr.json index 3357fe0a635..76bd8597b50 100644 --- a/apps/user_ldap/l10n/fr.json +++ b/apps/user_ldap/l10n/fr.json @@ -146,9 +146,11 @@ "(New password is sent as plain text to LDAP)" : "(Le nouveau mot de passe a été envoyé en tant que texte brut par LDAP)", "Special Attributes" : "Attributs spéciaux", "Quota Field" : "Champ du quota", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Laissez vide pour appliquer le quota par défaut de l'utilisateur. Sinon, spécifiez un attribut LDAP / AD.", "Quota Default" : "Quota par défaut", - "in bytes" : "en octets", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Remplacez le quota par défaut des utilisateurs LDAP qui ne disposent pas d'un quota dans le champ Quota.", "Email Field" : "Champ Email", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Définissez le courrier électronique de l'utilisateur à partir de leur attribut LDAP. Laissez le champ vide pour appliquer le comportement par défaut.", "User Home Folder Naming Rule" : "Règle de nommage du répertoire utilisateur", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Laisser vide pour user name (défaut). Vous pouvez aussi spécifier un attribut LDAP / AD.", "Internal Username" : "Nom d'utilisateur interne", @@ -162,6 +164,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Les noms d'utilisateurs sont utilisés pour le stockage et l'assignation de (meta) données. Pour identifier et reconnaître précisément les utilisateurs, chaque utilisateur LDAP aura un nom interne spécifique. Cela requiert l'association d'un nom d'utilisateur ownCloud à un nom d'utilisateur LDAP. Le nom d'utilisateur créé est associé à l'attribut UUID de l'utilisateur LDAP. Par ailleurs, le DN est mémorisé en cache pour limiter les interactions LDAP mais il n'est pas utilisé pour l'identification. Si le DN est modifié, ces modifications seront retrouvées. Seul le nom interne à ownCloud est utilisé au sein du produit. Supprimer les associations créera des orphelins et l'action affectera toutes les configurations LDAP. NE JAMAIS SUPPRIMER LES ASSOCIATIONS EN ENVIRONNEMENT DE PRODUCTION, mais uniquement sur des environnements de tests et d'expérimentations.", "Clear Username-LDAP User Mapping" : "Supprimer l'association utilisateur interne-utilisateur LDAP", "Clear Groupname-LDAP Group Mapping" : "Supprimer l'association nom de groupe-groupe LDAP", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Les paramètres ont été vérifiés, mais la recherche retourne plus d'un utilisateur. Seul le premier trouvé pourra se connecter. Nous vous conseillons d'utiliser un filtre plus restrictif." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Les paramètres ont été vérifiés, mais la recherche retourne plus d'un utilisateur. Seul le premier trouvé pourra se connecter. Nous vous conseillons d'utiliser un filtre plus restrictif.", + "in bytes" : "en octets" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/gl.js b/apps/user_ldap/l10n/gl.js index 14838ac91f1..03688ae21bd 100644 --- a/apps/user_ldap/l10n/gl.js +++ b/apps/user_ldap/l10n/gl.js @@ -138,7 +138,6 @@ OC.L10N.register( "Special Attributes" : "Atributos especiais", "Quota Field" : "Campo de cota", "Quota Default" : "Cota predeterminada", - "in bytes" : "en bytes", "Email Field" : "Campo do correo", "User Home Folder Naming Rule" : "Regra de nomeado do cartafol do usuario", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Deixar baleiro para o nome de usuario (predeterminado). Noutro caso, especifique un atributo LDAP/AD.", @@ -152,6 +151,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Os nomes de usuario empréganse para almacenar e asignar (meta) datos. Coa fin de identificar con precisión e recoñecer aos usuarios, cada usuario LDAP terá un nome de usuario interno. Isto require unha asignación do nome de usuario a usuario LDAP. O nome de usuario creado asignase ao UUID do usuario LDAP. Ademais o DN almacenase na caché, para asà reducir a interacción do LDAP, mais non se utiliza para a identificación. Se o DN cambia, os cambios poden ser atopados. O nome interno do usuario utilizase para todo. A limpeza das asignacións deixará rastros en todas partes. A limpeza das asignacións non é sensÃbel á configuración, afecta a todas as configuracións de LDAP! Non limpar nunca as asignacións nun entorno de produción. Limpar as asignacións só en fases de proba ou experimentais.", "Clear Username-LDAP User Mapping" : "Limpar a asignación do usuario ao «nome de usuario LDAP»", "Clear Groupname-LDAP Group Mapping" : "Limpar a asignación do grupo ao «nome de grupo LDAP»", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Os axustes foron verificados, mais atopou un usuario. Só o primeiro deles será quen de iniciar sesión. Considere o so dun filtro máis preciso." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Os axustes foron verificados, mais atopou un usuario. Só o primeiro deles será quen de iniciar sesión. Considere o so dun filtro máis preciso.", + "in bytes" : "en bytes" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/user_ldap/l10n/gl.json b/apps/user_ldap/l10n/gl.json index fcc16e35176..16679c0903d 100644 --- a/apps/user_ldap/l10n/gl.json +++ b/apps/user_ldap/l10n/gl.json @@ -136,7 +136,6 @@ "Special Attributes" : "Atributos especiais", "Quota Field" : "Campo de cota", "Quota Default" : "Cota predeterminada", - "in bytes" : "en bytes", "Email Field" : "Campo do correo", "User Home Folder Naming Rule" : "Regra de nomeado do cartafol do usuario", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Deixar baleiro para o nome de usuario (predeterminado). Noutro caso, especifique un atributo LDAP/AD.", @@ -150,6 +149,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Os nomes de usuario empréganse para almacenar e asignar (meta) datos. Coa fin de identificar con precisión e recoñecer aos usuarios, cada usuario LDAP terá un nome de usuario interno. Isto require unha asignación do nome de usuario a usuario LDAP. O nome de usuario creado asignase ao UUID do usuario LDAP. Ademais o DN almacenase na caché, para asà reducir a interacción do LDAP, mais non se utiliza para a identificación. Se o DN cambia, os cambios poden ser atopados. O nome interno do usuario utilizase para todo. A limpeza das asignacións deixará rastros en todas partes. A limpeza das asignacións non é sensÃbel á configuración, afecta a todas as configuracións de LDAP! Non limpar nunca as asignacións nun entorno de produción. Limpar as asignacións só en fases de proba ou experimentais.", "Clear Username-LDAP User Mapping" : "Limpar a asignación do usuario ao «nome de usuario LDAP»", "Clear Groupname-LDAP Group Mapping" : "Limpar a asignación do grupo ao «nome de grupo LDAP»", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Os axustes foron verificados, mais atopou un usuario. Só o primeiro deles será quen de iniciar sesión. Considere o so dun filtro máis preciso." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Os axustes foron verificados, mais atopou un usuario. Só o primeiro deles será quen de iniciar sesión. Considere o so dun filtro máis preciso.", + "in bytes" : "en bytes" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/he.js b/apps/user_ldap/l10n/he.js index 64ba7773422..7112ae8f82d 100644 --- a/apps/user_ldap/l10n/he.js +++ b/apps/user_ldap/l10n/he.js @@ -137,7 +137,6 @@ OC.L10N.register( "Special Attributes" : "מ××¤×™×™× ×™× ×ž×™×•×—×“×™×", "Quota Field" : "שדה מכסה", "Quota Default" : "ברירת מחדל מכסה", - "in bytes" : "בבתי×", "Email Field" : "שדה דו×ר ××œ×§×˜×¨×•× ×™", "User Home Folder Naming Rule" : "כלל קביעת ×©× ×ª×™×§×™×™×ª בית למשתמש", "Internal Username" : "×©× ×ž×©×ª×ž×© ×¤× ×™×ž×™", @@ -148,6 +147,7 @@ OC.L10N.register( "Username-LDAP User Mapping" : "מיפוי ×©× ×ž×©×ª×ž×© LDAP:", "Clear Username-LDAP User Mapping" : "× ×™×§×•×™ מיפוי ×©× ×ž×©×ª×ž×© LDAP:", "Clear Groupname-LDAP Group Mapping" : "× ×™×§×•×™ מיפוי ×©× ×ž×©×ª×ž×© קבוצה LDAP:", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "הגדרות ×ומתו, ×ך רק משתמש ×חד ×ותר. רק הר×שון יוכל להתחבר. יש לבחון שימוש ×‘×¡×™× ×•×Ÿ צר יותר." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "הגדרות ×ומתו, ×ך רק משתמש ×חד ×ותר. רק הר×שון יוכל להתחבר. יש לבחון שימוש ×‘×¡×™× ×•×Ÿ צר יותר.", + "in bytes" : "בבתי×" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/user_ldap/l10n/he.json b/apps/user_ldap/l10n/he.json index 126c7a10224..a0fe9ff7c5d 100644 --- a/apps/user_ldap/l10n/he.json +++ b/apps/user_ldap/l10n/he.json @@ -135,7 +135,6 @@ "Special Attributes" : "מ××¤×™×™× ×™× ×ž×™×•×—×“×™×", "Quota Field" : "שדה מכסה", "Quota Default" : "ברירת מחדל מכסה", - "in bytes" : "בבתי×", "Email Field" : "שדה דו×ר ××œ×§×˜×¨×•× ×™", "User Home Folder Naming Rule" : "כלל קביעת ×©× ×ª×™×§×™×™×ª בית למשתמש", "Internal Username" : "×©× ×ž×©×ª×ž×© ×¤× ×™×ž×™", @@ -146,6 +145,7 @@ "Username-LDAP User Mapping" : "מיפוי ×©× ×ž×©×ª×ž×© LDAP:", "Clear Username-LDAP User Mapping" : "× ×™×§×•×™ מיפוי ×©× ×ž×©×ª×ž×© LDAP:", "Clear Groupname-LDAP Group Mapping" : "× ×™×§×•×™ מיפוי ×©× ×ž×©×ª×ž×© קבוצה LDAP:", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "הגדרות ×ומתו, ×ך רק משתמש ×חד ×ותר. רק הר×שון יוכל להתחבר. יש לבחון שימוש ×‘×¡×™× ×•×Ÿ צר יותר." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "הגדרות ×ומתו, ×ך רק משתמש ×חד ×ותר. רק הר×שון יוכל להתחבר. יש לבחון שימוש ×‘×¡×™× ×•×Ÿ צר יותר.", + "in bytes" : "בבתי×" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/hu.js b/apps/user_ldap/l10n/hu.js index 0b1327503ac..f3d53b3035f 100644 --- a/apps/user_ldap/l10n/hu.js +++ b/apps/user_ldap/l10n/hu.js @@ -117,7 +117,6 @@ OC.L10N.register( "Special Attributes" : "Különleges attribútumok", "Quota Field" : "Kvóta mezÅ‘", "Quota Default" : "Alapértelmezett kvóta", - "in bytes" : "bájtban", "Email Field" : "E-mail mezÅ‘", "User Home Folder Naming Rule" : "Felhasználói Home mappa elnevezési szabály", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Hagyja üresen, ha a felhasználónevet kÃvánja használni. EllenkezÅ‘ esetben adjon meg egy LDAP/AD attribútumot!", @@ -130,6 +129,7 @@ OC.L10N.register( "Username-LDAP User Mapping" : "Felhasználó - LDAP felhasználó hozzárendelés", "Clear Username-LDAP User Mapping" : "A felhasználó - LDAP felhasználó hozzárendelés törlése", "Clear Groupname-LDAP Group Mapping" : "A csoport - LDAP csoport hozzárendelés törlése", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "BeállÃtások ellenÅ‘rizve, de egy felhasználó található. Csak az elsÅ‘ léphet be automatikusan. Próbálj egy pontosabb szűrÅ‘t." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "BeállÃtások ellenÅ‘rizve, de egy felhasználó található. Csak az elsÅ‘ léphet be automatikusan. Próbálj egy pontosabb szűrÅ‘t.", + "in bytes" : "bájtban" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/user_ldap/l10n/hu.json b/apps/user_ldap/l10n/hu.json index a76c333add7..94ad5ce8708 100644 --- a/apps/user_ldap/l10n/hu.json +++ b/apps/user_ldap/l10n/hu.json @@ -115,7 +115,6 @@ "Special Attributes" : "Különleges attribútumok", "Quota Field" : "Kvóta mezÅ‘", "Quota Default" : "Alapértelmezett kvóta", - "in bytes" : "bájtban", "Email Field" : "E-mail mezÅ‘", "User Home Folder Naming Rule" : "Felhasználói Home mappa elnevezési szabály", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Hagyja üresen, ha a felhasználónevet kÃvánja használni. EllenkezÅ‘ esetben adjon meg egy LDAP/AD attribútumot!", @@ -128,6 +127,7 @@ "Username-LDAP User Mapping" : "Felhasználó - LDAP felhasználó hozzárendelés", "Clear Username-LDAP User Mapping" : "A felhasználó - LDAP felhasználó hozzárendelés törlése", "Clear Groupname-LDAP Group Mapping" : "A csoport - LDAP csoport hozzárendelés törlése", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "BeállÃtások ellenÅ‘rizve, de egy felhasználó található. Csak az elsÅ‘ léphet be automatikusan. Próbálj egy pontosabb szűrÅ‘t." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "BeállÃtások ellenÅ‘rizve, de egy felhasználó található. Csak az elsÅ‘ léphet be automatikusan. Próbálj egy pontosabb szűrÅ‘t.", + "in bytes" : "bájtban" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/id.js b/apps/user_ldap/l10n/id.js index e602e72b523..a6e62171c71 100644 --- a/apps/user_ldap/l10n/id.js +++ b/apps/user_ldap/l10n/id.js @@ -148,7 +148,6 @@ OC.L10N.register( "Special Attributes" : "Atribut Khusus", "Quota Field" : "Kolom Kuota", "Quota Default" : "Kuota Baku", - "in bytes" : "dalam bytes", "Email Field" : "Kolom Email", "User Home Folder Naming Rule" : "Aturan Penamaan Folder Home Pengguna", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Biarkan nama pengguna kosong (default). Atau tetapkan atribut LDAP/AD.", @@ -163,6 +162,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Nama pengguna digunakan untuk menyimpan dan menetapkan (meta) data. Dalam rangka untuk mengidentifikasi dan mengenali pengguna secara tepat, setiap pengguna LDAP akan memiliki nama pengguna internal. Hal ini memerlukan sebuah pemetaan dari nama pengguna ke pengguna LDAP. Nama pengguna yang dibuat akan dipetakan pada UUID pengguna LDAP. Selain itu, DN akan di cache untuk mengurangi interaksi LDAP, tetapi tidak digunakan untuk identifikasi. Jika DN berubah, perubahan akan ditemukan. Nama pengguna internal digunakan secara menyeluruh. Membersihkan pemetaan akan mempengaruhi semua konfigurasi LDAP! JANGAN PERNAH MENGHAPUS PEMETAAN PADA LINGKUNGAN PRODUKSI, hanya gunakan dalam tahap uji coba dan pengujian.", "Clear Username-LDAP User Mapping" : "Bersihkan Pemetaan Pengguna LDAP-Nama pengguna", "Clear Groupname-LDAP Group Mapping" : "Bersihkan Pemetaan Grup LDAP-Nama grup", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Setelan terverifikasi, tapi ditemukan satu pengguna. Hanya yang pertama yang dapat login. Pertimbangkan dengan penyaringan yang lebih sempit." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Setelan terverifikasi, tapi ditemukan satu pengguna. Hanya yang pertama yang dapat login. Pertimbangkan dengan penyaringan yang lebih sempit.", + "in bytes" : "dalam bytes" }, "nplurals=1; plural=0;"); diff --git a/apps/user_ldap/l10n/id.json b/apps/user_ldap/l10n/id.json index cb8c0b98441..3dda455f09f 100644 --- a/apps/user_ldap/l10n/id.json +++ b/apps/user_ldap/l10n/id.json @@ -146,7 +146,6 @@ "Special Attributes" : "Atribut Khusus", "Quota Field" : "Kolom Kuota", "Quota Default" : "Kuota Baku", - "in bytes" : "dalam bytes", "Email Field" : "Kolom Email", "User Home Folder Naming Rule" : "Aturan Penamaan Folder Home Pengguna", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Biarkan nama pengguna kosong (default). Atau tetapkan atribut LDAP/AD.", @@ -161,6 +160,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Nama pengguna digunakan untuk menyimpan dan menetapkan (meta) data. Dalam rangka untuk mengidentifikasi dan mengenali pengguna secara tepat, setiap pengguna LDAP akan memiliki nama pengguna internal. Hal ini memerlukan sebuah pemetaan dari nama pengguna ke pengguna LDAP. Nama pengguna yang dibuat akan dipetakan pada UUID pengguna LDAP. Selain itu, DN akan di cache untuk mengurangi interaksi LDAP, tetapi tidak digunakan untuk identifikasi. Jika DN berubah, perubahan akan ditemukan. Nama pengguna internal digunakan secara menyeluruh. Membersihkan pemetaan akan mempengaruhi semua konfigurasi LDAP! JANGAN PERNAH MENGHAPUS PEMETAAN PADA LINGKUNGAN PRODUKSI, hanya gunakan dalam tahap uji coba dan pengujian.", "Clear Username-LDAP User Mapping" : "Bersihkan Pemetaan Pengguna LDAP-Nama pengguna", "Clear Groupname-LDAP Group Mapping" : "Bersihkan Pemetaan Grup LDAP-Nama grup", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Setelan terverifikasi, tapi ditemukan satu pengguna. Hanya yang pertama yang dapat login. Pertimbangkan dengan penyaringan yang lebih sempit." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Setelan terverifikasi, tapi ditemukan satu pengguna. Hanya yang pertama yang dapat login. Pertimbangkan dengan penyaringan yang lebih sempit.", + "in bytes" : "dalam bytes" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/it.js b/apps/user_ldap/l10n/it.js index d26cb3664c6..3f1494d8f8c 100644 --- a/apps/user_ldap/l10n/it.js +++ b/apps/user_ldap/l10n/it.js @@ -149,7 +149,6 @@ OC.L10N.register( "Special Attributes" : "Attributi speciali", "Quota Field" : "Campo Quota", "Quota Default" : "Quota predefinita", - "in bytes" : "in byte", "Email Field" : "Campo Email", "User Home Folder Naming Rule" : "Regola di assegnazione del nome della cartella utente", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Lascia vuoto per il nome utente (predefinito). Altrimenti, specifica un attributo LDAP/AD.", @@ -164,6 +163,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "I nomi utente sono utilizzati per archiviare e assegnare i (meta) dati. Per identificare con precisione e riconoscere gli utenti, ogni utente LDAP avrà un nome utente interno. Ciò richiede un'associazione tra il nome utente e l'utente LDAP. In aggiunta, il DN viene mantenuto in cache per ridurre l'interazione con LDAP, ma non è utilizzato per l'identificazione. Se il DN cambia, le modifiche saranno rilevate. Il nome utente interno è utilizzato dappertutto. La cancellazione delle associazioni lascerà tracce residue ovunque e interesserà tutta la configurazione LDAP. Non cancellare mai le associazioni in un ambiente di produzione, ma solo in una fase sperimentale o di test.", "Clear Username-LDAP User Mapping" : "Cancella associazione Nome utente-Utente LDAP", "Clear Groupname-LDAP Group Mapping" : "Cancella associazione Nome gruppo-Gruppo LDAP", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Le impostazioni sono state verificate, ma è stato trovato un utente. Solo il primo sarà in grado di accedere. Considera un filtro più restrittivo." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Le impostazioni sono state verificate, ma è stato trovato un utente. Solo il primo sarà in grado di accedere. Considera un filtro più restrittivo.", + "in bytes" : "in byte" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/user_ldap/l10n/it.json b/apps/user_ldap/l10n/it.json index cfc79178465..6332249ddc1 100644 --- a/apps/user_ldap/l10n/it.json +++ b/apps/user_ldap/l10n/it.json @@ -147,7 +147,6 @@ "Special Attributes" : "Attributi speciali", "Quota Field" : "Campo Quota", "Quota Default" : "Quota predefinita", - "in bytes" : "in byte", "Email Field" : "Campo Email", "User Home Folder Naming Rule" : "Regola di assegnazione del nome della cartella utente", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Lascia vuoto per il nome utente (predefinito). Altrimenti, specifica un attributo LDAP/AD.", @@ -162,6 +161,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "I nomi utente sono utilizzati per archiviare e assegnare i (meta) dati. Per identificare con precisione e riconoscere gli utenti, ogni utente LDAP avrà un nome utente interno. Ciò richiede un'associazione tra il nome utente e l'utente LDAP. In aggiunta, il DN viene mantenuto in cache per ridurre l'interazione con LDAP, ma non è utilizzato per l'identificazione. Se il DN cambia, le modifiche saranno rilevate. Il nome utente interno è utilizzato dappertutto. La cancellazione delle associazioni lascerà tracce residue ovunque e interesserà tutta la configurazione LDAP. Non cancellare mai le associazioni in un ambiente di produzione, ma solo in una fase sperimentale o di test.", "Clear Username-LDAP User Mapping" : "Cancella associazione Nome utente-Utente LDAP", "Clear Groupname-LDAP Group Mapping" : "Cancella associazione Nome gruppo-Gruppo LDAP", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Le impostazioni sono state verificate, ma è stato trovato un utente. Solo il primo sarà in grado di accedere. Considera un filtro più restrittivo." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Le impostazioni sono state verificate, ma è stato trovato un utente. Solo il primo sarà in grado di accedere. Considera un filtro più restrittivo.", + "in bytes" : "in byte" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/ja.js b/apps/user_ldap/l10n/ja.js index 39e478ad9d6..92a5e7b0d9a 100644 --- a/apps/user_ldap/l10n/ja.js +++ b/apps/user_ldap/l10n/ja.js @@ -148,9 +148,11 @@ OC.L10N.register( "(New password is sent as plain text to LDAP)" : "(æ–°ã—ã„パスワードã¯å¹³æ–‡ãƒ†ã‚スト㧠LDAP ã«é€ä¿¡ã•れã¾ã™)", "Special Attributes" : "特殊属性", "Quota Field" : "クォータ属性", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "ユーザーã®ãƒ‡ãƒ•ォルトã®ã‚¯ã‚©ãƒ¼ã‚¿ã‚’空ã®ã¾ã¾ã«ã—ã¦ãã ã•ã„。 ã‚‚ã—ãã¯ã€LDAP/ADã®å±žæ€§ã‚’指定ã—ã¦ãã ã•ã„。", "Quota Default" : "クォータã®ãƒ‡ãƒ•ォルト", - "in bytes" : "ãƒã‚¤ãƒˆ", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "クォータフィールドã§ã‚¯ã‚©ãƒ¼ã‚¿ãŒè¨å®šã•れã¦ã„ãªã„LDAPユーザã®ãƒ‡ãƒ•ォルトクォータを上書ãã—ã¾ã™ã€‚", "Email Field" : "メール属性", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "LDAP属性ã‹ã‚‰ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ¡ãƒ¼ãƒ«ã‚’è¨å®šã—ã¾ã™ã€‚ デフォルト動作ã§ã¯ç©ºã®ã¾ã¾ã«ã—ã¾ã™ã€‚", "User Home Folder Naming Rule" : "ユーザーã®ãƒ›ãƒ¼ãƒ フォルダー命åè¦å‰‡", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "ユーザーåを空ã®ã¾ã¾ã«ã—ã¦ãã ã•ã„(デフォルト)。もã—ãã¯ã€LDAPã‚‚ã—ãã¯ADã®å±žæ€§ã‚’指定ã—ã¦ãã ã•ã„。", "Internal Username" : "内部ユーザーå", @@ -164,6 +166,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "ユーザーåã¯(メタ)データã®ä¿å˜ã¨å‰²ã‚Šå½“ã¦ã«ä½¿ç”¨ã•れã¾ã™ã€‚ユーザーをæ£ç¢ºã«è˜åˆ¥ã—ã¦èªè˜ã™ã‚‹ãŸã‚ã«ã€å€‹ã€…ã®LDAPユーザã¯å†…部ユーザåã‚’æŒã£ã¦ã„ã¾ã™ã€‚ã“れã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼åã‹ã‚‰LDAPユーザーã¸ã®ãƒžãƒƒãƒ”ングãŒå¿…è¦ã§ã‚ã‚‹ã“ã¨ã‚’æ„味ã—ã¦ã„ã¾ã™ã€‚ã“ã®ç”Ÿæˆã•れãŸãƒ¦ãƒ¼ã‚¶åã¯ã€LDAPユーザã®UUIDã«ãƒžãƒƒãƒ”ングã•れã¾ã™ã€‚åŠ ãˆã¦ã€DNãŒLDAPã¨ã®ã‚¤ãƒ³ã‚¿ãƒ©ã‚¯ã‚·ãƒ§ãƒ³ã‚’削減ã™ã‚‹ãŸã‚ã«ã‚ャッシュã•れã¾ã™ãŒã€è˜åˆ¥ã«ã¯åˆ©ç”¨ã•れã¾ã›ã‚“。DNãŒå¤‰ã‚ã£ãŸå ´åˆã¯ã€å¤‰æ›´ãŒæ¤œå‡ºã•れã¾ã™ã€‚内部ユーザåã¯å…¨ä½“ã«äº˜ã£ã¦åˆ©ç”¨ã•れã¾ã™ã€‚マッピングをクリアã™ã‚‹ã¨ã€ã„ãŸã‚‹ã¨ã“ã‚ã«ä½¿ã‚れãªã„ã¾ã¾ã®ç‰©ãŒæ®‹ã‚‹ã§ã—ょã†ã€‚マッピングã®ã‚¯ãƒªã‚¢ã¯è¨å®šã«æ•感ã§ã¯ã‚りã¾ã›ã‚“ãŒã€ã™ã¹ã¦ã®LDAPã®è¨å®šã«å½±éŸ¿ã‚’与ãˆã¾ã™ï¼æœ¬ç•ªã®ç’°å¢ƒã§ã¯æ±ºã—ã¦ãƒžãƒƒãƒ”ングをクリアã—ãªã„ã§ãã ã•ã„。テストもã—ãã¯å®Ÿé¨“ã®æ®µéšŽã§ã®ã¿ãƒžãƒƒãƒ”ングã®ã‚¯ãƒªã‚¢ã‚’行ãªã£ã¦ãã ã•ã„。", "Clear Username-LDAP User Mapping" : "ユーザーåã¨LDAPユーザーã®ãƒžãƒƒãƒ”ングをクリアã™ã‚‹", "Clear Groupname-LDAP Group Mapping" : "グループåã¨LDAPグループã®ãƒžãƒƒãƒ”ングをクリアã™ã‚‹", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "è¨å®šã¯æ¤œè¨¼ã§ãã¾ã—ãŸãŒã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒ1å見ã¤ã‹ã‚Šã¾ã—ãŸã€‚最åˆã®1åã ã‘ãƒã‚°ã‚¤ãƒ³ã§ãã¾ã™ã€‚より厳ã—ã„フィルターを検討ã—ã¦ãã ã•ã„。" + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "è¨å®šã¯æ¤œè¨¼ã§ãã¾ã—ãŸãŒã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒ1å見ã¤ã‹ã‚Šã¾ã—ãŸã€‚最åˆã®1åã ã‘ãƒã‚°ã‚¤ãƒ³ã§ãã¾ã™ã€‚より厳ã—ã„フィルターを検討ã—ã¦ãã ã•ã„。", + "in bytes" : "ãƒã‚¤ãƒˆ" }, "nplurals=1; plural=0;"); diff --git a/apps/user_ldap/l10n/ja.json b/apps/user_ldap/l10n/ja.json index 4a561bac7c2..196e90be766 100644 --- a/apps/user_ldap/l10n/ja.json +++ b/apps/user_ldap/l10n/ja.json @@ -146,9 +146,11 @@ "(New password is sent as plain text to LDAP)" : "(æ–°ã—ã„パスワードã¯å¹³æ–‡ãƒ†ã‚スト㧠LDAP ã«é€ä¿¡ã•れã¾ã™)", "Special Attributes" : "特殊属性", "Quota Field" : "クォータ属性", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "ユーザーã®ãƒ‡ãƒ•ォルトã®ã‚¯ã‚©ãƒ¼ã‚¿ã‚’空ã®ã¾ã¾ã«ã—ã¦ãã ã•ã„。 ã‚‚ã—ãã¯ã€LDAP/ADã®å±žæ€§ã‚’指定ã—ã¦ãã ã•ã„。", "Quota Default" : "クォータã®ãƒ‡ãƒ•ォルト", - "in bytes" : "ãƒã‚¤ãƒˆ", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "クォータフィールドã§ã‚¯ã‚©ãƒ¼ã‚¿ãŒè¨å®šã•れã¦ã„ãªã„LDAPユーザã®ãƒ‡ãƒ•ォルトクォータを上書ãã—ã¾ã™ã€‚", "Email Field" : "メール属性", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "LDAP属性ã‹ã‚‰ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ¡ãƒ¼ãƒ«ã‚’è¨å®šã—ã¾ã™ã€‚ デフォルト動作ã§ã¯ç©ºã®ã¾ã¾ã«ã—ã¾ã™ã€‚", "User Home Folder Naming Rule" : "ユーザーã®ãƒ›ãƒ¼ãƒ フォルダー命åè¦å‰‡", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "ユーザーåを空ã®ã¾ã¾ã«ã—ã¦ãã ã•ã„(デフォルト)。もã—ãã¯ã€LDAPã‚‚ã—ãã¯ADã®å±žæ€§ã‚’指定ã—ã¦ãã ã•ã„。", "Internal Username" : "内部ユーザーå", @@ -162,6 +164,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "ユーザーåã¯(メタ)データã®ä¿å˜ã¨å‰²ã‚Šå½“ã¦ã«ä½¿ç”¨ã•れã¾ã™ã€‚ユーザーをæ£ç¢ºã«è˜åˆ¥ã—ã¦èªè˜ã™ã‚‹ãŸã‚ã«ã€å€‹ã€…ã®LDAPユーザã¯å†…部ユーザåã‚’æŒã£ã¦ã„ã¾ã™ã€‚ã“れã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼åã‹ã‚‰LDAPユーザーã¸ã®ãƒžãƒƒãƒ”ングãŒå¿…è¦ã§ã‚ã‚‹ã“ã¨ã‚’æ„味ã—ã¦ã„ã¾ã™ã€‚ã“ã®ç”Ÿæˆã•れãŸãƒ¦ãƒ¼ã‚¶åã¯ã€LDAPユーザã®UUIDã«ãƒžãƒƒãƒ”ングã•れã¾ã™ã€‚åŠ ãˆã¦ã€DNãŒLDAPã¨ã®ã‚¤ãƒ³ã‚¿ãƒ©ã‚¯ã‚·ãƒ§ãƒ³ã‚’削減ã™ã‚‹ãŸã‚ã«ã‚ャッシュã•れã¾ã™ãŒã€è˜åˆ¥ã«ã¯åˆ©ç”¨ã•れã¾ã›ã‚“。DNãŒå¤‰ã‚ã£ãŸå ´åˆã¯ã€å¤‰æ›´ãŒæ¤œå‡ºã•れã¾ã™ã€‚内部ユーザåã¯å…¨ä½“ã«äº˜ã£ã¦åˆ©ç”¨ã•れã¾ã™ã€‚マッピングをクリアã™ã‚‹ã¨ã€ã„ãŸã‚‹ã¨ã“ã‚ã«ä½¿ã‚れãªã„ã¾ã¾ã®ç‰©ãŒæ®‹ã‚‹ã§ã—ょã†ã€‚マッピングã®ã‚¯ãƒªã‚¢ã¯è¨å®šã«æ•感ã§ã¯ã‚りã¾ã›ã‚“ãŒã€ã™ã¹ã¦ã®LDAPã®è¨å®šã«å½±éŸ¿ã‚’与ãˆã¾ã™ï¼æœ¬ç•ªã®ç’°å¢ƒã§ã¯æ±ºã—ã¦ãƒžãƒƒãƒ”ングをクリアã—ãªã„ã§ãã ã•ã„。テストもã—ãã¯å®Ÿé¨“ã®æ®µéšŽã§ã®ã¿ãƒžãƒƒãƒ”ングã®ã‚¯ãƒªã‚¢ã‚’行ãªã£ã¦ãã ã•ã„。", "Clear Username-LDAP User Mapping" : "ユーザーåã¨LDAPユーザーã®ãƒžãƒƒãƒ”ングをクリアã™ã‚‹", "Clear Groupname-LDAP Group Mapping" : "グループåã¨LDAPグループã®ãƒžãƒƒãƒ”ングをクリアã™ã‚‹", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "è¨å®šã¯æ¤œè¨¼ã§ãã¾ã—ãŸãŒã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒ1å見ã¤ã‹ã‚Šã¾ã—ãŸã€‚最åˆã®1åã ã‘ãƒã‚°ã‚¤ãƒ³ã§ãã¾ã™ã€‚より厳ã—ã„フィルターを検討ã—ã¦ãã ã•ã„。" + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "è¨å®šã¯æ¤œè¨¼ã§ãã¾ã—ãŸãŒã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒ1å見ã¤ã‹ã‚Šã¾ã—ãŸã€‚最åˆã®1åã ã‘ãƒã‚°ã‚¤ãƒ³ã§ãã¾ã™ã€‚より厳ã—ã„フィルターを検討ã—ã¦ãã ã•ã„。", + "in bytes" : "ãƒã‚¤ãƒˆ" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/ko.js b/apps/user_ldap/l10n/ko.js index cf783656e5d..fb95f2dd493 100644 --- a/apps/user_ldap/l10n/ko.js +++ b/apps/user_ldap/l10n/ko.js @@ -142,7 +142,6 @@ OC.L10N.register( "Special Attributes" : "특수 ì†ì„±", "Quota Field" : "í• ë‹¹ëŸ‰ 필드", "Quota Default" : "기본 í• ë‹¹ëŸ‰", - "in bytes" : "ë°”ì´íЏ 단위", "Email Field" : "ì´ë©”ì¼ í•„ë“œ", "User Home Folder Naming Rule" : "ì‚¬ìš©ìž í™ˆ í´ë” ì´ë¦„ 규칙", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "ì‚¬ìš©ìž ì´ë¦„ì„ ì‚¬ìš©í•˜ë ¤ë©´ 비워 ë‘ì‹ì‹œì˜¤(기본값). 기타 경우 LDAP/AD ì†ì„±ì„ ì§€ì •í•˜ì‹ì‹œì˜¤.", @@ -156,6 +155,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "ì‚¬ìš©ìž ì´ë¦„ì€ (메타)ë°ì´í„°ë¥¼ ì €ìž¥í•˜ê³ í• ë‹¹í•˜ëŠ” ë° ì‚¬ìš©ë©ë‹ˆë‹¤. 사용ìžë¥¼ ì •í™•ížˆ ì‹ë³„하기 위해서 ëª¨ë“ LDAP 사용ìžëŠ” ë‚´ë¶€ ì‚¬ìš©ìž ì´ë¦„ì„ ê°–ê³ ìžˆìŠµë‹ˆë‹¤. ì´ ì •ë³´ì— ì ‘ê·¼í•˜ë ¤ë©´ ì‚¬ìš©ìž ì´ë¦„ê³¼ LDAP ì‚¬ìš©ìž ì‚¬ì´ì˜ ì—°ê²°ì„ ì•Œì•„ì•¼ 합니다. ìƒì„±ëœ ì‚¬ìš©ìž ì´ë¦„ì€ LDAP 사용ìžì˜ UUIDì— ì—°ê²°ë©ë‹ˆë‹¤. LDAPì— ì—°ê²°í•˜ëŠ” 횟수를 줄ì´ê¸° 위하여 DNì„ ìºì‹œì— ì €ìž¥í•˜ì§€ë§Œ, ì‹ë³„ì—는 사용하지 않습니다. DNì´ ë³€ê²½ë˜ì—ˆì„ 때 변경 사í•ì´ ì ìš©ë©ë‹ˆë‹¤. ë‚´ë¶€ ì‚¬ìš©ìž ì´ë¦„ì€ í•ìƒ ì‚¬ìš©ë©ë‹ˆë‹¤. ë§¤í•‘ì„ ë¹„ìš°ë©´ 과거 ë§¤í•‘ì˜ í”ì ì´ ë‚¨ìŠµë‹ˆë‹¤. ë§¤í•‘ì„ ë¹„ìš°ëŠ” ê²ƒì€ ì„¤ì •ì— ê´€ê³„ ì—†ì´ ì ìš©ë˜ë¯€ë¡œ ëª¨ë“ LDAP ì„¤ì •ì— ì˜í–¥ì„ ì¤ë‹ˆë‹¤! 테스트 ë° ì‹¤í—˜ 단계ì—서만 ë§¤í•‘ì„ ë¹„ìš°ê³ , ìƒìš© 환경ì—서는 ë§¤í•‘ì„ ë¹„ìš°ì§€ 마ì‹ì‹œì˜¤.", "Clear Username-LDAP User Mapping" : "ì‚¬ìš©ìž ì´ë¦„-LDAP ì‚¬ìš©ìž ë§¤í•‘ 비우기", "Clear Groupname-LDAP Group Mapping" : "그룹 ì´ë¦„-LDAP 그룹 매핑 비우기", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "ì„¤ì •ì„ í™•ì¸í•˜ì˜€ìœ¼ë‚˜ 한 ëª…ì˜ ì‚¬ìš©ìžë§Œ 찾았습니다. 첫 사용ìžë§Œ 로그ì¸í• 수 있습니다. ë” ì¢ì€ 필터를 ì§€ì •í•˜ì‹ì‹œì˜¤." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "ì„¤ì •ì„ í™•ì¸í•˜ì˜€ìœ¼ë‚˜ 한 ëª…ì˜ ì‚¬ìš©ìžë§Œ 찾았습니다. 첫 사용ìžë§Œ 로그ì¸í• 수 있습니다. ë” ì¢ì€ 필터를 ì§€ì •í•˜ì‹ì‹œì˜¤.", + "in bytes" : "ë°”ì´íЏ 단위" }, "nplurals=1; plural=0;"); diff --git a/apps/user_ldap/l10n/ko.json b/apps/user_ldap/l10n/ko.json index f96c599960a..cf30242a8c7 100644 --- a/apps/user_ldap/l10n/ko.json +++ b/apps/user_ldap/l10n/ko.json @@ -140,7 +140,6 @@ "Special Attributes" : "특수 ì†ì„±", "Quota Field" : "í• ë‹¹ëŸ‰ 필드", "Quota Default" : "기본 í• ë‹¹ëŸ‰", - "in bytes" : "ë°”ì´íЏ 단위", "Email Field" : "ì´ë©”ì¼ í•„ë“œ", "User Home Folder Naming Rule" : "ì‚¬ìš©ìž í™ˆ í´ë” ì´ë¦„ 규칙", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "ì‚¬ìš©ìž ì´ë¦„ì„ ì‚¬ìš©í•˜ë ¤ë©´ 비워 ë‘ì‹ì‹œì˜¤(기본값). 기타 경우 LDAP/AD ì†ì„±ì„ ì§€ì •í•˜ì‹ì‹œì˜¤.", @@ -154,6 +153,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "ì‚¬ìš©ìž ì´ë¦„ì€ (메타)ë°ì´í„°ë¥¼ ì €ìž¥í•˜ê³ í• ë‹¹í•˜ëŠ” ë° ì‚¬ìš©ë©ë‹ˆë‹¤. 사용ìžë¥¼ ì •í™•ížˆ ì‹ë³„하기 위해서 ëª¨ë“ LDAP 사용ìžëŠ” ë‚´ë¶€ ì‚¬ìš©ìž ì´ë¦„ì„ ê°–ê³ ìžˆìŠµë‹ˆë‹¤. ì´ ì •ë³´ì— ì ‘ê·¼í•˜ë ¤ë©´ ì‚¬ìš©ìž ì´ë¦„ê³¼ LDAP ì‚¬ìš©ìž ì‚¬ì´ì˜ ì—°ê²°ì„ ì•Œì•„ì•¼ 합니다. ìƒì„±ëœ ì‚¬ìš©ìž ì´ë¦„ì€ LDAP 사용ìžì˜ UUIDì— ì—°ê²°ë©ë‹ˆë‹¤. LDAPì— ì—°ê²°í•˜ëŠ” 횟수를 줄ì´ê¸° 위하여 DNì„ ìºì‹œì— ì €ìž¥í•˜ì§€ë§Œ, ì‹ë³„ì—는 사용하지 않습니다. DNì´ ë³€ê²½ë˜ì—ˆì„ 때 변경 사í•ì´ ì ìš©ë©ë‹ˆë‹¤. ë‚´ë¶€ ì‚¬ìš©ìž ì´ë¦„ì€ í•ìƒ ì‚¬ìš©ë©ë‹ˆë‹¤. ë§¤í•‘ì„ ë¹„ìš°ë©´ 과거 ë§¤í•‘ì˜ í”ì ì´ ë‚¨ìŠµë‹ˆë‹¤. ë§¤í•‘ì„ ë¹„ìš°ëŠ” ê²ƒì€ ì„¤ì •ì— ê´€ê³„ ì—†ì´ ì ìš©ë˜ë¯€ë¡œ ëª¨ë“ LDAP ì„¤ì •ì— ì˜í–¥ì„ ì¤ë‹ˆë‹¤! 테스트 ë° ì‹¤í—˜ 단계ì—서만 ë§¤í•‘ì„ ë¹„ìš°ê³ , ìƒìš© 환경ì—서는 ë§¤í•‘ì„ ë¹„ìš°ì§€ 마ì‹ì‹œì˜¤.", "Clear Username-LDAP User Mapping" : "ì‚¬ìš©ìž ì´ë¦„-LDAP ì‚¬ìš©ìž ë§¤í•‘ 비우기", "Clear Groupname-LDAP Group Mapping" : "그룹 ì´ë¦„-LDAP 그룹 매핑 비우기", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "ì„¤ì •ì„ í™•ì¸í•˜ì˜€ìœ¼ë‚˜ 한 ëª…ì˜ ì‚¬ìš©ìžë§Œ 찾았습니다. 첫 사용ìžë§Œ 로그ì¸í• 수 있습니다. ë” ì¢ì€ 필터를 ì§€ì •í•˜ì‹ì‹œì˜¤." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "ì„¤ì •ì„ í™•ì¸í•˜ì˜€ìœ¼ë‚˜ 한 ëª…ì˜ ì‚¬ìš©ìžë§Œ 찾았습니다. 첫 사용ìžë§Œ 로그ì¸í• 수 있습니다. ë” ì¢ì€ 필터를 ì§€ì •í•˜ì‹ì‹œì˜¤.", + "in bytes" : "ë°”ì´íЏ 단위" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/nb.js b/apps/user_ldap/l10n/nb.js index 9c8b69b18fe..8b248b58bb7 100644 --- a/apps/user_ldap/l10n/nb.js +++ b/apps/user_ldap/l10n/nb.js @@ -143,7 +143,6 @@ OC.L10N.register( "Special Attributes" : "Spesielle attributter", "Quota Field" : "Felt med lagringskvote", "Quota Default" : "Standard lagringskvote", - "in bytes" : "i bytes", "Email Field" : "Felt med e-postadresse", "User Home Folder Naming Rule" : "Navneregel for brukers hjemmemappe", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "La stå tom for brukernavn (standard). Ellers, spesifiser en LDAP/AD attributt.", @@ -157,6 +156,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Brukernavn brukes til å lagre og tilordne (meta)data. For at brukere skal identifiseres og gjenkjennes presist, vil hver LDAP-bruker ha et internt brukernavn. Dette krever en tilknytning fra brukernavn til LDAP-bruker. Brukernavn som opprettes blir knyttet til LDAP-brukerens UUID. I tillegg mellomlagres DN for å redusere LDAP-kommunikasjon, men det brukes ikke til identifisering. Hvis DN endres vil endringene bli oppdaget. Det interne brukernavnet brukes alle steder. Nullstilling av tilknytningene vil etterlate seg rester overalt. Nullstilling av tilknytningene skjer ikke pr. konfigurasjon, det påvirker alle LDAP-konfigurasjoner! Nullstill aldri tilknytningene i et produksjonsmiljø, kun ved testing eller eksperimentering.", "Clear Username-LDAP User Mapping" : "Nullstill tilknytning av brukernavn til LDAP-bruker", "Clear Groupname-LDAP Group Mapping" : "Nullstill tilknytning av gruppenavn til LDAP-gruppe", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Innstillinger sjekket, men en bruker funnet. Kun den første vil kunne logge inn. Vurder et smalere filter." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Innstillinger sjekket, men en bruker funnet. Kun den første vil kunne logge inn. Vurder et smalere filter.", + "in bytes" : "i bytes" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/user_ldap/l10n/nb.json b/apps/user_ldap/l10n/nb.json index 386c0f9fd00..8c2575efda2 100644 --- a/apps/user_ldap/l10n/nb.json +++ b/apps/user_ldap/l10n/nb.json @@ -141,7 +141,6 @@ "Special Attributes" : "Spesielle attributter", "Quota Field" : "Felt med lagringskvote", "Quota Default" : "Standard lagringskvote", - "in bytes" : "i bytes", "Email Field" : "Felt med e-postadresse", "User Home Folder Naming Rule" : "Navneregel for brukers hjemmemappe", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "La stå tom for brukernavn (standard). Ellers, spesifiser en LDAP/AD attributt.", @@ -155,6 +154,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Brukernavn brukes til å lagre og tilordne (meta)data. For at brukere skal identifiseres og gjenkjennes presist, vil hver LDAP-bruker ha et internt brukernavn. Dette krever en tilknytning fra brukernavn til LDAP-bruker. Brukernavn som opprettes blir knyttet til LDAP-brukerens UUID. I tillegg mellomlagres DN for å redusere LDAP-kommunikasjon, men det brukes ikke til identifisering. Hvis DN endres vil endringene bli oppdaget. Det interne brukernavnet brukes alle steder. Nullstilling av tilknytningene vil etterlate seg rester overalt. Nullstilling av tilknytningene skjer ikke pr. konfigurasjon, det påvirker alle LDAP-konfigurasjoner! Nullstill aldri tilknytningene i et produksjonsmiljø, kun ved testing eller eksperimentering.", "Clear Username-LDAP User Mapping" : "Nullstill tilknytning av brukernavn til LDAP-bruker", "Clear Groupname-LDAP Group Mapping" : "Nullstill tilknytning av gruppenavn til LDAP-gruppe", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Innstillinger sjekket, men en bruker funnet. Kun den første vil kunne logge inn. Vurder et smalere filter." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Innstillinger sjekket, men en bruker funnet. Kun den første vil kunne logge inn. Vurder et smalere filter.", + "in bytes" : "i bytes" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/nl.js b/apps/user_ldap/l10n/nl.js index 3b7ba60278a..46ab2130235 100644 --- a/apps/user_ldap/l10n/nl.js +++ b/apps/user_ldap/l10n/nl.js @@ -149,7 +149,6 @@ OC.L10N.register( "Special Attributes" : "Speciale attributen", "Quota Field" : "Quota veld", "Quota Default" : "Quota standaard", - "in bytes" : "in bytes", "Email Field" : "E-mailveld", "User Home Folder Naming Rule" : "Gebruikers Home map naamgevingsregel", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Laat leeg voor de gebruikersnaam (standaard). Of specificeer een LDAP/AD attribuut.", @@ -164,6 +163,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Gebruikersnamen worden gebruikt om (meta) data op te slaan en toe te wijzen. Om gebruikers uniek te identificeren, krijgt elke LDAP-gebruiker ook een interne gebruikersnaam. Dit vereist een koppeling van de gebruikersnaam naar een ​​LDAP-gebruiker. De gecreëerde gebruikersnaam is gekoppeld aan de UUID van de LDAP-gebruiker. Aanvullend wordt ook de 'DN' gecached om het aantal LDAP-interacties te verminderen, maar dit wordt niet gebruikt voor identificatie. Als de DN verandert, zullen de veranderingen worden gevonden. De interne gebruikersnaam wordt overal gebruikt. Het wissen van de koppeling zal overal resten achterlaten. Het wissen van koppelingen is niet configuratiegevoelig, maar het raakt wel alle LDAP instellingen! Zorg ervoor dat deze koppelingen nooit in een productieomgeving gewist worden. Maak ze alleen leeg in een test- of ontwikkelomgeving.", "Clear Username-LDAP User Mapping" : "Leegmaken Gebruikersnaam-LDAP gebruikers vertaling", "Clear Groupname-LDAP Group Mapping" : "Leegmaken Groepsnaam-LDAP groep vertaling", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Instellingen geverifieerd, slechts één gebruiker gevonden. Alleen de eerste kan inloggen. Overweeg een krapper filter." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Instellingen geverifieerd, slechts één gebruiker gevonden. Alleen de eerste kan inloggen. Overweeg een krapper filter.", + "in bytes" : "in bytes" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/user_ldap/l10n/nl.json b/apps/user_ldap/l10n/nl.json index 7c4acecdf8f..54d7929fab0 100644 --- a/apps/user_ldap/l10n/nl.json +++ b/apps/user_ldap/l10n/nl.json @@ -147,7 +147,6 @@ "Special Attributes" : "Speciale attributen", "Quota Field" : "Quota veld", "Quota Default" : "Quota standaard", - "in bytes" : "in bytes", "Email Field" : "E-mailveld", "User Home Folder Naming Rule" : "Gebruikers Home map naamgevingsregel", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Laat leeg voor de gebruikersnaam (standaard). Of specificeer een LDAP/AD attribuut.", @@ -162,6 +161,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Gebruikersnamen worden gebruikt om (meta) data op te slaan en toe te wijzen. Om gebruikers uniek te identificeren, krijgt elke LDAP-gebruiker ook een interne gebruikersnaam. Dit vereist een koppeling van de gebruikersnaam naar een ​​LDAP-gebruiker. De gecreëerde gebruikersnaam is gekoppeld aan de UUID van de LDAP-gebruiker. Aanvullend wordt ook de 'DN' gecached om het aantal LDAP-interacties te verminderen, maar dit wordt niet gebruikt voor identificatie. Als de DN verandert, zullen de veranderingen worden gevonden. De interne gebruikersnaam wordt overal gebruikt. Het wissen van de koppeling zal overal resten achterlaten. Het wissen van koppelingen is niet configuratiegevoelig, maar het raakt wel alle LDAP instellingen! Zorg ervoor dat deze koppelingen nooit in een productieomgeving gewist worden. Maak ze alleen leeg in een test- of ontwikkelomgeving.", "Clear Username-LDAP User Mapping" : "Leegmaken Gebruikersnaam-LDAP gebruikers vertaling", "Clear Groupname-LDAP Group Mapping" : "Leegmaken Groepsnaam-LDAP groep vertaling", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Instellingen geverifieerd, slechts één gebruiker gevonden. Alleen de eerste kan inloggen. Overweeg een krapper filter." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Instellingen geverifieerd, slechts één gebruiker gevonden. Alleen de eerste kan inloggen. Overweeg een krapper filter.", + "in bytes" : "in bytes" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/pl.js b/apps/user_ldap/l10n/pl.js index 1928ddba746..e3405374c48 100644 --- a/apps/user_ldap/l10n/pl.js +++ b/apps/user_ldap/l10n/pl.js @@ -147,10 +147,12 @@ OC.L10N.register( "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Pozwól użytkownikom LDAP-a na zmianę swoich haseł i pozwól Super Administratorom i Grupom Administratorów na zmianę haseł swoim użytkownikom LDAP-a. Działa tylko wtedy, kiedy polisy kontroli dostępu są prawidłowo skonfigurowane na serwerze LDAP. Jako że do serwera LDAP hasła są wysyłane czystym tekstem, na serwerze LDAP należy skonfigurować protokoł szyfrowania oraz haszowanie haseł.", "(New password is sent as plain text to LDAP)" : "(Nowe hasło jest wysyłane do LDAP-a czystym tekstem)", "Special Attributes" : "Specjalne atrybuty", - "Quota Field" : "Pole przydziału", - "Quota Default" : "Przydział domyślny", - "in bytes" : "w bajtach", - "Email Field" : "Pole email", + "Quota Field" : "Pole limitu przestrzeni", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Zostaw puste dla domyślnego limitu przestrzeni dla użytkowników lub określ atrybut LDAP/AD.", + "Quota Default" : "Domyślny limit przestrzeni", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Nadpisz domyślny limit przestrzeni dla użytkowników LDAP-a, którzy nie mają go ustawionego w \"Polu limitu prestrzeni\".", + "Email Field" : "Pole e-mail", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Ustaw adres e-mail użytkowników z ich atrybutu LDAP. Zostaw puste dla domyślnego zachowania.", "User Home Folder Naming Rule" : "Reguły nazewnictwa folderu domowego użytkownika", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Pozostaw puste dla user name (domyślnie). W przeciwnym razie podaj atrybut LDAP/AD.", "Internal Username" : "Wewnętrzna nazwa użytkownika", @@ -164,6 +166,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Nazwy użytkowników służą do przechowywania i przypisywania (meta) danych. W celu dokładnego określenia i rozpoznawania użytkowników, każdy użytkownik LDAP ma przypisaną wewnętrzną nazwę użytkownika. Wymaga to mapowania nazwy użytkownika do użytkownika LDAP. Utworzona nazwa użytkownika jest odwzorowywana na UUID użytkownika LDAP. Dodatkowo DN są buforowane, także w celu zmniejszenia oddziaływania LDAP, ale nie są stosowane do identyfikacji. Po zmianie DN, będzie można znaleźć zmiany. Wewnętrzna nazwa jest używana wszędzie. Usuwanie mapowania będzie miało wpływ wszędzie. Usuwanie mapowania nie jest wrażliwe na konfiguracje, dotyczy to wszystkich konfiguracji LDAP! Nigdy nie usuwaj mapowania w środowisku produkcyjnym, jest to dopuszczalne tylko w fazie eksperymentalnej, testowej.", "Clear Username-LDAP User Mapping" : "Czyść Mapowanie użytkownika LDAP", "Clear Groupname-LDAP Group Mapping" : "Czyść Mapowanie nazwy grupy LDAP", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Ustawienia zweryfikowano, ale znaleziono jednego użytkownika. Tylko pierwszy będzie mógł się zalogować. Rozważ większe zawężenie filtrami." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Ustawienia zweryfikowano, ale znaleziono jednego użytkownika. Tylko pierwszy będzie mógł się zalogować. Rozważ większe zawężenie filtrami.", + "in bytes" : "w bajtach" }, "nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"); diff --git a/apps/user_ldap/l10n/pl.json b/apps/user_ldap/l10n/pl.json index 5c52272785c..d9c5dab01b9 100644 --- a/apps/user_ldap/l10n/pl.json +++ b/apps/user_ldap/l10n/pl.json @@ -145,10 +145,12 @@ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Pozwól użytkownikom LDAP-a na zmianę swoich haseł i pozwól Super Administratorom i Grupom Administratorów na zmianę haseł swoim użytkownikom LDAP-a. Działa tylko wtedy, kiedy polisy kontroli dostępu są prawidłowo skonfigurowane na serwerze LDAP. Jako że do serwera LDAP hasła są wysyłane czystym tekstem, na serwerze LDAP należy skonfigurować protokoł szyfrowania oraz haszowanie haseł.", "(New password is sent as plain text to LDAP)" : "(Nowe hasło jest wysyłane do LDAP-a czystym tekstem)", "Special Attributes" : "Specjalne atrybuty", - "Quota Field" : "Pole przydziału", - "Quota Default" : "Przydział domyślny", - "in bytes" : "w bajtach", - "Email Field" : "Pole email", + "Quota Field" : "Pole limitu przestrzeni", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Zostaw puste dla domyślnego limitu przestrzeni dla użytkowników lub określ atrybut LDAP/AD.", + "Quota Default" : "Domyślny limit przestrzeni", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Nadpisz domyślny limit przestrzeni dla użytkowników LDAP-a, którzy nie mają go ustawionego w \"Polu limitu prestrzeni\".", + "Email Field" : "Pole e-mail", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Ustaw adres e-mail użytkowników z ich atrybutu LDAP. Zostaw puste dla domyślnego zachowania.", "User Home Folder Naming Rule" : "Reguły nazewnictwa folderu domowego użytkownika", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Pozostaw puste dla user name (domyślnie). W przeciwnym razie podaj atrybut LDAP/AD.", "Internal Username" : "Wewnętrzna nazwa użytkownika", @@ -162,6 +164,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Nazwy użytkowników służą do przechowywania i przypisywania (meta) danych. W celu dokładnego określenia i rozpoznawania użytkowników, każdy użytkownik LDAP ma przypisaną wewnętrzną nazwę użytkownika. Wymaga to mapowania nazwy użytkownika do użytkownika LDAP. Utworzona nazwa użytkownika jest odwzorowywana na UUID użytkownika LDAP. Dodatkowo DN są buforowane, także w celu zmniejszenia oddziaływania LDAP, ale nie są stosowane do identyfikacji. Po zmianie DN, będzie można znaleźć zmiany. Wewnętrzna nazwa jest używana wszędzie. Usuwanie mapowania będzie miało wpływ wszędzie. Usuwanie mapowania nie jest wrażliwe na konfiguracje, dotyczy to wszystkich konfiguracji LDAP! Nigdy nie usuwaj mapowania w środowisku produkcyjnym, jest to dopuszczalne tylko w fazie eksperymentalnej, testowej.", "Clear Username-LDAP User Mapping" : "Czyść Mapowanie użytkownika LDAP", "Clear Groupname-LDAP Group Mapping" : "Czyść Mapowanie nazwy grupy LDAP", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Ustawienia zweryfikowano, ale znaleziono jednego użytkownika. Tylko pierwszy będzie mógł się zalogować. Rozważ większe zawężenie filtrami." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Ustawienia zweryfikowano, ale znaleziono jednego użytkownika. Tylko pierwszy będzie mógł się zalogować. Rozważ większe zawężenie filtrami.", + "in bytes" : "w bajtach" },"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/pt_BR.js b/apps/user_ldap/l10n/pt_BR.js index aad7664de5f..b6b18a302d8 100644 --- a/apps/user_ldap/l10n/pt_BR.js +++ b/apps/user_ldap/l10n/pt_BR.js @@ -148,9 +148,11 @@ OC.L10N.register( "(New password is sent as plain text to LDAP)" : "(Nova senha é enviada como texto puro para LDAP)", "Special Attributes" : "Atributos Especiais", "Quota Field" : "Campo de Cota", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Deixe vazio para a cota padrão do usuário. Caso contrário, especifique um atributo LDAP/AD", "Quota Default" : "Cota Padrão", - "in bytes" : "em bytes", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Substituir a cota padrão para usuários LDAP que não têm um conjunto de cotas no Campo Quota.", "Email Field" : "Campo de Email", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Defina o email do usuário de seu atributo LDAP. Deixe vazio para o comportamento padrão.", "User Home Folder Naming Rule" : "Regra para Nome da Pasta Pessoal do Usuário", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Deixe vazio para nome de usuário (padrão). Caso contrário, especifique um atributo LDAP/AD.", "Internal Username" : "Nome de usuário interno", @@ -164,6 +166,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Nomes de usuários são usados para armazenar e atribuir dados (meta). A fim de identificar e reconhecer precisamente usuários, cada usuário LDAP terá um nome de usuário interno. Isso requer um mapeamento de nome de usuário para usuário LDAP. O nome de usuário criado é mapeado para o UUID do usuário LDAP. Além disso, o DN é armazenado em cache, assim como para reduzir a interação LDAP, mas não é usado para identificação. Se o DN muda, as mudanças serão encontrados. O nome de usuário interno é usado por toda parte. Limpando os mapeamentos terá sobras em todos os lugares. Limpando os mapeamentos não é a configuração sensÃvel, que afeta todas as configurações LDAP! Nunca limpar os mapeamentos em um ambiente de produção, somente em um teste ou estágio experimental.", "Clear Username-LDAP User Mapping" : "Limpar Mapeamento de Usuário Nome de Usuário-LDAP", "Clear Groupname-LDAP Group Mapping" : "Limpar NomedoGrupo-LDAP Mapeamento do Grupo", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Configurações verificadas, mas mais de um usuário foi encontrado. Apenas o primeiro será capaz de fazer login. Considere um filtro mais apurado." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Configurações verificadas, mas mais de um usuário foi encontrado. Apenas o primeiro será capaz de fazer login. Considere um filtro mais apurado.", + "in bytes" : "em bytes" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/user_ldap/l10n/pt_BR.json b/apps/user_ldap/l10n/pt_BR.json index cea7d246ed0..ea819064b37 100644 --- a/apps/user_ldap/l10n/pt_BR.json +++ b/apps/user_ldap/l10n/pt_BR.json @@ -146,9 +146,11 @@ "(New password is sent as plain text to LDAP)" : "(Nova senha é enviada como texto puro para LDAP)", "Special Attributes" : "Atributos Especiais", "Quota Field" : "Campo de Cota", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Deixe vazio para a cota padrão do usuário. Caso contrário, especifique um atributo LDAP/AD", "Quota Default" : "Cota Padrão", - "in bytes" : "em bytes", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Substituir a cota padrão para usuários LDAP que não têm um conjunto de cotas no Campo Quota.", "Email Field" : "Campo de Email", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Defina o email do usuário de seu atributo LDAP. Deixe vazio para o comportamento padrão.", "User Home Folder Naming Rule" : "Regra para Nome da Pasta Pessoal do Usuário", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Deixe vazio para nome de usuário (padrão). Caso contrário, especifique um atributo LDAP/AD.", "Internal Username" : "Nome de usuário interno", @@ -162,6 +164,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Nomes de usuários são usados para armazenar e atribuir dados (meta). A fim de identificar e reconhecer precisamente usuários, cada usuário LDAP terá um nome de usuário interno. Isso requer um mapeamento de nome de usuário para usuário LDAP. O nome de usuário criado é mapeado para o UUID do usuário LDAP. Além disso, o DN é armazenado em cache, assim como para reduzir a interação LDAP, mas não é usado para identificação. Se o DN muda, as mudanças serão encontrados. O nome de usuário interno é usado por toda parte. Limpando os mapeamentos terá sobras em todos os lugares. Limpando os mapeamentos não é a configuração sensÃvel, que afeta todas as configurações LDAP! Nunca limpar os mapeamentos em um ambiente de produção, somente em um teste ou estágio experimental.", "Clear Username-LDAP User Mapping" : "Limpar Mapeamento de Usuário Nome de Usuário-LDAP", "Clear Groupname-LDAP Group Mapping" : "Limpar NomedoGrupo-LDAP Mapeamento do Grupo", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Configurações verificadas, mas mais de um usuário foi encontrado. Apenas o primeiro será capaz de fazer login. Considere um filtro mais apurado." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Configurações verificadas, mas mais de um usuário foi encontrado. Apenas o primeiro será capaz de fazer login. Considere um filtro mais apurado.", + "in bytes" : "em bytes" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/pt_PT.js b/apps/user_ldap/l10n/pt_PT.js index de2dde2bdb5..26d26152fe9 100644 --- a/apps/user_ldap/l10n/pt_PT.js +++ b/apps/user_ldap/l10n/pt_PT.js @@ -142,7 +142,6 @@ OC.L10N.register( "Special Attributes" : "Atributos especiais", "Quota Field" : "Quota", "Quota Default" : "Quota padrão", - "in bytes" : "em bytes", "Email Field" : "Campo de email", "User Home Folder Naming Rule" : "Regra da pasta inicial do utilizador", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Deixe vazio para nome de utilizador (padrão). De outro modo, especifique um atributo LDAP/AD.", @@ -156,6 +155,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "O ownCloud usa nomes de utilizadores para guardar e atribuir (meta) dados. Para identificar com precisão os utilizadores, cada utilizador de LDAP tem um nome de utilizador interno. Isto requer um mapeamento entre o utilizador LDAP e o utilizador ownCloud. Adicionalmente, o DN é colocado em cache para reduzir a interação com LDAP, porém não é usado para identificação. Se o DN muda, essas alterações serão vistas pelo ownCloud. O nome interno do ownCloud é usado em todo o lado, no ownCloud. Limpar os mapeamentos deixará vestÃgios em todo o lado. A limpeza dos mapeamentos não é sensÃvel à configuração, pois afeta todas as configurações de LDAP! Nunca limpe os mapeamentos num ambiente de produção, apenas o faça numa fase de testes ou experimental.", "Clear Username-LDAP User Mapping" : "Limpar mapeamento do utilizador-LDAP", "Clear Groupname-LDAP Group Mapping" : "Limpar o mapeamento do nome de grupo LDAP", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Definições verificadas, com problemas. Somente o primeiro utilizador encontrado poderá entrar no sistema. Considere criar um filtro mais expecÃfico." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Definições verificadas, com problemas. Somente o primeiro utilizador encontrado poderá entrar no sistema. Considere criar um filtro mais expecÃfico.", + "in bytes" : "em bytes" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/user_ldap/l10n/pt_PT.json b/apps/user_ldap/l10n/pt_PT.json index 6bb88268656..edfc335b329 100644 --- a/apps/user_ldap/l10n/pt_PT.json +++ b/apps/user_ldap/l10n/pt_PT.json @@ -140,7 +140,6 @@ "Special Attributes" : "Atributos especiais", "Quota Field" : "Quota", "Quota Default" : "Quota padrão", - "in bytes" : "em bytes", "Email Field" : "Campo de email", "User Home Folder Naming Rule" : "Regra da pasta inicial do utilizador", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Deixe vazio para nome de utilizador (padrão). De outro modo, especifique um atributo LDAP/AD.", @@ -154,6 +153,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "O ownCloud usa nomes de utilizadores para guardar e atribuir (meta) dados. Para identificar com precisão os utilizadores, cada utilizador de LDAP tem um nome de utilizador interno. Isto requer um mapeamento entre o utilizador LDAP e o utilizador ownCloud. Adicionalmente, o DN é colocado em cache para reduzir a interação com LDAP, porém não é usado para identificação. Se o DN muda, essas alterações serão vistas pelo ownCloud. O nome interno do ownCloud é usado em todo o lado, no ownCloud. Limpar os mapeamentos deixará vestÃgios em todo o lado. A limpeza dos mapeamentos não é sensÃvel à configuração, pois afeta todas as configurações de LDAP! Nunca limpe os mapeamentos num ambiente de produção, apenas o faça numa fase de testes ou experimental.", "Clear Username-LDAP User Mapping" : "Limpar mapeamento do utilizador-LDAP", "Clear Groupname-LDAP Group Mapping" : "Limpar o mapeamento do nome de grupo LDAP", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Definições verificadas, com problemas. Somente o primeiro utilizador encontrado poderá entrar no sistema. Considere criar um filtro mais expecÃfico." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Definições verificadas, com problemas. Somente o primeiro utilizador encontrado poderá entrar no sistema. Considere criar um filtro mais expecÃfico.", + "in bytes" : "em bytes" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/ru.js b/apps/user_ldap/l10n/ru.js index 3b542bd68c9..9d295a1d0b1 100644 --- a/apps/user_ldap/l10n/ru.js +++ b/apps/user_ldap/l10n/ru.js @@ -148,9 +148,11 @@ OC.L10N.register( "(New password is sent as plain text to LDAP)" : "(Ðовый пароль отправлен в LDAP проÑтым текÑтом)", "Special Attributes" : "Специальные атрибуты", "Quota Field" : "Поле квоты", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "ОÑтавьте пуÑтым Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ²Ð¾Ñ‚Ñ‹ по умолчанию. Иначе укажите атрибут LDAP/AD.", "Quota Default" : "Квота по умолчанию", - "in bytes" : "в байтах", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Переопределить Ñтандартную квоту Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹ LDAP, у которых не указано значение в поле «Квота».", "Email Field" : "Поле адреÑа email", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "УÑтанавливать Ð°Ð´Ñ€ÐµÑ email Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð· атрибута LDAP. ОÑтавьте поле пуÑтым Ð´Ð»Ñ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию.", "User Home Folder Naming Rule" : "Правило Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾Ð¼Ð°ÑˆÐ½ÐµÐ³Ð¾ каталога пользователÑ", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "ОÑтавьте пуÑтым Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð¸ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ (по умолчанию). Иначе укажите атрибут LDAP/AD.", "Internal Username" : "Внутреннее Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ", @@ -164,6 +166,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "ownCloud иÑпользует имена пользователей Ð´Ð»Ñ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¼ÐµÑ‚Ð°Ð´Ð°Ð½Ð½Ñ‹Ñ…. Ð”Ð»Ñ Ñ‚Ð¾Ñ‡Ð½Ð¾Ð¹ идентификации и раÑÐ¿Ð¾Ð·Ð½Ð°Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹, каждый пользователь LDAP будет иметь Ñвое внутреннее Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ. Ðто требует привÑзки имени Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ownCloud к пользователю LDAP. При Ñоздании Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ð°Ð·Ð½Ð°Ñ‡Ð°ÐµÑ‚ÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ñƒ UUID Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ LDAP. Помимо Ñтого кешируетÑÑ DN Ð´Ð»Ñ ÑƒÐ¼ÐµÐ½ÑŒÑˆÐµÐ½Ð¸Ñ Ñ‡Ð¸Ñла обращений к LDAP, однако он не иÑпользуетÑÑ Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸. ЕÑли DN был изменён, то Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ найдены. Внутреннее Ð¸Ð¼Ñ ownCloud иÑпользуетÑÑ Ð¿Ð¾Ð²ÑемеÑтно в ownCloud. ПоÑле ÑброÑа привÑзок в базе могут ÑохранитьÑÑ Ð¾Ñтатки Ñтарой информации. Ð¡Ð±Ñ€Ð¾Ñ Ð¿Ñ€Ð¸Ð²Ñзок не привÑзан к конфигурации, он повлиÑет на вÑе LDAP подключениÑ! Ðи в коем Ñлучае не рекомендуетÑÑ ÑбраÑывать привÑзки еÑли ÑиÑтема уже находитÑÑ Ð² ÑкÑплуатации, только на Ñтапе теÑтированиÑ.", "Clear Username-LDAP User Mapping" : "ОчиÑтить ÑоответÑÑ‚Ð²Ð¸Ñ Ð˜Ð¼Ñ-Пользователь LDAP", "Clear Groupname-LDAP Group Mapping" : "ОчиÑтить ÑоответÑÑ‚Ð²Ð¸Ñ Ð“Ñ€ÑƒÐ¿Ð¿Ð°-Группа LDAP", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "ÐаÑтройки проверены, но найден один пользователь. Только первый Ñможет войти. Советуем переÑмотреть фильтр." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "ÐаÑтройки проверены, но найден один пользователь. Только первый Ñможет войти. Советуем переÑмотреть фильтр.", + "in bytes" : "в байтах" }, "nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"); diff --git a/apps/user_ldap/l10n/ru.json b/apps/user_ldap/l10n/ru.json index 5f3a06a28fd..b0352ba3d67 100644 --- a/apps/user_ldap/l10n/ru.json +++ b/apps/user_ldap/l10n/ru.json @@ -146,9 +146,11 @@ "(New password is sent as plain text to LDAP)" : "(Ðовый пароль отправлен в LDAP проÑтым текÑтом)", "Special Attributes" : "Специальные атрибуты", "Quota Field" : "Поле квоты", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "ОÑтавьте пуÑтым Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ²Ð¾Ñ‚Ñ‹ по умолчанию. Иначе укажите атрибут LDAP/AD.", "Quota Default" : "Квота по умолчанию", - "in bytes" : "в байтах", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Переопределить Ñтандартную квоту Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹ LDAP, у которых не указано значение в поле «Квота».", "Email Field" : "Поле адреÑа email", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "УÑтанавливать Ð°Ð´Ñ€ÐµÑ email Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð· атрибута LDAP. ОÑтавьте поле пуÑтым Ð´Ð»Ñ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию.", "User Home Folder Naming Rule" : "Правило Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾Ð¼Ð°ÑˆÐ½ÐµÐ³Ð¾ каталога пользователÑ", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "ОÑтавьте пуÑтым Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð¸ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ (по умолчанию). Иначе укажите атрибут LDAP/AD.", "Internal Username" : "Внутреннее Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ", @@ -162,6 +164,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "ownCloud иÑпользует имена пользователей Ð´Ð»Ñ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¼ÐµÑ‚Ð°Ð´Ð°Ð½Ð½Ñ‹Ñ…. Ð”Ð»Ñ Ñ‚Ð¾Ñ‡Ð½Ð¾Ð¹ идентификации и раÑÐ¿Ð¾Ð·Ð½Ð°Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹, каждый пользователь LDAP будет иметь Ñвое внутреннее Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ. Ðто требует привÑзки имени Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ownCloud к пользователю LDAP. При Ñоздании Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ð°Ð·Ð½Ð°Ñ‡Ð°ÐµÑ‚ÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ñƒ UUID Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ LDAP. Помимо Ñтого кешируетÑÑ DN Ð´Ð»Ñ ÑƒÐ¼ÐµÐ½ÑŒÑˆÐµÐ½Ð¸Ñ Ñ‡Ð¸Ñла обращений к LDAP, однако он не иÑпользуетÑÑ Ð´Ð»Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸. ЕÑли DN был изменён, то Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ найдены. Внутреннее Ð¸Ð¼Ñ ownCloud иÑпользуетÑÑ Ð¿Ð¾Ð²ÑемеÑтно в ownCloud. ПоÑле ÑброÑа привÑзок в базе могут ÑохранитьÑÑ Ð¾Ñтатки Ñтарой информации. Ð¡Ð±Ñ€Ð¾Ñ Ð¿Ñ€Ð¸Ð²Ñзок не привÑзан к конфигурации, он повлиÑет на вÑе LDAP подключениÑ! Ðи в коем Ñлучае не рекомендуетÑÑ ÑбраÑывать привÑзки еÑли ÑиÑтема уже находитÑÑ Ð² ÑкÑплуатации, только на Ñтапе теÑтированиÑ.", "Clear Username-LDAP User Mapping" : "ОчиÑтить ÑоответÑÑ‚Ð²Ð¸Ñ Ð˜Ð¼Ñ-Пользователь LDAP", "Clear Groupname-LDAP Group Mapping" : "ОчиÑтить ÑоответÑÑ‚Ð²Ð¸Ñ Ð“Ñ€ÑƒÐ¿Ð¿Ð°-Группа LDAP", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "ÐаÑтройки проверены, но найден один пользователь. Только первый Ñможет войти. Советуем переÑмотреть фильтр." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "ÐаÑтройки проверены, но найден один пользователь. Только первый Ñможет войти. Советуем переÑмотреть фильтр.", + "in bytes" : "в байтах" },"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/sk.js b/apps/user_ldap/l10n/sk.js index 81cb1aa6959..3730ab5d564 100644 --- a/apps/user_ldap/l10n/sk.js +++ b/apps/user_ldap/l10n/sk.js @@ -136,7 +136,6 @@ OC.L10N.register( "Special Attributes" : "Å peciálne atribúty", "Quota Field" : "Pole kvóty", "Quota Default" : "Predvolená kvóta", - "in bytes" : "v bajtoch", "Email Field" : "Pole emailu", "User Home Folder Naming Rule" : "Pravidlo pre nastavenie názvu použÃvateľského prieÄinka dát", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Nechajte prázdne pre použÃvateľské meno (predvolené). Inak uveÄte atribút z LDAP/AD.", @@ -150,6 +149,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "PoužÃvateľské mená sa použÃvajú na uchovávanie a priraÄovanie (meta)dát. Každý použÃvateľ v LDAP bude maÅ¥ interné použÃvateľské meno, aby bolo možné správne identifikovaÅ¥ a rozpoznávaÅ¥ použÃvateľov. To je vyžaduje vytvorenie mapovania použÃvateľských mien na použÃvateľov v LDAPe. Vytvorené použÃvateľské meno sa namapuje na UUID použÃvateľa v LDAPe. Naviac je sa vo vyrovnávacej pamäti udržiava DN, aby sa obmedzila nadmerná interakcia s LDAPom, ale to sa nepoužÃva na identifikáciu. Ak sa DN zmenÃ, zmena bude správne rozpoznaná. Interné použÃvateľské meno sa použÃva vÅ¡ade. VyÄistenie mapovanà vymaže zvyÅ¡ky vÅ¡ade. VyÄistenie mapovanà naviac nie je Å¡pecifické pre urÄitú konfiguráciu; bude maÅ¥ vplyv na vÅ¡etky konfigurácie LDAPu! Nikdy neÄistite mapovanie v produkÄnom prostredÃ, len v testovacej alebo experimentálnej fáze.", "Clear Username-LDAP User Mapping" : "ZruÅ¡iÅ¥ mapovanie LDAP použÃvateľských mien", "Clear Groupname-LDAP Group Mapping" : "ZruÅ¡iÅ¥ mapovanie názvov LDAP skupÃn", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavenia sú overené, nájdený jeden použÃvateľ. Len prvý použÃvateľ sa bude môcÅ¥ prihlásiÅ¥. Zvážte nastavenie užšieho filtra." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavenia sú overené, nájdený jeden použÃvateľ. Len prvý použÃvateľ sa bude môcÅ¥ prihlásiÅ¥. Zvážte nastavenie užšieho filtra.", + "in bytes" : "v bajtoch" }, "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); diff --git a/apps/user_ldap/l10n/sk.json b/apps/user_ldap/l10n/sk.json index 74d68798c51..09a8e5b65a9 100644 --- a/apps/user_ldap/l10n/sk.json +++ b/apps/user_ldap/l10n/sk.json @@ -134,7 +134,6 @@ "Special Attributes" : "Å peciálne atribúty", "Quota Field" : "Pole kvóty", "Quota Default" : "Predvolená kvóta", - "in bytes" : "v bajtoch", "Email Field" : "Pole emailu", "User Home Folder Naming Rule" : "Pravidlo pre nastavenie názvu použÃvateľského prieÄinka dát", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Nechajte prázdne pre použÃvateľské meno (predvolené). Inak uveÄte atribút z LDAP/AD.", @@ -148,6 +147,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "PoužÃvateľské mená sa použÃvajú na uchovávanie a priraÄovanie (meta)dát. Každý použÃvateľ v LDAP bude maÅ¥ interné použÃvateľské meno, aby bolo možné správne identifikovaÅ¥ a rozpoznávaÅ¥ použÃvateľov. To je vyžaduje vytvorenie mapovania použÃvateľských mien na použÃvateľov v LDAPe. Vytvorené použÃvateľské meno sa namapuje na UUID použÃvateľa v LDAPe. Naviac je sa vo vyrovnávacej pamäti udržiava DN, aby sa obmedzila nadmerná interakcia s LDAPom, ale to sa nepoužÃva na identifikáciu. Ak sa DN zmenÃ, zmena bude správne rozpoznaná. Interné použÃvateľské meno sa použÃva vÅ¡ade. VyÄistenie mapovanà vymaže zvyÅ¡ky vÅ¡ade. VyÄistenie mapovanà naviac nie je Å¡pecifické pre urÄitú konfiguráciu; bude maÅ¥ vplyv na vÅ¡etky konfigurácie LDAPu! Nikdy neÄistite mapovanie v produkÄnom prostredÃ, len v testovacej alebo experimentálnej fáze.", "Clear Username-LDAP User Mapping" : "ZruÅ¡iÅ¥ mapovanie LDAP použÃvateľských mien", "Clear Groupname-LDAP Group Mapping" : "ZruÅ¡iÅ¥ mapovanie názvov LDAP skupÃn", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavenia sú overené, nájdený jeden použÃvateľ. Len prvý použÃvateľ sa bude môcÅ¥ prihlásiÅ¥. Zvážte nastavenie užšieho filtra." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavenia sú overené, nájdený jeden použÃvateľ. Len prvý použÃvateľ sa bude môcÅ¥ prihlásiÅ¥. Zvážte nastavenie užšieho filtra.", + "in bytes" : "v bajtoch" },"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/sl.js b/apps/user_ldap/l10n/sl.js index fa06b28cd2a..6b3ac5f5214 100644 --- a/apps/user_ldap/l10n/sl.js +++ b/apps/user_ldap/l10n/sl.js @@ -139,7 +139,6 @@ OC.L10N.register( "Special Attributes" : "Posebni atributi", "Quota Field" : "Polje koliÄinske omejitve", "Quota Default" : "Privzeta koliÄinska omejitev", - "in bytes" : "v bajtih", "Email Field" : "Polje elektronske poÅ¡te", "User Home Folder Naming Rule" : "Pravila poimenovanja uporabniÅ¡ke osebne mape", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Pustite prazno za uporabniÅ¡ko ime (privzeto), sicer navedite atribut LDAP/AD.", @@ -152,6 +151,7 @@ OC.L10N.register( "Username-LDAP User Mapping" : "UporabniÅ¡ka preslikava uporabniÅ¡kega imena na LDAP", "Clear Username-LDAP User Mapping" : "IzbriÅ¡i preslikavo uporabniÅ¡kega imena na LDAP", "Clear Groupname-LDAP Group Mapping" : "IzbriÅ¡i preslikavo skupine na LDAP", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavitve so overjene, najden pa je le en uporabnik. Le prvi se bo lahko prijavil. PriporoÄljivo je navesti ožji filter." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavitve so overjene, najden pa je le en uporabnik. Le prvi se bo lahko prijavil. PriporoÄljivo je navesti ožji filter.", + "in bytes" : "v bajtih" }, "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"); diff --git a/apps/user_ldap/l10n/sl.json b/apps/user_ldap/l10n/sl.json index d76c0aca991..a7da16dfc30 100644 --- a/apps/user_ldap/l10n/sl.json +++ b/apps/user_ldap/l10n/sl.json @@ -137,7 +137,6 @@ "Special Attributes" : "Posebni atributi", "Quota Field" : "Polje koliÄinske omejitve", "Quota Default" : "Privzeta koliÄinska omejitev", - "in bytes" : "v bajtih", "Email Field" : "Polje elektronske poÅ¡te", "User Home Folder Naming Rule" : "Pravila poimenovanja uporabniÅ¡ke osebne mape", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Pustite prazno za uporabniÅ¡ko ime (privzeto), sicer navedite atribut LDAP/AD.", @@ -150,6 +149,7 @@ "Username-LDAP User Mapping" : "UporabniÅ¡ka preslikava uporabniÅ¡kega imena na LDAP", "Clear Username-LDAP User Mapping" : "IzbriÅ¡i preslikavo uporabniÅ¡kega imena na LDAP", "Clear Groupname-LDAP Group Mapping" : "IzbriÅ¡i preslikavo skupine na LDAP", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavitve so overjene, najden pa je le en uporabnik. Le prvi se bo lahko prijavil. PriporoÄljivo je navesti ožji filter." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Nastavitve so overjene, najden pa je le en uporabnik. Le prvi se bo lahko prijavil. PriporoÄljivo je navesti ožji filter.", + "in bytes" : "v bajtih" },"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/sq.js b/apps/user_ldap/l10n/sq.js index 83fd4f4fa54..f65d02a9dd7 100644 --- a/apps/user_ldap/l10n/sq.js +++ b/apps/user_ldap/l10n/sq.js @@ -144,7 +144,6 @@ OC.L10N.register( "Special Attributes" : "Atribute Speciale", "Quota Field" : "Fushë Kuotash", "Quota Default" : "Parazgjedhje Kuotash", - "in bytes" : "në bajte", "Email Field" : "Fushë Email-i", "User Home Folder Naming Rule" : "Rregull Emërtimi Dosjeje Kreu të Përdoruesit", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Lëreni bosh për emrin e përdoruesit (I Paracaktuar). Ose, përcaktoni një atribut LDAP/AD.", @@ -158,6 +157,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Emrat e përdoruesve përdoren për të depozituar dhe shpërndarë (tej) të dhëna. Që të mund të identifikohen dhe pranohen saktësisht përdoruesit, çdo përdorues LDAP do të ketë një emër të brendshëm përdoruesi. Kjo kërkon përshoqërim nga emër përdoruesi te përdorues LDAP. Emri i përdoruesit i krijuar i përshoqërohet UUID-së së përdoruesit LDAP. Tej kësaj, edhe DN-ja ruhet në fshehtinë, për të zvogëluar ndërveprim LDAP, por s’përdoret për identifikim. Nëse ndryshon DN-ja, ndryshimet do të gjenden. Emri i brendshëm i përdoruesi përdoret gjithandej. Heqja e përshoqërimeve do të lërë thërrime ngado. Heqja e përshoqërimeve nuk preket nga formësimi, prek krejt formësimet për LDAP-në! Mos i hiqni kurrë përshoqërimet në një mjedis prodhimi, vetëm në një faqë testimi ose eksperimetale.", "Clear Username-LDAP User Mapping" : "Pastro Përshoqërimin Emër përdoruesi-Përdorues LDAP", "Clear Groupname-LDAP Group Mapping" : "Pastro Përshoqërimin Emër grupi-Grup LDAP", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Rregullimet u verifikuan, por u gjet një përdorues. Vetëm i pari do të jetë në gjendje të bëjë hyrje. Shihni mundësinë e një filtri më të ngushtë." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Rregullimet u verifikuan, por u gjet një përdorues. Vetëm i pari do të jetë në gjendje të bëjë hyrje. Shihni mundësinë e një filtri më të ngushtë.", + "in bytes" : "në bajte" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/user_ldap/l10n/sq.json b/apps/user_ldap/l10n/sq.json index 24723781460..b6ce460910a 100644 --- a/apps/user_ldap/l10n/sq.json +++ b/apps/user_ldap/l10n/sq.json @@ -142,7 +142,6 @@ "Special Attributes" : "Atribute Speciale", "Quota Field" : "Fushë Kuotash", "Quota Default" : "Parazgjedhje Kuotash", - "in bytes" : "në bajte", "Email Field" : "Fushë Email-i", "User Home Folder Naming Rule" : "Rregull Emërtimi Dosjeje Kreu të Përdoruesit", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Lëreni bosh për emrin e përdoruesit (I Paracaktuar). Ose, përcaktoni një atribut LDAP/AD.", @@ -156,6 +155,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Emrat e përdoruesve përdoren për të depozituar dhe shpërndarë (tej) të dhëna. Që të mund të identifikohen dhe pranohen saktësisht përdoruesit, çdo përdorues LDAP do të ketë një emër të brendshëm përdoruesi. Kjo kërkon përshoqërim nga emër përdoruesi te përdorues LDAP. Emri i përdoruesit i krijuar i përshoqërohet UUID-së së përdoruesit LDAP. Tej kësaj, edhe DN-ja ruhet në fshehtinë, për të zvogëluar ndërveprim LDAP, por s’përdoret për identifikim. Nëse ndryshon DN-ja, ndryshimet do të gjenden. Emri i brendshëm i përdoruesi përdoret gjithandej. Heqja e përshoqërimeve do të lërë thërrime ngado. Heqja e përshoqërimeve nuk preket nga formësimi, prek krejt formësimet për LDAP-në! Mos i hiqni kurrë përshoqërimet në një mjedis prodhimi, vetëm në një faqë testimi ose eksperimetale.", "Clear Username-LDAP User Mapping" : "Pastro Përshoqërimin Emër përdoruesi-Përdorues LDAP", "Clear Groupname-LDAP Group Mapping" : "Pastro Përshoqërimin Emër grupi-Grup LDAP", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Rregullimet u verifikuan, por u gjet një përdorues. Vetëm i pari do të jetë në gjendje të bëjë hyrje. Shihni mundësinë e një filtri më të ngushtë." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Rregullimet u verifikuan, por u gjet një përdorues. Vetëm i pari do të jetë në gjendje të bëjë hyrje. Shihni mundësinë e një filtri më të ngushtë.", + "in bytes" : "në bajte" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/sr.js b/apps/user_ldap/l10n/sr.js index 8c1bd3782de..b2d36781f50 100644 --- a/apps/user_ldap/l10n/sr.js +++ b/apps/user_ldap/l10n/sr.js @@ -137,7 +137,6 @@ OC.L10N.register( "Special Attributes" : "ПоÑебни параметри", "Quota Field" : "Поље квоте", "Quota Default" : "Подразумевана квота", - "in bytes" : "у бајтовима", "Email Field" : "Поље е-поште", "User Home Folder Naming Rule" : "Правило именовања кориÑничке фаÑцикле", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "ОÑтавите празно за кориÑничко име (подразумевано). У Ñупротном, наведите оÑобину LDAP/AD.", @@ -151,6 +150,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "КориÑничка имена Ñе кориÑти за чување и додељивање (мета) података. Да би Ñе прецизно идентификовали и препознавали кориÑнике, Ñваки LDAP кориÑник ће имати локално кориÑничко име. Ово захтева мапирање од кориÑничког имена до LDAP кориÑника. Креирано кориÑничко име Ñе мапира у UUID LDAP кориÑника. Поред тога, DN Ñе кешира да Ñмањи LDAP интеракцију, али Ñе не кориÑти за идентификацију. Ðко Ñе DN мења, промене Ñе могу наћи. Локално кориÑничко име Ñе кориÑти Ñвуда. Чишћење мапирања оÑтавља Ñвуда оÑтатке. Чишћење мапирања није оÑетљиво на конфигурацију, оно утиче на Ñве LDAP конфигурације! Ðикада не кориÑтит чишћење мапирања у радном окружењу, већ Ñамо у теÑтирању или екÑперименталној фази.", "Clear Username-LDAP User Mapping" : "ОчиÑти Username-LDAP мапирање кориÑника", "Clear Groupname-LDAP Group Mapping" : "ОчиÑти Groupname-LDAP мапирање група", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "ПоÑтавке проверене али један кориÑник је нађен. Само први ће уÑпети да Ñе пријави. Размотрите проширење филтрирања." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "ПоÑтавке проверене али један кориÑник је нађен. Само први ће уÑпети да Ñе пријави. Размотрите проширење филтрирања.", + "in bytes" : "у бајтовима" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/user_ldap/l10n/sr.json b/apps/user_ldap/l10n/sr.json index 4ed2b4a69c3..a4e2f300418 100644 --- a/apps/user_ldap/l10n/sr.json +++ b/apps/user_ldap/l10n/sr.json @@ -135,7 +135,6 @@ "Special Attributes" : "ПоÑебни параметри", "Quota Field" : "Поље квоте", "Quota Default" : "Подразумевана квота", - "in bytes" : "у бајтовима", "Email Field" : "Поље е-поште", "User Home Folder Naming Rule" : "Правило именовања кориÑничке фаÑцикле", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "ОÑтавите празно за кориÑничко име (подразумевано). У Ñупротном, наведите оÑобину LDAP/AD.", @@ -149,6 +148,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "КориÑничка имена Ñе кориÑти за чување и додељивање (мета) података. Да би Ñе прецизно идентификовали и препознавали кориÑнике, Ñваки LDAP кориÑник ће имати локално кориÑничко име. Ово захтева мапирање од кориÑничког имена до LDAP кориÑника. Креирано кориÑничко име Ñе мапира у UUID LDAP кориÑника. Поред тога, DN Ñе кешира да Ñмањи LDAP интеракцију, али Ñе не кориÑти за идентификацију. Ðко Ñе DN мења, промене Ñе могу наћи. Локално кориÑничко име Ñе кориÑти Ñвуда. Чишћење мапирања оÑтавља Ñвуда оÑтатке. Чишћење мапирања није оÑетљиво на конфигурацију, оно утиче на Ñве LDAP конфигурације! Ðикада не кориÑтит чишћење мапирања у радном окружењу, већ Ñамо у теÑтирању или екÑперименталној фази.", "Clear Username-LDAP User Mapping" : "ОчиÑти Username-LDAP мапирање кориÑника", "Clear Groupname-LDAP Group Mapping" : "ОчиÑти Groupname-LDAP мапирање група", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "ПоÑтавке проверене али један кориÑник је нађен. Само први ће уÑпети да Ñе пријави. Размотрите проширење филтрирања." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "ПоÑтавке проверене али један кориÑник је нађен. Само први ће уÑпети да Ñе пријави. Размотрите проширење филтрирања.", + "in bytes" : "у бајтовима" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/sv.js b/apps/user_ldap/l10n/sv.js index 9a1768fe01e..cfa74135769 100644 --- a/apps/user_ldap/l10n/sv.js +++ b/apps/user_ldap/l10n/sv.js @@ -133,7 +133,6 @@ OC.L10N.register( "Special Attributes" : "Specialattribut", "Quota Field" : "Fält för lagringsutrymme", "Quota Default" : "Standardutrymme för lagring", - "in bytes" : "i bytes", "Email Field" : "E-postfält", "User Home Folder Naming Rule" : "Namnregel för hemkatalog", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Lämnas tomt för användarnamn (standard). Ange annars ett LDAP-/AD-attribut.", @@ -146,6 +145,7 @@ OC.L10N.register( "Username-LDAP User Mapping" : "Användarnamn-LDAP användarmappning", "Clear Username-LDAP User Mapping" : "Rensa användarnamn-LDAP användarmappning", "Clear Groupname-LDAP Group Mapping" : "Rensa gruppnamn-LDAP gruppmappning", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Inställningar bekräftade, men inga användare funna. Endast den första kommer kunna logga in. Överväg ett mer begränsat filter." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Inställningar bekräftade, men inga användare funna. Endast den första kommer kunna logga in. Överväg ett mer begränsat filter.", + "in bytes" : "i bytes" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/user_ldap/l10n/sv.json b/apps/user_ldap/l10n/sv.json index a4019761f96..5cbf5a56b9e 100644 --- a/apps/user_ldap/l10n/sv.json +++ b/apps/user_ldap/l10n/sv.json @@ -131,7 +131,6 @@ "Special Attributes" : "Specialattribut", "Quota Field" : "Fält för lagringsutrymme", "Quota Default" : "Standardutrymme för lagring", - "in bytes" : "i bytes", "Email Field" : "E-postfält", "User Home Folder Naming Rule" : "Namnregel för hemkatalog", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Lämnas tomt för användarnamn (standard). Ange annars ett LDAP-/AD-attribut.", @@ -144,6 +143,7 @@ "Username-LDAP User Mapping" : "Användarnamn-LDAP användarmappning", "Clear Username-LDAP User Mapping" : "Rensa användarnamn-LDAP användarmappning", "Clear Groupname-LDAP Group Mapping" : "Rensa gruppnamn-LDAP gruppmappning", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Inställningar bekräftade, men inga användare funna. Endast den första kommer kunna logga in. Överväg ett mer begränsat filter." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Inställningar bekräftade, men inga användare funna. Endast den första kommer kunna logga in. Överväg ett mer begränsat filter.", + "in bytes" : "i bytes" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/th.js b/apps/user_ldap/l10n/th.js index a5faa068c46..5448e7c9143 100644 --- a/apps/user_ldap/l10n/th.js +++ b/apps/user_ldap/l10n/th.js @@ -139,7 +139,6 @@ OC.L10N.register( "Special Attributes" : "คุณลัà¸à¸©à¸“ะพิเศษ", "Quota Field" : "ช่à¸à¸‡à¹‚ควต้า", "Quota Default" : "โควต้าเริ่มต้น", - "in bytes" : "ในหน่วยไบต์", "Email Field" : "ช่à¸à¸‡à¸à¸µà¹€à¸¡à¸¥", "User Home Folder Naming Rule" : "à¸à¸Žà¸à¸²à¸£à¸•ั้งชื่à¸à¹‚ฟลเดà¸à¸£à¹Œà¹à¸£à¸à¸‚à¸à¸‡à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "เว้นว่างไว้สำหรับ ชื่à¸à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰ (ค่าเริ่มต้น) หรืà¸à¹„ม่à¸à¸£à¸¸à¸“าระบุคุณลัà¸à¸©à¸“ะขà¸à¸‡ LDAP/AD", @@ -153,6 +152,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "ชื่à¸à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸ˆà¸°à¹ƒà¸Šà¹‰à¹ƒà¸™à¸à¸²à¸£à¸ˆà¸±à¸”เà¸à¹‡à¸šà¹à¸¥à¸°à¸à¸³à¸«à¸™à¸”ข้à¸à¸¡à¸¹à¸¥ (เมตา) เพื่à¸à¸£à¸¹à¹‰à¸ˆà¸±à¸à¸à¸±à¸šà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¹à¸¥à¸°à¸ªà¸²à¸¡à¸²à¸£à¸–ระบุได้à¸à¸¢à¹ˆà¸²à¸‡à¹à¸¡à¹ˆà¸™à¸¢à¸³ à¹à¸•่ละ LDAP จะมีชื่à¸à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸ ายใน จึงต้à¸à¸‡à¸—ำ Mapping ให้à¸à¸±à¸šà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰ LDAP ชื่à¸à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸—ี่ถูà¸à¸ªà¸£à¹‰à¸²à¸‡à¸‚ึ้นจะถูà¸à¹à¸¡à¸›à¹€à¸‚้าà¸à¸±à¸š UUID ขà¸à¸‡à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰ LDAP นà¸à¸à¸ˆà¸²à¸à¸™à¸µà¹‰ DN à¸à¹‡à¸ˆà¸°à¸–ูà¸à¹à¸„ชเช่นà¸à¸±à¸™à¹€à¸žà¸·à¹ˆà¸à¸¥à¸”à¸à¸²à¸£à¸—ำงานร่วมà¸à¸±à¸™à¸‚à¸à¸‡ LDAP à¹à¸•่มันà¸à¹‡à¹„ม่ได้ใช้เพื่à¸à¸£à¸°à¸šà¸¸à¸•ัวตน หาà¸à¸¡à¸µà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡ DN à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸ˆà¸°à¸–ูà¸à¸žà¸šà¹ƒà¸™à¸—ันที ชื่à¸à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸ ายในจะถูà¸à¹ƒà¸Šà¹‰à¸à¸±à¸šà¸—ั้งหมด à¸à¸²à¸£à¸¥à¹‰à¸²à¸‡à¹à¸¡à¸›à¹„ม่มีผลต่à¸à¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่า LDAP ทั้งหมด! \nà¹à¸¥à¸°à¸ˆà¸°à¹€à¸à¸´à¸”ขึ้นเฉพาะในà¸à¸²à¸£à¸—ดสà¸à¸šà¸«à¸£à¸·à¸à¸‚ั้นตà¸à¸™à¸à¸²à¸£à¸—ดลà¸à¸‡", "Clear Username-LDAP User Mapping" : "ล้าง Username-LDAP ผู้ใช้ Mapping", "Clear Groupname-LDAP Group Mapping" : "ล้าง Groupname-LDAP à¸à¸¥à¸¸à¹ˆà¸¡ Mapping", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "à¸à¸²à¸£à¸•ั้งค่าได้รับà¸à¸²à¸£à¸•รวจสà¸à¸šà¹à¸¥à¹‰à¸§ à¹à¸•่ผู้ใช้คนหนึ่งพบว่า มีเพียงครั้งà¹à¸£à¸à¸—ี่จะสามารถที่จะเข้าสู่ระบบ à¸à¸£à¸¸à¸“าพิจารณาตัวà¸à¸£à¸à¸‡à¸—ี่จำà¸à¸±à¸”มาà¸à¸‚ึ้น" + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "à¸à¸²à¸£à¸•ั้งค่าได้รับà¸à¸²à¸£à¸•รวจสà¸à¸šà¹à¸¥à¹‰à¸§ à¹à¸•่ผู้ใช้คนหนึ่งพบว่า มีเพียงครั้งà¹à¸£à¸à¸—ี่จะสามารถที่จะเข้าสู่ระบบ à¸à¸£à¸¸à¸“าพิจารณาตัวà¸à¸£à¸à¸‡à¸—ี่จำà¸à¸±à¸”มาà¸à¸‚ึ้น", + "in bytes" : "ในหน่วยไบต์" }, "nplurals=1; plural=0;"); diff --git a/apps/user_ldap/l10n/th.json b/apps/user_ldap/l10n/th.json index 609090470a4..60f03b85da9 100644 --- a/apps/user_ldap/l10n/th.json +++ b/apps/user_ldap/l10n/th.json @@ -137,7 +137,6 @@ "Special Attributes" : "คุณลัà¸à¸©à¸“ะพิเศษ", "Quota Field" : "ช่à¸à¸‡à¹‚ควต้า", "Quota Default" : "โควต้าเริ่มต้น", - "in bytes" : "ในหน่วยไบต์", "Email Field" : "ช่à¸à¸‡à¸à¸µà¹€à¸¡à¸¥", "User Home Folder Naming Rule" : "à¸à¸Žà¸à¸²à¸£à¸•ั้งชื่à¸à¹‚ฟลเดà¸à¸£à¹Œà¹à¸£à¸à¸‚à¸à¸‡à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "เว้นว่างไว้สำหรับ ชื่à¸à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰ (ค่าเริ่มต้น) หรืà¸à¹„ม่à¸à¸£à¸¸à¸“าระบุคุณลัà¸à¸©à¸“ะขà¸à¸‡ LDAP/AD", @@ -151,6 +150,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "ชื่à¸à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸ˆà¸°à¹ƒà¸Šà¹‰à¹ƒà¸™à¸à¸²à¸£à¸ˆà¸±à¸”เà¸à¹‡à¸šà¹à¸¥à¸°à¸à¸³à¸«à¸™à¸”ข้à¸à¸¡à¸¹à¸¥ (เมตา) เพื่à¸à¸£à¸¹à¹‰à¸ˆà¸±à¸à¸à¸±à¸šà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¹à¸¥à¸°à¸ªà¸²à¸¡à¸²à¸£à¸–ระบุได้à¸à¸¢à¹ˆà¸²à¸‡à¹à¸¡à¹ˆà¸™à¸¢à¸³ à¹à¸•่ละ LDAP จะมีชื่à¸à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸ ายใน จึงต้à¸à¸‡à¸—ำ Mapping ให้à¸à¸±à¸šà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰ LDAP ชื่à¸à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸—ี่ถูà¸à¸ªà¸£à¹‰à¸²à¸‡à¸‚ึ้นจะถูà¸à¹à¸¡à¸›à¹€à¸‚้าà¸à¸±à¸š UUID ขà¸à¸‡à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰ LDAP นà¸à¸à¸ˆà¸²à¸à¸™à¸µà¹‰ DN à¸à¹‡à¸ˆà¸°à¸–ูà¸à¹à¸„ชเช่นà¸à¸±à¸™à¹€à¸žà¸·à¹ˆà¸à¸¥à¸”à¸à¸²à¸£à¸—ำงานร่วมà¸à¸±à¸™à¸‚à¸à¸‡ LDAP à¹à¸•่มันà¸à¹‡à¹„ม่ได้ใช้เพื่à¸à¸£à¸°à¸šà¸¸à¸•ัวตน หาà¸à¸¡à¸µà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡ DN à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸ˆà¸°à¸–ูà¸à¸žà¸šà¹ƒà¸™à¸—ันที ชื่à¸à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸ ายในจะถูà¸à¹ƒà¸Šà¹‰à¸à¸±à¸šà¸—ั้งหมด à¸à¸²à¸£à¸¥à¹‰à¸²à¸‡à¹à¸¡à¸›à¹„ม่มีผลต่à¸à¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่า LDAP ทั้งหมด! \nà¹à¸¥à¸°à¸ˆà¸°à¹€à¸à¸´à¸”ขึ้นเฉพาะในà¸à¸²à¸£à¸—ดสà¸à¸šà¸«à¸£à¸·à¸à¸‚ั้นตà¸à¸™à¸à¸²à¸£à¸—ดลà¸à¸‡", "Clear Username-LDAP User Mapping" : "ล้าง Username-LDAP ผู้ใช้ Mapping", "Clear Groupname-LDAP Group Mapping" : "ล้าง Groupname-LDAP à¸à¸¥à¸¸à¹ˆà¸¡ Mapping", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "à¸à¸²à¸£à¸•ั้งค่าได้รับà¸à¸²à¸£à¸•รวจสà¸à¸šà¹à¸¥à¹‰à¸§ à¹à¸•่ผู้ใช้คนหนึ่งพบว่า มีเพียงครั้งà¹à¸£à¸à¸—ี่จะสามารถที่จะเข้าสู่ระบบ à¸à¸£à¸¸à¸“าพิจารณาตัวà¸à¸£à¸à¸‡à¸—ี่จำà¸à¸±à¸”มาà¸à¸‚ึ้น" + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "à¸à¸²à¸£à¸•ั้งค่าได้รับà¸à¸²à¸£à¸•รวจสà¸à¸šà¹à¸¥à¹‰à¸§ à¹à¸•่ผู้ใช้คนหนึ่งพบว่า มีเพียงครั้งà¹à¸£à¸à¸—ี่จะสามารถที่จะเข้าสู่ระบบ à¸à¸£à¸¸à¸“าพิจารณาตัวà¸à¸£à¸à¸‡à¸—ี่จำà¸à¸±à¸”มาà¸à¸‚ึ้น", + "in bytes" : "ในหน่วยไบต์" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/tr.js b/apps/user_ldap/l10n/tr.js index bf46b200e61..25ca5dd3fa0 100644 --- a/apps/user_ldap/l10n/tr.js +++ b/apps/user_ldap/l10n/tr.js @@ -109,7 +109,7 @@ OC.L10N.register( "Expert" : "Uzman", "Advanced" : "Gelişmiş", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Uyarı:</b> user_ldap ve user_webdavauth uygulamaları uyumlu değil. Beklenmedik bir davranışla karşılaşabilirsiniz. Lütfen ikisinden birini devre dışı bırakmak için sistem yöneticinizle görüşün.", - "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Uyarı:</b> PHP LDAP modülü kurulu değil, arka uç çalışmayacak. Lütfen kurulumu için sistem yöneticinizle görüşün.", + "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Uyarı:</b> PHP LDAP modülü kurulmamış, arka uç çalışmayacak. Lütfen kurulumu için sistem yöneticinizle görüşün.", "Connection Settings" : "Bağlantı Ayarları", "Configuration Active" : "Yapılandırma Etkin", "When unchecked, this configuration will be skipped." : "Bu seçenek işaretli değilse, bu yapılandırma atlanır.", @@ -148,11 +148,13 @@ OC.L10N.register( "(New password is sent as plain text to LDAP)" : "(Yeni parola LDAP üzerine düz metin olarak gönderildi)", "Special Attributes" : "Özel Öznitelikler", "Quota Field" : "Kota Alanı", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Kullanıcının varsayılan kotasının kullanılması için boş bırakın ya da bir LDAP/AD özniteliği belirtin.", "Quota Default" : "Varsayılan Kota", - "in bytes" : "bayt cinsinden", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Kota Alanına bir kota değeri yazılmamış olan LDAP kullanıcıları için kullanılacak varsayılan kota değerini yazın.", "Email Field" : "E-posta Alanı", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Kullanıcı varsayılan e-posta adresinin kullanılması için boş bırakın ya da bir LDAP/AD özniteliği belirtin.", "User Home Folder Naming Rule" : "Kullanıcı Ana Klasörünü Adlandırma Kuralı", - "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Kullanıcı adının kullanılması için boş bırakın (varsayılan). Ya da bir LDAP/AD özniteliği belirtin.", + "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Kullanıcı adının kullanılması için boş bırakın (varsayılan) ya da bir LDAP/AD özniteliği belirtin.", "Internal Username" : "İç Kullanıcı Adı", "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Varsayılan olarak, iç kullanıcı adı UUID özniteliğinden oluşturulur. Böylece kullanıcı adının eşsiz olması ve dönüştürülmesi gereken karakterler içermediğinden emin olunur. İç kullanıcı adında kısıtlaması yalnız şu karakterleri kullanılabilir: [ a-zA-Z0-9_.@- ]. Diğer karakterler ASCII karşılıklarına dönüştürülür ya da yok sayılır. Çakışmalarda ada bir sayı eklenir. İç kullanıcı adı bir kullanıcıyı içsel olarak belirlemeye yarar. Aynı zamanda kullanıcı ana klasörünün varsayılan adı olarak da kullanılır. İnternet adreslerinin, örneğin *DAV servislerinin bir parçasıdır. Bu seçenek ile varsayılan davranış değiştirilebilir. Varsayılan davranışı kullanmak için boş bırakın. Değişiklikler yalnız yeni eşleştirilecek (eklenecek) LDAP kullanıcılarını etkiler.", "Internal Username Attribute:" : "İç Kullanıcı Adı Özniteliği:", @@ -164,6 +166,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Kullanıcı adları, (üst) veri depolaması ve ataması için kullanılır. Kullanıcıları kesin olarak belirlemek ve algılamak için, her LDAP kullanıcısına bir iç kullanıcı verilir. Bu kullanıcı adı ile LDAP kullanıcısının eşleştirilmesi gerekir. Oluşturulan kullanıcı adı LDAP kullanıcısının UUID değeri ile eşleştirilir. Bunun yanında LDAP etkileşimini azaltmak için DN ön belleğe alınır ancak bu işlem kimlik belirleme için kullanılmaz. DN üzerinde yapılan değişiklikler aktarılır. İç kullanıcı her yerde kullanıldığından, bir eşleştirmeyi kaldırmak pek çok yerde kalıntılar bırakır. Eşleştirmeleri kaldırmak yalnız yapılandırmaya bağlı değildir, tüm LDAP yapılandırmalarını etkiler! Üretim ortamında eşleştirmeleri asla kaldırmayın, yalnız sınama ya da deney aşamalarında kullanın.", "Clear Username-LDAP User Mapping" : "Kullanıcı Adı-LDAP Kullanıcısı Eşleştirmesini Kaldır", "Clear Groupname-LDAP Group Mapping" : "Grup Adı-LDAP Grubu Eşleştirmesini Kaldır", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Ayarlar doğrulandı ancak birden çok kullanıcı bulundu. Yalnız ilk kullanıcı oturum açabilecek. Lütfen daha dar bir süzgeç seçin." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Ayarlar doğrulandı ancak birden çok kullanıcı bulundu. Yalnız ilk kullanıcı oturum açabilecek. Lütfen daha dar bir süzgeç seçin.", + "in bytes" : "bayt cinsinden" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/user_ldap/l10n/tr.json b/apps/user_ldap/l10n/tr.json index 8b77bc74fb5..0e7cc764814 100644 --- a/apps/user_ldap/l10n/tr.json +++ b/apps/user_ldap/l10n/tr.json @@ -107,7 +107,7 @@ "Expert" : "Uzman", "Advanced" : "Gelişmiş", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Uyarı:</b> user_ldap ve user_webdavauth uygulamaları uyumlu değil. Beklenmedik bir davranışla karşılaşabilirsiniz. Lütfen ikisinden birini devre dışı bırakmak için sistem yöneticinizle görüşün.", - "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Uyarı:</b> PHP LDAP modülü kurulu değil, arka uç çalışmayacak. Lütfen kurulumu için sistem yöneticinizle görüşün.", + "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Uyarı:</b> PHP LDAP modülü kurulmamış, arka uç çalışmayacak. Lütfen kurulumu için sistem yöneticinizle görüşün.", "Connection Settings" : "Bağlantı Ayarları", "Configuration Active" : "Yapılandırma Etkin", "When unchecked, this configuration will be skipped." : "Bu seçenek işaretli değilse, bu yapılandırma atlanır.", @@ -146,11 +146,13 @@ "(New password is sent as plain text to LDAP)" : "(Yeni parola LDAP üzerine düz metin olarak gönderildi)", "Special Attributes" : "Özel Öznitelikler", "Quota Field" : "Kota Alanı", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Kullanıcının varsayılan kotasının kullanılması için boş bırakın ya da bir LDAP/AD özniteliği belirtin.", "Quota Default" : "Varsayılan Kota", - "in bytes" : "bayt cinsinden", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Kota Alanına bir kota değeri yazılmamış olan LDAP kullanıcıları için kullanılacak varsayılan kota değerini yazın.", "Email Field" : "E-posta Alanı", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Kullanıcı varsayılan e-posta adresinin kullanılması için boş bırakın ya da bir LDAP/AD özniteliği belirtin.", "User Home Folder Naming Rule" : "Kullanıcı Ana Klasörünü Adlandırma Kuralı", - "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Kullanıcı adının kullanılması için boş bırakın (varsayılan). Ya da bir LDAP/AD özniteliği belirtin.", + "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Kullanıcı adının kullanılması için boş bırakın (varsayılan) ya da bir LDAP/AD özniteliği belirtin.", "Internal Username" : "İç Kullanıcı Adı", "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Varsayılan olarak, iç kullanıcı adı UUID özniteliğinden oluşturulur. Böylece kullanıcı adının eşsiz olması ve dönüştürülmesi gereken karakterler içermediğinden emin olunur. İç kullanıcı adında kısıtlaması yalnız şu karakterleri kullanılabilir: [ a-zA-Z0-9_.@- ]. Diğer karakterler ASCII karşılıklarına dönüştürülür ya da yok sayılır. Çakışmalarda ada bir sayı eklenir. İç kullanıcı adı bir kullanıcıyı içsel olarak belirlemeye yarar. Aynı zamanda kullanıcı ana klasörünün varsayılan adı olarak da kullanılır. İnternet adreslerinin, örneğin *DAV servislerinin bir parçasıdır. Bu seçenek ile varsayılan davranış değiştirilebilir. Varsayılan davranışı kullanmak için boş bırakın. Değişiklikler yalnız yeni eşleştirilecek (eklenecek) LDAP kullanıcılarını etkiler.", "Internal Username Attribute:" : "İç Kullanıcı Adı Özniteliği:", @@ -162,6 +164,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Kullanıcı adları, (üst) veri depolaması ve ataması için kullanılır. Kullanıcıları kesin olarak belirlemek ve algılamak için, her LDAP kullanıcısına bir iç kullanıcı verilir. Bu kullanıcı adı ile LDAP kullanıcısının eşleştirilmesi gerekir. Oluşturulan kullanıcı adı LDAP kullanıcısının UUID değeri ile eşleştirilir. Bunun yanında LDAP etkileşimini azaltmak için DN ön belleğe alınır ancak bu işlem kimlik belirleme için kullanılmaz. DN üzerinde yapılan değişiklikler aktarılır. İç kullanıcı her yerde kullanıldığından, bir eşleştirmeyi kaldırmak pek çok yerde kalıntılar bırakır. Eşleştirmeleri kaldırmak yalnız yapılandırmaya bağlı değildir, tüm LDAP yapılandırmalarını etkiler! Üretim ortamında eşleştirmeleri asla kaldırmayın, yalnız sınama ya da deney aşamalarında kullanın.", "Clear Username-LDAP User Mapping" : "Kullanıcı Adı-LDAP Kullanıcısı Eşleştirmesini Kaldır", "Clear Groupname-LDAP Group Mapping" : "Grup Adı-LDAP Grubu Eşleştirmesini Kaldır", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Ayarlar doğrulandı ancak birden çok kullanıcı bulundu. Yalnız ilk kullanıcı oturum açabilecek. Lütfen daha dar bir süzgeç seçin." + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "Ayarlar doğrulandı ancak birden çok kullanıcı bulundu. Yalnız ilk kullanıcı oturum açabilecek. Lütfen daha dar bir süzgeç seçin.", + "in bytes" : "bayt cinsinden" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/zh_CN.js b/apps/user_ldap/l10n/zh_CN.js index c1f3a4d46ca..7a44d945367 100644 --- a/apps/user_ldap/l10n/zh_CN.js +++ b/apps/user_ldap/l10n/zh_CN.js @@ -149,7 +149,6 @@ OC.L10N.register( "Special Attributes" : "特殊属性", "Quota Field" : "é…é¢å—段", "Quota Default" : "默认é…é¢", - "in bytes" : "å—节数", "Email Field" : "ç”µé‚®å—æ®µ", "User Home Folder Naming Rule" : "用户主目录命å规则", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "指定一个 LDAP/AD 属性。留空,则使用用户å称(默认)。", @@ -164,6 +163,7 @@ OC.L10N.register( "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "用户å用于å˜å‚¨å’Œåˆ†é…æ•°æ® (å…ƒ)。为了准确地识别和确认用户,æ¯ä¸ªç”¨æˆ·éƒ½æœ‰ä¸€ä¸ªå†…部用户å。这需è¦ä¸€ä¸ª ownCloud 用户å到 LDAP ç”¨æˆ·çš„æ˜ å°„ã€‚åˆ›å»ºçš„ç”¨æˆ·åè¢«æ˜ å°„åˆ° LDAP 用户的 UUID。æ¤å¤–,DN 也会被缓å˜ï¼Œä»¥å‡å°‘ LDAP 连接,但它ä¸ç”¨äºŽè¯†åˆ«ã€‚DN çš„å˜åŒ–会被监视到。内部用户åä¼šè¢«ç”¨äºŽæ‰€æœ‰åœ°æ–¹ã€‚æ¸…é™¤æ˜ å°„å°†å¯¼è‡´ä¸€ç‰‡æ··ä¹±ã€‚æ¸…é™¤æ˜ å°„ä¸æ˜¯å¸¸ç”¨çš„设置,它会影å“到所有的 LDAP é…ç½®ï¼åƒä¸‡ä¸è¦åœ¨æ£å¼çŽ¯å¢ƒä¸æ¸…é™¤æ˜ å°„ï¼Œåªæœ‰åœ¨æµ‹è¯•或试验时æ‰è¿™æ ·åšã€‚", "Clear Username-LDAP User Mapping" : "清除用户-LDAPç”¨æˆ·æ˜ å°„", "Clear Groupname-LDAP Group Mapping" : "清除组用户-LDAPçº§æ˜ å°„", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "设置已验è¯ï¼Œä½†åªæœ‰ä¸€ä¸ªç”¨æˆ·è¢«æ‰¾åˆ°ã€‚åªæœ‰ç¬¬ä¸€ä¸ªç”¨æˆ·èƒ½ç™»å½•。考虑一个更窄的ç›é€‰ã€‚" + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "设置已验è¯ï¼Œä½†åªæœ‰ä¸€ä¸ªç”¨æˆ·è¢«æ‰¾åˆ°ã€‚åªæœ‰ç¬¬ä¸€ä¸ªç”¨æˆ·èƒ½ç™»å½•。考虑一个更窄的ç›é€‰ã€‚", + "in bytes" : "å—节数" }, "nplurals=1; plural=0;"); diff --git a/apps/user_ldap/l10n/zh_CN.json b/apps/user_ldap/l10n/zh_CN.json index 4c0ae4ac69e..f3a1f987110 100644 --- a/apps/user_ldap/l10n/zh_CN.json +++ b/apps/user_ldap/l10n/zh_CN.json @@ -147,7 +147,6 @@ "Special Attributes" : "特殊属性", "Quota Field" : "é…é¢å—段", "Quota Default" : "默认é…é¢", - "in bytes" : "å—节数", "Email Field" : "ç”µé‚®å—æ®µ", "User Home Folder Naming Rule" : "用户主目录命å规则", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "指定一个 LDAP/AD 属性。留空,则使用用户å称(默认)。", @@ -162,6 +161,7 @@ "Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "用户å用于å˜å‚¨å’Œåˆ†é…æ•°æ® (å…ƒ)。为了准确地识别和确认用户,æ¯ä¸ªç”¨æˆ·éƒ½æœ‰ä¸€ä¸ªå†…部用户å。这需è¦ä¸€ä¸ª ownCloud 用户å到 LDAP ç”¨æˆ·çš„æ˜ å°„ã€‚åˆ›å»ºçš„ç”¨æˆ·åè¢«æ˜ å°„åˆ° LDAP 用户的 UUID。æ¤å¤–,DN 也会被缓å˜ï¼Œä»¥å‡å°‘ LDAP 连接,但它ä¸ç”¨äºŽè¯†åˆ«ã€‚DN çš„å˜åŒ–会被监视到。内部用户åä¼šè¢«ç”¨äºŽæ‰€æœ‰åœ°æ–¹ã€‚æ¸…é™¤æ˜ å°„å°†å¯¼è‡´ä¸€ç‰‡æ··ä¹±ã€‚æ¸…é™¤æ˜ å°„ä¸æ˜¯å¸¸ç”¨çš„设置,它会影å“到所有的 LDAP é…ç½®ï¼åƒä¸‡ä¸è¦åœ¨æ£å¼çŽ¯å¢ƒä¸æ¸…é™¤æ˜ å°„ï¼Œåªæœ‰åœ¨æµ‹è¯•或试验时æ‰è¿™æ ·åšã€‚", "Clear Username-LDAP User Mapping" : "清除用户-LDAPç”¨æˆ·æ˜ å°„", "Clear Groupname-LDAP Group Mapping" : "清除组用户-LDAPçº§æ˜ å°„", - "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "设置已验è¯ï¼Œä½†åªæœ‰ä¸€ä¸ªç”¨æˆ·è¢«æ‰¾åˆ°ã€‚åªæœ‰ç¬¬ä¸€ä¸ªç”¨æˆ·èƒ½ç™»å½•。考虑一个更窄的ç›é€‰ã€‚" + "Settings verified, but one user found. Only the first will be able to login. Consider a more narrow filter." : "设置已验è¯ï¼Œä½†åªæœ‰ä¸€ä¸ªç”¨æˆ·è¢«æ‰¾åˆ°ã€‚åªæœ‰ç¬¬ä¸€ä¸ªç”¨æˆ·èƒ½ç™»å½•。考虑一个更窄的ç›é€‰ã€‚", + "in bytes" : "å—节数" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/zh_TW.js b/apps/user_ldap/l10n/zh_TW.js index 22c381985dc..740af04004c 100644 --- a/apps/user_ldap/l10n/zh_TW.js +++ b/apps/user_ldap/l10n/zh_TW.js @@ -121,7 +121,6 @@ OC.L10N.register( "Special Attributes" : "特殊屬性", "Quota Field" : "é…顿¬„ä½", "Quota Default" : "é è¨é…é¡", - "in bytes" : "以ä½å…ƒçµ„為單ä½", "Email Field" : "電郵欄ä½", "User Home Folder Naming Rule" : "使用者家目錄的命åè¦å‰‡", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "使用者å稱請留白(é è¨)。若ä¸ç•™ç™½è«‹æŒ‡å®šä¸€å€‹LDAP/AD屬性。", @@ -129,6 +128,7 @@ OC.L10N.register( "Internal Username Attribute:" : "內部使用者å稱屬性:", "Override UUID detection" : "嵿¸¬è¦†å¯«UUID", "UUID Attribute for Users:" : "使用者的UUID值:", - "UUID Attribute for Groups:" : "群組的UUID值:" + "UUID Attribute for Groups:" : "群組的UUID值:", + "in bytes" : "以ä½å…ƒçµ„為單ä½" }, "nplurals=1; plural=0;"); diff --git a/apps/user_ldap/l10n/zh_TW.json b/apps/user_ldap/l10n/zh_TW.json index 16645dd706a..979fd95e989 100644 --- a/apps/user_ldap/l10n/zh_TW.json +++ b/apps/user_ldap/l10n/zh_TW.json @@ -119,7 +119,6 @@ "Special Attributes" : "特殊屬性", "Quota Field" : "é…顿¬„ä½", "Quota Default" : "é è¨é…é¡", - "in bytes" : "以ä½å…ƒçµ„為單ä½", "Email Field" : "電郵欄ä½", "User Home Folder Naming Rule" : "使用者家目錄的命åè¦å‰‡", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "使用者å稱請留白(é è¨)。若ä¸ç•™ç™½è«‹æŒ‡å®šä¸€å€‹LDAP/AD屬性。", @@ -127,6 +126,7 @@ "Internal Username Attribute:" : "內部使用者å稱屬性:", "Override UUID detection" : "嵿¸¬è¦†å¯«UUID", "UUID Attribute for Users:" : "使用者的UUID值:", - "UUID Attribute for Groups:" : "群組的UUID值:" + "UUID Attribute for Groups:" : "群組的UUID值:", + "in bytes" : "以ä½å…ƒçµ„為單ä½" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/user_ldap/lib/User/User.php b/apps/user_ldap/lib/User/User.php index e29b10616ca..5d4af1fd09c 100644 --- a/apps/user_ldap/lib/User/User.php +++ b/apps/user_ldap/lib/User/User.php @@ -169,6 +169,10 @@ class User { $attr = strtolower($this->connection->ldapQuotaAttribute); if(isset($ldapEntry[$attr])) { $this->updateQuota($ldapEntry[$attr][0]); + } else { + if ($this->connection->ldapQuotaDefault !== '') { + $this->updateQuota(); + } } unset($attr); @@ -455,6 +459,20 @@ class User { } /** + * Overall process goes as follow: + * 1. fetch the quota from LDAP and check if it's parseable with the "verifyQuotaValue" function + * 2. if the value can't be fetched, is empty or not parseable, use the default LDAP quota + * 3. if the default LDAP quota can't be parsed, use the ownCloud's default quota (use 'default') + * 4. check if the target user exists and set the quota for the user. + * + * In order to improve performance and prevent an unwanted extra LDAP call, the $valueFromLDAP + * parameter can be passed with the value of the attribute. This value will be considered as the + * quota for the user coming from the LDAP server (step 1 of the process) It can be useful to + * fetch all the user's attributes in one call and use the fetched values in this function. + * The expected value for that parameter is a string describing the quota for the user. Valid + * values are 'none' (unlimited), 'default' (the ownCloud's default quota), '1234' (quota in + * bytes), '1234 MB' (quota in MB - check the \OC_Helper::computerFileSize method for more info) + * * fetches the quota from LDAP and stores it as ownCloud user value * @param string $valueFromLDAP the quota attribute's value can be passed, * to save the readAttribute request @@ -464,23 +482,51 @@ class User { if($this->wasRefreshed('quota')) { return; } - //can be null - $quotaDefault = $this->connection->ldapQuotaDefault; - $quota = $quotaDefault !== '' ? $quotaDefault : null; - $quota = !is_null($valueFromLDAP) ? $valueFromLDAP : $quota; + $quota = false; if(is_null($valueFromLDAP)) { $quotaAttribute = $this->connection->ldapQuotaAttribute; if ($quotaAttribute !== '') { $aQuota = $this->access->readAttribute($this->dn, $quotaAttribute); if($aQuota && (count($aQuota) > 0)) { - $quota = $aQuota[0]; + if ($this->verifyQuotaValue($aQuota[0])) { + $quota = $aQuota[0]; + } else { + $this->log->log('not suitable LDAP quota found for user ' . $this->uid . ': [' . $aQuota[0] . ']', \OCP\Util::WARN); + } } } + } else { + if ($this->verifyQuotaValue($valueFromLDAP)) { + $quota = $valueFromLDAP; + } else { + $this->log->log('not suitable LDAP quota found for user ' . $this->uid . ': [' . $valueFromLDAP . ']', \OCP\Util::WARN); + } } - if(!is_null($quota)) { - $this->userManager->get($this->uid)->setQuota($quota); + + if ($quota === false) { + // quota not found using the LDAP attribute (or not parseable). Try the default quota + $defaultQuota = $this->connection->ldapQuotaDefault; + if ($this->verifyQuotaValue($defaultQuota)) { + $quota = $defaultQuota; + } } + + $targetUser = $this->userManager->get($this->uid); + if ($targetUser) { + if($quota !== false) { + $targetUser->setQuota($quota); + } else { + $this->log->log('not suitable default quota found for user ' . $this->uid . ': [' . $defaultQuota . ']', \OCP\Util::WARN); + $targetUser->setQuota('default'); + } + } else { + $this->log->log('trying to set a quota for user ' . $this->uid . ' but the user is missing', \OCP\Util::ERROR); + } + } + + private function verifyQuotaValue($quotaValue) { + return $quotaValue === 'none' || $quotaValue === 'default' || \OC_Helper::computerFileSize($quotaValue) !== false; } /** diff --git a/apps/user_ldap/tests/User/UserTest.php b/apps/user_ldap/tests/User/UserTest.php index c261a2abaa2..6961e39d9f0 100644 --- a/apps/user_ldap/tests/User/UserTest.php +++ b/apps/user_ldap/tests/User/UserTest.php @@ -211,15 +211,17 @@ class UserTest extends \Test\TestCase { $connection->expects($this->at(0)) ->method('__get') - ->with($this->equalTo('ldapQuotaDefault')) - ->will($this->returnValue('23 GB')); + ->with($this->equalTo('ldapQuotaAttribute')) + ->will($this->returnValue('myquota')); + /* Having a quota defined, the ldapQuotaDefault won't be used $connection->expects($this->at(1)) ->method('__get') - ->with($this->equalTo('ldapQuotaAttribute')) - ->will($this->returnValue('myquota')); + ->with($this->equalTo('ldapQuotaDefault')) + ->will($this->returnValue('23 GB')); + */ - $connection->expects($this->exactly(2)) + $connection->expects($this->exactly(1)) ->method('__get'); $access->expects($this->once()) @@ -247,7 +249,7 @@ class UserTest extends \Test\TestCase { $user->updateQuota(); } - public function testUpdateQuotaDefaultProvided() { + public function testUpdateQuotaToDefaultAllProvided() { list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) = $this->getTestInstances(); @@ -256,14 +258,94 @@ class UserTest extends \Test\TestCase { $connection->expects($this->at(0)) ->method('__get') - ->with($this->equalTo('ldapQuotaDefault')) - ->will($this->returnValue('25 GB')); + ->with($this->equalTo('ldapQuotaAttribute')) + ->will($this->returnValue('myquota')); - $connection->expects($this->at(1)) + $connection->expects($this->exactly(1)) + ->method('__get'); + + $access->expects($this->once()) + ->method('readAttribute') + ->with($this->equalTo('uid=alice,dc=foo,dc=bar'), + $this->equalTo('myquota')) + ->will($this->returnValue(array('default'))); + + $user = $this->createMock('\OCP\IUser'); + $user->expects($this->once()) + ->method('setQuota') + ->with('default'); + + $userMgr->expects($this->once()) + ->method('get') + ->with('alice') + ->will($this->returnValue($user)); + + $uid = 'alice'; + $dn = 'uid=alice,dc=foo,dc=bar'; + + $user = new User( + $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr); + + $user->updateQuota(); + } + + public function testUpdateQuotaToNoneAllProvided() { + list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) = + $this->getTestInstances(); + + list($access, $connection) = + $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc); + + $connection->expects($this->at(0)) ->method('__get') ->with($this->equalTo('ldapQuotaAttribute')) ->will($this->returnValue('myquota')); + $connection->expects($this->exactly(1)) + ->method('__get'); + + $access->expects($this->once()) + ->method('readAttribute') + ->with($this->equalTo('uid=alice,dc=foo,dc=bar'), + $this->equalTo('myquota')) + ->will($this->returnValue(array('none'))); + + $user = $this->createMock('\OCP\IUser'); + $user->expects($this->once()) + ->method('setQuota') + ->with('none'); + + $userMgr->expects($this->once()) + ->method('get') + ->with('alice') + ->will($this->returnValue($user)); + + $uid = 'alice'; + $dn = 'uid=alice,dc=foo,dc=bar'; + + $user = new User( + $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr); + + $user->updateQuota(); + } + + public function testUpdateQuotaDefaultProvided() { + list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) = + $this->getTestInstances(); + + list($access, $connection) = + $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc); + + $connection->expects($this->at(0)) + ->method('__get') + ->with($this->equalTo('ldapQuotaAttribute')) + ->will($this->returnValue('myquota')); + + $connection->expects($this->at(1)) + ->method('__get') + ->with($this->equalTo('ldapQuotaDefault')) + ->will($this->returnValue('25 GB')); + $connection->expects($this->exactly(2)) ->method('__get'); @@ -301,15 +383,17 @@ class UserTest extends \Test\TestCase { $connection->expects($this->at(0)) ->method('__get') - ->with($this->equalTo('ldapQuotaDefault')) - ->will($this->returnValue('')); + ->with($this->equalTo('ldapQuotaAttribute')) + ->will($this->returnValue('myquota')); + /* Having a quota set this won't be used $connection->expects($this->at(1)) ->method('__get') - ->with($this->equalTo('ldapQuotaAttribute')) - ->will($this->returnValue('myquota')); + ->with($this->equalTo('ldapQuotaDefault')) + ->will($this->returnValue('')); + */ - $connection->expects($this->exactly(2)) + $connection->expects($this->exactly(1)) ->method('__get'); $access->expects($this->once()) @@ -346,13 +430,13 @@ class UserTest extends \Test\TestCase { $connection->expects($this->at(0)) ->method('__get') - ->with($this->equalTo('ldapQuotaDefault')) - ->will($this->returnValue('')); + ->with($this->equalTo('ldapQuotaAttribute')) + ->will($this->returnValue('myquota')); $connection->expects($this->at(1)) ->method('__get') - ->with($this->equalTo('ldapQuotaAttribute')) - ->will($this->returnValue('myquota')); + ->with($this->equalTo('ldapQuotaDefault')) + ->will($this->returnValue('')); $connection->expects($this->exactly(2)) ->method('__get'); @@ -363,6 +447,16 @@ class UserTest extends \Test\TestCase { $this->equalTo('myquota')) ->will($this->returnValue(false)); + $user = $this->createMock('\OCP\IUser'); + $user->expects($this->once()) + ->method('setQuota') + ->with('default'); + + $userMgr->expects($this->once()) + ->method('get') + ->with('alice') + ->will($this->returnValue($user)); + $config->expects($this->never()) ->method('setUserValue'); @@ -384,17 +478,28 @@ class UserTest extends \Test\TestCase { $connection->expects($this->at(0)) ->method('__get') - ->with($this->equalTo('ldapQuotaDefault')) + ->with($this->equalTo('ldapQuotaAttribute')) ->will($this->returnValue('')); $connection->expects($this->at(1)) ->method('__get') - ->with($this->equalTo('ldapQuotaAttribute')) + ->with($this->equalTo('ldapQuotaDefault')) ->will($this->returnValue('')); $connection->expects($this->exactly(2)) ->method('__get'); + $user = $this->createMock('\OCP\IUser'); + $user->expects($this->once()) + ->method('setQuota') + ->with('default'); + + $userMgr->expects($this->once()) + ->method('get') + ->with('alice') + ->will($this->returnValue($user)); + + $access->expects($this->never()) ->method('readAttribute'); @@ -419,23 +524,206 @@ class UserTest extends \Test\TestCase { $readQuota = '19 GB'; + $connection->expects($this->never()) + ->method('__get') + ->with($this->equalTo('ldapQuotaDefault')); + + $access->expects($this->never()) + ->method('readAttribute'); + + $user = $this->createMock(IUser::class); + $user->expects($this->once()) + ->method('setQuota') + ->with($readQuota); + + $userMgr->expects($this->once()) + ->method('get') + ->with('alice') + ->will($this->returnValue($user)); + + $uid = 'alice'; + $dn = 'uid=alice,dc=foo,dc=bar'; + + $user = new User( + $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr); + + $user->updateQuota($readQuota); + } + + /** + * Unparseable quota will fallback to use the LDAP default + */ + public function testUpdateWrongQuotaAllProvided() { + list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) = + $this->getTestInstances(); + + list($access, $connection) = + $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc); + + $connection->expects($this->at(0)) + ->method('__get') + ->with($this->equalTo('ldapQuotaAttribute')) + ->will($this->returnValue('myquota')); + + $connection->expects($this->at(1)) + ->method('__get') + ->with($this->equalTo('ldapQuotaDefault')) + ->will($this->returnValue('23 GB')); + + $connection->expects($this->exactly(2)) + ->method('__get'); + + $access->expects($this->once()) + ->method('readAttribute') + ->with($this->equalTo('uid=alice,dc=foo,dc=bar'), + $this->equalTo('myquota')) + ->will($this->returnValue(array('42 GBwos'))); + + $user = $this->createMock('\OCP\IUser'); + $user->expects($this->once()) + ->method('setQuota') + ->with('23 GB'); + + $userMgr->expects($this->once()) + ->method('get') + ->with('alice') + ->will($this->returnValue($user)); + + $uid = 'alice'; + $dn = 'uid=alice,dc=foo,dc=bar'; + + $user = new User( + $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr); + + $user->updateQuota(); + } + + /** + * No user quota and wrong default will set 'default' as quota + */ + public function testUpdateWrongDefaultQuotaProvided() { + list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) = + $this->getTestInstances(); + + list($access, $connection) = + $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc); + + $connection->expects($this->at(0)) + ->method('__get') + ->with($this->equalTo('ldapQuotaAttribute')) + ->will($this->returnValue('myquota')); + + $connection->expects($this->at(1)) + ->method('__get') + ->with($this->equalTo('ldapQuotaDefault')) + ->will($this->returnValue('23 GBwowowo')); + + $connection->expects($this->exactly(2)) + ->method('__get'); + + $access->expects($this->once()) + ->method('readAttribute') + ->with($this->equalTo('uid=alice,dc=foo,dc=bar'), + $this->equalTo('myquota')) + ->will($this->returnValue(false)); + + $user = $this->createMock('\OCP\IUser'); + $user->expects($this->once()) + ->method('setQuota') + ->with('default'); + + $userMgr->expects($this->once()) + ->method('get') + ->with('alice') + ->will($this->returnValue($user)); + + $uid = 'alice'; + $dn = 'uid=alice,dc=foo,dc=bar'; + + $user = new User( + $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr); + + $user->updateQuota(); + } + + /** + * Wrong user quota and wrong default will set 'default' as quota + */ + public function testUpdateWrongQuotaAndDefaultAllProvided() { + list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) = + $this->getTestInstances(); + + list($access, $connection) = + $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc); + $connection->expects($this->at(0)) ->method('__get') + ->with($this->equalTo('ldapQuotaAttribute')) + ->will($this->returnValue('myquota')); + + $connection->expects($this->at(1)) + ->method('__get') ->with($this->equalTo('ldapQuotaDefault')) + ->will($this->returnValue('23 GBwowowo')); + + $connection->expects($this->exactly(2)) + ->method('__get'); + + $access->expects($this->once()) + ->method('readAttribute') + ->with($this->equalTo('uid=alice,dc=foo,dc=bar'), + $this->equalTo('myquota')) + ->will($this->returnValue(array('23 flush'))); + + $user = $this->createMock('\OCP\IUser'); + $user->expects($this->once()) + ->method('setQuota') + ->with('default'); + + $userMgr->expects($this->once()) + ->method('get') + ->with('alice') + ->will($this->returnValue($user)); + + $uid = 'alice'; + $dn = 'uid=alice,dc=foo,dc=bar'; + + $user = new User( + $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr); + + $user->updateQuota(); + } + + /** + * No quota attribute set and wrong default will set 'default' as quota + */ + public function testUpdateWrongDefaultQuotaNotProvided() { + list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) = + $this->getTestInstances(); + + list($access, $connection) = + $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc); + + $connection->expects($this->at(0)) + ->method('__get') + ->with($this->equalTo('ldapQuotaAttribute')) ->will($this->returnValue('')); - $connection->expects($this->once(1)) + $connection->expects($this->at(1)) ->method('__get') ->with($this->equalTo('ldapQuotaDefault')) - ->will($this->returnValue(null)); + ->will($this->returnValue('23 GBwowowo')); + + $connection->expects($this->exactly(2)) + ->method('__get'); $access->expects($this->never()) ->method('readAttribute'); - $user = $this->createMock(IUser::class); + $user = $this->createMock('\OCP\IUser'); $user->expects($this->once()) ->method('setQuota') - ->with($readQuota); + ->with('default'); $userMgr->expects($this->once()) ->method('get') @@ -448,7 +736,7 @@ class UserTest extends \Test\TestCase { $user = new User( $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr); - $user->updateQuota($readQuota); + $user->updateQuota(); } //the testUpdateAvatar series also implicitely tests getAvatarImage diff --git a/apps/workflowengine/l10n/es_MX.js b/apps/workflowengine/l10n/es_MX.js index 7d12d893af0..3d54e7915a8 100644 --- a/apps/workflowengine/l10n/es_MX.js +++ b/apps/workflowengine/l10n/es_MX.js @@ -14,12 +14,16 @@ OC.L10N.register( "less or equals" : "menor o igual", "greater or equals" : "mayor o igual", "greater" : "mayor", + "File system tag" : "Etiqueta del sistema de archivos", + "is tagged with" : "está etiquetado con", + "is not tagged with" : "no está etiquetado con", + "Select tag…" : "Seleccionar etiqueta...", "Request remote address" : "Solicitar dirección remota", "matches IPv4" : "coincide con IPv4", "does not match IPv4" : "no coincide con IPv4", "matches IPv6" : "coincide con IPv6", "does not match IPv6" : "no coincide con IPv6", - "Request time" : "Solicitar tiempo", + "Request time" : "Tiempo de la solicitud", "between" : "entre", "not between" : "no entre", "Start" : "Inicio", @@ -27,19 +31,23 @@ OC.L10N.register( "Select timezone…" : "Seleccionar zona horaria...", "Request URL" : "Solicitar URL", "Predefined URLs" : "URLs predefinidos", + "Files WebDAV" : "Archivos WebDAV", "Request user agent" : "Solicitar agente de usuario", "Sync clients" : "Sincronizar clientes", "Android client" : "Cliente Android", "iOS client" : "Cliente iOS", "Desktop client" : "Cliente de escritorio", + "User group membership" : "Membresia al grupo de usuarios", "is member of" : "es miembro de", "is not member of" : "no es miembro de", "The given operator is invalid" : "El operador indicado es inválido", "The given regular expression is invalid" : "La expresión regular indicada es inválida", "The given file size is invalid" : "El tamaño de archivo indicado es inválido", + "The given tag id is invalid" : "El id de la etiqueta es inválido", "The given IP range is invalid" : "El rango de IP's es inválido", "The given IP range is not valid for IPv4" : "El rango de IPs dado no es válido para IPv4", "The given IP range is not valid for IPv6" : "El rango de IPs dado no es válido para IPv6", + "The given time span is invalid" : "El espacio de tiempo dado es inválido", "The given start time is invalid" : "El tiempo inicial dado no es válido", "The given end time is invalid" : "El tiempo final dado no es válido", "The given group does not exist" : "El grupo dado no existe", diff --git a/apps/workflowengine/l10n/es_MX.json b/apps/workflowengine/l10n/es_MX.json index c1dcb6091f2..5003c44aeeb 100644 --- a/apps/workflowengine/l10n/es_MX.json +++ b/apps/workflowengine/l10n/es_MX.json @@ -12,12 +12,16 @@ "less or equals" : "menor o igual", "greater or equals" : "mayor o igual", "greater" : "mayor", + "File system tag" : "Etiqueta del sistema de archivos", + "is tagged with" : "está etiquetado con", + "is not tagged with" : "no está etiquetado con", + "Select tag…" : "Seleccionar etiqueta...", "Request remote address" : "Solicitar dirección remota", "matches IPv4" : "coincide con IPv4", "does not match IPv4" : "no coincide con IPv4", "matches IPv6" : "coincide con IPv6", "does not match IPv6" : "no coincide con IPv6", - "Request time" : "Solicitar tiempo", + "Request time" : "Tiempo de la solicitud", "between" : "entre", "not between" : "no entre", "Start" : "Inicio", @@ -25,19 +29,23 @@ "Select timezone…" : "Seleccionar zona horaria...", "Request URL" : "Solicitar URL", "Predefined URLs" : "URLs predefinidos", + "Files WebDAV" : "Archivos WebDAV", "Request user agent" : "Solicitar agente de usuario", "Sync clients" : "Sincronizar clientes", "Android client" : "Cliente Android", "iOS client" : "Cliente iOS", "Desktop client" : "Cliente de escritorio", + "User group membership" : "Membresia al grupo de usuarios", "is member of" : "es miembro de", "is not member of" : "no es miembro de", "The given operator is invalid" : "El operador indicado es inválido", "The given regular expression is invalid" : "La expresión regular indicada es inválida", "The given file size is invalid" : "El tamaño de archivo indicado es inválido", + "The given tag id is invalid" : "El id de la etiqueta es inválido", "The given IP range is invalid" : "El rango de IP's es inválido", "The given IP range is not valid for IPv4" : "El rango de IPs dado no es válido para IPv4", "The given IP range is not valid for IPv6" : "El rango de IPs dado no es válido para IPv6", + "The given time span is invalid" : "El espacio de tiempo dado es inválido", "The given start time is invalid" : "El tiempo inicial dado no es válido", "The given end time is invalid" : "El tiempo final dado no es válido", "The given group does not exist" : "El grupo dado no existe", diff --git a/apps/workflowengine/lib/Check/FileSystemTags.php b/apps/workflowengine/lib/Check/FileSystemTags.php index e9b5a945967..4a2b87fd53e 100644 --- a/apps/workflowengine/lib/Check/FileSystemTags.php +++ b/apps/workflowengine/lib/Check/FileSystemTags.php @@ -23,6 +23,7 @@ namespace OCA\WorkflowEngine\Check; use OCP\Files\Cache\ICache; +use OCP\Files\IHomeStorage; use OCP\Files\Storage\IStorage; use OCP\IL10N; use OCP\SystemTag\ISystemTagManager; @@ -108,7 +109,7 @@ class FileSystemTags implements ICheck { */ protected function getSystemTags() { $cache = $this->storage->getCache(); - $fileIds = $this->getFileIds($cache, $this->path); + $fileIds = $this->getFileIds($cache, $this->path, !$this->storage->instanceOfStorage(IHomeStorage::class)); $systemTags = []; foreach ($fileIds as $i => $fileId) { @@ -135,17 +136,19 @@ class FileSystemTags implements ICheck { * Get the file ids of the given path and its parents * @param ICache $cache * @param string $path + * @param bool $isExternalStorage * @return int[] */ - protected function getFileIds(ICache $cache, $path) { + protected function getFileIds(ICache $cache, $path, $isExternalStorage) { $cacheId = $cache->getNumericStorageId(); if (isset($this->fileIds[$cacheId][$path])) { return $this->fileIds[$cacheId][$path]; } - if ($path !== dirname($path)) { - $parentIds = $this->getFileIds($cache, dirname($path)); - } else { + $parentIds = []; + if ($path !== $this->dirname($path)) { + $parentIds = $this->getFileIds($cache, $this->dirname($path), $isExternalStorage); + } else if (!$isExternalStorage) { return []; } @@ -158,4 +161,9 @@ class FileSystemTags implements ICheck { return $parentIds; } + + protected function dirname($path) { + $dir = dirname($path); + return $dir === '.' ? '' : $dir; + } } diff --git a/build/integration/features/auth.feature b/build/integration/features/auth.feature index a3af28f25c8..b9f423a9e93 100644 --- a/build/integration/features/auth.feature +++ b/build/integration/features/auth.feature @@ -2,11 +2,11 @@ Feature: auth Background: Given user "user0" exists - Given a new client token is used - + Given a new restricted client token is added + Given a new unrestricted client token is added + Given the cookie jar is reset # FILES APP - Scenario: access files app anonymously When requesting "/index.php/apps/files" with "GET" Then the HTTP status code should be "401" @@ -15,12 +15,20 @@ Feature: auth When requesting "/index.php/apps/files" with "GET" using basic auth Then the HTTP status code should be "200" - Scenario: access files app with basic token auth - When requesting "/index.php/apps/files" with "GET" using basic token auth + Scenario: access files app with unrestricted basic token auth + When requesting "/index.php/apps/files" with "GET" using unrestricted basic token auth + Then the HTTP status code should be "200" + Then requesting "/remote.php/files/welcome.txt" with "GET" using browser session + Then the HTTP status code should be "200" + + Scenario: access files app with restricted basic token auth + When requesting "/index.php/apps/files" with "GET" using restricted basic token auth Then the HTTP status code should be "200" + Then requesting "/remote.php/files/welcome.txt" with "GET" using browser session + Then the HTTP status code should be "404" - Scenario: access files app with a client token - When requesting "/index.php/apps/files" with "GET" using a client token + Scenario: access files app with an unrestricted client token + When requesting "/index.php/apps/files" with "GET" using an unrestricted client token Then the HTTP status code should be "200" Scenario: access files app with browser session @@ -28,9 +36,7 @@ Feature: auth When requesting "/index.php/apps/files" with "GET" using browser session Then the HTTP status code should be "200" - # WebDAV - Scenario: using WebDAV anonymously When requesting "/remote.php/webdav" with "PROPFIND" Then the HTTP status code should be "401" @@ -39,23 +45,20 @@ Feature: auth When requesting "/remote.php/webdav" with "PROPFIND" using basic auth Then the HTTP status code should be "207" - Scenario: using WebDAV with token auth - When requesting "/remote.php/webdav" with "PROPFIND" using basic token auth + Scenario: using WebDAV with unrestricted basic token auth + When requesting "/remote.php/webdav" with "PROPFIND" using unrestricted basic token auth Then the HTTP status code should be "207" - # DAV token auth is not possible yet - #Scenario: using WebDAV with a client token - # When requesting "/remote.php/webdav" with "PROPFIND" using a client token - # Then the HTTP status code should be "207" + Scenario: using WebDAV with restricted basic token auth + When requesting "/remote.php/webdav" with "PROPFIND" using restricted basic token auth + Then the HTTP status code should be "207" Scenario: using WebDAV with browser session Given a new browser session is started When requesting "/remote.php/webdav" with "PROPFIND" using browser session Then the HTTP status code should be "207" - # OCS - Scenario: using OCS anonymously When requesting "/ocs/v1.php/apps/files_sharing/api/v1/remote_shares" with "GET" Then the OCS status code should be "997" @@ -65,11 +68,11 @@ Feature: auth Then the OCS status code should be "100" Scenario: using OCS with token auth - When requesting "/ocs/v1.php/apps/files_sharing/api/v1/remote_shares" with "GET" using basic token auth + When requesting "/ocs/v1.php/apps/files_sharing/api/v1/remote_shares" with "GET" using unrestricted basic token auth Then the OCS status code should be "100" - Scenario: using OCS with client token - When requesting "/ocs/v1.php/apps/files_sharing/api/v1/remote_shares" with "GET" using a client token + Scenario: using OCS with an unrestricted client token + When requesting "/ocs/v1.php/apps/files_sharing/api/v1/remote_shares" with "GET" using an unrestricted client token Then the OCS status code should be "100" Scenario: using OCS with browser session @@ -84,3 +87,19 @@ Feature: auth And requesting "/index.php/apps/files" with "GET" using browser session Then the HTTP status code should be "200" + # AUTH TOKENS + Scenario: Creating an auth token with regular auth token should not work + When requesting "/index.php/apps/files" with "GET" using restricted basic token auth + Then the HTTP status code should be "200" + When the CSRF token is extracted from the previous response + When a new unrestricted client token is added using restricted basic token auth + Then the HTTP status code should be "503" + + Scenario: Creating a restricted auth token with regular login should work + When a new restricted client token is added + Then the HTTP status code should be "200" + + Scenario: Creating an unrestricted auth token with regular login should work + When a new unrestricted client token is added + Then the HTTP status code should be "200" + diff --git a/build/integration/features/bootstrap/Auth.php b/build/integration/features/bootstrap/Auth.php index 46bb94a2b20..fd1b2e05a80 100644 --- a/build/integration/features/bootstrap/Auth.php +++ b/build/integration/features/bootstrap/Auth.php @@ -1,7 +1,5 @@ <?php - /** - * * @author Christoph Wurst <christoph@owncloud.com> * @@ -21,19 +19,28 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ + use GuzzleHttp\Client; use GuzzleHttp\Exception\ClientException; +use GuzzleHttp\Cookie\CookieJar; require __DIR__ . '/../../vendor/autoload.php'; trait Auth { - - private $clientToken; + /** @var string */ + private $unrestrictedClientToken; + /** @var string */ + private $restrictedClientToken; + /** @var Client */ + private $client; + /** @var string */ + private $responseXml; /** @BeforeScenario */ public function setUpScenario() { $this->client = new Client(); $this->responseXml = ''; + $this->cookieJar = new CookieJar(); } /** @@ -65,15 +72,28 @@ trait Auth { } /** - * @Given a new client token is used + * @When the CSRF token is extracted from the previous response + */ + public function theCsrfTokenIsExtractedFromThePreviousResponse() { + $this->requestToken = substr(preg_replace('/(.*)data-requesttoken="(.*)">(.*)/sm', '\2', $this->response->getBody()->getContents()), 0, 89); + } + + /** + * @param bool $loginViaWeb + * @return object */ - public function aNewClientTokenIsUsed() { - $this->loggingInUsingWebAs('user0'); + private function createClientToken($loginViaWeb = true) { + if($loginViaWeb) { + $this->loggingInUsingWebAs('user0'); + } $fullUrl = substr($this->baseUrl, 0, -5) . '/index.php/settings/personal/authtokens'; $client = new Client(); $options = [ - 'auth' => ['user0', '123456'], + 'auth' => [ + 'user0', + $loginViaWeb ? '123456' : $this->restrictedClientToken, + ], 'body' => [ 'requesttoken' => $this->requestToken, 'name' => md5(microtime()), @@ -81,34 +101,107 @@ trait Auth { 'cookies' => $this->cookieJar, ]; - $resp = $client->send($client->createRequest('POST', $fullUrl, $options)); + try { + $this->response = $client->send($client->createRequest('POST', $fullUrl, $options)); + } catch (\GuzzleHttp\Exception\ServerException $e) { + $this->response = $e->getResponse(); + } + return json_decode($this->response->getBody()->getContents()); + } - $this->clientToken = json_decode($resp->getBody()->getContents())->token; + /** + * @Given a new restricted client token is added + */ + public function aNewRestrictedClientTokenIsAdded() { + $tokenObj = $this->createClientToken(); + $newCreatedTokenId = $tokenObj->deviceToken->id; + $fullUrl = substr($this->baseUrl, 0, -5) . '/index.php/settings/personal/authtokens/' . $newCreatedTokenId; + $client = new Client(); + $options = [ + 'auth' => ['user0', '123456'], + 'headers' => [ + 'requesttoken' => $this->requestToken, + ], + 'json' => [ + 'scope' => [ + 'filesystem' => false, + ], + ], + 'cookies' => $this->cookieJar, + ]; + $this->response = $client->send($client->createRequest('PUT', $fullUrl, $options)); + $this->restrictedClientToken = $tokenObj->token; + } + + /** + * @Given a new unrestricted client token is added + */ + public function aNewUnrestrictedClientTokenIsAdded() { + $this->unrestrictedClientToken = $this->createClientToken()->token; + } + + /** + * @When a new unrestricted client token is added using restricted basic token auth + */ + public function aNewUnrestrictedClientTokenIsAddedUsingRestrictedBasicTokenAuth() { + $this->createClientToken(false); } /** * @When requesting :url with :method using basic auth + * + * @param string $url + * @param string $method */ public function requestingWithBasicAuth($url, $method) { $this->sendRequest($url, $method, 'basic ' . base64_encode('user0:123456')); } /** - * @When requesting :url with :method using basic token auth + * @When requesting :url with :method using unrestricted basic token auth + * + * @param string $url + * @param string $method + */ + public function requestingWithUnrestrictedBasicTokenAuth($url, $method) { + $this->sendRequest($url, $method, 'basic ' . base64_encode('user0:' . $this->unrestrictedClientToken), true); + } + + /** + * @When requesting :url with :method using restricted basic token auth + * + * @param string $url + * @param string $method + */ + public function requestingWithRestrictedBasicTokenAuth($url, $method) { + $this->sendRequest($url, $method, 'basic ' . base64_encode('user0:' . $this->restrictedClientToken), true); + } + + /** + * @When requesting :url with :method using an unrestricted client token + * + * @param string $url + * @param string $method */ - public function requestingWithBasicTokenAuth($url, $method) { - $this->sendRequest($url, $method, 'basic ' . base64_encode('user0:' . $this->clientToken)); + public function requestingWithUsingAnUnrestrictedClientToken($url, $method) { + $this->sendRequest($url, $method, 'token ' . $this->unrestrictedClientToken); } /** - * @When requesting :url with :method using a client token + * @When requesting :url with :method using a restricted client token + * + * @param string $url + * @param string $method */ - public function requestingWithUsingAClientToken($url, $method) { - $this->sendRequest($url, $method, 'token ' . $this->clientToken); + public function requestingWithUsingARestrictedClientToken($url, $method) { + $this->sendRequest($url, $method, 'token ' . $this->restrictedClientToken); } /** * @When requesting :url with :method using browser session + * + * @param string $url + * @param string $method */ public function requestingWithBrowserSession($url, $method) { $this->sendRequest($url, $method, null, true); @@ -116,6 +209,8 @@ trait Auth { /** * @Given a new browser session is started + * + * @param bool $remember */ public function aNewBrowserSessionIsStarted($remember = false) { $loginUrl = substr($this->baseUrl, 0, -5) . '/login'; @@ -149,6 +244,14 @@ trait Auth { $this->aNewBrowserSessionIsStarted(true); } + + /** + * @Given the cookie jar is reset + */ + public function theCookieJarIsReset() { + $this->cookieJar = new CookieJar(); + } + /** * @When the session cookie expires */ diff --git a/build/integration/features/bootstrap/CalDavContext.php b/build/integration/features/bootstrap/CalDavContext.php index 4843dde135a..8c0348f37a8 100644 --- a/build/integration/features/bootstrap/CalDavContext.php +++ b/build/integration/features/bootstrap/CalDavContext.php @@ -89,7 +89,7 @@ class CalDavContext implements \Behat\Behat\Context\Context { 'auth' => [ $user, $password, - ] + ], ] ); $this->response = $this->client->send($request); @@ -184,4 +184,51 @@ class CalDavContext implements \Behat\Behat\Context\Context { $this->response = $this->client->send($request); } + /** + * @Then :user publicly shares the calendar named :name + * + * @param string $user + * @param string $name + */ + public function publiclySharesTheCalendarNamed($user, $name) { + $davUrl = $this->baseUrl . '/remote.php/dav/calendars/'.$user.'/'.$name; + $password = ($user === 'admin') ? 'admin' : '123456'; + + $request = $this->client->createRequest( + 'POST', + $davUrl, + [ + 'body' => '<cs:publish-calendar xmlns:cs="http://calendarserver.org/ns/"/>', + 'auth' => [ + $user, + $password, + ], + 'headers' => [ + 'Content-Type' => 'application/xml; charset=UTF-8', + ], + ] + ); + + $this->response = $this->client->send($request); + } + + /** + * @Then There should be :amount calendars in the response body + * + * @param string $amount + */ + public function t($amount) { + $jsonEncoded = json_encode($this->responseXml); + $arrayElement = json_decode($jsonEncoded, true); + $actual = count($arrayElement['value']) - 1; + if($actual !== (int)$amount) { + throw new InvalidArgumentException( + sprintf( + 'Expected %s got %s', + $amount, + $actual + ) + ); + } + } } diff --git a/build/integration/features/caldav.feature b/build/integration/features/caldav.feature index 5c3983fc40b..2bddbc3e9e4 100644 --- a/build/integration/features/caldav.feature +++ b/build/integration/features/caldav.feature @@ -50,3 +50,12 @@ Feature: caldav Then The CalDAV HTTP status code should be "201" And "admin" requests calendar "admin/MyCalendar" on the endpoint "/remote.php/dav/calendars/" Then The CalDAV HTTP status code should be "207" + + Scenario: Propfind on public calendar endpoint without calendars + When "admin" creates a calendar named "MyCalendar" + Then The CalDAV HTTP status code should be "201" + And "admin" publicly shares the calendar named "MyCalendar" + Then The CalDAV HTTP status code should be "202" + When "admin" requests calendar "/" on the endpoint "/remote.php/dav/public-calendars" + Then The CalDAV HTTP status code should be "207" + Then There should be "0" calendars in the response body
\ No newline at end of file diff --git a/build/integration/run.sh b/build/integration/run.sh index 282a4303395..45c2bcdaf2b 100755 --- a/build/integration/run.sh +++ b/build/integration/run.sh @@ -44,7 +44,7 @@ if [ "$INSTALLED" == "true" ]; then $OCC app:enable files_external mkdir -p work/local_storage - OUTPUT_CREATE_STORAGE=`$OCC files_external:create local_storage local null::null -c datadir=./build/integration/work/local_storage` + OUTPUT_CREATE_STORAGE=`$OCC files_external:create local_storage local null::null -c datadir=$PWD/work/local_storage` ID_STORAGE=`echo $OUTPUT_CREATE_STORAGE | tr ' ' '\n' | tail -n1` diff --git a/build/mergejs.php b/build/mergejs.php index 5ffca9d496f..85820c19795 100644 --- a/build/mergejs.php +++ b/build/mergejs.php @@ -31,5 +31,6 @@ $vendors = $data['vendor']; $vendorjs = fopen(__DIR__.'/../core/vendor/core.js', 'w'); foreach($vendors as $vendor) { fwrite($vendorjs, file_get_contents(__DIR__.'/../core/vendor/'.$vendor)); + fwrite($vendorjs, PHP_EOL); } fclose($vendorjs); diff --git a/core/Command/Db/ConvertType.php b/core/Command/Db/ConvertType.php index a8969251bab..4ca7899fec6 100644 --- a/core/Command/Db/ConvertType.php +++ b/core/Command/Db/ConvertType.php @@ -28,6 +28,7 @@ namespace OC\Core\Command\Db; +use OCP\DB\QueryBuilder\IQueryBuilder; use \OCP\IConfig; use OC\DB\Connection; use OC\DB\ConnectionFactory; @@ -54,6 +55,9 @@ class ConvertType extends Command implements CompletionAwareInterface { */ protected $connectionFactory; + /** @var array */ + protected $columnTypes; + /** * @param \OCP\IConfig $config * @param \OC\DB\ConnectionFactory $connectionFactory @@ -304,7 +308,12 @@ class ConvertType extends Command implements CompletionAwareInterface { } foreach ($row as $key => $value) { - $insertQuery->setParameter($key, $value); + $type = $this->getColumnType($table, $key); + if ($type !== false) { + $insertQuery->setParameter($key, $value, $type); + } else { + $insertQuery->setParameter($key, $value); + } } $insertQuery->execute(); } @@ -313,6 +322,26 @@ class ConvertType extends Command implements CompletionAwareInterface { $progress->finish(); } + protected function getColumnType($table, $column) { + if (isset($this->columnTypes[$table][$column])) { + return $this->columnTypes[$table][$column]; + } + $prefix = $this->config->getSystemValue('dbtableprefix', 'oc_'); + + $this->columnTypes[$table][$column] = false; + + if ($table === $prefix . 'cards' && $column === 'carddata') { + $this->columnTypes[$table][$column] = IQueryBuilder::PARAM_LOB; + } else if ($column === 'calendardata') { + if ($table === $prefix . 'calendarobjects' || + $table === $prefix . 'schedulingobjects') { + $this->columnTypes[$table][$column] = IQueryBuilder::PARAM_LOB; + } + } + + return $this->columnTypes[$table][$column]; + } + protected function convertDB(Connection $fromDB, Connection $toDB, array $tables, InputInterface $input, OutputInterface $output) { $this->config->setSystemValue('maintenance', true); try { diff --git a/core/Controller/CssController.php b/core/Controller/CssController.php index b467d386f98..57197e9999e 100644 --- a/core/Controller/CssController.php +++ b/core/Controller/CssController.php @@ -95,7 +95,7 @@ class CssController extends Controller { if ($encoding !== null && strpos($encoding, 'gzip') !== false) { try { $gzip = true; - return $folder->getFile($fileName . '.gz'); + return $folder->getFile($fileName . '.gzip'); # Safari doesn't like .gz } catch (NotFoundException $e) { // continue } diff --git a/core/Controller/JsController.php b/core/Controller/JsController.php index 0b50abc158a..c7c9dea9101 100644 --- a/core/Controller/JsController.php +++ b/core/Controller/JsController.php @@ -96,7 +96,7 @@ class JsController extends Controller { if ($encoding !== null && strpos($encoding, 'gzip') !== false) { try { $gzip = true; - return $folder->getFile($fileName . '.gz'); + return $folder->getFile($fileName . '.gzip'); # Safari doesn't like .gz } catch (NotFoundException $e) { // continue } diff --git a/core/Controller/LostController.php b/core/Controller/LostController.php index 8a8a50343ed..4de1cf5eb00 100644 --- a/core/Controller/LostController.php +++ b/core/Controller/LostController.php @@ -39,6 +39,7 @@ use \OCP\IURLGenerator; use \OCP\IRequest; use \OCP\IL10N; use \OCP\IConfig; +use OCP\IUser; use OCP\IUserManager; use OCP\Mail\IMailer; use OCP\Security\ICrypto; @@ -253,16 +254,12 @@ class LostController extends Controller { } /** - * @param string $user + * @param string $input * @throws \Exception */ - protected function sendEmail($user) { - if (!$this->userManager->userExists($user)) { - throw new \Exception($this->l10n->t('Couldn\'t send reset email. Please make sure your username is correct.')); - } - - $userObject = $this->userManager->get($user); - $email = $userObject->getEMailAddress(); + protected function sendEmail($input) { + $user = $this->findUserByIdOrMail($input); + $email = $user->getEMailAddress(); if (empty($email)) { throw new \Exception( @@ -281,11 +278,10 @@ class LostController extends Controller { ISecureRandom::CHAR_UPPER ); $tokenValue = $this->timeFactory->getTime() .':'. $token; - $mailAddress = !is_null($userObject->getEMailAddress()) ? $userObject->getEMailAddress() : ''; - $encryptedValue = $this->crypto->encrypt($tokenValue, $mailAddress.$this->config->getSystemValue('secret')); - $this->config->setUserValue($user, 'core', 'lostpassword', $encryptedValue); + $encryptedValue = $this->crypto->encrypt($tokenValue, $email . $this->config->getSystemValue('secret')); + $this->config->setUserValue($user->getUID(), 'core', 'lostpassword', $encryptedValue); - $link = $this->urlGenerator->linkToRouteAbsolute('core.lost.resetform', array('userId' => $user, 'token' => $token)); + $link = $this->urlGenerator->linkToRouteAbsolute('core.lost.resetform', array('userId' => $user->getUID(), 'token' => $token)); $tmpl = new \OC_Template('core', 'lostpassword/email'); $tmpl->assign('link', $link); @@ -293,7 +289,7 @@ class LostController extends Controller { try { $message = $this->mailer->createMessage(); - $message->setTo([$email => $user]); + $message->setTo([$email => $user->getUID()]); $message->setSubject($this->l10n->t('%s password reset', [$this->defaults->getName()])); $message->setPlainBody($msg); $message->setFrom([$this->from => $this->defaults->getName()]); @@ -305,4 +301,21 @@ class LostController extends Controller { } } + /** + * @param string $input + * @return IUser + * @throws \Exception + */ + protected function findUserByIdOrMail($input) { + $user = $this->userManager->get($input); + if ($user instanceof IUser) { + return $user; + } + $users = $this->userManager->getByEmail($input); + if (count($users) === 1) { + return $users[0]; + } + + throw new \InvalidArgumentException($this->l10n->t('Couldn\'t send reset email. Please make sure your username is correct.')); + } } diff --git a/core/css/apps.scss b/core/css/apps.scss index 898a18ae9c9..0c31e5bae44 100644 --- a/core/css/apps.scss +++ b/core/css/apps.scss @@ -16,7 +16,7 @@ * */ -/* HEADING STYLING ---------------------------------------------------------- */ +/* BASE STYLING ---------------------------------------------------------- */ h2 { font-size: 20px; @@ -24,11 +24,13 @@ h2 { margin-bottom: 12px; line-height: 140%; } + h3 { font-size: 15px; font-weight: 300; margin: 12px 0; } + /* do not use italic typeface style, instead lighter color */ em { font-style: normal; @@ -36,6 +38,33 @@ em { opacity: .5; } +dl { + padding: 12px 0; +} + +dt, +dd { + display: inline-block; + padding: 12px; + padding-left: 0; +} + +dt { + width: 130px; + white-space: nowrap; + text-align: right; +} + +kbd { + padding: 4px 10px; + border: 1px solid #ccc; + box-shadow: 0 1px 0 rgba(0, 0, 0, .2); + border-radius: 3px; + display: inline-block; + white-space: nowrap; +} + + /* APP STYLING -------------------------------------------------------------- */ #app { diff --git a/core/css/header.scss b/core/css/header.scss index 3fcb8a2260c..df137d0fc90 100644 --- a/core/css/header.scss +++ b/core/css/header.scss @@ -344,6 +344,7 @@ nav { /* User menu on the right */ #expand { + position: relative; display: flex; align-items: center; padding: 7px 20px 6px 10px; @@ -384,10 +385,32 @@ nav { #expandDisplayName { padding: 8px; - opacity: .7; + opacity: .6; } } +/* full opacity for gear icon if active */ +#body-settings #expandDisplayName { + opacity: 1; +} + +/* show triangle below user menu if active */ +#body-settings #expand:before { + content: ' '; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + border: 0 solid transparent; + border-bottom-color: white; + border-width: 10px; + transform: translateX(-50%); + left: 26px; + bottom: 0; + z-index: 100; + display: block; +} + #expanddiv { position: absolute; right: 13px; @@ -439,6 +462,7 @@ nav { vertical-align: top !important; height: 20px; padding: 12px; + cursor: pointer; a { opacity: 0.6; diff --git a/core/css/inputs.scss b/core/css/inputs.scss index 37405172d3a..13a164e13f2 100644 --- a/core/css/inputs.scss +++ b/core/css/inputs.scss @@ -1,12 +1,12 @@ /** * @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com> * @copyright Copyright (c) 2016, Morris Jobke <hey@morrisjobke.de> - * @copyright Copyright (c) 2016, Jan-Christoph Borchardt <hey@jancborchardt.net> * @copyright Copyright (c) 2016, Joas Schilling <coding@schilljs.com> * @copyright Copyright (c) 2016, Julius Haertl <jus@bitgrid.net> * @copyright Copyright (c) 2016, jowi <sjw@gmx.ch> * @copyright Copyright (c) 2015, Joas Schilling <nickvergessen@owncloud.com> * @copyright Copyright (c) 2015, Hendrik Leppelsack <hendrik@leppelsack.de> + * @copyright Copyright (c) 2014-2017, Jan-Christoph Borchardt <hey@jancborchardt.net> * * @license GNU AGPL version 3 or any later version * @@ -301,6 +301,21 @@ input { } } } +#app-settings-content { + input { + &[type='checkbox'], + &[type='radio'] { + &.radio, + &.checkbox { + + label { + display: inline-block; + width: 100%; + padding: 5px 0; + } + } + } + } +} /* Select2 overriding. Merged to core with vendor stylesheet */ .select2-drop { diff --git a/core/css/styles.scss b/core/css/styles.scss index c9ba8695032..0fd4b90876c 100644 --- a/core/css/styles.scss +++ b/core/css/styles.scss @@ -187,7 +187,7 @@ body { -webkit-transition: all 100ms; transition: all 100ms; -ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=70)'; - opacity: .7; + opacity: .6; &:focus, &:active, &:valid { color: $color-primary-text; width: 155px; diff --git a/core/js/core.json b/core/js/core.json index 034bb7133d3..e03d4cce190 100644 --- a/core/js/core.json +++ b/core/js/core.json @@ -11,8 +11,8 @@ "backbone/backbone.js", "es6-promise/dist/es6-promise.js", "davclient.js/lib/client.js", - "clipboard/dist/clipboard.js", - "autosize/dist/autosize.js", + "clipboard/dist/clipboard.min.js", + "autosize/dist/autosize.min.js", "DOMPurify/dist/purify.min.js", "snapjs/dist/latest/snap.js", "select2/select2.js" diff --git a/core/js/jquery.avatar.js b/core/js/jquery.avatar.js index 1abe70b79ea..29d019baea7 100644 --- a/core/js/jquery.avatar.js +++ b/core/js/jquery.avatar.js @@ -48,6 +48,13 @@ (function ($) { $.fn.avatar = function(user, size, ie8fix, hidedefault, callback, displayname) { + if (typeof(user) !== 'undefined') { + user = String(user); + } + if (typeof(displayname) !== 'undefined') { + displayname = String(displayname); + } + if (typeof(size) === 'undefined') { if (this.height() > 0) { size = this.height(); diff --git a/core/js/shareconfigmodel.js b/core/js/shareconfigmodel.js index 98388cbd508..1ead631db4d 100644 --- a/core/js/shareconfigmodel.js +++ b/core/js/shareconfigmodel.js @@ -22,6 +22,7 @@ defaults: { publicUploadEnabled: false, enforcePasswordForPublicLink: oc_appconfig.core.enforcePasswordForPublicLink, + enableLinkPasswordByDefault: oc_appconfig.core.enableLinkPasswordByDefault, isDefaultExpireDateEnforced: oc_appconfig.core.defaultExpireDateEnforced === true, isDefaultExpireDateEnabled: oc_appconfig.core.defaultExpireDateEnabled === true, isRemoteShareAllowed: oc_appconfig.core.remoteShareAllowed, diff --git a/core/js/sharedialoglinkshareview.js b/core/js/sharedialoglinkshareview.js index d881b85f70f..36f15a7269d 100644 --- a/core/js/sharedialoglinkshareview.js +++ b/core/js/sharedialoglinkshareview.js @@ -17,6 +17,7 @@ var PASSWORD_PLACEHOLDER = '**********'; var PASSWORD_PLACEHOLDER_MESSAGE = t('core', 'Choose a password for the public link'); + var PASSWORD_PLACEHOLDER_MESSAGE_OPTIONAL = t('core', 'Choose a password for the public link or press enter'); var TEMPLATE = '{{#if shareAllowed}}' + @@ -30,7 +31,7 @@ '{{#if singleAction}}' + '<a class="{{#unless isLinkShare}}hidden-visually{{/unless}} clipboardButton icon icon-clippy" data-clipboard-target="#linkText-{{cid}}"></a>' + '{{else}}' + - '<a href="#"><span class="linkMore icon icon-more"></span></a>' + + '<a class="{{#unless isLinkShare}}hidden-visually{{/unless}}" href="#"><span class="linkMore icon icon-more"></span></a>' + '{{{popoverMenu}}}' + '{{/if}}' + '</div>' + @@ -61,7 +62,11 @@ ' {{/if}}' + '<div id="linkPass" class="linkPass {{#unless isPasswordSet}}hidden{{/unless}}">' + ' <label for="linkPassText-{{cid}}" class="hidden-visually">{{passwordLabel}}</label>' + + ' {{#if showPasswordCheckBox}}' + ' <input id="linkPassText-{{cid}}" class="linkPassText" type="password" placeholder="{{passwordPlaceholder}}" />' + + ' {{else}}' + + ' <input id="linkPassText-{{cid}}" class="linkPassText" type="password" placeholder="{{passwordPlaceholderInitial}}" />' + + ' {{/if}}' + ' <span class="icon-loading-small hidden"></span>' + '</div>' + '{{else}}' + @@ -228,7 +233,7 @@ } if($checkBox.is(':checked')) { - if(this.configModel.get('enforcePasswordForPublicLink') === false) { + if(this.configModel.get('enforcePasswordForPublicLink') === false && this.configModel.get('enableLinkPasswordByDefault') === false) { $loading.removeClass('hidden'); // this will create it this.model.saveLinkShare(); @@ -280,9 +285,19 @@ var $input = this.$el.find('.linkPassText'); $input.removeClass('error'); var password = $input.val(); - // in IE9 the password might be the placeholder due to bugs in the placeholders polyfill - if(password === '' || password === PASSWORD_PLACEHOLDER || password === PASSWORD_PLACEHOLDER_MESSAGE) { - return; + + if (this.$el.find('.linkPassText').attr('placeholder') === PASSWORD_PLACEHOLDER_MESSAGE_OPTIONAL) { + + // in IE9 the password might be the placeholder due to bugs in the placeholders polyfill + if(password === PASSWORD_PLACEHOLDER_MESSAGE_OPTIONAL) { + password = ''; + } + } else { + + // in IE9 the password might be the placeholder due to bugs in the placeholders polyfill + if(password === '' || password === PASSWORD_PLACEHOLDER || password === PASSWORD_PLACEHOLDER_MESSAGE) { + return; + } } $loading @@ -391,6 +406,8 @@ var showPasswordCheckBox = isLinkShare && ( !this.configModel.get('enforcePasswordForPublicLink') || !this.model.get('linkShare').password); + var passwordPlaceholderInitial = this.configModel.get('enforcePasswordForPublicLink') + ? PASSWORD_PLACEHOLDER_MESSAGE : PASSWORD_PLACEHOLDER_MESSAGE_OPTIONAL; var publicEditable = !this.model.isFolder() @@ -428,6 +445,7 @@ enablePasswordLabel: t('core', 'Password protect'), passwordLabel: t('core', 'Password'), passwordPlaceholder: isPasswordSet ? PASSWORD_PLACEHOLDER : PASSWORD_PLACEHOLDER_MESSAGE, + passwordPlaceholderInitial: passwordPlaceholderInitial, isPasswordSet: isPasswordSet, showPasswordCheckBox: showPasswordCheckBox, publicUpload: publicUpload && isLinkShare, diff --git a/core/l10n/bg.js b/core/l10n/bg.js index 74a7e1309ab..8291967a7fb 100644 --- a/core/l10n/bg.js +++ b/core/l10n/bg.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "ОблаÑтта не е квадратна", "Couldn't reset password because the token is invalid" : "Ðулирането на паролата е невъзможно, защото връзката за удоÑтоверение е невалидна", "Couldn't reset password because the token is expired" : "Ðулирането на паролата е невъзможно, защото връзката за удоÑтоверение е изтекла", - "Couldn't send reset email. Please make sure your username is correct." : "ÐеуÑпешно изпращане на имейл за възÑтановÑване на паролата. МолÑ, уверете Ñе, че потребителÑкото име е правилно.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Имейлът за възÑтановÑване на паролата не може да бъде изпратен защо потребителÑÑ‚ нÑма имейл адреÑ. Свържете Ñе Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратора.", "%s password reset" : "Паролата на %s е променена", "Couldn't send reset email. Please contact your administrator." : "ÐеуÑпешно изпращане на имейл за възÑтановÑване на паролата. МолÑ, Ñвържете Ñе Ñ Ð²Ð°ÑˆÐ¸Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратор.", + "Couldn't send reset email. Please make sure your username is correct." : "ÐеуÑпешно изпращане на имейл за възÑтановÑване на паролата. МолÑ, уверете Ñе, че потребителÑкото име е правилно.", "Preparing update" : "Подготовка за актуализиране", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Предупреждение при поправка:", diff --git a/core/l10n/bg.json b/core/l10n/bg.json index 42a283ea50b..fa8505eb966 100644 --- a/core/l10n/bg.json +++ b/core/l10n/bg.json @@ -14,10 +14,10 @@ "Crop is not square" : "ОблаÑтта не е квадратна", "Couldn't reset password because the token is invalid" : "Ðулирането на паролата е невъзможно, защото връзката за удоÑтоверение е невалидна", "Couldn't reset password because the token is expired" : "Ðулирането на паролата е невъзможно, защото връзката за удоÑтоверение е изтекла", - "Couldn't send reset email. Please make sure your username is correct." : "ÐеуÑпешно изпращане на имейл за възÑтановÑване на паролата. МолÑ, уверете Ñе, че потребителÑкото име е правилно.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Имейлът за възÑтановÑване на паролата не може да бъде изпратен защо потребителÑÑ‚ нÑма имейл адреÑ. Свържете Ñе Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратора.", "%s password reset" : "Паролата на %s е променена", "Couldn't send reset email. Please contact your administrator." : "ÐеуÑпешно изпращане на имейл за възÑтановÑване на паролата. МолÑ, Ñвържете Ñе Ñ Ð²Ð°ÑˆÐ¸Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратор.", + "Couldn't send reset email. Please make sure your username is correct." : "ÐеуÑпешно изпращане на имейл за възÑтановÑване на паролата. МолÑ, уверете Ñе, че потребителÑкото име е правилно.", "Preparing update" : "Подготовка за актуализиране", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Предупреждение при поправка:", diff --git a/core/l10n/ca.js b/core/l10n/ca.js index efc4b5d0d55..3d1630bcb85 100644 --- a/core/l10n/ca.js +++ b/core/l10n/ca.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "El retall no és quadrat", "Couldn't reset password because the token is invalid" : "No es pot restablir la contrasenya perquè el testimoni no és và lid", "Couldn't reset password because the token is expired" : "No es pot restablir la contrasenya perquè el testimoni ha vençut", - "Couldn't send reset email. Please make sure your username is correct." : "No s'ha pogut enviar el correu de restabliment. Assegureu-vos que el vostre nom d'usuari és correcte.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "No s'ha pogut enviar correu de restabliment. No hi ha correu per aquest compte. Contacteu amb l'administrador.", "%s password reset" : "restableix la contrasenya %s", "Couldn't send reset email. Please contact your administrator." : "No s'ha pogut restablir el correu. Contacteu amb l'administrador.", + "Couldn't send reset email. Please make sure your username is correct." : "No s'ha pogut enviar el correu de restabliment. Assegureu-vos que el vostre nom d'usuari és correcte.", "Preparing update" : "Preparant l'actualització", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Advertiment de reparació:", diff --git a/core/l10n/ca.json b/core/l10n/ca.json index 98b2b6b6ca7..2029d93fb2a 100644 --- a/core/l10n/ca.json +++ b/core/l10n/ca.json @@ -14,10 +14,10 @@ "Crop is not square" : "El retall no és quadrat", "Couldn't reset password because the token is invalid" : "No es pot restablir la contrasenya perquè el testimoni no és và lid", "Couldn't reset password because the token is expired" : "No es pot restablir la contrasenya perquè el testimoni ha vençut", - "Couldn't send reset email. Please make sure your username is correct." : "No s'ha pogut enviar el correu de restabliment. Assegureu-vos que el vostre nom d'usuari és correcte.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "No s'ha pogut enviar correu de restabliment. No hi ha correu per aquest compte. Contacteu amb l'administrador.", "%s password reset" : "restableix la contrasenya %s", "Couldn't send reset email. Please contact your administrator." : "No s'ha pogut restablir el correu. Contacteu amb l'administrador.", + "Couldn't send reset email. Please make sure your username is correct." : "No s'ha pogut enviar el correu de restabliment. Assegureu-vos que el vostre nom d'usuari és correcte.", "Preparing update" : "Preparant l'actualització", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Advertiment de reparació:", diff --git a/core/l10n/cs.js b/core/l10n/cs.js index 1c3726eae45..4b08ce66fda 100644 --- a/core/l10n/cs.js +++ b/core/l10n/cs.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "OÅ™ez nenà Ätvercový", "Couldn't reset password because the token is invalid" : "Heslo nebylo zmÄ›nÄ›no kvůli neplatnému tokenu", "Couldn't reset password because the token is expired" : "Heslo nebylo zmÄ›nÄ›no z důvodu vyprÅ¡enà tokenu", - "Couldn't send reset email. Please make sure your username is correct." : "Nelze odeslat email pro zmÄ›nu hesla. UjistÄ›te se prosÃm, že zadáváte správné uživatelské jméno.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Nelze odeslat email pro zmÄ›nu hesla, protože u tohoto uživatelského jména nenà uvedena emailová adresa. Kontaktujte prosÃm svého administrátora.", "%s password reset" : "reset hesla %s", "Couldn't send reset email. Please contact your administrator." : "NepodaÅ™ilo se odeslat email pro zmÄ›nu hesla. Kontaktujte svého správce systému.", + "Couldn't send reset email. Please make sure your username is correct." : "Nelze odeslat email pro zmÄ›nu hesla. UjistÄ›te se prosÃm, že zadáváte správné uživatelské jméno.", "Preparing update" : "PÅ™Ãprava na aktualizaci", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "UpozornÄ›nà opravy:", diff --git a/core/l10n/cs.json b/core/l10n/cs.json index bf9af8a9398..4ffe2489d7d 100644 --- a/core/l10n/cs.json +++ b/core/l10n/cs.json @@ -14,10 +14,10 @@ "Crop is not square" : "OÅ™ez nenà Ätvercový", "Couldn't reset password because the token is invalid" : "Heslo nebylo zmÄ›nÄ›no kvůli neplatnému tokenu", "Couldn't reset password because the token is expired" : "Heslo nebylo zmÄ›nÄ›no z důvodu vyprÅ¡enà tokenu", - "Couldn't send reset email. Please make sure your username is correct." : "Nelze odeslat email pro zmÄ›nu hesla. UjistÄ›te se prosÃm, že zadáváte správné uživatelské jméno.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Nelze odeslat email pro zmÄ›nu hesla, protože u tohoto uživatelského jména nenà uvedena emailová adresa. Kontaktujte prosÃm svého administrátora.", "%s password reset" : "reset hesla %s", "Couldn't send reset email. Please contact your administrator." : "NepodaÅ™ilo se odeslat email pro zmÄ›nu hesla. Kontaktujte svého správce systému.", + "Couldn't send reset email. Please make sure your username is correct." : "Nelze odeslat email pro zmÄ›nu hesla. UjistÄ›te se prosÃm, že zadáváte správné uživatelské jméno.", "Preparing update" : "PÅ™Ãprava na aktualizaci", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "UpozornÄ›nà opravy:", diff --git a/core/l10n/da.js b/core/l10n/da.js index 1066b385f80..fd8686f55d3 100644 --- a/core/l10n/da.js +++ b/core/l10n/da.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "Beskæringen er ikke kvadratisk", "Couldn't reset password because the token is invalid" : "Kunne ikke nulstille kodeordet, fordi symboludtrykket er ugyldigt", "Couldn't reset password because the token is expired" : "Kunne ikke nulstille kodeord, da tokenet er udløbet", - "Couldn't send reset email. Please make sure your username is correct." : "Der opstod et problem under afsendelse af nulstillings-e-mailen. Kontroller venligst om dit brugernavnet er korrekt", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Kunne ikke sende e-mail om nulstilling af kodeord, da der ikke er knyttet en e-mail-adresse til dette brugernavn. Kontakt venligst din administrator.", "%s password reset" : "%s adgangskode nulstillet", "Couldn't send reset email. Please contact your administrator." : "Der opstod et problem under afsending af e-mailen til nulstilling. Kontakt venligst systemadministratoren.", + "Couldn't send reset email. Please make sure your username is correct." : "Der opstod et problem under afsendelse af nulstillings-e-mailen. Kontroller venligst om dit brugernavnet er korrekt", "Preparing update" : "Forbereder opdatering", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Reparationsadvarsel:", @@ -52,6 +52,7 @@ OC.L10N.register( "Saving..." : "Gemmer...", "Dismiss" : "Afvis", "This action requires you to confirm your password" : "Denne handling kræver at du bekræfter dit kodeord", + "Authentication required" : "Godkendelse pÃ¥krævet", "Password" : "Adgangskode", "Cancel" : "Annullér", "Confirm" : "Bekræft", diff --git a/core/l10n/da.json b/core/l10n/da.json index e3b3f2ad2d0..e204c9d88da 100644 --- a/core/l10n/da.json +++ b/core/l10n/da.json @@ -14,10 +14,10 @@ "Crop is not square" : "Beskæringen er ikke kvadratisk", "Couldn't reset password because the token is invalid" : "Kunne ikke nulstille kodeordet, fordi symboludtrykket er ugyldigt", "Couldn't reset password because the token is expired" : "Kunne ikke nulstille kodeord, da tokenet er udløbet", - "Couldn't send reset email. Please make sure your username is correct." : "Der opstod et problem under afsendelse af nulstillings-e-mailen. Kontroller venligst om dit brugernavnet er korrekt", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Kunne ikke sende e-mail om nulstilling af kodeord, da der ikke er knyttet en e-mail-adresse til dette brugernavn. Kontakt venligst din administrator.", "%s password reset" : "%s adgangskode nulstillet", "Couldn't send reset email. Please contact your administrator." : "Der opstod et problem under afsending af e-mailen til nulstilling. Kontakt venligst systemadministratoren.", + "Couldn't send reset email. Please make sure your username is correct." : "Der opstod et problem under afsendelse af nulstillings-e-mailen. Kontroller venligst om dit brugernavnet er korrekt", "Preparing update" : "Forbereder opdatering", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Reparationsadvarsel:", @@ -50,6 +50,7 @@ "Saving..." : "Gemmer...", "Dismiss" : "Afvis", "This action requires you to confirm your password" : "Denne handling kræver at du bekræfter dit kodeord", + "Authentication required" : "Godkendelse pÃ¥krævet", "Password" : "Adgangskode", "Cancel" : "Annullér", "Confirm" : "Bekræft", diff --git a/core/l10n/de.js b/core/l10n/de.js index be71a076ebd..4949f13b13e 100644 --- a/core/l10n/de.js +++ b/core/l10n/de.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "Zuschnitt ist nicht quadratisch", "Couldn't reset password because the token is invalid" : "Das Passwort konnte aufgrund eines ungültigen Tokens nicht zurückgesetzt werden", "Couldn't reset password because the token is expired" : "Das Passwort konnte nicht zurückgesetzt werden, da der Token abgelaufen ist", - "Couldn't send reset email. Please make sure your username is correct." : "E-Mail zum Zurücksetzen kann nicht versendet werden. Bitte deinen Benutzernamen überprüfen.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Es konnte keine E-Mail verschickt werden um das Passwort zurückzusetzten, da keine E-Mail im Benutzerkonto hinterlegt ist. Bitte kontaktiere deinen Administrator.", "%s password reset" : "%s-Passwort zurücksetzen", "Couldn't send reset email. Please contact your administrator." : "Die E-Mail zum Zurücksetzen konnte nicht versendet werden. Bitte kontaktiere deinen Administrator.", + "Couldn't send reset email. Please make sure your username is correct." : "E-Mail zum Zurücksetzen kann nicht versendet werden. Bitte deinen Benutzernamen überprüfen.", "Preparing update" : "Update vorbereiten", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Reparaturwarnung:", @@ -114,6 +114,7 @@ OC.L10N.register( "Expiration" : "Ablaufdatum", "Expiration date" : "Ablaufdatum", "Choose a password for the public link" : "Wähle ein Passwort für den öffentlichen Link", + "Choose a password for the public link or press enter" : "Wähle ein Passwort für die öffentliche Freigabe oder drücke die Eingabetaste", "Copied!" : "Kopiert!", "Copy" : "Kopieren", "Not supported!" : "Nicht unterstützt!", diff --git a/core/l10n/de.json b/core/l10n/de.json index 0ce9721d384..808a5404068 100644 --- a/core/l10n/de.json +++ b/core/l10n/de.json @@ -14,10 +14,10 @@ "Crop is not square" : "Zuschnitt ist nicht quadratisch", "Couldn't reset password because the token is invalid" : "Das Passwort konnte aufgrund eines ungültigen Tokens nicht zurückgesetzt werden", "Couldn't reset password because the token is expired" : "Das Passwort konnte nicht zurückgesetzt werden, da der Token abgelaufen ist", - "Couldn't send reset email. Please make sure your username is correct." : "E-Mail zum Zurücksetzen kann nicht versendet werden. Bitte deinen Benutzernamen überprüfen.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Es konnte keine E-Mail verschickt werden um das Passwort zurückzusetzten, da keine E-Mail im Benutzerkonto hinterlegt ist. Bitte kontaktiere deinen Administrator.", "%s password reset" : "%s-Passwort zurücksetzen", "Couldn't send reset email. Please contact your administrator." : "Die E-Mail zum Zurücksetzen konnte nicht versendet werden. Bitte kontaktiere deinen Administrator.", + "Couldn't send reset email. Please make sure your username is correct." : "E-Mail zum Zurücksetzen kann nicht versendet werden. Bitte deinen Benutzernamen überprüfen.", "Preparing update" : "Update vorbereiten", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Reparaturwarnung:", @@ -112,6 +112,7 @@ "Expiration" : "Ablaufdatum", "Expiration date" : "Ablaufdatum", "Choose a password for the public link" : "Wähle ein Passwort für den öffentlichen Link", + "Choose a password for the public link or press enter" : "Wähle ein Passwort für die öffentliche Freigabe oder drücke die Eingabetaste", "Copied!" : "Kopiert!", "Copy" : "Kopieren", "Not supported!" : "Nicht unterstützt!", diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js index f081ba7dbc2..6535dedd8a2 100644 --- a/core/l10n/de_DE.js +++ b/core/l10n/de_DE.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "Zuschnitt ist nicht quadratisch", "Couldn't reset password because the token is invalid" : "Das Passwort konnte aufgrund eines ungültigen Tokens nicht zurückgesetzt werden", "Couldn't reset password because the token is expired" : "Das Passwort konnte nicht zurückgesetzt werden, da der Token abgelaufen ist", - "Couldn't send reset email. Please make sure your username is correct." : "E-Mail zum Zurücksetzen kann nicht versendet werden. Bitte stellen Sie sicher, dass Ihr Benutzername richtig ist.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Es konnte keine E-Mail verschickt werden um das Passwort zurückzusetzten, da keine E-Mail im Benutzerkonto hinterlegt ist. Bitte kontaktieren Sie den Administrator.", "%s password reset" : "%s-Passwort zurücksetzen", "Couldn't send reset email. Please contact your administrator." : "Die E-Mail zum Zurücksetzen konnte nicht versendet werden. Bitte kontaktieren Sie Ihren Administrator.", + "Couldn't send reset email. Please make sure your username is correct." : "E-Mail zum Zurücksetzen kann nicht versendet werden. Bitte stellen Sie sicher, dass Ihr Benutzername richtig ist.", "Preparing update" : "Update vorbereiten", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Reperaturwarnung:", @@ -114,6 +114,7 @@ OC.L10N.register( "Expiration" : "Ablauf", "Expiration date" : "Ablaufdatum", "Choose a password for the public link" : "Wählen Sie ein Passwort für den öffentlichen Link", + "Choose a password for the public link or press enter" : "Wählen Sie ein Passwort für die öffentliche Freigabe oder drücken Sie die Eingabetaste", "Copied!" : "Kopiert!", "Copy" : "Kopieren", "Not supported!" : "Nicht unterstützt!", diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json index e4de794101e..8d544bc8642 100644 --- a/core/l10n/de_DE.json +++ b/core/l10n/de_DE.json @@ -14,10 +14,10 @@ "Crop is not square" : "Zuschnitt ist nicht quadratisch", "Couldn't reset password because the token is invalid" : "Das Passwort konnte aufgrund eines ungültigen Tokens nicht zurückgesetzt werden", "Couldn't reset password because the token is expired" : "Das Passwort konnte nicht zurückgesetzt werden, da der Token abgelaufen ist", - "Couldn't send reset email. Please make sure your username is correct." : "E-Mail zum Zurücksetzen kann nicht versendet werden. Bitte stellen Sie sicher, dass Ihr Benutzername richtig ist.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Es konnte keine E-Mail verschickt werden um das Passwort zurückzusetzten, da keine E-Mail im Benutzerkonto hinterlegt ist. Bitte kontaktieren Sie den Administrator.", "%s password reset" : "%s-Passwort zurücksetzen", "Couldn't send reset email. Please contact your administrator." : "Die E-Mail zum Zurücksetzen konnte nicht versendet werden. Bitte kontaktieren Sie Ihren Administrator.", + "Couldn't send reset email. Please make sure your username is correct." : "E-Mail zum Zurücksetzen kann nicht versendet werden. Bitte stellen Sie sicher, dass Ihr Benutzername richtig ist.", "Preparing update" : "Update vorbereiten", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Reperaturwarnung:", @@ -112,6 +112,7 @@ "Expiration" : "Ablauf", "Expiration date" : "Ablaufdatum", "Choose a password for the public link" : "Wählen Sie ein Passwort für den öffentlichen Link", + "Choose a password for the public link or press enter" : "Wählen Sie ein Passwort für die öffentliche Freigabe oder drücken Sie die Eingabetaste", "Copied!" : "Kopiert!", "Copy" : "Kopieren", "Not supported!" : "Nicht unterstützt!", diff --git a/core/l10n/el.js b/core/l10n/el.js index 7710bae2410..93af1af72d5 100644 --- a/core/l10n/el.js +++ b/core/l10n/el.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "Η πεÏικοπή δεν εχει τετÏαγωνικό σχήμα", "Couldn't reset password because the token is invalid" : "Αδυναμία επαναφοÏάς ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης καθώς το διακÏιτικό είναι άκυÏο", "Couldn't reset password because the token is expired" : "Αδυναμία επαναφοÏάς ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης επειδή το διακÏιτικό Îχει λήξει", - "Couldn't send reset email. Please make sure your username is correct." : "Αδυναμία αποστολής ηλ. μηνÏματος επαναφοÏάς. ΠαÏακαλώ ελÎγξτε ότι το όνομα χÏήστη σας είναι οÏθό.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Αδυναμία αποστολής ηλ. μηνÏματος επαναφοÏάς γιατί δεν υπάÏχει διεÏθυνση ηλ. αλληλογÏαφίας για αυτόν τον χÏήστη. ΠαÏακαλώ επικοινωνήστε με το διαχειÏιστή σας.", "%s password reset" : "%s επαναφοÏά ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης", "Couldn't send reset email. Please contact your administrator." : "Αδυναμία αποστολής ηλ. μηνÏματος επαναφοÏάς. ΠαÏακαλώ επικοινωνήστε με το διαχειÏιστή σας.", + "Couldn't send reset email. Please make sure your username is correct." : "Αδυναμία αποστολής ηλ. μηνÏματος επαναφοÏάς. ΠαÏακαλώ ελÎγξτε ότι το όνομα χÏήστη σας είναι οÏθό.", "Preparing update" : "Î Ïοετοιμασία ενημÎÏωσης", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Î Ïοειδοποίηση διόÏθωσης:", diff --git a/core/l10n/el.json b/core/l10n/el.json index 5f1630479ea..61d9fff6740 100644 --- a/core/l10n/el.json +++ b/core/l10n/el.json @@ -14,10 +14,10 @@ "Crop is not square" : "Η πεÏικοπή δεν εχει τετÏαγωνικό σχήμα", "Couldn't reset password because the token is invalid" : "Αδυναμία επαναφοÏάς ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης καθώς το διακÏιτικό είναι άκυÏο", "Couldn't reset password because the token is expired" : "Αδυναμία επαναφοÏάς ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης επειδή το διακÏιτικό Îχει λήξει", - "Couldn't send reset email. Please make sure your username is correct." : "Αδυναμία αποστολής ηλ. μηνÏματος επαναφοÏάς. ΠαÏακαλώ ελÎγξτε ότι το όνομα χÏήστη σας είναι οÏθό.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Αδυναμία αποστολής ηλ. μηνÏματος επαναφοÏάς γιατί δεν υπάÏχει διεÏθυνση ηλ. αλληλογÏαφίας για αυτόν τον χÏήστη. ΠαÏακαλώ επικοινωνήστε με το διαχειÏιστή σας.", "%s password reset" : "%s επαναφοÏά ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης", "Couldn't send reset email. Please contact your administrator." : "Αδυναμία αποστολής ηλ. μηνÏματος επαναφοÏάς. ΠαÏακαλώ επικοινωνήστε με το διαχειÏιστή σας.", + "Couldn't send reset email. Please make sure your username is correct." : "Αδυναμία αποστολής ηλ. μηνÏματος επαναφοÏάς. ΠαÏακαλώ ελÎγξτε ότι το όνομα χÏήστη σας είναι οÏθό.", "Preparing update" : "Î Ïοετοιμασία ενημÎÏωσης", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Î Ïοειδοποίηση διόÏθωσης:", diff --git a/core/l10n/en_GB.js b/core/l10n/en_GB.js index 36888eb6773..42f5bea525e 100644 --- a/core/l10n/en_GB.js +++ b/core/l10n/en_GB.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "Crop is not square", "Couldn't reset password because the token is invalid" : "Couldn't reset password because the token is invalid", "Couldn't reset password because the token is expired" : "Couldn't reset password because the token is expired", - "Couldn't send reset email. Please make sure your username is correct." : "Couldn't send reset email. Please make sure your username is correct.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Could not send reset email because there is no email address for this username. Please contact your administrator.", "%s password reset" : "%s password reset", "Couldn't send reset email. Please contact your administrator." : "Couldn't send reset email. Please contact your administrator.", + "Couldn't send reset email. Please make sure your username is correct." : "Couldn't send reset email. Please make sure your username is correct.", "Preparing update" : "Preparing update", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Repair warning: ", diff --git a/core/l10n/en_GB.json b/core/l10n/en_GB.json index b0cdbb94ea4..5626954f8b8 100644 --- a/core/l10n/en_GB.json +++ b/core/l10n/en_GB.json @@ -14,10 +14,10 @@ "Crop is not square" : "Crop is not square", "Couldn't reset password because the token is invalid" : "Couldn't reset password because the token is invalid", "Couldn't reset password because the token is expired" : "Couldn't reset password because the token is expired", - "Couldn't send reset email. Please make sure your username is correct." : "Couldn't send reset email. Please make sure your username is correct.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Could not send reset email because there is no email address for this username. Please contact your administrator.", "%s password reset" : "%s password reset", "Couldn't send reset email. Please contact your administrator." : "Couldn't send reset email. Please contact your administrator.", + "Couldn't send reset email. Please make sure your username is correct." : "Couldn't send reset email. Please make sure your username is correct.", "Preparing update" : "Preparing update", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Repair warning: ", diff --git a/core/l10n/es.js b/core/l10n/es.js index 98f51ddca50..a066e5864eb 100644 --- a/core/l10n/es.js +++ b/core/l10n/es.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "El recorte no es cuadrado", "Couldn't reset password because the token is invalid" : "No se puede restablecer la contraseña porque el vale de identificación es inválido.", "Couldn't reset password because the token is expired" : "No se puede restablecer la contraseña porque el vale de identificación ha caducado.", - "Couldn't send reset email. Please make sure your username is correct." : "No se pudo enviar el correo electrónico para el restablecimiento. Por favor, asegúrese de que su nombre de usuario es el correcto.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "No se pudo enviar el correo electrónico de restablecimiento porque no hay una dirección de correo electrónico para este nombre de usuario. Póngase en contacto con un administrador.", "%s password reset" : "%s restablecer contraseña", "Couldn't send reset email. Please contact your administrator." : "No pudo enviarse el correo para restablecer la contraseña. Por favor, contacte con su administrador.", + "Couldn't send reset email. Please make sure your username is correct." : "No se pudo enviar el correo electrónico para el restablecimiento. Por favor, asegúrese de que su nombre de usuario es el correcto.", "Preparing update" : "Preparando la actualización", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Advertencia de reparación:", diff --git a/core/l10n/es.json b/core/l10n/es.json index 45d9977e9db..ce8bddfb412 100644 --- a/core/l10n/es.json +++ b/core/l10n/es.json @@ -14,10 +14,10 @@ "Crop is not square" : "El recorte no es cuadrado", "Couldn't reset password because the token is invalid" : "No se puede restablecer la contraseña porque el vale de identificación es inválido.", "Couldn't reset password because the token is expired" : "No se puede restablecer la contraseña porque el vale de identificación ha caducado.", - "Couldn't send reset email. Please make sure your username is correct." : "No se pudo enviar el correo electrónico para el restablecimiento. Por favor, asegúrese de que su nombre de usuario es el correcto.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "No se pudo enviar el correo electrónico de restablecimiento porque no hay una dirección de correo electrónico para este nombre de usuario. Póngase en contacto con un administrador.", "%s password reset" : "%s restablecer contraseña", "Couldn't send reset email. Please contact your administrator." : "No pudo enviarse el correo para restablecer la contraseña. Por favor, contacte con su administrador.", + "Couldn't send reset email. Please make sure your username is correct." : "No se pudo enviar el correo electrónico para el restablecimiento. Por favor, asegúrese de que su nombre de usuario es el correcto.", "Preparing update" : "Preparando la actualización", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Advertencia de reparación:", diff --git a/core/l10n/es_MX.js b/core/l10n/es_MX.js new file mode 100644 index 00000000000..381febc2430 --- /dev/null +++ b/core/l10n/es_MX.js @@ -0,0 +1,293 @@ +OC.L10N.register( + "core", + { + "Please select a file." : "Favor de seleccionar un archivo.", + "File is too big" : "El archivo es demasiado grande.", + "The selected file is not an image." : "El archivo seleccionado no es una imagen.", + "The selected file cannot be read." : "El archivo seleccionado no se puede leer.", + "Invalid file provided" : "Archivo proporcionado inválido", + "No image or file provided" : "No se especificó un archivo o imagen", + "Unknown filetype" : "Tipo de archivo desconocido", + "Invalid image" : "Imagen inválida", + "An error occurred. Please contact your admin." : "Se presentó un error. Favor de contactar a su adminsitrador. ", + "No temporary profile picture available, try again" : "No hay una imagen de perfil temporal disponible, favor de intentarlo de nuevo", + "No crop data provided" : "No se proporcionó datos del recorte", + "Couldn't reset password because the token is invalid" : "No ha sido posible restablecer la contraseña porque la ficha es inválida", + "Couldn't reset password because the token is expired" : "No ha sido posible restablecer la contraseña porque la ficha ha expirado", + "Could not send reset email because there is no email address for this username. Please contact your administrator." : "No fue posible enviar el correo electrónico para restablecer porque no hay una dirección de correo electrónico para este usuario. Favor de contactar a su adminsitrador. ", + "%s password reset" : "%s restablecer la contraseña", + "Couldn't send reset email. Please contact your administrator." : "No fue posible enviar el correo de restauración. Favor de contactar a su adminsitrador. ", + "Couldn't send reset email. Please make sure your username is correct." : "No fue posible restablecer el correo electrónico. Favor de asegurarse que su nombre de usuario sea correcto. ", + "Preparing update" : "Preparando actualización", + "[%d / %d]: %s" : "[%d / %d]: %s ", + "Repair warning: " : "Advertencia de reparación:", + "Repair error: " : "Error de reparación: ", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Favor de usar el actualizador de lÃnea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", + "[%d / %d]: Checking table %s" : "[%d / %d]: Verificando tabla %s", + "Turned on maintenance mode" : "Activar modo mantenimiento", + "Turned off maintenance mode" : "Desactivar modo mantenimiento", + "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", + "Updating database schema" : "Actualizando esquema de base de datos", + "Updated database" : "Base de datos actualizada", + "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Verificando si el archivo del esquema de base de datos puede ser actualizado (esto puedo tomar mucho tiempo dependiendo del tamaño de la base de datos)", + "Checked database schema update" : "Actualización del esquema de base de datos verificada", + "Checking updates of apps" : "Verificando actualizaciónes para aplicaciones", + "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Verificando si el esquema de la base de datos para %s puede ser actualizado (esto puede tomar mucho tiempo dependiendo del tamaño de la base de datos)", + "Checked database schema update for apps" : "Se verificó la actualización del esquema de la base de datos para las aplicaciones", + "Updated \"%s\" to %s" : "Actualizando \"%s\" a %s", + "Set log level to debug" : "Establecer nivel de bitacora a depurar", + "Reset log level" : "Restablecer nivel de bitácora", + "Starting code integrity check" : "Comenzando verificación de integridad del código", + "Finished code integrity check" : "Verificación de integridad del código terminó", + "%s (3rdparty)" : "%s (de3ros)", + "%s (incompatible)" : "%s (incompatible)", + "Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s", + "Already up to date" : "Ya está actualizado", + "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Se presentaron problemas con la verificación de integridad del código. Mayor información ...</a>", + "Settings" : "Ajustes", + "Connection to server lost" : "Se ha perdido la conexión con el servidor", + "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Se presentó un erorr al cargar la página, recargando en %n segundo","Se presentó un erorr al cargar la página, recargando en %n segundo"], + "Saving..." : "Guardando...", + "Dismiss" : "Descartar", + "This action requires you to confirm your password" : "Esta acción requiere que confirme su contraseña", + "Authentication required" : "Se requiere autenticación", + "Password" : "Contraseña", + "Cancel" : "Cancelar", + "Confirm" : "Confirmar", + "Failed to authenticate, try again" : "Falla en la autenticación, favor de reintentar", + "seconds ago" : "hace segundos", + "Logging in …" : "Ingresando ...", + "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "La liga para restablecer su contraseña ha sido enviada a su correo electrónico. Si no lo recibe dentro de un tiempo razonable, verifique las carpetas de spam/basura.<br>Si no la encuentra consulte a su adminstrador local.", + "Your files are encrypted. There will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Sus archivos están encriptados. No habrá manera de recuperar sus datos una vez que restablezca su contraseña. <br />Si no está seguro de qué hacer, favor de contactar a su administrador antes de continuar. <br />¿Realmente desea continuar?", + "I know what I'm doing" : "Sé lo que estoy haciendo", + "Password can not be changed. Please contact your administrator." : "Las contraseñas no se pueden cambiar. Favor de contactar a su adminstrador", + "No" : "No", + "Yes" : "SÃ", + "No files in here" : "No hay archivos", + "Choose" : "Seleccionar", + "Error loading file picker template: {error}" : "Se presentó un error al cargar la plantilla del seleccionador de archivos: {error}", + "Ok" : "Ok", + "Error loading message template: {error}" : "Se presentó un error al cargar la plantilla del mensaje: {error}", + "read-only" : "sólo-lectura", + "_{count} file conflict_::_{count} file conflicts_" : ["{count} conflicto de archivo","{count} conflictos en el archivo"], + "One file conflict" : "Un conflicto en el archivo", + "New Files" : "Archivos Nuevos", + "Already existing files" : "Archivos ya existentes", + "Which files do you want to keep?" : "¿Cuales archivos desea mantener?", + "If you select both versions, the copied file will have a number added to its name." : "Si selecciona ambas versiones, se le agregará un número al nombre del archivo copiado.", + "Continue" : "Continuar", + "(all selected)" : "(todos seleccionados)", + "({count} selected)" : "({count} seleccionados)", + "Error loading file exists template" : "Se presentó un error al cargar la plantilla de archivo existente", + "Pending" : "Pendiente", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Su servidor web aún no se encuentra correctamente configurado para permitir la sincronización de archivos porque la interface de WebDAV parece estar rota. ", + "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Su servidor web no está correctamente configurado para resolver \"{url}\". Puede encontrar más información en nuestra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentación</a>.", + "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Este servidor no cuenta con una conexión a Internet: No fue posible alcanzar diversos puntos de acceso <EndPoints>. Esto significa que diversas funcionalidades como el montaje de almacenamiento extern, notificaciónes de actualizaciones o la instalación de aplicaciones de terceros no funcionarán. Acceder archivos de forma remota y el envÃo de correos electrónicos de notificación puede que tampoco funcionen. Le sugerimos habilitar la conexión a Internet para este servidor si desea contar con todas las caracterÃsticas.", + "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "No ha sido configurada la memoria caché. Favor de configurar un memechache si está disponible para mejorar el desempeño. Puede encontrar información adicional en nuestra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentación</a>.", + "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "No fue posible leer /dev/urandom por PHP que es altamente desalentado por razones de seguridad. Puede consultar mayores informes en nuestra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentación</a>.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Usted se encuentra usando PHP {version}. Le recomendamos actualizar su versión de PHP para aprovechar <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">las actualizaciones de seguridad y desempeño suministradas por el Grupo PHP</a> tan pronto como su distribución lo soporte. ", + "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached está configurado como un caché distribuido, pero el módulo equivocado PHP \"memcache\" está instalado. \\OC\\Memcache\\Memcached sólo soporta \"memchached\" y no \"memchache\". Favor de ver el <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">wiki de ambos módulos</a>.", + "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Algunos archivos no pasaron la verificación de integridad. Para mayor información de cómo resolver este tema consulte nuestra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentación</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Listado de archivos inválidos …</a> / <a href=\"{rescanEndpoint}\">Volver a escanear…</a>)", + "The PHP Opcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend ↗</a> to use following settings in the <code>php.ini</code>:" : "PHP Opcache no se encuentra correctamente configurado. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Para un mejor desempelo le recomendamos↗</a> usar los siguientes ajustes en el archivo <code>php.ini</code>:", + "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "La fución PHP \"set_time_limit\" no está disponible. Esto podrÃa generar scripts que se interrumpan a media ejecución, rompiendo la instalación. Le recomendamos ámpliamente habilitar esta función.", + "Error occurred while checking server setup" : "Se presentó un error al verificar la configuración del servidor", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Posiblemente sus directorios de datos y archivos son accesibles desde Internet. El archivo .htaccess no está funcionando. Le recomendamos ámpliamente que configure su servidor web de tal modo que el directorio de datos no sea accesible o que mueva el directorio de datos fuera de la raÃz de documentos del servidor web. ", + "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "El encabezado HTTP \"{header}\" no está configurado como \"{expected}\". Esta es un riesgo potencial de seguridad o privacidad y le recomendamos cambiar este ajuste.", + "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Usted está accediendo este sitio via HTTP. Le recomendamos ámpliamente que configure su servidor para que en su lugar, el uso de HTTPS sea requerido como está descrito en nuestros <a href=\"{docUrl}\">consejos de seguridad</a>.", + "Shared" : "Compartido", + "Shared with {recipients}" : "Compartido con {recipients}", + "Error" : "Error", + "Error while sharing" : "Se presentó un error al compartir", + "Error while unsharing" : "Se presentó un error al dejar de compartir", + "Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración", + "The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} dÃas de haber sido creada", + "Set expiration date" : "Establecer la fecha de expiración", + "Expiration" : "Expiración", + "Expiration date" : "Fecha de expiración", + "Choose a password for the public link" : "Seleccione una contraseña para la liga pública", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Not supported!" : "¡No está soportado!", + "Press ⌘-C to copy." : "Presione ⌘-C para copiar.", + "Press Ctrl-C to copy." : "Presione Ctrl-C para copiar.", + "Resharing is not allowed" : "No se permite volver a compartir", + "Share to {name}" : "Compartir con {name}", + "Share link" : "Compartir enlace", + "Link" : "Liga", + "Password protect" : "Proteger con contraseña", + "Allow upload and editing" : "Permitir cargar y editar", + "Allow editing" : "Permitir editar", + "upload only" : "sólo cargar", + "Email link to person" : "Enviar la liga por correo electrónico a una persona", + "Send" : "Enviar", + "Shared with you and the group {group} by {owner}" : "Compartido con usted y el grupo {group} por {owner}", + "Shared with you by {owner}" : "Compartido con usted por {owner}", + "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compatido mediante una liga", + "group" : "grupo", + "remote" : "remoto", + "email" : "correo electrónico", + "Unshare" : "Dejar de compartir", + "can reshare" : "pruede volver a compartir", + "can edit" : "puede editar", + "can create" : "puede crear", + "can change" : "puede modificar", + "can delete" : "puede borrar", + "access control" : "control de acceso", + "Could not unshare" : "No fue posible dejar de compartir", + "Share details could not be loaded for this item." : "Los detalles del recurso compartido no se pudieron cargar para este elemento. ", + "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Se requiere de la menos {count} caracter para el auto completar","Se requieren de la menos {count} caracteres para el auto completar"], + "This list is maybe truncated - please refine your search term to see more results." : "Esta lista puede estar truncada - favor de refinar sus términos de búsqueda para poder ver más resultados. ", + "No users or groups found for {search}" : "No se encontraron usuarios o gurpos para {search}", + "No users found for {search}" : "No se encontraron usuarios para {search}", + "An error occurred. Please try again" : "Se presentó un error. Favor de volver a intentar", + "{sharee} (group)" : "{sharee} (grupo)", + "{sharee} (remote)" : "{sharee} (remoto)", + "{sharee} (email)" : "{sharee} (correo electrónico)", + "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})", + "Share" : "Compartir", + "Share with users or by mail..." : "Compartir con otros usuarios o por correo electrónico...", + "Share with users or remote users..." : "Compartir con otros usuarios o con otros usuarios remotos...", + "Share with users, remote users or by mail..." : "Compartir con otros usuarios, otros usuarios remotos o por correo electrónico...", + "Share with users or groups..." : "Compartir con otros usuarios o grupos...", + "Share with users, groups or by mail..." : "Compartir con otros usuarios, grupos o por correo electrónico...", + "Share with users, groups or remote users..." : "Compartir con otros usuarios, otros usuarios remotos o grupos...", + "Share with users, groups, remote users or by mail..." : "Compartir con usuarios, grupos, usuarios rempotos o por correo...", + "Share with users..." : "Compartir con otros usuarios...", + "Error removing share" : "Se presentó un error al dejar de compartir", + "Non-existing tag #{tag}" : "Etiqueta #{tag} no-existente", + "restricted" : "restringido", + "invisible" : "invisible", + "({scope})" : "({scope})", + "Delete" : "Borrar", + "Rename" : "Renombrar", + "Collaborative tags" : "Etiquetas colaborativas", + "No tags found" : "No se encontraron etiquetas", + "The object type is not specified." : "El tipo del objeto no está especificado.", + "Enter new" : "Ingresar nuevo", + "Add" : "Agregar", + "Edit tags" : "Editar etiquetas", + "Error loading dialog template: {error}" : "Se presentó un error al cargar la plantilla de diálogo: {error}", + "No tags selected for deletion." : "No hay etiquetas seleccionadas para borrar.", + "unknown text" : "texto desconocido", + "Hello world!" : "¡Hola mundo!", + "sunny" : "soleado", + "Hello {name}, the weather is {weather}" : "Hola {name}, el clima es {weather}", + "Hello {name}" : "Hola {name}", + "new" : "nuevo", + "_download %n file_::_download %n files_" : ["Descargar %n archivos","Descargar %n archivos"], + "The update is in progress, leaving this page might interrupt the process in some environments." : "La actualización está en curso, abandonar esta página puede interrumpir el proceso en algunos ambientes. ", + "Update to {version}" : "Actualizar a {version}", + "An error occurred." : "Se presentó un error.", + "Please reload the page." : "Favor de volver a cargar la página.", + "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "La actualización no fue exitosa. Favor de reportar este tema a la <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Comunidad Nextcloud</a>.", + "Continue to Nextcloud" : "Continuar a Nextcloud", + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["La actualización fue exitosa. Lo estamos redireccionando a Nextcloud en %n segundo. ","La actualización fue exitosa. Lo estamos redireccionando a Nextcloud en %n segundos."], + "Searching other places" : "Buscando en otras ubicaciones", + "No search results in other folders for {tag}{filter}{endtag}" : "No hay resultados para la búsqueda en otras carpetas para {tag}{filter}{endtag}", + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} resultado de la búsqueda en otra carpeta","{count} resultados de la búsqueda en otras carpetas"], + "Personal" : "Personal", + "Users" : "Usuarios", + "Apps" : "Aplicaciones", + "Admin" : "Administración", + "Help" : "Ayuda", + "Access forbidden" : "Acceso denegado", + "File not found" : "Archivo no encontrado", + "The specified document has not been found on the server." : "El documento especificado no ha sido encontrado en el servidor. ", + "You can click here to return to %s." : "Puede hacer click aquà para regresar a %s.", + "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Hola,\n\nsólo queremos informarle que %s ha compartido %s con usted.\n\nConsúltelo aquÃ: %s\n\n", + "The share will expire on %s." : "El recurso dejará de ser compartido el %s.", + "Cheers!" : "¡Saludos!", + "Internal Server Error" : "Error interno del servidor", + "The server encountered an internal error and was unable to complete your request." : "Se presentó un error interno en el servidor y no fue posilbe completar su solicitud. ", + "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Favor de contactar al administrador del servidor si este problema se presenta en múltiples ocasiones, favor de incluir los detalles técnicos a continuación en su reporte. ", + "More details can be found in the server log." : "Puede consultar más detalles en la bitácora del servidor. ", + "Technical details" : "Detalles técnicos", + "Remote Address: %s" : "Dirección Remota: %s", + "Request ID: %s" : "ID de solicitud: %s", + "Type: %s" : "Tipo: %s", + "Code: %s" : "Código: %s", + "Message: %s" : "Mensaje: %s", + "File: %s" : "Archivo: %s", + "Line: %s" : "LÃnea: %s", + "Trace" : "Rastrear", + "Security warning" : "Advertencia de seguridad", + "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Su directorio de datos y sus archivos probablemente sean accesibles desde Internet ya que el archivo .htaccess no funciona.", + "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "Para más información de cómo configurar propiamente su servidor, favor de ver la <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentación</a>.", + "Create an <strong>admin account</strong>" : "Crear una <strong>cuenta de administrador</strong>", + "Username" : "Nombre de usuario", + "Storage & database" : "Almacenamiento & base de datos", + "Data folder" : "Carpeta de datos", + "Configure the database" : "Configurar la base de datos", + "Only %s is available." : "Sólo %s está disponible.", + "Install and activate additional PHP modules to choose other database types." : "Instale y active módulos adicionales de PHP para seleccionar otros tipos de bases de datos. ", + "For more details check out the documentation." : "Favor de consultar la documentación para más detalles. ", + "Database user" : "Usuario de la base de datos", + "Database password" : "Contraseña de la base de datos", + "Database name" : "Nombre de la base de datos", + "Database tablespace" : "Espacio de tablas de la base de datos", + "Database host" : "Servidor de base de datos", + "Please specify the port number along with the host name (e.g., localhost:5432)." : "Favor de especificar el número de puerto asà como el nombre del servidor (ejem., localhost:5432).", + "Performance warning" : "Advertencia de desempeño", + "SQLite will be used as database." : "SQLite será usado como la base de datos.", + "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "El uso de SQLiite es especialmente desalentado al usar el cliente de escritorio para sincrionizar. ", + "Finish setup" : "Terminar configuración", + "Finishing …" : "Terminando …", + "Need help?" : "¿Necesita ayuda?", + "See the documentation" : "Ver la documentación", + "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Esta aplicación requiere de JavaScript para su correcta operación. Favor de {linkstart}habilitar JavaScript{linkend} y vuelva a cargar la página. ", + "More apps" : "Más aplicaciones", + "Search" : "Buscar", + "This action requires you to confirm your password:" : "Esta acción requiere que confirme su contraseña:", + "Confirm your password" : "Confirme su contraseña", + "Server side authentication failed!" : "¡Falló la autenticación del lado del servidor!", + "Please contact your administrator." : "Favor de contactar al administrador.", + "An internal error occurred." : "Se presentó un error interno.", + "Please try again or contact your administrator." : "Favor de volver a intentarlo o contacte a su adminsitrador. ", + "Username or email" : "Nombre de usuario o contraseña", + "Wrong password. Reset it?" : "Contraseña equivocada. ¿Desea reestablecerla?", + "Wrong password." : "Contraseña inválida. ", + "Log in" : "Ingresar", + "Stay logged in" : "Mantener la sesión abierta", + "Alternative Logins" : "Accesos Alternativos", + "Use the following link to reset your password: {link}" : "Use la siguiente liga para restablecer su contraseña: {link}", + "New password" : "Nueva contraseña", + "New Password" : "Nueva Contraseña", + "Reset password" : "Restablecer contraseña", + "Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Hola,<br><br> sólo queremos informarle que %s ha compartido <strong>%s</strong> con usted. <br><a href=\"%s\">¡Véalo!</a><br><br>", + "This Nextcloud instance is currently in single user mode." : "Esta instalación de Nextcloud se encuentra en modo de usuario único.", + "This means only administrators can use the instance." : "Esto significa que sólo los administradores pueden usar la instancia.", + "Contact your system administrator if this message persists or appeared unexpectedly." : "Contacte a su administrador del sistema si este mensaje persiste o se presentó de manera inesperada.", + "Thank you for your patience." : "Gracias por su paciencia.", + "Log out" : "Salir", + "Two-factor authentication" : "Autenticación de dos-factores", + "Enhanced security is enabled for your account. Please authenticate using a second factor." : "La seguridad mejorada está habilitada para su cuenta. Favor de autenticarse usando un segundo factor. ", + "Cancel log in" : "Cancelar inicio de sesión", + "Use backup code" : "Usar código de respaldo", + "Error while validating your second factor" : "Se presentó un error al validar su segundo factor", + "You are accessing the server from an untrusted domain." : "Se encuentra accediendo al servidor desde un dominio no confiable. ", + "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Favor de contactar a su administrador. Si usted es el administrador de esta instancia, configure la opción \"trusted_domains\" en config/config.php. Un ejemplo de configuración se proporciona en config/config.sample.php. ", + "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Dependiendo de su configuración, como adminsitrador podrÃa llegar a usar el botón inferior para confiar en este dominio. ", + "Add \"%s\" as trusted domain" : "Agregar \"%s\" como un dominio de confianza", + "App update required" : "Se requiere una actualización de la aplicación", + "%s will be updated to version %s" : "%s será actualizado a la versión %s", + "These apps will be updated:" : "Las siguientes apllicaciones se actualizarán:", + "These incompatible apps will be disabled:" : "Las siguientes aplicaciones incompatibles serán deshabilitadas:", + "The theme %s has been disabled." : "El tema %s ha sido deshabilitado. ", + "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Favor de asegurarse que la base de datos, la carpeta de configuración y las carpetas de datos hayan sido respaldadas antes de continuar. ", + "Start update" : "Iniciar actualización", + "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Para evitar que la expiración de tiempo en instalaciones grandes, usted puede ejeuctar el siguiente comando desde su directorio de instalación:", + "Detailed logs" : "Bitácoras detalladas", + "Update needed" : "Actualización requerida", + "Please use the command line updater because you have a big instance." : "Favor de usar el actualizador de lÃnea de comando porque usted tiene una instancia grande. ", + "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Para más ayuda, consulte la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">doccumentación</a>.", + "This %s instance is currently in maintenance mode, which may take a while." : "Esta instancia %s se encuentra actualmente en modo mantenimiento, que podrÃa tomar algo de tiempo. ", + "This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ", + "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos", + "The update was successful. Redirecting you to Nextcloud now." : "La actualización fue exitosa. Redirigiendolo a su Nextcloud ahora. " +}, +"nplurals=2; plural=(n != 1);"); diff --git a/core/l10n/es_MX.json b/core/l10n/es_MX.json new file mode 100644 index 00000000000..d5731054886 --- /dev/null +++ b/core/l10n/es_MX.json @@ -0,0 +1,291 @@ +{ "translations": { + "Please select a file." : "Favor de seleccionar un archivo.", + "File is too big" : "El archivo es demasiado grande.", + "The selected file is not an image." : "El archivo seleccionado no es una imagen.", + "The selected file cannot be read." : "El archivo seleccionado no se puede leer.", + "Invalid file provided" : "Archivo proporcionado inválido", + "No image or file provided" : "No se especificó un archivo o imagen", + "Unknown filetype" : "Tipo de archivo desconocido", + "Invalid image" : "Imagen inválida", + "An error occurred. Please contact your admin." : "Se presentó un error. Favor de contactar a su adminsitrador. ", + "No temporary profile picture available, try again" : "No hay una imagen de perfil temporal disponible, favor de intentarlo de nuevo", + "No crop data provided" : "No se proporcionó datos del recorte", + "Couldn't reset password because the token is invalid" : "No ha sido posible restablecer la contraseña porque la ficha es inválida", + "Couldn't reset password because the token is expired" : "No ha sido posible restablecer la contraseña porque la ficha ha expirado", + "Could not send reset email because there is no email address for this username. Please contact your administrator." : "No fue posible enviar el correo electrónico para restablecer porque no hay una dirección de correo electrónico para este usuario. Favor de contactar a su adminsitrador. ", + "%s password reset" : "%s restablecer la contraseña", + "Couldn't send reset email. Please contact your administrator." : "No fue posible enviar el correo de restauración. Favor de contactar a su adminsitrador. ", + "Couldn't send reset email. Please make sure your username is correct." : "No fue posible restablecer el correo electrónico. Favor de asegurarse que su nombre de usuario sea correcto. ", + "Preparing update" : "Preparando actualización", + "[%d / %d]: %s" : "[%d / %d]: %s ", + "Repair warning: " : "Advertencia de reparación:", + "Repair error: " : "Error de reparación: ", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Favor de usar el actualizador de lÃnea de comandos ya que el actualizador automático se encuentra deshabilitado en config.php.", + "[%d / %d]: Checking table %s" : "[%d / %d]: Verificando tabla %s", + "Turned on maintenance mode" : "Activar modo mantenimiento", + "Turned off maintenance mode" : "Desactivar modo mantenimiento", + "Maintenance mode is kept active" : "El modo mantenimiento sigue activo", + "Updating database schema" : "Actualizando esquema de base de datos", + "Updated database" : "Base de datos actualizada", + "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Verificando si el archivo del esquema de base de datos puede ser actualizado (esto puedo tomar mucho tiempo dependiendo del tamaño de la base de datos)", + "Checked database schema update" : "Actualización del esquema de base de datos verificada", + "Checking updates of apps" : "Verificando actualizaciónes para aplicaciones", + "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Verificando si el esquema de la base de datos para %s puede ser actualizado (esto puede tomar mucho tiempo dependiendo del tamaño de la base de datos)", + "Checked database schema update for apps" : "Se verificó la actualización del esquema de la base de datos para las aplicaciones", + "Updated \"%s\" to %s" : "Actualizando \"%s\" a %s", + "Set log level to debug" : "Establecer nivel de bitacora a depurar", + "Reset log level" : "Restablecer nivel de bitácora", + "Starting code integrity check" : "Comenzando verificación de integridad del código", + "Finished code integrity check" : "Verificación de integridad del código terminó", + "%s (3rdparty)" : "%s (de3ros)", + "%s (incompatible)" : "%s (incompatible)", + "Following apps have been disabled: %s" : "Las siguientes aplicaciones han sido deshabilitadas: %s", + "Already up to date" : "Ya está actualizado", + "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Se presentaron problemas con la verificación de integridad del código. Mayor información ...</a>", + "Settings" : "Ajustes", + "Connection to server lost" : "Se ha perdido la conexión con el servidor", + "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Se presentó un erorr al cargar la página, recargando en %n segundo","Se presentó un erorr al cargar la página, recargando en %n segundo"], + "Saving..." : "Guardando...", + "Dismiss" : "Descartar", + "This action requires you to confirm your password" : "Esta acción requiere que confirme su contraseña", + "Authentication required" : "Se requiere autenticación", + "Password" : "Contraseña", + "Cancel" : "Cancelar", + "Confirm" : "Confirmar", + "Failed to authenticate, try again" : "Falla en la autenticación, favor de reintentar", + "seconds ago" : "hace segundos", + "Logging in …" : "Ingresando ...", + "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "La liga para restablecer su contraseña ha sido enviada a su correo electrónico. Si no lo recibe dentro de un tiempo razonable, verifique las carpetas de spam/basura.<br>Si no la encuentra consulte a su adminstrador local.", + "Your files are encrypted. There will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Sus archivos están encriptados. No habrá manera de recuperar sus datos una vez que restablezca su contraseña. <br />Si no está seguro de qué hacer, favor de contactar a su administrador antes de continuar. <br />¿Realmente desea continuar?", + "I know what I'm doing" : "Sé lo que estoy haciendo", + "Password can not be changed. Please contact your administrator." : "Las contraseñas no se pueden cambiar. Favor de contactar a su adminstrador", + "No" : "No", + "Yes" : "SÃ", + "No files in here" : "No hay archivos", + "Choose" : "Seleccionar", + "Error loading file picker template: {error}" : "Se presentó un error al cargar la plantilla del seleccionador de archivos: {error}", + "Ok" : "Ok", + "Error loading message template: {error}" : "Se presentó un error al cargar la plantilla del mensaje: {error}", + "read-only" : "sólo-lectura", + "_{count} file conflict_::_{count} file conflicts_" : ["{count} conflicto de archivo","{count} conflictos en el archivo"], + "One file conflict" : "Un conflicto en el archivo", + "New Files" : "Archivos Nuevos", + "Already existing files" : "Archivos ya existentes", + "Which files do you want to keep?" : "¿Cuales archivos desea mantener?", + "If you select both versions, the copied file will have a number added to its name." : "Si selecciona ambas versiones, se le agregará un número al nombre del archivo copiado.", + "Continue" : "Continuar", + "(all selected)" : "(todos seleccionados)", + "({count} selected)" : "({count} seleccionados)", + "Error loading file exists template" : "Se presentó un error al cargar la plantilla de archivo existente", + "Pending" : "Pendiente", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", + "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Su servidor web aún no se encuentra correctamente configurado para permitir la sincronización de archivos porque la interface de WebDAV parece estar rota. ", + "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Su servidor web no está correctamente configurado para resolver \"{url}\". Puede encontrar más información en nuestra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentación</a>.", + "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Este servidor no cuenta con una conexión a Internet: No fue posible alcanzar diversos puntos de acceso <EndPoints>. Esto significa que diversas funcionalidades como el montaje de almacenamiento extern, notificaciónes de actualizaciones o la instalación de aplicaciones de terceros no funcionarán. Acceder archivos de forma remota y el envÃo de correos electrónicos de notificación puede que tampoco funcionen. Le sugerimos habilitar la conexión a Internet para este servidor si desea contar con todas las caracterÃsticas.", + "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "No ha sido configurada la memoria caché. Favor de configurar un memechache si está disponible para mejorar el desempeño. Puede encontrar información adicional en nuestra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentación</a>.", + "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "No fue posible leer /dev/urandom por PHP que es altamente desalentado por razones de seguridad. Puede consultar mayores informes en nuestra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentación</a>.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Usted se encuentra usando PHP {version}. Le recomendamos actualizar su versión de PHP para aprovechar <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">las actualizaciones de seguridad y desempeño suministradas por el Grupo PHP</a> tan pronto como su distribución lo soporte. ", + "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached está configurado como un caché distribuido, pero el módulo equivocado PHP \"memcache\" está instalado. \\OC\\Memcache\\Memcached sólo soporta \"memchached\" y no \"memchache\". Favor de ver el <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">wiki de ambos módulos</a>.", + "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Algunos archivos no pasaron la verificación de integridad. Para mayor información de cómo resolver este tema consulte nuestra <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentación</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Listado de archivos inválidos …</a> / <a href=\"{rescanEndpoint}\">Volver a escanear…</a>)", + "The PHP Opcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend ↗</a> to use following settings in the <code>php.ini</code>:" : "PHP Opcache no se encuentra correctamente configurado. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Para un mejor desempelo le recomendamos↗</a> usar los siguientes ajustes en el archivo <code>php.ini</code>:", + "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "La fución PHP \"set_time_limit\" no está disponible. Esto podrÃa generar scripts que se interrumpan a media ejecución, rompiendo la instalación. Le recomendamos ámpliamente habilitar esta función.", + "Error occurred while checking server setup" : "Se presentó un error al verificar la configuración del servidor", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Posiblemente sus directorios de datos y archivos son accesibles desde Internet. El archivo .htaccess no está funcionando. Le recomendamos ámpliamente que configure su servidor web de tal modo que el directorio de datos no sea accesible o que mueva el directorio de datos fuera de la raÃz de documentos del servidor web. ", + "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "El encabezado HTTP \"{header}\" no está configurado como \"{expected}\". Esta es un riesgo potencial de seguridad o privacidad y le recomendamos cambiar este ajuste.", + "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Usted está accediendo este sitio via HTTP. Le recomendamos ámpliamente que configure su servidor para que en su lugar, el uso de HTTPS sea requerido como está descrito en nuestros <a href=\"{docUrl}\">consejos de seguridad</a>.", + "Shared" : "Compartido", + "Shared with {recipients}" : "Compartido con {recipients}", + "Error" : "Error", + "Error while sharing" : "Se presentó un error al compartir", + "Error while unsharing" : "Se presentó un error al dejar de compartir", + "Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración", + "The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} dÃas de haber sido creada", + "Set expiration date" : "Establecer la fecha de expiración", + "Expiration" : "Expiración", + "Expiration date" : "Fecha de expiración", + "Choose a password for the public link" : "Seleccione una contraseña para la liga pública", + "Copied!" : "¡Copiado!", + "Copy" : "Copiar", + "Not supported!" : "¡No está soportado!", + "Press ⌘-C to copy." : "Presione ⌘-C para copiar.", + "Press Ctrl-C to copy." : "Presione Ctrl-C para copiar.", + "Resharing is not allowed" : "No se permite volver a compartir", + "Share to {name}" : "Compartir con {name}", + "Share link" : "Compartir enlace", + "Link" : "Liga", + "Password protect" : "Proteger con contraseña", + "Allow upload and editing" : "Permitir cargar y editar", + "Allow editing" : "Permitir editar", + "upload only" : "sólo cargar", + "Email link to person" : "Enviar la liga por correo electrónico a una persona", + "Send" : "Enviar", + "Shared with you and the group {group} by {owner}" : "Compartido con usted y el grupo {group} por {owner}", + "Shared with you by {owner}" : "Compartido con usted por {owner}", + "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compatido mediante una liga", + "group" : "grupo", + "remote" : "remoto", + "email" : "correo electrónico", + "Unshare" : "Dejar de compartir", + "can reshare" : "pruede volver a compartir", + "can edit" : "puede editar", + "can create" : "puede crear", + "can change" : "puede modificar", + "can delete" : "puede borrar", + "access control" : "control de acceso", + "Could not unshare" : "No fue posible dejar de compartir", + "Share details could not be loaded for this item." : "Los detalles del recurso compartido no se pudieron cargar para este elemento. ", + "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Se requiere de la menos {count} caracter para el auto completar","Se requieren de la menos {count} caracteres para el auto completar"], + "This list is maybe truncated - please refine your search term to see more results." : "Esta lista puede estar truncada - favor de refinar sus términos de búsqueda para poder ver más resultados. ", + "No users or groups found for {search}" : "No se encontraron usuarios o gurpos para {search}", + "No users found for {search}" : "No se encontraron usuarios para {search}", + "An error occurred. Please try again" : "Se presentó un error. Favor de volver a intentar", + "{sharee} (group)" : "{sharee} (grupo)", + "{sharee} (remote)" : "{sharee} (remoto)", + "{sharee} (email)" : "{sharee} (correo electrónico)", + "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})", + "Share" : "Compartir", + "Share with users or by mail..." : "Compartir con otros usuarios o por correo electrónico...", + "Share with users or remote users..." : "Compartir con otros usuarios o con otros usuarios remotos...", + "Share with users, remote users or by mail..." : "Compartir con otros usuarios, otros usuarios remotos o por correo electrónico...", + "Share with users or groups..." : "Compartir con otros usuarios o grupos...", + "Share with users, groups or by mail..." : "Compartir con otros usuarios, grupos o por correo electrónico...", + "Share with users, groups or remote users..." : "Compartir con otros usuarios, otros usuarios remotos o grupos...", + "Share with users, groups, remote users or by mail..." : "Compartir con usuarios, grupos, usuarios rempotos o por correo...", + "Share with users..." : "Compartir con otros usuarios...", + "Error removing share" : "Se presentó un error al dejar de compartir", + "Non-existing tag #{tag}" : "Etiqueta #{tag} no-existente", + "restricted" : "restringido", + "invisible" : "invisible", + "({scope})" : "({scope})", + "Delete" : "Borrar", + "Rename" : "Renombrar", + "Collaborative tags" : "Etiquetas colaborativas", + "No tags found" : "No se encontraron etiquetas", + "The object type is not specified." : "El tipo del objeto no está especificado.", + "Enter new" : "Ingresar nuevo", + "Add" : "Agregar", + "Edit tags" : "Editar etiquetas", + "Error loading dialog template: {error}" : "Se presentó un error al cargar la plantilla de diálogo: {error}", + "No tags selected for deletion." : "No hay etiquetas seleccionadas para borrar.", + "unknown text" : "texto desconocido", + "Hello world!" : "¡Hola mundo!", + "sunny" : "soleado", + "Hello {name}, the weather is {weather}" : "Hola {name}, el clima es {weather}", + "Hello {name}" : "Hola {name}", + "new" : "nuevo", + "_download %n file_::_download %n files_" : ["Descargar %n archivos","Descargar %n archivos"], + "The update is in progress, leaving this page might interrupt the process in some environments." : "La actualización está en curso, abandonar esta página puede interrumpir el proceso en algunos ambientes. ", + "Update to {version}" : "Actualizar a {version}", + "An error occurred." : "Se presentó un error.", + "Please reload the page." : "Favor de volver a cargar la página.", + "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "La actualización no fue exitosa. Favor de reportar este tema a la <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Comunidad Nextcloud</a>.", + "Continue to Nextcloud" : "Continuar a Nextcloud", + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["La actualización fue exitosa. Lo estamos redireccionando a Nextcloud en %n segundo. ","La actualización fue exitosa. Lo estamos redireccionando a Nextcloud en %n segundos."], + "Searching other places" : "Buscando en otras ubicaciones", + "No search results in other folders for {tag}{filter}{endtag}" : "No hay resultados para la búsqueda en otras carpetas para {tag}{filter}{endtag}", + "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} resultado de la búsqueda en otra carpeta","{count} resultados de la búsqueda en otras carpetas"], + "Personal" : "Personal", + "Users" : "Usuarios", + "Apps" : "Aplicaciones", + "Admin" : "Administración", + "Help" : "Ayuda", + "Access forbidden" : "Acceso denegado", + "File not found" : "Archivo no encontrado", + "The specified document has not been found on the server." : "El documento especificado no ha sido encontrado en el servidor. ", + "You can click here to return to %s." : "Puede hacer click aquà para regresar a %s.", + "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Hola,\n\nsólo queremos informarle que %s ha compartido %s con usted.\n\nConsúltelo aquÃ: %s\n\n", + "The share will expire on %s." : "El recurso dejará de ser compartido el %s.", + "Cheers!" : "¡Saludos!", + "Internal Server Error" : "Error interno del servidor", + "The server encountered an internal error and was unable to complete your request." : "Se presentó un error interno en el servidor y no fue posilbe completar su solicitud. ", + "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Favor de contactar al administrador del servidor si este problema se presenta en múltiples ocasiones, favor de incluir los detalles técnicos a continuación en su reporte. ", + "More details can be found in the server log." : "Puede consultar más detalles en la bitácora del servidor. ", + "Technical details" : "Detalles técnicos", + "Remote Address: %s" : "Dirección Remota: %s", + "Request ID: %s" : "ID de solicitud: %s", + "Type: %s" : "Tipo: %s", + "Code: %s" : "Código: %s", + "Message: %s" : "Mensaje: %s", + "File: %s" : "Archivo: %s", + "Line: %s" : "LÃnea: %s", + "Trace" : "Rastrear", + "Security warning" : "Advertencia de seguridad", + "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Su directorio de datos y sus archivos probablemente sean accesibles desde Internet ya que el archivo .htaccess no funciona.", + "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentation</a>." : "Para más información de cómo configurar propiamente su servidor, favor de ver la <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">documentación</a>.", + "Create an <strong>admin account</strong>" : "Crear una <strong>cuenta de administrador</strong>", + "Username" : "Nombre de usuario", + "Storage & database" : "Almacenamiento & base de datos", + "Data folder" : "Carpeta de datos", + "Configure the database" : "Configurar la base de datos", + "Only %s is available." : "Sólo %s está disponible.", + "Install and activate additional PHP modules to choose other database types." : "Instale y active módulos adicionales de PHP para seleccionar otros tipos de bases de datos. ", + "For more details check out the documentation." : "Favor de consultar la documentación para más detalles. ", + "Database user" : "Usuario de la base de datos", + "Database password" : "Contraseña de la base de datos", + "Database name" : "Nombre de la base de datos", + "Database tablespace" : "Espacio de tablas de la base de datos", + "Database host" : "Servidor de base de datos", + "Please specify the port number along with the host name (e.g., localhost:5432)." : "Favor de especificar el número de puerto asà como el nombre del servidor (ejem., localhost:5432).", + "Performance warning" : "Advertencia de desempeño", + "SQLite will be used as database." : "SQLite será usado como la base de datos.", + "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "El uso de SQLiite es especialmente desalentado al usar el cliente de escritorio para sincrionizar. ", + "Finish setup" : "Terminar configuración", + "Finishing …" : "Terminando …", + "Need help?" : "¿Necesita ayuda?", + "See the documentation" : "Ver la documentación", + "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Esta aplicación requiere de JavaScript para su correcta operación. Favor de {linkstart}habilitar JavaScript{linkend} y vuelva a cargar la página. ", + "More apps" : "Más aplicaciones", + "Search" : "Buscar", + "This action requires you to confirm your password:" : "Esta acción requiere que confirme su contraseña:", + "Confirm your password" : "Confirme su contraseña", + "Server side authentication failed!" : "¡Falló la autenticación del lado del servidor!", + "Please contact your administrator." : "Favor de contactar al administrador.", + "An internal error occurred." : "Se presentó un error interno.", + "Please try again or contact your administrator." : "Favor de volver a intentarlo o contacte a su adminsitrador. ", + "Username or email" : "Nombre de usuario o contraseña", + "Wrong password. Reset it?" : "Contraseña equivocada. ¿Desea reestablecerla?", + "Wrong password." : "Contraseña inválida. ", + "Log in" : "Ingresar", + "Stay logged in" : "Mantener la sesión abierta", + "Alternative Logins" : "Accesos Alternativos", + "Use the following link to reset your password: {link}" : "Use la siguiente liga para restablecer su contraseña: {link}", + "New password" : "Nueva contraseña", + "New Password" : "Nueva Contraseña", + "Reset password" : "Restablecer contraseña", + "Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Hola,<br><br> sólo queremos informarle que %s ha compartido <strong>%s</strong> con usted. <br><a href=\"%s\">¡Véalo!</a><br><br>", + "This Nextcloud instance is currently in single user mode." : "Esta instalación de Nextcloud se encuentra en modo de usuario único.", + "This means only administrators can use the instance." : "Esto significa que sólo los administradores pueden usar la instancia.", + "Contact your system administrator if this message persists or appeared unexpectedly." : "Contacte a su administrador del sistema si este mensaje persiste o se presentó de manera inesperada.", + "Thank you for your patience." : "Gracias por su paciencia.", + "Log out" : "Salir", + "Two-factor authentication" : "Autenticación de dos-factores", + "Enhanced security is enabled for your account. Please authenticate using a second factor." : "La seguridad mejorada está habilitada para su cuenta. Favor de autenticarse usando un segundo factor. ", + "Cancel log in" : "Cancelar inicio de sesión", + "Use backup code" : "Usar código de respaldo", + "Error while validating your second factor" : "Se presentó un error al validar su segundo factor", + "You are accessing the server from an untrusted domain." : "Se encuentra accediendo al servidor desde un dominio no confiable. ", + "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Favor de contactar a su administrador. Si usted es el administrador de esta instancia, configure la opción \"trusted_domains\" en config/config.php. Un ejemplo de configuración se proporciona en config/config.sample.php. ", + "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Dependiendo de su configuración, como adminsitrador podrÃa llegar a usar el botón inferior para confiar en este dominio. ", + "Add \"%s\" as trusted domain" : "Agregar \"%s\" como un dominio de confianza", + "App update required" : "Se requiere una actualización de la aplicación", + "%s will be updated to version %s" : "%s será actualizado a la versión %s", + "These apps will be updated:" : "Las siguientes apllicaciones se actualizarán:", + "These incompatible apps will be disabled:" : "Las siguientes aplicaciones incompatibles serán deshabilitadas:", + "The theme %s has been disabled." : "El tema %s ha sido deshabilitado. ", + "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Favor de asegurarse que la base de datos, la carpeta de configuración y las carpetas de datos hayan sido respaldadas antes de continuar. ", + "Start update" : "Iniciar actualización", + "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Para evitar que la expiración de tiempo en instalaciones grandes, usted puede ejeuctar el siguiente comando desde su directorio de instalación:", + "Detailed logs" : "Bitácoras detalladas", + "Update needed" : "Actualización requerida", + "Please use the command line updater because you have a big instance." : "Favor de usar el actualizador de lÃnea de comando porque usted tiene una instancia grande. ", + "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Para más ayuda, consulte la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">doccumentación</a>.", + "This %s instance is currently in maintenance mode, which may take a while." : "Esta instancia %s se encuentra actualmente en modo mantenimiento, que podrÃa tomar algo de tiempo. ", + "This page will refresh itself when the %s instance is available again." : "Esta página se actualizará sola cuando la instancia %s esté disponible de nuevo. ", + "Problem loading page, reloading in 5 seconds" : "Se presentó un problema al cargar la página, recargando en 5 segundos", + "The update was successful. Redirecting you to Nextcloud now." : "La actualización fue exitosa. Redirigiendolo a su Nextcloud ahora. " +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/core/l10n/eu.js b/core/l10n/eu.js index c1419227129..d20d8df36c2 100644 --- a/core/l10n/eu.js +++ b/core/l10n/eu.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "Ebakidura ez da karratua", "Couldn't reset password because the token is invalid" : "Ezin izan da pasahitza berrezarri tokena baliogabea delako", "Couldn't reset password because the token is expired" : "Ezin da berrezarri pasahitza token-a iraungi duelako.", - "Couldn't send reset email. Please make sure your username is correct." : "Ezin izan da berrezartzeko eposta bidali. Ziurtatu zure erabiltzaile izena egokia dela.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Ezin izan da berreskuratze posta elektronikoa bidali helbiderik ez dagoelako erabiltzaile honetarako. Jarri harremanetan administratzailearekin.", "%s password reset" : "%s pasahitza berrezarri", "Couldn't send reset email. Please contact your administrator." : "Ezin da berrezartzeko eposta bidali. Mesedez jarri harremetan zure administradorearekin.", + "Couldn't send reset email. Please make sure your username is correct." : "Ezin izan da berrezartzeko eposta bidali. Ziurtatu zure erabiltzaile izena egokia dela.", "Preparing update" : "Eguneratzea prestatzen", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Konponketa abisua:", diff --git a/core/l10n/eu.json b/core/l10n/eu.json index 981b45e1bb4..79f7df79c9f 100644 --- a/core/l10n/eu.json +++ b/core/l10n/eu.json @@ -14,10 +14,10 @@ "Crop is not square" : "Ebakidura ez da karratua", "Couldn't reset password because the token is invalid" : "Ezin izan da pasahitza berrezarri tokena baliogabea delako", "Couldn't reset password because the token is expired" : "Ezin da berrezarri pasahitza token-a iraungi duelako.", - "Couldn't send reset email. Please make sure your username is correct." : "Ezin izan da berrezartzeko eposta bidali. Ziurtatu zure erabiltzaile izena egokia dela.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Ezin izan da berreskuratze posta elektronikoa bidali helbiderik ez dagoelako erabiltzaile honetarako. Jarri harremanetan administratzailearekin.", "%s password reset" : "%s pasahitza berrezarri", "Couldn't send reset email. Please contact your administrator." : "Ezin da berrezartzeko eposta bidali. Mesedez jarri harremetan zure administradorearekin.", + "Couldn't send reset email. Please make sure your username is correct." : "Ezin izan da berrezartzeko eposta bidali. Ziurtatu zure erabiltzaile izena egokia dela.", "Preparing update" : "Eguneratzea prestatzen", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Konponketa abisua:", diff --git a/core/l10n/fi.js b/core/l10n/fi.js index 65cbfa4d4a8..663b00767ac 100644 --- a/core/l10n/fi.js +++ b/core/l10n/fi.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "Leikkaus ei ole neliö", "Couldn't reset password because the token is invalid" : "Salasanaa ei voitu palauttaa, koska valtuutus on virheellinen", "Couldn't reset password because the token is expired" : "Salasanaa ei voitu palauttaa, koska valtuutus on vanhentunut", - "Couldn't send reset email. Please make sure your username is correct." : "Palautussähköpostin lähettäminen ei onnistunut. Varmista, että käyttäjätunnuksesi on oikein.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Salasanan palautusviestiä ei voitu lähettää sähköpostitse, koska käyttäjätunnukselle ei ole määritetty sähköpostiosoitetta. Ota yhteys ylläpitäjään.", "%s password reset" : "%s salasanan palautus", "Couldn't send reset email. Please contact your administrator." : "Palautussähköpostin lähettäminen ei onnistunut. Ota yhteys ylläpitäjään.", + "Couldn't send reset email. Please make sure your username is correct." : "Palautussähköpostin lähettäminen ei onnistunut. Varmista, että käyttäjätunnuksesi on oikein.", "Preparing update" : "Valmistellaan päivitystä", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Korjausvaroitus:", @@ -124,6 +124,7 @@ OC.L10N.register( "Password protect" : "Suojaa salasanalla", "Allow upload and editing" : "Salli lähetys ja muokkaus", "Allow editing" : "Salli muokkaus", + "upload only" : "vain lähetys", "Email link to person" : "Lähetä linkki sähköpostitse", "Send" : "Lähetä", "Shared with you and the group {group} by {owner}" : "Jaettu sinun ja ryhmän {group} kanssa käyttäjältä {owner}", @@ -149,6 +150,7 @@ OC.L10N.register( "{sharee} (group)" : "{sharee} (ryhmä)", "{sharee} (remote)" : "{sharee} (etä)", "{sharee} (email)" : "{sharee} (sähköposti)", + "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})", "Share" : "Jaa", "Share with people on other servers using their Federated Cloud ID username@example.com/nextcloud" : "Jaa toisia Nextcloud-järjestelmiä käyttäville Federated Cloud ID -tunnuksella muodossa käyttäjätunnus@example.com/nextcloud", "Share with users or by mail..." : "Jaa käyttäjille tai sähköpostilla...", @@ -179,6 +181,7 @@ OC.L10N.register( "sunny" : "aurinkoinen", "Hello {name}, the weather is {weather}" : "Hei {name}, sää on {weather}", "Hello {name}" : "Hei {name}", + "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>Nämä ovat hakutulokset<script>alert(1)</script></strong>", "new" : "uusi", "_download %n file_::_download %n files_" : ["lataa %n tiedosto","lataa %n tiedostoa"], "The update is in progress, leaving this page might interrupt the process in some environments." : "Päivitys on meneillään. Poistuminen tältä sivulta saattaa keskeyttää toimenpiteen joissain käyttöympäristöissä.", diff --git a/core/l10n/fi.json b/core/l10n/fi.json index 06f1762cbcb..17139941c14 100644 --- a/core/l10n/fi.json +++ b/core/l10n/fi.json @@ -14,10 +14,10 @@ "Crop is not square" : "Leikkaus ei ole neliö", "Couldn't reset password because the token is invalid" : "Salasanaa ei voitu palauttaa, koska valtuutus on virheellinen", "Couldn't reset password because the token is expired" : "Salasanaa ei voitu palauttaa, koska valtuutus on vanhentunut", - "Couldn't send reset email. Please make sure your username is correct." : "Palautussähköpostin lähettäminen ei onnistunut. Varmista, että käyttäjätunnuksesi on oikein.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Salasanan palautusviestiä ei voitu lähettää sähköpostitse, koska käyttäjätunnukselle ei ole määritetty sähköpostiosoitetta. Ota yhteys ylläpitäjään.", "%s password reset" : "%s salasanan palautus", "Couldn't send reset email. Please contact your administrator." : "Palautussähköpostin lähettäminen ei onnistunut. Ota yhteys ylläpitäjään.", + "Couldn't send reset email. Please make sure your username is correct." : "Palautussähköpostin lähettäminen ei onnistunut. Varmista, että käyttäjätunnuksesi on oikein.", "Preparing update" : "Valmistellaan päivitystä", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Korjausvaroitus:", @@ -122,6 +122,7 @@ "Password protect" : "Suojaa salasanalla", "Allow upload and editing" : "Salli lähetys ja muokkaus", "Allow editing" : "Salli muokkaus", + "upload only" : "vain lähetys", "Email link to person" : "Lähetä linkki sähköpostitse", "Send" : "Lähetä", "Shared with you and the group {group} by {owner}" : "Jaettu sinun ja ryhmän {group} kanssa käyttäjältä {owner}", @@ -147,6 +148,7 @@ "{sharee} (group)" : "{sharee} (ryhmä)", "{sharee} (remote)" : "{sharee} (etä)", "{sharee} (email)" : "{sharee} (sähköposti)", + "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})", "Share" : "Jaa", "Share with people on other servers using their Federated Cloud ID username@example.com/nextcloud" : "Jaa toisia Nextcloud-järjestelmiä käyttäville Federated Cloud ID -tunnuksella muodossa käyttäjätunnus@example.com/nextcloud", "Share with users or by mail..." : "Jaa käyttäjille tai sähköpostilla...", @@ -177,6 +179,7 @@ "sunny" : "aurinkoinen", "Hello {name}, the weather is {weather}" : "Hei {name}, sää on {weather}", "Hello {name}" : "Hei {name}", + "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>Nämä ovat hakutulokset<script>alert(1)</script></strong>", "new" : "uusi", "_download %n file_::_download %n files_" : ["lataa %n tiedosto","lataa %n tiedostoa"], "The update is in progress, leaving this page might interrupt the process in some environments." : "Päivitys on meneillään. Poistuminen tältä sivulta saattaa keskeyttää toimenpiteen joissain käyttöympäristöissä.", diff --git a/core/l10n/fr.js b/core/l10n/fr.js index f9d25c24703..20cf0a7444f 100644 --- a/core/l10n/fr.js +++ b/core/l10n/fr.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "Le recadrage n'est pas carré", "Couldn't reset password because the token is invalid" : "Impossible de réinitialiser le mot de passe car le jeton n'est pas valable", "Couldn't reset password because the token is expired" : "Impossible de réinitialiser le mot de passe car le jeton a expiré", - "Couldn't send reset email. Please make sure your username is correct." : "Impossible d'envoyer le courriel de réinitialisation. Veuillez vérifier que votre nom d'utilisateur est correct.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Impossible d'envoyer le courriel de réinitialisation car il n'y a aucune adresse de courriel pour cet utilisateur. Veuillez contacter votre administrateur.", "%s password reset" : "Réinitialisation de votre mot de passe %s", "Couldn't send reset email. Please contact your administrator." : "Impossible d'envoyer le courriel de réinitialisation. Veuillez contacter votre administrateur.", + "Couldn't send reset email. Please make sure your username is correct." : "Impossible d'envoyer le courriel de réinitialisation. Veuillez vérifier que votre nom d'utilisateur est correct.", "Preparing update" : "Préparation de la mise à jour", "[%d / %d]: %s" : "[%d / %d] : %s", "Repair warning: " : "Avertissement de réparation :", @@ -114,6 +114,7 @@ OC.L10N.register( "Expiration" : "Expiration", "Expiration date" : "Date d'expiration", "Choose a password for the public link" : "Choisissez un mot de passe pour le lien public", + "Choose a password for the public link or press enter" : "Choisissez un mot de passe pour le lien public ou appuyez sur \"entrée\"", "Copied!" : "Copié !", "Copy" : "Copier", "Not supported!" : "Non supporté!", diff --git a/core/l10n/fr.json b/core/l10n/fr.json index 253ce0d4b94..027f1094001 100644 --- a/core/l10n/fr.json +++ b/core/l10n/fr.json @@ -14,10 +14,10 @@ "Crop is not square" : "Le recadrage n'est pas carré", "Couldn't reset password because the token is invalid" : "Impossible de réinitialiser le mot de passe car le jeton n'est pas valable", "Couldn't reset password because the token is expired" : "Impossible de réinitialiser le mot de passe car le jeton a expiré", - "Couldn't send reset email. Please make sure your username is correct." : "Impossible d'envoyer le courriel de réinitialisation. Veuillez vérifier que votre nom d'utilisateur est correct.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Impossible d'envoyer le courriel de réinitialisation car il n'y a aucune adresse de courriel pour cet utilisateur. Veuillez contacter votre administrateur.", "%s password reset" : "Réinitialisation de votre mot de passe %s", "Couldn't send reset email. Please contact your administrator." : "Impossible d'envoyer le courriel de réinitialisation. Veuillez contacter votre administrateur.", + "Couldn't send reset email. Please make sure your username is correct." : "Impossible d'envoyer le courriel de réinitialisation. Veuillez vérifier que votre nom d'utilisateur est correct.", "Preparing update" : "Préparation de la mise à jour", "[%d / %d]: %s" : "[%d / %d] : %s", "Repair warning: " : "Avertissement de réparation :", @@ -112,6 +112,7 @@ "Expiration" : "Expiration", "Expiration date" : "Date d'expiration", "Choose a password for the public link" : "Choisissez un mot de passe pour le lien public", + "Choose a password for the public link or press enter" : "Choisissez un mot de passe pour le lien public ou appuyez sur \"entrée\"", "Copied!" : "Copié !", "Copy" : "Copier", "Not supported!" : "Non supporté!", diff --git a/core/l10n/he.js b/core/l10n/he.js index b95bf88ce85..c3fa70d6792 100644 --- a/core/l10n/he.js +++ b/core/l10n/he.js @@ -14,10 +14,10 @@ OC.L10N.register( "Crop is not square" : "×”×§×™×˜×•× ××™× ×• מרובע", "Couldn't reset password because the token is invalid" : "×œ× × ×™×ª×Ÿ ל×פס ×¡×™×¡×ž× ×›×™×•×•×Ÿ שמחרוזת ×”×ימות ××™× ×” חוקית", "Couldn't reset password because the token is expired" : "×œ× × ×™×ª×Ÿ ל×פס ×¡×™×¡×ž× ×›×™×•×•×Ÿ שמחרוזת ×”×ימות פגה תוקף", - "Couldn't send reset email. Please make sure your username is correct." : "×œ× × ×™×ª×Ÿ ×”×™×” לשלוח דו×ר ××œ×§×˜×¨×•× ×™ ל×יפוס. יש ×œ×•×•×“× ×©×©× ×”×ž×©×ª×ž×© × ×›×•×Ÿ.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "×œ× × ×™×ª×Ÿ ×”×™×” לשלוח דו×ר ××œ×§×˜×¨×•× ×™ כיוון ×©×œ× ×ž×•×’×“×¨ דו×ר ××œ×§×˜×¨×•× ×™ למשתמש ×–×”. יש ליצור קשר ×¢× ×ž× ×”×œ.", "%s password reset" : "%s ×”×¡×™×¡×ž× ×ופסה", "Couldn't send reset email. Please contact your administrator." : "×œ× × ×™×ª×Ÿ ×”×™×” לשלוח דו×ר ××œ×§×˜×¨×•× ×™ ל×יפוס. יש ×œ×¤× ×•×ª ×œ×ž× ×”×œ שלך.", + "Couldn't send reset email. Please make sure your username is correct." : "×œ× × ×™×ª×Ÿ ×”×™×” לשלוח דו×ר ××œ×§×˜×¨×•× ×™ ל×יפוס. יש ×œ×•×•×“× ×©×©× ×”×ž×©×ª×ž×© × ×›×•×Ÿ.", "Preparing update" : "מכין עדכון", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "×זהרת תיקון:", diff --git a/core/l10n/he.json b/core/l10n/he.json index 045c6815ff1..9163c6c28bd 100644 --- a/core/l10n/he.json +++ b/core/l10n/he.json @@ -12,10 +12,10 @@ "Crop is not square" : "×”×§×™×˜×•× ××™× ×• מרובע", "Couldn't reset password because the token is invalid" : "×œ× × ×™×ª×Ÿ ל×פס ×¡×™×¡×ž× ×›×™×•×•×Ÿ שמחרוזת ×”×ימות ××™× ×” חוקית", "Couldn't reset password because the token is expired" : "×œ× × ×™×ª×Ÿ ל×פס ×¡×™×¡×ž× ×›×™×•×•×Ÿ שמחרוזת ×”×ימות פגה תוקף", - "Couldn't send reset email. Please make sure your username is correct." : "×œ× × ×™×ª×Ÿ ×”×™×” לשלוח דו×ר ××œ×§×˜×¨×•× ×™ ל×יפוס. יש ×œ×•×•×“× ×©×©× ×”×ž×©×ª×ž×© × ×›×•×Ÿ.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "×œ× × ×™×ª×Ÿ ×”×™×” לשלוח דו×ר ××œ×§×˜×¨×•× ×™ כיוון ×©×œ× ×ž×•×’×“×¨ דו×ר ××œ×§×˜×¨×•× ×™ למשתמש ×–×”. יש ליצור קשר ×¢× ×ž× ×”×œ.", "%s password reset" : "%s ×”×¡×™×¡×ž× ×ופסה", "Couldn't send reset email. Please contact your administrator." : "×œ× × ×™×ª×Ÿ ×”×™×” לשלוח דו×ר ××œ×§×˜×¨×•× ×™ ל×יפוס. יש ×œ×¤× ×•×ª ×œ×ž× ×”×œ שלך.", + "Couldn't send reset email. Please make sure your username is correct." : "×œ× × ×™×ª×Ÿ ×”×™×” לשלוח דו×ר ××œ×§×˜×¨×•× ×™ ל×יפוס. יש ×œ×•×•×“× ×©×©× ×”×ž×©×ª×ž×© × ×›×•×Ÿ.", "Preparing update" : "מכין עדכון", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "×זהרת תיקון:", diff --git a/core/l10n/hu.js b/core/l10n/hu.js index b431ac327f6..29e9ad400b0 100644 --- a/core/l10n/hu.js +++ b/core/l10n/hu.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "Levágás nem négyzet alakú", "Couldn't reset password because the token is invalid" : "Nem lehet a jelszót törölni, mert a token érvénytelen.", "Couldn't reset password because the token is expired" : "Nem lehet a jelszót törölni, mert a token lejárt.", - "Couldn't send reset email. Please make sure your username is correct." : "VisszaállÃtási e-mail nem küldhetÅ‘. Kérlek, lépj kapcsolatba a rendszergazdával. ", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Nem tudtunk visszaállÃtási e-mailt küldeni, mert ehhez a felhasználóhoz nem tartozik e-mail cÃm. Kérlek, vedd fel a kapcsolatot a rendszergazdával!", "%s password reset" : "%s jelszó visszaállÃtás", "Couldn't send reset email. Please contact your administrator." : "VisszaállÃtási e-mail nem küldhetÅ‘. Kérlek, lépj kapcsolatba a rendszergazdával.", + "Couldn't send reset email. Please make sure your username is correct." : "VisszaállÃtási e-mail nem küldhetÅ‘. Kérlek, lépj kapcsolatba a rendszergazdával. ", "Preparing update" : "Felkészülés a frissÃtésre", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "JavÃtási figyelmeztetés:", @@ -121,6 +121,7 @@ OC.L10N.register( "Password protect" : "Jelszóval védett", "Allow upload and editing" : "Feltöltés és szerkesztés engedélyezése", "Allow editing" : "Szerkesztés engedélyezése", + "upload only" : "csak feltöltés", "Email link to person" : "Hivatkozás elküldése e-mail cÃmre", "Send" : "Küldés", "Shared with you and the group {group} by {owner}" : "{owner} megosztotta veled és ezzel a csoporttal: {group}", @@ -144,6 +145,7 @@ OC.L10N.register( "{sharee} (group)" : "{sharee} (csoport)", "{sharee} (remote)" : "{sharee} (távoli)", "{sharee} (email)" : "{sharee} (e-mail)", + "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})", "Share" : "Megosztás", "Share with people on other servers using their Federated Cloud ID username@example.com/nextcloud" : "Megosztás más szervert használó emberekkel, az EgyesÃtett FelhÅ‘ AzonosÃtóval: username@example.com/nextcloud", "Share with users or by mail..." : "Megosztás felhasználókkal e-mailben...", diff --git a/core/l10n/hu.json b/core/l10n/hu.json index 0393b022bce..2bf50c205ce 100644 --- a/core/l10n/hu.json +++ b/core/l10n/hu.json @@ -14,10 +14,10 @@ "Crop is not square" : "Levágás nem négyzet alakú", "Couldn't reset password because the token is invalid" : "Nem lehet a jelszót törölni, mert a token érvénytelen.", "Couldn't reset password because the token is expired" : "Nem lehet a jelszót törölni, mert a token lejárt.", - "Couldn't send reset email. Please make sure your username is correct." : "VisszaállÃtási e-mail nem küldhetÅ‘. Kérlek, lépj kapcsolatba a rendszergazdával. ", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Nem tudtunk visszaállÃtási e-mailt küldeni, mert ehhez a felhasználóhoz nem tartozik e-mail cÃm. Kérlek, vedd fel a kapcsolatot a rendszergazdával!", "%s password reset" : "%s jelszó visszaállÃtás", "Couldn't send reset email. Please contact your administrator." : "VisszaállÃtási e-mail nem küldhetÅ‘. Kérlek, lépj kapcsolatba a rendszergazdával.", + "Couldn't send reset email. Please make sure your username is correct." : "VisszaállÃtási e-mail nem küldhetÅ‘. Kérlek, lépj kapcsolatba a rendszergazdával. ", "Preparing update" : "Felkészülés a frissÃtésre", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "JavÃtási figyelmeztetés:", @@ -119,6 +119,7 @@ "Password protect" : "Jelszóval védett", "Allow upload and editing" : "Feltöltés és szerkesztés engedélyezése", "Allow editing" : "Szerkesztés engedélyezése", + "upload only" : "csak feltöltés", "Email link to person" : "Hivatkozás elküldése e-mail cÃmre", "Send" : "Küldés", "Shared with you and the group {group} by {owner}" : "{owner} megosztotta veled és ezzel a csoporttal: {group}", @@ -142,6 +143,7 @@ "{sharee} (group)" : "{sharee} (csoport)", "{sharee} (remote)" : "{sharee} (távoli)", "{sharee} (email)" : "{sharee} (e-mail)", + "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})", "Share" : "Megosztás", "Share with people on other servers using their Federated Cloud ID username@example.com/nextcloud" : "Megosztás más szervert használó emberekkel, az EgyesÃtett FelhÅ‘ AzonosÃtóval: username@example.com/nextcloud", "Share with users or by mail..." : "Megosztás felhasználókkal e-mailben...", diff --git a/core/l10n/id.js b/core/l10n/id.js index acdcf770b2f..5077bfcf0e7 100644 --- a/core/l10n/id.js +++ b/core/l10n/id.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "Pangkas ini tidak persegi", "Couldn't reset password because the token is invalid" : "Tidak dapat menyetel ulang sandi karena token tidak sah", "Couldn't reset password because the token is expired" : "Tidak dapat menyetel ulang sandi karena token telah kadaluarsa", - "Couldn't send reset email. Please make sure your username is correct." : "Tidak dapat menyetel ulang email. Mohon pastikan nama pengguna Anda benar.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Tidak dapat mengirim email karena tidak ada alamat email untuk nama pengguna ini. Silahkan hubungi administrator Anda.", "%s password reset" : "%s sandi disetel ulang", "Couldn't send reset email. Please contact your administrator." : "Tidak dapat mengirim email setel ulang. Silakan hubungi administrator Anda.", + "Couldn't send reset email. Please make sure your username is correct." : "Tidak dapat menyetel ulang email. Mohon pastikan nama pengguna Anda benar.", "Preparing update" : "Mempersiapkan pembaruan", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Peringatan perbaikan:", diff --git a/core/l10n/id.json b/core/l10n/id.json index 977b97d9c7d..74e3305c241 100644 --- a/core/l10n/id.json +++ b/core/l10n/id.json @@ -14,10 +14,10 @@ "Crop is not square" : "Pangkas ini tidak persegi", "Couldn't reset password because the token is invalid" : "Tidak dapat menyetel ulang sandi karena token tidak sah", "Couldn't reset password because the token is expired" : "Tidak dapat menyetel ulang sandi karena token telah kadaluarsa", - "Couldn't send reset email. Please make sure your username is correct." : "Tidak dapat menyetel ulang email. Mohon pastikan nama pengguna Anda benar.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Tidak dapat mengirim email karena tidak ada alamat email untuk nama pengguna ini. Silahkan hubungi administrator Anda.", "%s password reset" : "%s sandi disetel ulang", "Couldn't send reset email. Please contact your administrator." : "Tidak dapat mengirim email setel ulang. Silakan hubungi administrator Anda.", + "Couldn't send reset email. Please make sure your username is correct." : "Tidak dapat menyetel ulang email. Mohon pastikan nama pengguna Anda benar.", "Preparing update" : "Mempersiapkan pembaruan", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Peringatan perbaikan:", diff --git a/core/l10n/is.js b/core/l10n/is.js index 971660f3e54..52ef9a039ad 100644 --- a/core/l10n/is.js +++ b/core/l10n/is.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "Utanskurður er ekki ferningslaga", "Couldn't reset password because the token is invalid" : "Gat ekki endurstillt lykilorðið vegna þess að teiknið er ógilt", "Couldn't reset password because the token is expired" : "Gat ekki endurstillt lykilorðið vegna þess að teiknið er útrunnið", - "Couldn't send reset email. Please make sure your username is correct." : "Gat ekki sent endurstillingu à tölvupósti. Gakktu úr skugga um að notandanafn þitt sé rétt.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Gat ekki sent endurstillingu à tölvupósti þvà það er ekkert gilt tölvupóstfang fyrir þennan notanda. Hafðu samband við kerfisstjóra.", "%s password reset" : "%s lykilorð endurstillt", "Couldn't send reset email. Please contact your administrator." : "Gat ekki sent endurstillingu à tölvupósti. Hafðu samband við kerfisstjóra.", + "Couldn't send reset email. Please make sure your username is correct." : "Gat ekki sent endurstillingu à tölvupósti. Gakktu úr skugga um að notandanafn þitt sé rétt.", "Preparing update" : "Undirbý uppfærslu", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Viðvörun vegna viðgerðar: ", @@ -114,6 +114,7 @@ OC.L10N.register( "Expiration" : "Rennur út", "Expiration date" : "Gildir til", "Choose a password for the public link" : "Veldu þér lykilorð fyrir almenningstengil", + "Choose a password for the public link or press enter" : "Veldu þér lykilorð fyrir opinberan tengil eða ýttu á Enter", "Copied!" : "Afritað!", "Copy" : "Afrita", "Not supported!" : "Óstutt!", diff --git a/core/l10n/is.json b/core/l10n/is.json index 1a03d937b3a..6691f0d8ee5 100644 --- a/core/l10n/is.json +++ b/core/l10n/is.json @@ -14,10 +14,10 @@ "Crop is not square" : "Utanskurður er ekki ferningslaga", "Couldn't reset password because the token is invalid" : "Gat ekki endurstillt lykilorðið vegna þess að teiknið er ógilt", "Couldn't reset password because the token is expired" : "Gat ekki endurstillt lykilorðið vegna þess að teiknið er útrunnið", - "Couldn't send reset email. Please make sure your username is correct." : "Gat ekki sent endurstillingu à tölvupósti. Gakktu úr skugga um að notandanafn þitt sé rétt.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Gat ekki sent endurstillingu à tölvupósti þvà það er ekkert gilt tölvupóstfang fyrir þennan notanda. Hafðu samband við kerfisstjóra.", "%s password reset" : "%s lykilorð endurstillt", "Couldn't send reset email. Please contact your administrator." : "Gat ekki sent endurstillingu à tölvupósti. Hafðu samband við kerfisstjóra.", + "Couldn't send reset email. Please make sure your username is correct." : "Gat ekki sent endurstillingu à tölvupósti. Gakktu úr skugga um að notandanafn þitt sé rétt.", "Preparing update" : "Undirbý uppfærslu", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Viðvörun vegna viðgerðar: ", @@ -112,6 +112,7 @@ "Expiration" : "Rennur út", "Expiration date" : "Gildir til", "Choose a password for the public link" : "Veldu þér lykilorð fyrir almenningstengil", + "Choose a password for the public link or press enter" : "Veldu þér lykilorð fyrir opinberan tengil eða ýttu á Enter", "Copied!" : "Afritað!", "Copy" : "Afrita", "Not supported!" : "Óstutt!", diff --git a/core/l10n/it.js b/core/l10n/it.js index 622d604e522..b54386ad194 100644 --- a/core/l10n/it.js +++ b/core/l10n/it.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "Il ritaglio non è quadrato", "Couldn't reset password because the token is invalid" : "Impossibile reimpostare la password poiché il token non è valido", "Couldn't reset password because the token is expired" : "Impossibile reimpostare la password poiché il token è scaduto", - "Couldn't send reset email. Please make sure your username is correct." : "Impossibile inviare l'email di reimpostazione. Assicurati che il nome utente sia corretto.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Impossibile inviare l'email di reimpostazione poiché non è presente un indirizzo email per questo nome utente. Contatta il tuo amministratore.", "%s password reset" : "Ripristino password di %s", "Couldn't send reset email. Please contact your administrator." : "Impossibile inviare l'email di reimpostazione. Contatta il tuo amministratore.", + "Couldn't send reset email. Please make sure your username is correct." : "Impossibile inviare l'email di reimpostazione. Assicurati che il nome utente sia corretto.", "Preparing update" : "Preparazione dell'aggiornamento", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Avviso di riparazione", diff --git a/core/l10n/it.json b/core/l10n/it.json index b800e1a1311..1e0c0eec30e 100644 --- a/core/l10n/it.json +++ b/core/l10n/it.json @@ -14,10 +14,10 @@ "Crop is not square" : "Il ritaglio non è quadrato", "Couldn't reset password because the token is invalid" : "Impossibile reimpostare la password poiché il token non è valido", "Couldn't reset password because the token is expired" : "Impossibile reimpostare la password poiché il token è scaduto", - "Couldn't send reset email. Please make sure your username is correct." : "Impossibile inviare l'email di reimpostazione. Assicurati che il nome utente sia corretto.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Impossibile inviare l'email di reimpostazione poiché non è presente un indirizzo email per questo nome utente. Contatta il tuo amministratore.", "%s password reset" : "Ripristino password di %s", "Couldn't send reset email. Please contact your administrator." : "Impossibile inviare l'email di reimpostazione. Contatta il tuo amministratore.", + "Couldn't send reset email. Please make sure your username is correct." : "Impossibile inviare l'email di reimpostazione. Assicurati che il nome utente sia corretto.", "Preparing update" : "Preparazione dell'aggiornamento", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Avviso di riparazione", diff --git a/core/l10n/ja.js b/core/l10n/ja.js index 3b1151095ee..7d16152496c 100644 --- a/core/l10n/ja.js +++ b/core/l10n/ja.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "クãƒãƒƒãƒ—ãŒæ£æ–¹å½¢ã§ã¯ã‚りã¾ã›ã‚“", "Couldn't reset password because the token is invalid" : "トークンãŒç„¡åйãªãŸã‚ã€ãƒ‘スワードをリセットã§ãã¾ã›ã‚“ã§ã—ãŸ", "Couldn't reset password because the token is expired" : "ãƒˆãƒ¼ã‚¯ãƒ³ãŒæœŸé™åˆ‡ã‚Œã®ãŸã‚ã€ãƒ‘スワードをリセットã§ãã¾ã›ã‚“ã§ã—ãŸ", - "Couldn't send reset email. Please make sure your username is correct." : "リセットメールをé€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ユーザーåãŒæ£ã—ã„ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼åã«ç´ä»˜ã‘られãŸãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒãªã„ãŸã‚ã€ãƒªã‚»ãƒƒãƒˆãƒ¡ãƒ¼ãƒ«ã‚’é€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚管ç†è€…ã«å•ã„åˆã‚ã›ã¦ãã ã•ã„。", "%s password reset" : "%s パスワードリセット", "Couldn't send reset email. Please contact your administrator." : "リセットメールをé€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚管ç†è€…ã«å•ã„åˆã‚ã›ã¦ãã ã•ã„。", + "Couldn't send reset email. Please make sure your username is correct." : "リセットメールをé€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ユーザーåãŒæ£ã—ã„ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。", "Preparing update" : "ã‚¢ãƒƒãƒ—ãƒ‡ãƒ¼ãƒˆã®æº–å‚™ä¸", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "修復è¦å‘Š:", @@ -114,6 +114,7 @@ OC.L10N.register( "Expiration" : "期é™åˆ‡ã‚Œ", "Expiration date" : "有効期é™", "Choose a password for the public link" : "URLã«ã‚ˆã‚‹å…±æœ‰ã®ãƒ‘スワードを入力", + "Choose a password for the public link or press enter" : "公開リンクã®ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ã‚’é¸æŠžã™ã‚‹ã‹ã€Enterã‚ーを押ã—ã¾ã™", "Copied!" : "コピーã•れã¾ã—ãŸï¼", "Copy" : "コピー", "Not supported!" : "サãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“ï¼", @@ -126,6 +127,7 @@ OC.L10N.register( "Password protect" : "パスワードä¿è·ã‚’有効化", "Allow upload and editing" : "アップãƒãƒ¼ãƒ‰ã¨ç·¨é›†ã‚’許å¯ã™ã‚‹", "Allow editing" : "編集を許å¯", + "upload only" : "アップãƒãƒ¼ãƒ‰ã®ã¿", "Email link to person" : "メールリンク", "Send" : "é€ä¿¡", "Shared with you and the group {group} by {owner}" : "ã‚ãªãŸã¨ {owner} ã®ã‚°ãƒ«ãƒ¼ãƒ— {group} ã§å…±æœ‰ä¸", diff --git a/core/l10n/ja.json b/core/l10n/ja.json index 8b39189fc96..4b9bad57e36 100644 --- a/core/l10n/ja.json +++ b/core/l10n/ja.json @@ -14,10 +14,10 @@ "Crop is not square" : "クãƒãƒƒãƒ—ãŒæ£æ–¹å½¢ã§ã¯ã‚りã¾ã›ã‚“", "Couldn't reset password because the token is invalid" : "トークンãŒç„¡åйãªãŸã‚ã€ãƒ‘スワードをリセットã§ãã¾ã›ã‚“ã§ã—ãŸ", "Couldn't reset password because the token is expired" : "ãƒˆãƒ¼ã‚¯ãƒ³ãŒæœŸé™åˆ‡ã‚Œã®ãŸã‚ã€ãƒ‘スワードをリセットã§ãã¾ã›ã‚“ã§ã—ãŸ", - "Couldn't send reset email. Please make sure your username is correct." : "リセットメールをé€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ユーザーåãŒæ£ã—ã„ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼åã«ç´ä»˜ã‘られãŸãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒãªã„ãŸã‚ã€ãƒªã‚»ãƒƒãƒˆãƒ¡ãƒ¼ãƒ«ã‚’é€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚管ç†è€…ã«å•ã„åˆã‚ã›ã¦ãã ã•ã„。", "%s password reset" : "%s パスワードリセット", "Couldn't send reset email. Please contact your administrator." : "リセットメールをé€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚管ç†è€…ã«å•ã„åˆã‚ã›ã¦ãã ã•ã„。", + "Couldn't send reset email. Please make sure your username is correct." : "リセットメールをé€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ユーザーåãŒæ£ã—ã„ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。", "Preparing update" : "ã‚¢ãƒƒãƒ—ãƒ‡ãƒ¼ãƒˆã®æº–å‚™ä¸", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "修復è¦å‘Š:", @@ -112,6 +112,7 @@ "Expiration" : "期é™åˆ‡ã‚Œ", "Expiration date" : "有効期é™", "Choose a password for the public link" : "URLã«ã‚ˆã‚‹å…±æœ‰ã®ãƒ‘スワードを入力", + "Choose a password for the public link or press enter" : "公開リンクã®ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ã‚’é¸æŠžã™ã‚‹ã‹ã€Enterã‚ーを押ã—ã¾ã™", "Copied!" : "コピーã•れã¾ã—ãŸï¼", "Copy" : "コピー", "Not supported!" : "サãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“ï¼", @@ -124,6 +125,7 @@ "Password protect" : "パスワードä¿è·ã‚’有効化", "Allow upload and editing" : "アップãƒãƒ¼ãƒ‰ã¨ç·¨é›†ã‚’許å¯ã™ã‚‹", "Allow editing" : "編集を許å¯", + "upload only" : "アップãƒãƒ¼ãƒ‰ã®ã¿", "Email link to person" : "メールリンク", "Send" : "é€ä¿¡", "Shared with you and the group {group} by {owner}" : "ã‚ãªãŸã¨ {owner} ã®ã‚°ãƒ«ãƒ¼ãƒ— {group} ã§å…±æœ‰ä¸", diff --git a/core/l10n/ko.js b/core/l10n/ko.js index 9c1b69ad0b3..2826822378a 100644 --- a/core/l10n/ko.js +++ b/core/l10n/ko.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "잘ë¼ë‚´ëŠ” ì˜ì—ì´ ì‚¬ê°í˜•ì´ ì•„ë‹˜", "Couldn't reset password because the token is invalid" : "í† í°ì´ 잘못ë˜ì—ˆê¸° ë•Œë¬¸ì— ì•”í˜¸ë¥¼ ì´ˆê¸°í™”í• ìˆ˜ 없습니다", "Couldn't reset password because the token is expired" : "í† í°ì´ 만료ë˜ì–´ 암호를 ì´ˆê¸°í™”í• ìˆ˜ 없습니다", - "Couldn't send reset email. Please make sure your username is correct." : "ìž¬ì„¤ì • ë©”ì¼ì„ 보낼 수 없습니다. ì‚¬ìš©ìž ì´ë¦„ì´ ì˜¬ë°”ë¥¸ì§€ 확ì¸í•˜ì‹ì‹œì˜¤.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "ì´ ì‚¬ìš©ìž ì´ë¦„ê³¼ ì—°ê²°ëœ ì´ë©”ì¼ ì£¼ì†Œê°€ 없어서 초기화 ë©”ì¼ì„ 보낼 수 없습니다. 시스템 관리ìžì—게 ì—°ë½í•˜ì‹ì‹œì˜¤.", "%s password reset" : "%s 암호 ìž¬ì„¤ì •", "Couldn't send reset email. Please contact your administrator." : "ìž¬ì„¤ì • ë©”ì¼ì„ 보낼수 없습니다. 관리ìžì—게 문ì˜í•˜ì‹ì‹œì˜¤.", + "Couldn't send reset email. Please make sure your username is correct." : "ìž¬ì„¤ì • ë©”ì¼ì„ 보낼 수 없습니다. ì‚¬ìš©ìž ì´ë¦„ì´ ì˜¬ë°”ë¥¸ì§€ 확ì¸í•˜ì‹ì‹œì˜¤.", "Preparing update" : "ì—…ë°ì´íЏ 준비 중", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "수리 ê²½ê³ :", diff --git a/core/l10n/ko.json b/core/l10n/ko.json index 153c168ed83..e6f7e6b5e4c 100644 --- a/core/l10n/ko.json +++ b/core/l10n/ko.json @@ -14,10 +14,10 @@ "Crop is not square" : "잘ë¼ë‚´ëŠ” ì˜ì—ì´ ì‚¬ê°í˜•ì´ ì•„ë‹˜", "Couldn't reset password because the token is invalid" : "í† í°ì´ 잘못ë˜ì—ˆê¸° ë•Œë¬¸ì— ì•”í˜¸ë¥¼ ì´ˆê¸°í™”í• ìˆ˜ 없습니다", "Couldn't reset password because the token is expired" : "í† í°ì´ 만료ë˜ì–´ 암호를 ì´ˆê¸°í™”í• ìˆ˜ 없습니다", - "Couldn't send reset email. Please make sure your username is correct." : "ìž¬ì„¤ì • ë©”ì¼ì„ 보낼 수 없습니다. ì‚¬ìš©ìž ì´ë¦„ì´ ì˜¬ë°”ë¥¸ì§€ 확ì¸í•˜ì‹ì‹œì˜¤.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "ì´ ì‚¬ìš©ìž ì´ë¦„ê³¼ ì—°ê²°ëœ ì´ë©”ì¼ ì£¼ì†Œê°€ 없어서 초기화 ë©”ì¼ì„ 보낼 수 없습니다. 시스템 관리ìžì—게 ì—°ë½í•˜ì‹ì‹œì˜¤.", "%s password reset" : "%s 암호 ìž¬ì„¤ì •", "Couldn't send reset email. Please contact your administrator." : "ìž¬ì„¤ì • ë©”ì¼ì„ 보낼수 없습니다. 관리ìžì—게 문ì˜í•˜ì‹ì‹œì˜¤.", + "Couldn't send reset email. Please make sure your username is correct." : "ìž¬ì„¤ì • ë©”ì¼ì„ 보낼 수 없습니다. ì‚¬ìš©ìž ì´ë¦„ì´ ì˜¬ë°”ë¥¸ì§€ 확ì¸í•˜ì‹ì‹œì˜¤.", "Preparing update" : "ì—…ë°ì´íЏ 준비 중", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "수리 ê²½ê³ :", diff --git a/core/l10n/lv.js b/core/l10n/lv.js index 63f34bfee62..5469f50bc06 100644 --- a/core/l10n/lv.js +++ b/core/l10n/lv.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "Griezums nav kvadrÄts", "Couldn't reset password because the token is invalid" : "NevarÄ“ja nomainÄ«t paroli, jo pazīšanÄs zÄ«me ir nederÄ«ga", "Couldn't reset password because the token is expired" : "NevarÄ“ja nomainÄ«t paroli, jo pazīšanÄs zÄ«mei beidzies derÄ«guma termiņš", - "Couldn't send reset email. Please make sure your username is correct." : "NevarÄ“ja nosÅ«tÄ«t paroles maiņas e-pastu. PÄrliecinies, ka tavs lietotÄjvÄrds ir pareizs.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "NevarÄ“ja nosÅ«tÄ«t paroles maiņas e-pastu, jo lietotÄjam nav norÄdÄ«ts e-pasts. LÅ«dzu sazinies ar savu administratoru.", "%s password reset" : "%s paroles maiņa", "Couldn't send reset email. Please contact your administrator." : "NevarÄ“ja nosÅ«tÄ«t maiņas e-pastu. LÅ«dzu sazinies ar savu administratoru.", + "Couldn't send reset email. Please make sure your username is correct." : "NevarÄ“ja nosÅ«tÄ«t paroles maiņas e-pastu. PÄrliecinies, ka tavs lietotÄjvÄrds ir pareizs.", "Preparing update" : "Sagatavo atjauninÄjumu", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "LaboÅ¡anas brÄ«dinÄjums:", diff --git a/core/l10n/lv.json b/core/l10n/lv.json index 10249543ffb..822b1158f10 100644 --- a/core/l10n/lv.json +++ b/core/l10n/lv.json @@ -14,10 +14,10 @@ "Crop is not square" : "Griezums nav kvadrÄts", "Couldn't reset password because the token is invalid" : "NevarÄ“ja nomainÄ«t paroli, jo pazīšanÄs zÄ«me ir nederÄ«ga", "Couldn't reset password because the token is expired" : "NevarÄ“ja nomainÄ«t paroli, jo pazīšanÄs zÄ«mei beidzies derÄ«guma termiņš", - "Couldn't send reset email. Please make sure your username is correct." : "NevarÄ“ja nosÅ«tÄ«t paroles maiņas e-pastu. PÄrliecinies, ka tavs lietotÄjvÄrds ir pareizs.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "NevarÄ“ja nosÅ«tÄ«t paroles maiņas e-pastu, jo lietotÄjam nav norÄdÄ«ts e-pasts. LÅ«dzu sazinies ar savu administratoru.", "%s password reset" : "%s paroles maiņa", "Couldn't send reset email. Please contact your administrator." : "NevarÄ“ja nosÅ«tÄ«t maiņas e-pastu. LÅ«dzu sazinies ar savu administratoru.", + "Couldn't send reset email. Please make sure your username is correct." : "NevarÄ“ja nosÅ«tÄ«t paroles maiņas e-pastu. PÄrliecinies, ka tavs lietotÄjvÄrds ir pareizs.", "Preparing update" : "Sagatavo atjauninÄjumu", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "LaboÅ¡anas brÄ«dinÄjums:", diff --git a/core/l10n/nb.js b/core/l10n/nb.js index d07ba065eb6..a78b9fef936 100644 --- a/core/l10n/nb.js +++ b/core/l10n/nb.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "Beskjæringen er ikke kvadratisk", "Couldn't reset password because the token is invalid" : "Klarte ikke Ã¥ tilbakestille passordet fordi token er ugyldig.", "Couldn't reset password because the token is expired" : "Klarte ikke Ã¥ tilbakestille passordet fordi token er utløpt.", - "Couldn't send reset email. Please make sure your username is correct." : "Klarte ikke Ã¥ sende e-post for tilbakestilling av passord. Sjekk at brukernavnet ditt er korrekt.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Klarte ikke Ã¥ sende e-post for tilbakestilling av passord fordi det ikke finnes noen e-postadresse for dette brukernavnet. Kontakt administratoren din.", "%s password reset" : "%s tilbakestilling av passord", "Couldn't send reset email. Please contact your administrator." : "Klarte ikke Ã¥ sende e-post for tilbakestilling. Kontakt administratoren.", + "Couldn't send reset email. Please make sure your username is correct." : "Klarte ikke Ã¥ sende e-post for tilbakestilling av passord. Sjekk at brukernavnet ditt er korrekt.", "Preparing update" : "Forbereder oppdatering", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Advarsel fra reparering: ", diff --git a/core/l10n/nb.json b/core/l10n/nb.json index e44ca3d979b..b92c734411f 100644 --- a/core/l10n/nb.json +++ b/core/l10n/nb.json @@ -14,10 +14,10 @@ "Crop is not square" : "Beskjæringen er ikke kvadratisk", "Couldn't reset password because the token is invalid" : "Klarte ikke Ã¥ tilbakestille passordet fordi token er ugyldig.", "Couldn't reset password because the token is expired" : "Klarte ikke Ã¥ tilbakestille passordet fordi token er utløpt.", - "Couldn't send reset email. Please make sure your username is correct." : "Klarte ikke Ã¥ sende e-post for tilbakestilling av passord. Sjekk at brukernavnet ditt er korrekt.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Klarte ikke Ã¥ sende e-post for tilbakestilling av passord fordi det ikke finnes noen e-postadresse for dette brukernavnet. Kontakt administratoren din.", "%s password reset" : "%s tilbakestilling av passord", "Couldn't send reset email. Please contact your administrator." : "Klarte ikke Ã¥ sende e-post for tilbakestilling. Kontakt administratoren.", + "Couldn't send reset email. Please make sure your username is correct." : "Klarte ikke Ã¥ sende e-post for tilbakestilling av passord. Sjekk at brukernavnet ditt er korrekt.", "Preparing update" : "Forbereder oppdatering", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Advarsel fra reparering: ", diff --git a/core/l10n/nl.js b/core/l10n/nl.js index 1811fcc5613..7afc4806740 100644 --- a/core/l10n/nl.js +++ b/core/l10n/nl.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "Bijsnijden is niet vierkant", "Couldn't reset password because the token is invalid" : "Kon het wachtwoord niet herstellen, omdat het token ongeldig is", "Couldn't reset password because the token is expired" : "Kon het wachtwoord niet herstellen, omdat het token verlopen is", - "Couldn't send reset email. Please make sure your username is correct." : "Kon e-mail niet versturen. Verifieer of je gebruikersnaam correct is.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Kon geen herstel e-mail versturen, omdat er geen e-mailadres bekend is bij deze gebruikersnaam. Neem contact op met je beheerder.", "%s password reset" : "%s reset wachtwoord", "Couldn't send reset email. Please contact your administrator." : "Kon herstel e-mail niet versturen. Neem contact op met je beheerder.", + "Couldn't send reset email. Please make sure your username is correct." : "Kon e-mail niet versturen. Verifieer of je gebruikersnaam correct is.", "Preparing update" : "Update voorbereiden", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Reparatiewaarschuwing:", @@ -126,6 +126,7 @@ OC.L10N.register( "Password protect" : "Wachtwoord beveiligd", "Allow upload and editing" : "Toestaan uploaden en bewerken", "Allow editing" : "Bewerken toestaan", + "upload only" : "alleen uploaden", "Email link to person" : "E-mail link naar persoon", "Send" : "Versturen", "Shared with you and the group {group} by {owner}" : "Gedeeld met jou en de groep {group} door {owner}", diff --git a/core/l10n/nl.json b/core/l10n/nl.json index 79ad6a4db5d..5a943291dc2 100644 --- a/core/l10n/nl.json +++ b/core/l10n/nl.json @@ -14,10 +14,10 @@ "Crop is not square" : "Bijsnijden is niet vierkant", "Couldn't reset password because the token is invalid" : "Kon het wachtwoord niet herstellen, omdat het token ongeldig is", "Couldn't reset password because the token is expired" : "Kon het wachtwoord niet herstellen, omdat het token verlopen is", - "Couldn't send reset email. Please make sure your username is correct." : "Kon e-mail niet versturen. Verifieer of je gebruikersnaam correct is.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Kon geen herstel e-mail versturen, omdat er geen e-mailadres bekend is bij deze gebruikersnaam. Neem contact op met je beheerder.", "%s password reset" : "%s reset wachtwoord", "Couldn't send reset email. Please contact your administrator." : "Kon herstel e-mail niet versturen. Neem contact op met je beheerder.", + "Couldn't send reset email. Please make sure your username is correct." : "Kon e-mail niet versturen. Verifieer of je gebruikersnaam correct is.", "Preparing update" : "Update voorbereiden", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Reparatiewaarschuwing:", @@ -124,6 +124,7 @@ "Password protect" : "Wachtwoord beveiligd", "Allow upload and editing" : "Toestaan uploaden en bewerken", "Allow editing" : "Bewerken toestaan", + "upload only" : "alleen uploaden", "Email link to person" : "E-mail link naar persoon", "Send" : "Versturen", "Shared with you and the group {group} by {owner}" : "Gedeeld met jou en de groep {group} door {owner}", diff --git a/core/l10n/pl.js b/core/l10n/pl.js index 75db60d1e76..624fd11043b 100644 --- a/core/l10n/pl.js +++ b/core/l10n/pl.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "PrzyciÄ™cie nie jest prostokÄ…tem", "Couldn't reset password because the token is invalid" : "Nie można zresetować hasÅ‚a, ponieważ token jest niepoprawny", "Couldn't reset password because the token is expired" : "Nie można zresetować hasÅ‚a, ponieważ token wygasÅ‚", - "Couldn't send reset email. Please make sure your username is correct." : "Nie mogÄ™ wysÅ‚ać maila resetujÄ…cego. Sprawdź czy nazwa użytkownika jest poprawna.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Nie udaÅ‚o siÄ™ wysÅ‚ać ponownego e-maila, ponieważ nie ma adresu e-mail do tego użytkownika. ProszÄ™ skontaktować siÄ™ z administratorem.", "%s password reset" : "%s reset hasÅ‚a", "Couldn't send reset email. Please contact your administrator." : "Nie mogÄ™ wysÅ‚ać maila resetujÄ…cego. Skontaktuj siÄ™ z administratorem.", + "Couldn't send reset email. Please make sure your username is correct." : "Nie mogÄ™ wysÅ‚ać maila resetujÄ…cego. Sprawdź czy nazwa użytkownika jest poprawna.", "Preparing update" : "PrzygotowujÄ™ aktualizacjÄ™", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Ostrzeżenie naprawiania:", @@ -114,6 +114,7 @@ OC.L10N.register( "Expiration" : "WygaÅ›niÄ™cie", "Expiration date" : "Data wygaÅ›niÄ™cia", "Choose a password for the public link" : "Wybierz hasÅ‚o dla linku publicznego", + "Choose a password for the public link or press enter" : "Wybierz hasÅ‚o dla publicznego linka lub wciÅ›nij enter", "Copied!" : "Skopiowano!", "Copy" : "Skopiuj", "Not supported!" : "Brak wsparcia!", diff --git a/core/l10n/pl.json b/core/l10n/pl.json index 778ff3f1072..22d6065f11e 100644 --- a/core/l10n/pl.json +++ b/core/l10n/pl.json @@ -14,10 +14,10 @@ "Crop is not square" : "PrzyciÄ™cie nie jest prostokÄ…tem", "Couldn't reset password because the token is invalid" : "Nie można zresetować hasÅ‚a, ponieważ token jest niepoprawny", "Couldn't reset password because the token is expired" : "Nie można zresetować hasÅ‚a, ponieważ token wygasÅ‚", - "Couldn't send reset email. Please make sure your username is correct." : "Nie mogÄ™ wysÅ‚ać maila resetujÄ…cego. Sprawdź czy nazwa użytkownika jest poprawna.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Nie udaÅ‚o siÄ™ wysÅ‚ać ponownego e-maila, ponieważ nie ma adresu e-mail do tego użytkownika. ProszÄ™ skontaktować siÄ™ z administratorem.", "%s password reset" : "%s reset hasÅ‚a", "Couldn't send reset email. Please contact your administrator." : "Nie mogÄ™ wysÅ‚ać maila resetujÄ…cego. Skontaktuj siÄ™ z administratorem.", + "Couldn't send reset email. Please make sure your username is correct." : "Nie mogÄ™ wysÅ‚ać maila resetujÄ…cego. Sprawdź czy nazwa użytkownika jest poprawna.", "Preparing update" : "PrzygotowujÄ™ aktualizacjÄ™", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Ostrzeżenie naprawiania:", @@ -112,6 +112,7 @@ "Expiration" : "WygaÅ›niÄ™cie", "Expiration date" : "Data wygaÅ›niÄ™cia", "Choose a password for the public link" : "Wybierz hasÅ‚o dla linku publicznego", + "Choose a password for the public link or press enter" : "Wybierz hasÅ‚o dla publicznego linka lub wciÅ›nij enter", "Copied!" : "Skopiowano!", "Copy" : "Skopiuj", "Not supported!" : "Brak wsparcia!", diff --git a/core/l10n/pt_BR.js b/core/l10n/pt_BR.js index b5d01aa2da6..da0fc1f4f00 100644 --- a/core/l10n/pt_BR.js +++ b/core/l10n/pt_BR.js @@ -16,32 +16,32 @@ OC.L10N.register( "Crop is not square" : "Recorte não é quadrado", "Couldn't reset password because the token is invalid" : "Não foi possÃvel redefinir a senha porque o token é inválido", "Couldn't reset password because the token is expired" : "Não foi possÃvel redefinir a senha porque o token expirou", - "Couldn't send reset email. Please make sure your username is correct." : "Não foi possÃvel enviar e-mail de redefinição. Verifique se o seu nome de usuário está correto.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Não foi possÃvel enviar email de redefinição porque não há nenhum endereço de e-mail para este nome de usuário. Entre em contato com o administrador.", "%s password reset" : "%s redefinir senha", "Couldn't send reset email. Please contact your administrator." : "Não foi possÃvel enviar e-mail de redefinição. Por favor, contate o administrador.", + "Couldn't send reset email. Please make sure your username is correct." : "Não foi possÃvel enviar e-mail de redefinição. Verifique se o seu nome de usuário está correto.", "Preparing update" : "Preparando atualização", "[%d / %d]: %s" : "[%d / %d]: %s", - "Repair warning: " : "Aviso de reparação:", - "Repair error: " : "Reparação de erro:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor, use a atualização de linha de comando, porque a atualização automática está desativado no config.php.", + "Repair warning: " : "Aviso na reparação:", + "Repair error: " : "Erro na reparação :", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor, use a atualização de linha de comando, porque a atualização automática está desativada no config.php.", "[%d / %d]: Checking table %s" : "[%d / %d]: Verificando tabela %s", - "Turned on maintenance mode" : "Ativar modo de manutenção", - "Turned off maintenance mode" : "Desligar o modo de manutenção", + "Turned on maintenance mode" : "Ativar o modo de manutenção", + "Turned off maintenance mode" : "Desativar o modo de manutenção", "Maintenance mode is kept active" : "O modo de manutenção está sendo mantido como ativo", - "Updating database schema" : "Actualização de esquema do banco de dados", + "Updating database schema" : "Atualização de esquema do banco de dados", "Updated database" : "Atualizar o banco de dados", "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Verificar se o esquema do banco de dados pode ser atualizado (isso pode levar muito tempo, dependendo do tamanho do banco de dados)", - "Checked database schema update" : "Verificado atualização do esquema de banco de dados", + "Checked database schema update" : "Verificada a atualização do esquema de banco de dados", "Checking updates of apps" : "Verificar atualizações de aplicativos", "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Verificar se o esquema do banco de dados para %s pode ser atualizado (isso pode levar muito tempo, dependendo do tamanho do banco de dados)", "Checked database schema update for apps" : "Verificar atualização do esquema de banco de dados para aplicativos", "Updated \"%s\" to %s" : "Atualizado \"%s\" para %s", "Set log level to debug" : "Definir o nÃvel de log para debug", - "Reset log level" : "Redefinição do nÃvel do log", - "Starting code integrity check" : "Inicializando verificação da integridade do código", + "Reset log level" : "Resetar o nÃvel do log", + "Starting code integrity check" : "Inicializando a verificação da integridade do código", "Finished code integrity check" : "Finalizada a verificação de integridade do código", - "%s (3rdparty)" : "%s (3ºterceiros)", + "%s (3rdparty)" : "%s (terceiros)", "%s (incompatible)" : "%s (incompatÃvel)", "Following apps have been disabled: %s" : "Os seguintes aplicativos foram desabilitados: %s", "Already up to date" : "Já está atualizado", @@ -51,15 +51,15 @@ OC.L10N.register( "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Problema no carregamento da página, recarregando em %n segundo","Problema no carregamento da página, recarregando em %n segundos"], "Saving..." : "Salvando...", "Dismiss" : "Dispensar", - "This action requires you to confirm your password" : "Essa ação requer que voce confirme sua senha", + "This action requires you to confirm your password" : "Essa ação requer que você confirme sua senha", "Authentication required" : "Autenticação necessária", "Password" : "Senha", "Cancel" : "Cancelar", "Confirm" : "Confirmar", "Failed to authenticate, try again" : "Falha na autenticação, tente novamente", "seconds ago" : "segundos atrás", - "Logging in …" : "Logando ...", - "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "O link para redefinir sua senha foi enviado para seu e-mail. Se você não recebê-lo dentro de um perÃodo razoável de tempo, verifique suas pastas de spam/lixo.<br> Se ele não estiver lá, pergunte ao administrador do local.", + "Logging in …" : "Entrando ...", + "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "O link para redefinir sua senha foi enviado para seu e-mail. Se você não recebê-lo dentro de um perÃodo razoável de tempo, verifique suas pastas de spam/lixo.<br> Se ele não estiver lá, pergunte ao administrador local.", "Your files are encrypted. There will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Seus arquivos são criptografados. Não existe nenhuma maneira de ter seus dados de volta depois que sua senha seja redefinida.<br /> Se você não tem certeza do que fazer, por favor contate seu administrador antes de continuar.<br />Você realmente deseja continuar?", "I know what I'm doing" : "Eu sei o que estou fazendo", "Password can not be changed. Please contact your administrator." : "A senha não pode ser alterada. Por favor, contate o administrador.", @@ -67,11 +67,11 @@ OC.L10N.register( "Yes" : "Sim", "No files in here" : "Sem arquivos aqui", "Choose" : "Escolher", - "Error loading file picker template: {error}" : "Erro no seletor de carregamento modelo de arquivos: {error}", + "Error loading file picker template: {error}" : "Erro carregando o seletor de modelo de arquivos: {error}", "Ok" : "Ok", - "Error loading message template: {error}" : "Erro no carregamento de modelo de mensagem: {error}", - "read-only" : "somente-leitura", - "_{count} file conflict_::_{count} file conflicts_" : ["{count} conflito de arquivo","{count} conflitos de arquivos"], + "Error loading message template: {error}" : "Erro carregando o modelo de mensagem: {error}", + "read-only" : "somente leitura", + "_{count} file conflict_::_{count} file conflicts_" : ["{count} conflito de arquivo","{count} arquivo conflita"], "One file conflict" : "Conflito em um arquivo", "New Files" : "Novos Arquivos", "Already existing files" : "Arquivos já existentes", @@ -80,60 +80,64 @@ OC.L10N.register( "Continue" : "Continuar", "(all selected)" : "(todos os selecionados)", "({count} selected)" : "({count} selecionados)", - "Error loading file exists template" : "Erro ao carregar arquivo existe modelo", + "Error loading file exists template" : "Erro carregando arquivo existe modelo", "Pending" : "Pendente", "Very weak password" : "Senha muito fraca", "Weak password" : "Senha fraca", "So-so password" : "Senha mais ou menos", - "Good password" : "Boa senha", + "Good password" : "Senha boa", "Strong password" : "Senha forte", "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Seu servidor web ainda não está configurado corretamente para permitir a sincronização de arquivos, pois a interface WebDAV parece ser desconfigurada.", "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Seu servidor web não está configurado corretamente para resolver \"{url}\". Mais informação pode ser encontrada na nossa <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentação</a>.", - "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Este servidor não tem nenhuma conexão com a Internet: Vários terminações finais não podem ser encontrados. Isso significa que alguns dos recursos como montagem de armazenamento externo, notificações sobre atualizações ou instalação de aplicativos de terceiros não vai funcionar. Acesso à arquivos remotamente e envio de e-mails de notificação podem não funcionar também. Sugerimos habilitar a conexão com a Internet para este servidor, se você quer ter todas as funcionalidades.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Nenhum cache de memória foi configurado. Para melhorar o seu desempenho, por favor configurar um memcached se disponÃvel. Mais informação pode ser encontrada na nossa <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentação</a>.", + "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Este servidor não tem nenhuma conexão com a Internet: Várias terminações finais não podem ser encontrados. Isso significa que alguns dos recursos como montagem de armazenamento externo, notificações sobre atualizações ou instalação de aplicativos de terceiros não vai funcionar. Acesso a arquivos remotamente e envio de e-mails de notificação podem não funcionar também. Sugerimos habilitar a conexão com a Internet para este servidor, se você quer ter todas as funcionalidades.", + "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Nenhum cache de memória foi configurado. Para melhorar o seu desempenho, por favor configure um memcached se disponÃvel. Mais informação pode ser encontrada na nossa <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentação</a>.", "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "/dev/urandom não pode ser lido pelo PHP e é altamente desencorajado por razões de segurança. Mais informação pode ser encontrada na nossa <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentação</a>.", - "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Você stá atualmente em executando PHP {version}. Nós o incentivamos a atualizar sua versão do PHP para aproveitar<a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">atualizações de segurança e desempenho proporcionados pelo Grupo PHP</a> assim que sua distribuição suportar.", - "The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "O cabeçalho do proxy reverso esta incorreto, ou voce esta acessando de um proxy confiável. Se voce não esta usando um proxy confiável, essa é uma falha de segurança e pode permitir um ataque. Para mais informações <a target=\"_blank\"rel=\"noreferrer\"href=\"{docLink}\">documentation</a>", - "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached é configurado como cache distribuÃdo, mas o módulo PHP errado \"memcache\" está instalado. \\OC\\Memcache\\Memcached suporta apenas \"memcached\" e não \"memcache\". Veja a <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">wiki memcached sobre ambos os módulos </a>.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Você está atualmente executando PHP {version}. Nós o incentivamos a atualizar sua versão do PHP para aproveitar as<a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">atualizações de segurança e desempenho proporcionados pelo Grupo PHP</a> assim que sua distribuição suportar.", + "The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "O cabeçalho do proxy reverso está incorreto, ou você está acessando a partir de um proxy confiável. Se voce não está usando um proxy confiável, essa é uma falha de segurança e pode permitir um ataque. Mais informação pode ser encontrada na nossa <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentação</a>.", + "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached está configurado como cache distribuÃdo, mas o módulo PHP errado \"memcache\" está instalado. \\OC\\Memcache\\Memcached suporta apenas \"memcached\" e não \"memcache\". Veja a <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">wiki memcached sobre ambos os módulos </a>.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alguns arquivos não passaram na verificação de integridade. Mais informações sobre como resolver este problema pode ser encontrado em nossa <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentação</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lista de arquivos inválidos…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)", "The PHP Opcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend ↗</a> to use following settings in the <code>php.ini</code>:" : "O Opcache do PHP não está configurado corretamente. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Para um melhor desempenho recomendamos ↗</a> usar as seguintes configurações no <code>php.ini</code>:", + "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "A função PHP \"set_time_limit\" não está disponÃvel. Isso pode resultar em scripts pendurados durante a execução, prejudicando sua instalação. Sugerimos fortemente habilitar esta função.", "Error occurred while checking server setup" : "Erro ao verificar a configuração do servidor", - "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "O seu diretório de dados e os arquivos estão, provavelmente, acessÃveis a partir da Internet. O arquivo .htaccess não está funcionando. Nós sugerimos que você configure o servidor web de uma forma que o diretório de dados não seja acessÃvel ou mova o diretório de dados para fora do diretório raiz de documentos do servidor web.", - "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "O \"{header}\" cabeçalho HTTP não está configurado igual ao \"{expected}\". Este é um risco potencial para a segurança e recomendamos ajustar essa configuração.", - "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "O \"Strict-Transport-Security\" cabeçalho HTTP não está configurado para pelo menos \"{segundos}\" segundos. Para maior segurança recomendamos a ativação HSTS como descrito em nossas <a href=\"{docUrl}\" rel=\"noreferrer\">dicas de segurança</a>.", - "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Você está acessando este site via HTTP. Nós sugerimos fortemente que você configure o servidor para exigir o uso de HTTPS como descrito em nossas <a href=\"{docUrl}\">dicas de segurança</a>.", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "O seu diretório de dados e os arquivos provavelmente estão acessÃveis a partir da Internet. O arquivo .htaccess não está funcionando. Sugerimos que você configure o servidor web de maneira que o diretório de dados não seja acessÃvel ou mova o diretório de dados para fora do diretório raiz de documentos do servidor web.", + "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "O cabeçalho HTTP \"{header}\" não está configurado igual ao \"{expected}\". Este é um risco potencial para a segurança e recomendamos ajustar essa configuração.", + "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "O cabeçalho HTTP \"Strict-Transport-Security\" não está configurado para pelo menos \"{segundos}\" segundos. Para maior segurança recomendamos a ativação HSTS como descrito em nossas <a href=\"{docUrl}\" rel=\"noreferrer\">dicas de segurança</a>.", + "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Você está acessando este site via HTTP. Sugerimos fortemente que você configure o servidor para exigir o uso de HTTPS como descrito em nossas <a href=\"{docUrl}\">dicas de segurança</a>.", "Shared" : "Compartilhado", "Shared with {recipients}" : "Compartilhado com {recipients}", "Error" : "Erro", "Error while sharing" : "Erro ao compartilhar", "Error while unsharing" : "Erro ao descompartilhar", "Error setting expiration date" : "Erro ao definir data de expiração", - "The public link will expire no later than {days} days after it is created" : "O link público irá expirar não antes de {days} depois de ser criado", + "The public link will expire no later than {days} days after it is created" : "O link público irá expirar não antes de {days} depois de criado", "Set expiration date" : "Definir data de expiração", "Expiration" : "Expiração", "Expiration date" : "Data de expiração", "Choose a password for the public link" : "Escolha uma senha para o link público", + "Choose a password for the public link or press enter" : "Escolha uma senha para o link público ou pressione enter", "Copied!" : "Copiado!", "Copy" : "Copiar", "Not supported!" : "Não suportado!", "Press ⌘-C to copy." : "Pressione ⌘-C para copiar.", "Press Ctrl-C to copy." : "Pressione Ctrl-C para copiar.", - "Resharing is not allowed" : "Não é permitido re-compartilhar", + "Resharing is not allowed" : "Não é permitido recompartilhar", + "Share to {name}" : "Compartilhar com {name}", "Share link" : "Compartilhar link", "Link" : "Link", "Password protect" : "Proteger com senha", "Allow upload and editing" : "Permitir envio e edição", "Allow editing" : "Permitir edição", + "upload only" : "somente envio", "Email link to person" : "Enviar link por e-mail", "Send" : "Enviar", "Shared with you and the group {group} by {owner}" : "Compartilhado com você e com o grupo {group} por {owner}", "Shared with you by {owner}" : "Compartilhado com você por {owner}", - "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatiorDisplayName}} Compartilhou via link", + "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatiorDisplayName}} compartilhou via link", "group" : "grupo", "remote" : "remoto", "email" : "email", "Unshare" : "Descompartilhar", - "can reshare" : "pode voltar a compartilhar", + "can reshare" : "pode recompartilhar", "can edit" : "pode editar", "can create" : "Pode criar", "can change" : "Pode alterar", @@ -142,15 +146,16 @@ OC.L10N.register( "Could not unshare" : "Não foi possÃvel descompartilhar", "Share details could not be loaded for this item." : "Detalhes de compartilhamento não puderam ser carregados para este item.", "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Pelo menos {count} caractere é necessário para completar automaticamente","Pelo menos {count} caracteres são necessários para completar automaticamente"], - "This list is maybe truncated - please refine your search term to see more results." : "Esta lista pode estar truncada: por favor refine seus termos de pesquisa para ver mais resultados", - "No users or groups found for {search}" : "Nenhum usuário grupo encontrado para {search}", + "This list is maybe truncated - please refine your search term to see more results." : "Esta lista pode estar truncada - por favor refine seus termos de pesquisa para ver mais resultados", + "No users or groups found for {search}" : "Nenhum usuário ou grupo encontrado para {search}", "No users found for {search}" : "Nenhum usuário encontrado para {search}", "An error occurred. Please try again" : "Ocorreu um erro. Por favor tente novamente", "{sharee} (group)" : "{sharee} (grupo)", "{sharee} (remote)" : "{sharee} (remoto)", "{sharee} (email)" : "{sharee} (email)", + "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})", "Share" : "Compartilhar", - "Share with people on other servers using their Federated Cloud ID username@example.com/nextcloud" : "Compartilhe com pessoas de outros servidores usando o ID Federado username@example.com/nextcloud", + "Share with people on other servers using their Federated Cloud ID username@example.com/nextcloud" : "Compartilhe com pessoas de outros servidores usando o ID Cloud Federado username@example.com/nextcloud", "Share with users or by mail..." : "Compartilhe com usuários internos ou por email...", "Share with users or remote users..." : "Compartilhe com usuários internos ou usuários remotos...", "Share with users, remote users or by mail..." : "Compartilhe com usuários internos, usuários remotos ou por email...", @@ -160,35 +165,38 @@ OC.L10N.register( "Share with users, groups, remote users or by mail..." : "Compartilhe com usuários, grupos, usuários remotos ou por email...", "Share with users..." : "Compartilhe com usuários...", "Error removing share" : "Erro na remoção do compartilhamento", - "Non-existing tag #{tag}" : "Etiqueta não existente #{tag}", + "Non-existing tag #{tag}" : "Etiqueta inexistente #{tag}", "restricted" : "restrito", "invisible" : "invisÃvel", "({scope})" : "({scope})", - "Delete" : "Eliminar", + "Delete" : "Excluir", "Rename" : "Renomear", "Collaborative tags" : "Etiquetas de colaboração", - "No tags found" : "Nenhuma tag encontrada", + "No tags found" : "Nenhuma etiqueta encontrada", "The object type is not specified." : "O tipo de objeto não foi especificado.", - "Enter new" : "Entrar uma nova", + "Enter new" : "Entre nova", "Add" : "Adicionar", "Edit tags" : "Editar etiqueta", - "Error loading dialog template: {error}" : "Erro carregando diálogo de formatação: {error}", - "No tags selected for deletion." : "Nenhuma etiqueta selecionada para deleção.", + "Error loading dialog template: {error}" : "Erro carregando o modelo de diálogo: {error}", + "No tags selected for deletion." : "Nenhuma etiqueta selecionada para exclusão.", "unknown text" : "texto desconhecido", - "Hello world!" : "Alô mundo!", + "Hello world!" : "Olá mundo!", "sunny" : "ensolarado", "Hello {name}, the weather is {weather}" : "Olá {name}, o clima está {weather}", "Hello {name}" : "Olá {name}", + "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>Estes são os resultados de sua pesquisa<script>alert(1)</script></strong>", "new" : "novo", "_download %n file_::_download %n files_" : ["baixar %n arquivo","baixar %n arquivos"], - "The update is in progress, leaving this page might interrupt the process in some environments." : "A atualização está em andamento. Se sair desta página, o processo poderá ser interrompido em alguns ambientes.", + "The update is in progress, leaving this page might interrupt the process in some environments." : "A atualização está em andamento. Em alguns ambientes, se sair desta página o processo poderá ser interrompido.", "Update to {version}" : "Atualizar para {version}", "An error occurred." : "Ocorreu um erro.", "Please reload the page." : "Por favor recarregue a página", - "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "A atualização não foi realizada com sucesso. Para mais informações <a href=\"{url}\">verifique o nosso post no fórum</a> que abrange esta questão.", - "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Atualizado com sucesso. Por favor, informe este problema para a <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">comunidade Nextcloud</a>.", + "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "A atualização não foi realizada com sucesso. Para mais informações <a href=\"{url}\">verifique nosso post no fórum</a> que abrange esta questão.", + "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "A atualização não foi realizada com sucesso. Por favor, informe este problema para a <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">comunidade Nextcloud</a>.", "Continue to Nextcloud" : "Continuar no Nextcloud", + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["A atualização terminou com sucesso. Redirecionando você para Nextcloud em %n segundos.","A atualização terminou com sucesso. Redirecionando você para Nextcloud em %n segundos."], "Searching other places" : "Pesquisando em outros lugares", + "No search results in other folders for {tag}{filter}{endtag}" : "Pesquisa sem resultados em outras pastas para {tag}{filter}{endtag}", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} resultado da pesquisa em outras pastas","{count} resultados da pesquisa em outras pastas"], "Personal" : "Pessoal", "Users" : "Usuários", @@ -199,7 +207,7 @@ OC.L10N.register( "File not found" : "Arquivo não encontrado", "The specified document has not been found on the server." : "O documento especificado não foi encontrado no servidor.", "You can click here to return to %s." : "Você pode clicar aqui para retornar para %s.", - "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Olá,\n\ngostaria que você soubesse que %s compartilhou %s com você.\nVeja isto: %s\n\n", + "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Olá,\n\napenas para avisar que %s compartilhou %s com você.\nVeja isto: %s\n\n", "The share will expire on %s." : "O compartilhamento irá expirar em %s.", "Cheers!" : "Saudações!", "Internal Server Error" : "Erro Interno do Servidor", @@ -231,18 +239,19 @@ OC.L10N.register( "Database name" : "Nome do banco de dados", "Database tablespace" : "Espaço de tabela do banco de dados", "Database host" : "Host do banco de dados", - "Please specify the port number along with the host name (e.g., localhost:5432)." : "Por favor especifique o número de porta e o nome do host (e.g., localhost:5432).", - "Performance warning" : "Performance de alerta", + "Please specify the port number along with the host name (e.g., localhost:5432)." : "Por favor especifique o nome do host e o número de porta  (e.g., localhost:5432).", + "Performance warning" : "Alerta de performance", "SQLite will be used as database." : "SQLite será usado como banco de dados", "For larger installations we recommend to choose a different database backend." : "Para instalações maiores é recomendável escolher um backend de banco de dados diferente.", - "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Especialmente quando se utiliza o cliente de desktop para sincronização de arquivos o uso de SQLite é desencorajado.", + "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "O uso de SQLite é desencorajado especialmente quando se utiliza o cliente de desktop para sincronização de arquivos.", "Finish setup" : "Concluir configuração", "Finishing …" : "Finalizando ...", "Need help?" : "Precisa de ajuda?", "See the documentation" : "Veja a documentação", - "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Esta aplicação requer JavaScript para sua correta operação. Por favor {linkstart}habilite JavaScript{linkend} e recerregue a página.", + "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Esta aplicação requer JavaScript para sua correta operação. Por favor {linkstart}habilite o JavaScript{linkend} e recarregue a página.", + "More apps" : "Mais aplicações", "Search" : "Pesquisar", - "This action requires you to confirm your password:" : "Essa ação requer confirmação da sua senha:", + "This action requires you to confirm your password:" : "Essa ação requer a confirmação da sua senha:", "Confirm your password" : "Confirme sua senha", "Server side authentication failed!" : "Autenticação do servidor falhou!", "Please contact your administrator." : "Por favor, contate o administrador.", @@ -258,25 +267,25 @@ OC.L10N.register( "New password" : "Nova senha", "New Password" : "Nova senha", "Reset password" : "Redefinir senha", - "Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Olá,<br><br>só para seu conhecimento que %s compartilhou <strong>%s</strong> com você. <br><a href=\"%s\">Visualize-o!</a><br><br> ", + "Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Olá,<br><br>só para avisar que %s compartilhou <strong>%s</strong> com você. <br><a href=\"%s\">Visualize-o!</a><br><br>", "This Nextcloud instance is currently in single user mode." : "Nesta instância Nextcloud está em modo de usuário único.", "This means only administrators can use the instance." : "Isso significa que apenas os administradores podem usar esta instância.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Contacte o seu administrador do sistema se esta mensagem persistir ou aparecer inesperadamente.", "Thank you for your patience." : "Obrigado pela sua paciência.", "Log out" : "Sair", "Two-factor authentication" : "Autenticação de dois fatores", - "Enhanced security is enabled for your account. Please authenticate using a second factor." : "Segurança aprimorada está habilitado para sua conta. Por favor autenticar usando um segundo fator.", - "Cancel log in" : "Cancelar login", + "Enhanced security is enabled for your account. Please authenticate using a second factor." : "Segurança aprimorada está habilitada para sua conta. Por favor autenticar usando um segundo fator.", + "Cancel log in" : "Cancelar entrada", "Use backup code" : "Use o código de backup", "Error while validating your second factor" : "Erro ao validar o seu segundo fator", "You are accessing the server from an untrusted domain." : "Você está acessando o servidor a partir de um domÃnio não confiável.", - "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Por favor entre em contato com o administrador. Se você é um administrador deste exemplo, configure a definição \"trusted_domains\" em config/config.php. Um exemplo de configuração é fornecido em config/config.sample.php.", - "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Dependendo da configuração, como administrador, você também pode ser capaz de usar o botão abaixo para confiar neste domÃnio.", - "Add \"%s\" as trusted domain" : "Adicionar \"%s\" como um domÃnio confiavel", + "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Por favor entre em contato com o administrador. Se você é o administrador, configure a definição \"trusted_domains\" em config/config.php. Um exemplo de configuração é fornecido em config/config.sample.php.", + "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Dependendo da configuração, como administrador você também pode usar o botão abaixo para confiar neste domÃnio.", + "Add \"%s\" as trusted domain" : "Adicionar \"%s\" como um domÃnio confiável", "App update required" : "Atualização de aplicativo é requerida", "%s will be updated to version %s" : "%s será atualizado para a versão %s", "These apps will be updated:" : "Esses aplicativos serão atualizados:", - "These incompatible apps will be disabled:" : "Esses aplicativos inconpatÃveis serão desabilitados:", + "These incompatible apps will be disabled:" : "Esses aplicativos incompatÃveis serão desabilitados:", "The theme %s has been disabled." : "O tema %s foi desativado.", "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Por favor, certifique-se de que o banco de dados, a pasta config e a pasta de dados foram copiados antes de prosseguir.", "Start update" : "Iniciar atualização", @@ -286,10 +295,10 @@ OC.L10N.register( "Please use the command line updater because you have a big instance." : "Por favor, use a atualização de linha de comando, porque você tem muitos dados em sua instância.", "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Para obter ajuda, consulte a <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentação</a>.", "This %s instance is currently in maintenance mode, which may take a while." : "Esta instância %s está em modo de manutenção, o que pode demorar um pouco.", - "This page will refresh itself when the %s instance is available again." : "Esta página será atualizada automaticamente quando esta instância %s estiver disponÃvel novamente.", + "This page will refresh itself when the %s instance is available again." : "Esta página será atualizada automaticamente quando a instância %s estiver disponÃvel novamente.", "Problem loading page, reloading in 5 seconds" : "Problema no carregamento da página, recarregando em 5 segundos", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Seus arquivos são criptografados. Se você não ativou a chave de recuperação, não haverá maneira de obter seus dados de volta após a sua senha ser redefinida.<br/>Se não tiver certeza do que deve fazer, contate o administrador antes de continuar. <br/>Deseja realmente continuar?", "File drop (upload only)" : "Zona de arquivos (somente upload)", - "The update was successful. Redirecting you to Nextcloud now." : "Atualizado com sucesso. Redirecionando para Nextcloud." + "The update was successful. Redirecting you to Nextcloud now." : "A atualização terminou com sucesso. Redirecionando para Nextcloud agora." }, "nplurals=2; plural=(n > 1);"); diff --git a/core/l10n/pt_BR.json b/core/l10n/pt_BR.json index d4f8484fa33..59c07685a51 100644 --- a/core/l10n/pt_BR.json +++ b/core/l10n/pt_BR.json @@ -14,32 +14,32 @@ "Crop is not square" : "Recorte não é quadrado", "Couldn't reset password because the token is invalid" : "Não foi possÃvel redefinir a senha porque o token é inválido", "Couldn't reset password because the token is expired" : "Não foi possÃvel redefinir a senha porque o token expirou", - "Couldn't send reset email. Please make sure your username is correct." : "Não foi possÃvel enviar e-mail de redefinição. Verifique se o seu nome de usuário está correto.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Não foi possÃvel enviar email de redefinição porque não há nenhum endereço de e-mail para este nome de usuário. Entre em contato com o administrador.", "%s password reset" : "%s redefinir senha", "Couldn't send reset email. Please contact your administrator." : "Não foi possÃvel enviar e-mail de redefinição. Por favor, contate o administrador.", + "Couldn't send reset email. Please make sure your username is correct." : "Não foi possÃvel enviar e-mail de redefinição. Verifique se o seu nome de usuário está correto.", "Preparing update" : "Preparando atualização", "[%d / %d]: %s" : "[%d / %d]: %s", - "Repair warning: " : "Aviso de reparação:", - "Repair error: " : "Reparação de erro:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor, use a atualização de linha de comando, porque a atualização automática está desativado no config.php.", + "Repair warning: " : "Aviso na reparação:", + "Repair error: " : "Erro na reparação :", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Por favor, use a atualização de linha de comando, porque a atualização automática está desativada no config.php.", "[%d / %d]: Checking table %s" : "[%d / %d]: Verificando tabela %s", - "Turned on maintenance mode" : "Ativar modo de manutenção", - "Turned off maintenance mode" : "Desligar o modo de manutenção", + "Turned on maintenance mode" : "Ativar o modo de manutenção", + "Turned off maintenance mode" : "Desativar o modo de manutenção", "Maintenance mode is kept active" : "O modo de manutenção está sendo mantido como ativo", - "Updating database schema" : "Actualização de esquema do banco de dados", + "Updating database schema" : "Atualização de esquema do banco de dados", "Updated database" : "Atualizar o banco de dados", "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Verificar se o esquema do banco de dados pode ser atualizado (isso pode levar muito tempo, dependendo do tamanho do banco de dados)", - "Checked database schema update" : "Verificado atualização do esquema de banco de dados", + "Checked database schema update" : "Verificada a atualização do esquema de banco de dados", "Checking updates of apps" : "Verificar atualizações de aplicativos", "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Verificar se o esquema do banco de dados para %s pode ser atualizado (isso pode levar muito tempo, dependendo do tamanho do banco de dados)", "Checked database schema update for apps" : "Verificar atualização do esquema de banco de dados para aplicativos", "Updated \"%s\" to %s" : "Atualizado \"%s\" para %s", "Set log level to debug" : "Definir o nÃvel de log para debug", - "Reset log level" : "Redefinição do nÃvel do log", - "Starting code integrity check" : "Inicializando verificação da integridade do código", + "Reset log level" : "Resetar o nÃvel do log", + "Starting code integrity check" : "Inicializando a verificação da integridade do código", "Finished code integrity check" : "Finalizada a verificação de integridade do código", - "%s (3rdparty)" : "%s (3ºterceiros)", + "%s (3rdparty)" : "%s (terceiros)", "%s (incompatible)" : "%s (incompatÃvel)", "Following apps have been disabled: %s" : "Os seguintes aplicativos foram desabilitados: %s", "Already up to date" : "Já está atualizado", @@ -49,15 +49,15 @@ "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Problema no carregamento da página, recarregando em %n segundo","Problema no carregamento da página, recarregando em %n segundos"], "Saving..." : "Salvando...", "Dismiss" : "Dispensar", - "This action requires you to confirm your password" : "Essa ação requer que voce confirme sua senha", + "This action requires you to confirm your password" : "Essa ação requer que você confirme sua senha", "Authentication required" : "Autenticação necessária", "Password" : "Senha", "Cancel" : "Cancelar", "Confirm" : "Confirmar", "Failed to authenticate, try again" : "Falha na autenticação, tente novamente", "seconds ago" : "segundos atrás", - "Logging in …" : "Logando ...", - "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "O link para redefinir sua senha foi enviado para seu e-mail. Se você não recebê-lo dentro de um perÃodo razoável de tempo, verifique suas pastas de spam/lixo.<br> Se ele não estiver lá, pergunte ao administrador do local.", + "Logging in …" : "Entrando ...", + "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "O link para redefinir sua senha foi enviado para seu e-mail. Se você não recebê-lo dentro de um perÃodo razoável de tempo, verifique suas pastas de spam/lixo.<br> Se ele não estiver lá, pergunte ao administrador local.", "Your files are encrypted. There will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Seus arquivos são criptografados. Não existe nenhuma maneira de ter seus dados de volta depois que sua senha seja redefinida.<br /> Se você não tem certeza do que fazer, por favor contate seu administrador antes de continuar.<br />Você realmente deseja continuar?", "I know what I'm doing" : "Eu sei o que estou fazendo", "Password can not be changed. Please contact your administrator." : "A senha não pode ser alterada. Por favor, contate o administrador.", @@ -65,11 +65,11 @@ "Yes" : "Sim", "No files in here" : "Sem arquivos aqui", "Choose" : "Escolher", - "Error loading file picker template: {error}" : "Erro no seletor de carregamento modelo de arquivos: {error}", + "Error loading file picker template: {error}" : "Erro carregando o seletor de modelo de arquivos: {error}", "Ok" : "Ok", - "Error loading message template: {error}" : "Erro no carregamento de modelo de mensagem: {error}", - "read-only" : "somente-leitura", - "_{count} file conflict_::_{count} file conflicts_" : ["{count} conflito de arquivo","{count} conflitos de arquivos"], + "Error loading message template: {error}" : "Erro carregando o modelo de mensagem: {error}", + "read-only" : "somente leitura", + "_{count} file conflict_::_{count} file conflicts_" : ["{count} conflito de arquivo","{count} arquivo conflita"], "One file conflict" : "Conflito em um arquivo", "New Files" : "Novos Arquivos", "Already existing files" : "Arquivos já existentes", @@ -78,60 +78,64 @@ "Continue" : "Continuar", "(all selected)" : "(todos os selecionados)", "({count} selected)" : "({count} selecionados)", - "Error loading file exists template" : "Erro ao carregar arquivo existe modelo", + "Error loading file exists template" : "Erro carregando arquivo existe modelo", "Pending" : "Pendente", "Very weak password" : "Senha muito fraca", "Weak password" : "Senha fraca", "So-so password" : "Senha mais ou menos", - "Good password" : "Boa senha", + "Good password" : "Senha boa", "Strong password" : "Senha forte", "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Seu servidor web ainda não está configurado corretamente para permitir a sincronização de arquivos, pois a interface WebDAV parece ser desconfigurada.", "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Seu servidor web não está configurado corretamente para resolver \"{url}\". Mais informação pode ser encontrada na nossa <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentação</a>.", - "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Este servidor não tem nenhuma conexão com a Internet: Vários terminações finais não podem ser encontrados. Isso significa que alguns dos recursos como montagem de armazenamento externo, notificações sobre atualizações ou instalação de aplicativos de terceiros não vai funcionar. Acesso à arquivos remotamente e envio de e-mails de notificação podem não funcionar também. Sugerimos habilitar a conexão com a Internet para este servidor, se você quer ter todas as funcionalidades.", - "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Nenhum cache de memória foi configurado. Para melhorar o seu desempenho, por favor configurar um memcached se disponÃvel. Mais informação pode ser encontrada na nossa <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentação</a>.", + "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Este servidor não tem nenhuma conexão com a Internet: Várias terminações finais não podem ser encontrados. Isso significa que alguns dos recursos como montagem de armazenamento externo, notificações sobre atualizações ou instalação de aplicativos de terceiros não vai funcionar. Acesso a arquivos remotamente e envio de e-mails de notificação podem não funcionar também. Sugerimos habilitar a conexão com a Internet para este servidor, se você quer ter todas as funcionalidades.", + "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Nenhum cache de memória foi configurado. Para melhorar o seu desempenho, por favor configure um memcached se disponÃvel. Mais informação pode ser encontrada na nossa <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentação</a>.", "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "/dev/urandom não pode ser lido pelo PHP e é altamente desencorajado por razões de segurança. Mais informação pode ser encontrada na nossa <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentação</a>.", - "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Você stá atualmente em executando PHP {version}. Nós o incentivamos a atualizar sua versão do PHP para aproveitar<a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">atualizações de segurança e desempenho proporcionados pelo Grupo PHP</a> assim que sua distribuição suportar.", - "The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "O cabeçalho do proxy reverso esta incorreto, ou voce esta acessando de um proxy confiável. Se voce não esta usando um proxy confiável, essa é uma falha de segurança e pode permitir um ataque. Para mais informações <a target=\"_blank\"rel=\"noreferrer\"href=\"{docLink}\">documentation</a>", - "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached é configurado como cache distribuÃdo, mas o módulo PHP errado \"memcache\" está instalado. \\OC\\Memcache\\Memcached suporta apenas \"memcached\" e não \"memcache\". Veja a <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">wiki memcached sobre ambos os módulos </a>.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Você está atualmente executando PHP {version}. Nós o incentivamos a atualizar sua versão do PHP para aproveitar as<a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">atualizações de segurança e desempenho proporcionados pelo Grupo PHP</a> assim que sua distribuição suportar.", + "The reverse proxy headers configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If you are not accessing Nextcloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to Nextcloud. Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "O cabeçalho do proxy reverso está incorreto, ou você está acessando a partir de um proxy confiável. Se voce não está usando um proxy confiável, essa é uma falha de segurança e pode permitir um ataque. Mais informação pode ser encontrada na nossa <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentação</a>.", + "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached está configurado como cache distribuÃdo, mas o módulo PHP errado \"memcache\" está instalado. \\OC\\Memcache\\Memcached suporta apenas \"memcached\" e não \"memcache\". Veja a <a target=\"_blank\" rel=\"noreferrer\" href=\"{wikiLink}\">wiki memcached sobre ambos os módulos </a>.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alguns arquivos não passaram na verificação de integridade. Mais informações sobre como resolver este problema pode ser encontrado em nossa <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentação</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lista de arquivos inválidos…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)", "The PHP Opcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend ↗</a> to use following settings in the <code>php.ini</code>:" : "O Opcache do PHP não está configurado corretamente. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Para um melhor desempenho recomendamos ↗</a> usar as seguintes configurações no <code>php.ini</code>:", + "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "A função PHP \"set_time_limit\" não está disponÃvel. Isso pode resultar em scripts pendurados durante a execução, prejudicando sua instalação. Sugerimos fortemente habilitar esta função.", "Error occurred while checking server setup" : "Erro ao verificar a configuração do servidor", - "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "O seu diretório de dados e os arquivos estão, provavelmente, acessÃveis a partir da Internet. O arquivo .htaccess não está funcionando. Nós sugerimos que você configure o servidor web de uma forma que o diretório de dados não seja acessÃvel ou mova o diretório de dados para fora do diretório raiz de documentos do servidor web.", - "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "O \"{header}\" cabeçalho HTTP não está configurado igual ao \"{expected}\". Este é um risco potencial para a segurança e recomendamos ajustar essa configuração.", - "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "O \"Strict-Transport-Security\" cabeçalho HTTP não está configurado para pelo menos \"{segundos}\" segundos. Para maior segurança recomendamos a ativação HSTS como descrito em nossas <a href=\"{docUrl}\" rel=\"noreferrer\">dicas de segurança</a>.", - "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Você está acessando este site via HTTP. Nós sugerimos fortemente que você configure o servidor para exigir o uso de HTTPS como descrito em nossas <a href=\"{docUrl}\">dicas de segurança</a>.", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "O seu diretório de dados e os arquivos provavelmente estão acessÃveis a partir da Internet. O arquivo .htaccess não está funcionando. Sugerimos que você configure o servidor web de maneira que o diretório de dados não seja acessÃvel ou mova o diretório de dados para fora do diretório raiz de documentos do servidor web.", + "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "O cabeçalho HTTP \"{header}\" não está configurado igual ao \"{expected}\". Este é um risco potencial para a segurança e recomendamos ajustar essa configuração.", + "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\" rel=\"noreferrer\">security tips</a>." : "O cabeçalho HTTP \"Strict-Transport-Security\" não está configurado para pelo menos \"{segundos}\" segundos. Para maior segurança recomendamos a ativação HSTS como descrito em nossas <a href=\"{docUrl}\" rel=\"noreferrer\">dicas de segurança</a>.", + "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Você está acessando este site via HTTP. Sugerimos fortemente que você configure o servidor para exigir o uso de HTTPS como descrito em nossas <a href=\"{docUrl}\">dicas de segurança</a>.", "Shared" : "Compartilhado", "Shared with {recipients}" : "Compartilhado com {recipients}", "Error" : "Erro", "Error while sharing" : "Erro ao compartilhar", "Error while unsharing" : "Erro ao descompartilhar", "Error setting expiration date" : "Erro ao definir data de expiração", - "The public link will expire no later than {days} days after it is created" : "O link público irá expirar não antes de {days} depois de ser criado", + "The public link will expire no later than {days} days after it is created" : "O link público irá expirar não antes de {days} depois de criado", "Set expiration date" : "Definir data de expiração", "Expiration" : "Expiração", "Expiration date" : "Data de expiração", "Choose a password for the public link" : "Escolha uma senha para o link público", + "Choose a password for the public link or press enter" : "Escolha uma senha para o link público ou pressione enter", "Copied!" : "Copiado!", "Copy" : "Copiar", "Not supported!" : "Não suportado!", "Press ⌘-C to copy." : "Pressione ⌘-C para copiar.", "Press Ctrl-C to copy." : "Pressione Ctrl-C para copiar.", - "Resharing is not allowed" : "Não é permitido re-compartilhar", + "Resharing is not allowed" : "Não é permitido recompartilhar", + "Share to {name}" : "Compartilhar com {name}", "Share link" : "Compartilhar link", "Link" : "Link", "Password protect" : "Proteger com senha", "Allow upload and editing" : "Permitir envio e edição", "Allow editing" : "Permitir edição", + "upload only" : "somente envio", "Email link to person" : "Enviar link por e-mail", "Send" : "Enviar", "Shared with you and the group {group} by {owner}" : "Compartilhado com você e com o grupo {group} por {owner}", "Shared with you by {owner}" : "Compartilhado com você por {owner}", - "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatiorDisplayName}} Compartilhou via link", + "{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatiorDisplayName}} compartilhou via link", "group" : "grupo", "remote" : "remoto", "email" : "email", "Unshare" : "Descompartilhar", - "can reshare" : "pode voltar a compartilhar", + "can reshare" : "pode recompartilhar", "can edit" : "pode editar", "can create" : "Pode criar", "can change" : "Pode alterar", @@ -140,15 +144,16 @@ "Could not unshare" : "Não foi possÃvel descompartilhar", "Share details could not be loaded for this item." : "Detalhes de compartilhamento não puderam ser carregados para este item.", "_At least {count} character is needed for autocompletion_::_At least {count} characters are needed for autocompletion_" : ["Pelo menos {count} caractere é necessário para completar automaticamente","Pelo menos {count} caracteres são necessários para completar automaticamente"], - "This list is maybe truncated - please refine your search term to see more results." : "Esta lista pode estar truncada: por favor refine seus termos de pesquisa para ver mais resultados", - "No users or groups found for {search}" : "Nenhum usuário grupo encontrado para {search}", + "This list is maybe truncated - please refine your search term to see more results." : "Esta lista pode estar truncada - por favor refine seus termos de pesquisa para ver mais resultados", + "No users or groups found for {search}" : "Nenhum usuário ou grupo encontrado para {search}", "No users found for {search}" : "Nenhum usuário encontrado para {search}", "An error occurred. Please try again" : "Ocorreu um erro. Por favor tente novamente", "{sharee} (group)" : "{sharee} (grupo)", "{sharee} (remote)" : "{sharee} (remoto)", "{sharee} (email)" : "{sharee} (email)", + "{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})", "Share" : "Compartilhar", - "Share with people on other servers using their Federated Cloud ID username@example.com/nextcloud" : "Compartilhe com pessoas de outros servidores usando o ID Federado username@example.com/nextcloud", + "Share with people on other servers using their Federated Cloud ID username@example.com/nextcloud" : "Compartilhe com pessoas de outros servidores usando o ID Cloud Federado username@example.com/nextcloud", "Share with users or by mail..." : "Compartilhe com usuários internos ou por email...", "Share with users or remote users..." : "Compartilhe com usuários internos ou usuários remotos...", "Share with users, remote users or by mail..." : "Compartilhe com usuários internos, usuários remotos ou por email...", @@ -158,35 +163,38 @@ "Share with users, groups, remote users or by mail..." : "Compartilhe com usuários, grupos, usuários remotos ou por email...", "Share with users..." : "Compartilhe com usuários...", "Error removing share" : "Erro na remoção do compartilhamento", - "Non-existing tag #{tag}" : "Etiqueta não existente #{tag}", + "Non-existing tag #{tag}" : "Etiqueta inexistente #{tag}", "restricted" : "restrito", "invisible" : "invisÃvel", "({scope})" : "({scope})", - "Delete" : "Eliminar", + "Delete" : "Excluir", "Rename" : "Renomear", "Collaborative tags" : "Etiquetas de colaboração", - "No tags found" : "Nenhuma tag encontrada", + "No tags found" : "Nenhuma etiqueta encontrada", "The object type is not specified." : "O tipo de objeto não foi especificado.", - "Enter new" : "Entrar uma nova", + "Enter new" : "Entre nova", "Add" : "Adicionar", "Edit tags" : "Editar etiqueta", - "Error loading dialog template: {error}" : "Erro carregando diálogo de formatação: {error}", - "No tags selected for deletion." : "Nenhuma etiqueta selecionada para deleção.", + "Error loading dialog template: {error}" : "Erro carregando o modelo de diálogo: {error}", + "No tags selected for deletion." : "Nenhuma etiqueta selecionada para exclusão.", "unknown text" : "texto desconhecido", - "Hello world!" : "Alô mundo!", + "Hello world!" : "Olá mundo!", "sunny" : "ensolarado", "Hello {name}, the weather is {weather}" : "Olá {name}, o clima está {weather}", "Hello {name}" : "Olá {name}", + "<strong>These are your search results<script>alert(1)</script></strong>" : "<strong>Estes são os resultados de sua pesquisa<script>alert(1)</script></strong>", "new" : "novo", "_download %n file_::_download %n files_" : ["baixar %n arquivo","baixar %n arquivos"], - "The update is in progress, leaving this page might interrupt the process in some environments." : "A atualização está em andamento. Se sair desta página, o processo poderá ser interrompido em alguns ambientes.", + "The update is in progress, leaving this page might interrupt the process in some environments." : "A atualização está em andamento. Em alguns ambientes, se sair desta página o processo poderá ser interrompido.", "Update to {version}" : "Atualizar para {version}", "An error occurred." : "Ocorreu um erro.", "Please reload the page." : "Por favor recarregue a página", - "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "A atualização não foi realizada com sucesso. Para mais informações <a href=\"{url}\">verifique o nosso post no fórum</a> que abrange esta questão.", - "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "Atualizado com sucesso. Por favor, informe este problema para a <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">comunidade Nextcloud</a>.", + "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "A atualização não foi realizada com sucesso. Para mais informações <a href=\"{url}\">verifique nosso post no fórum</a> que abrange esta questão.", + "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">Nextcloud community</a>." : "A atualização não foi realizada com sucesso. Por favor, informe este problema para a <a href=\"https://github.com/nextcloud/server/issues\" target=\"_blank\">comunidade Nextcloud</a>.", "Continue to Nextcloud" : "Continuar no Nextcloud", + "_The update was successful. Redirecting you to Nextcloud in %n second._::_The update was successful. Redirecting you to Nextcloud in %n seconds._" : ["A atualização terminou com sucesso. Redirecionando você para Nextcloud em %n segundos.","A atualização terminou com sucesso. Redirecionando você para Nextcloud em %n segundos."], "Searching other places" : "Pesquisando em outros lugares", + "No search results in other folders for {tag}{filter}{endtag}" : "Pesquisa sem resultados em outras pastas para {tag}{filter}{endtag}", "_{count} search result in another folder_::_{count} search results in other folders_" : ["{count} resultado da pesquisa em outras pastas","{count} resultados da pesquisa em outras pastas"], "Personal" : "Pessoal", "Users" : "Usuários", @@ -197,7 +205,7 @@ "File not found" : "Arquivo não encontrado", "The specified document has not been found on the server." : "O documento especificado não foi encontrado no servidor.", "You can click here to return to %s." : "Você pode clicar aqui para retornar para %s.", - "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Olá,\n\ngostaria que você soubesse que %s compartilhou %s com você.\nVeja isto: %s\n\n", + "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Olá,\n\napenas para avisar que %s compartilhou %s com você.\nVeja isto: %s\n\n", "The share will expire on %s." : "O compartilhamento irá expirar em %s.", "Cheers!" : "Saudações!", "Internal Server Error" : "Erro Interno do Servidor", @@ -229,18 +237,19 @@ "Database name" : "Nome do banco de dados", "Database tablespace" : "Espaço de tabela do banco de dados", "Database host" : "Host do banco de dados", - "Please specify the port number along with the host name (e.g., localhost:5432)." : "Por favor especifique o número de porta e o nome do host (e.g., localhost:5432).", - "Performance warning" : "Performance de alerta", + "Please specify the port number along with the host name (e.g., localhost:5432)." : "Por favor especifique o nome do host e o número de porta  (e.g., localhost:5432).", + "Performance warning" : "Alerta de performance", "SQLite will be used as database." : "SQLite será usado como banco de dados", "For larger installations we recommend to choose a different database backend." : "Para instalações maiores é recomendável escolher um backend de banco de dados diferente.", - "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Especialmente quando se utiliza o cliente de desktop para sincronização de arquivos o uso de SQLite é desencorajado.", + "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "O uso de SQLite é desencorajado especialmente quando se utiliza o cliente de desktop para sincronização de arquivos.", "Finish setup" : "Concluir configuração", "Finishing …" : "Finalizando ...", "Need help?" : "Precisa de ajuda?", "See the documentation" : "Veja a documentação", - "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Esta aplicação requer JavaScript para sua correta operação. Por favor {linkstart}habilite JavaScript{linkend} e recerregue a página.", + "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Esta aplicação requer JavaScript para sua correta operação. Por favor {linkstart}habilite o JavaScript{linkend} e recarregue a página.", + "More apps" : "Mais aplicações", "Search" : "Pesquisar", - "This action requires you to confirm your password:" : "Essa ação requer confirmação da sua senha:", + "This action requires you to confirm your password:" : "Essa ação requer a confirmação da sua senha:", "Confirm your password" : "Confirme sua senha", "Server side authentication failed!" : "Autenticação do servidor falhou!", "Please contact your administrator." : "Por favor, contate o administrador.", @@ -256,25 +265,25 @@ "New password" : "Nova senha", "New Password" : "Nova senha", "Reset password" : "Redefinir senha", - "Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Olá,<br><br>só para seu conhecimento que %s compartilhou <strong>%s</strong> com você. <br><a href=\"%s\">Visualize-o!</a><br><br> ", + "Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Olá,<br><br>só para avisar que %s compartilhou <strong>%s</strong> com você. <br><a href=\"%s\">Visualize-o!</a><br><br>", "This Nextcloud instance is currently in single user mode." : "Nesta instância Nextcloud está em modo de usuário único.", "This means only administrators can use the instance." : "Isso significa que apenas os administradores podem usar esta instância.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Contacte o seu administrador do sistema se esta mensagem persistir ou aparecer inesperadamente.", "Thank you for your patience." : "Obrigado pela sua paciência.", "Log out" : "Sair", "Two-factor authentication" : "Autenticação de dois fatores", - "Enhanced security is enabled for your account. Please authenticate using a second factor." : "Segurança aprimorada está habilitado para sua conta. Por favor autenticar usando um segundo fator.", - "Cancel log in" : "Cancelar login", + "Enhanced security is enabled for your account. Please authenticate using a second factor." : "Segurança aprimorada está habilitada para sua conta. Por favor autenticar usando um segundo fator.", + "Cancel log in" : "Cancelar entrada", "Use backup code" : "Use o código de backup", "Error while validating your second factor" : "Erro ao validar o seu segundo fator", "You are accessing the server from an untrusted domain." : "Você está acessando o servidor a partir de um domÃnio não confiável.", - "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Por favor entre em contato com o administrador. Se você é um administrador deste exemplo, configure a definição \"trusted_domains\" em config/config.php. Um exemplo de configuração é fornecido em config/config.sample.php.", - "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Dependendo da configuração, como administrador, você também pode ser capaz de usar o botão abaixo para confiar neste domÃnio.", - "Add \"%s\" as trusted domain" : "Adicionar \"%s\" como um domÃnio confiavel", + "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domains\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Por favor entre em contato com o administrador. Se você é o administrador, configure a definição \"trusted_domains\" em config/config.php. Um exemplo de configuração é fornecido em config/config.sample.php.", + "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Dependendo da configuração, como administrador você também pode usar o botão abaixo para confiar neste domÃnio.", + "Add \"%s\" as trusted domain" : "Adicionar \"%s\" como um domÃnio confiável", "App update required" : "Atualização de aplicativo é requerida", "%s will be updated to version %s" : "%s será atualizado para a versão %s", "These apps will be updated:" : "Esses aplicativos serão atualizados:", - "These incompatible apps will be disabled:" : "Esses aplicativos inconpatÃveis serão desabilitados:", + "These incompatible apps will be disabled:" : "Esses aplicativos incompatÃveis serão desabilitados:", "The theme %s has been disabled." : "O tema %s foi desativado.", "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Por favor, certifique-se de que o banco de dados, a pasta config e a pasta de dados foram copiados antes de prosseguir.", "Start update" : "Iniciar atualização", @@ -284,10 +293,10 @@ "Please use the command line updater because you have a big instance." : "Por favor, use a atualização de linha de comando, porque você tem muitos dados em sua instância.", "For help, see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation</a>." : "Para obter ajuda, consulte a <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentação</a>.", "This %s instance is currently in maintenance mode, which may take a while." : "Esta instância %s está em modo de manutenção, o que pode demorar um pouco.", - "This page will refresh itself when the %s instance is available again." : "Esta página será atualizada automaticamente quando esta instância %s estiver disponÃvel novamente.", + "This page will refresh itself when the %s instance is available again." : "Esta página será atualizada automaticamente quando a instância %s estiver disponÃvel novamente.", "Problem loading page, reloading in 5 seconds" : "Problema no carregamento da página, recarregando em 5 segundos", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Seus arquivos são criptografados. Se você não ativou a chave de recuperação, não haverá maneira de obter seus dados de volta após a sua senha ser redefinida.<br/>Se não tiver certeza do que deve fazer, contate o administrador antes de continuar. <br/>Deseja realmente continuar?", "File drop (upload only)" : "Zona de arquivos (somente upload)", - "The update was successful. Redirecting you to Nextcloud now." : "Atualizado com sucesso. Redirecionando para Nextcloud." + "The update was successful. Redirecting you to Nextcloud now." : "A atualização terminou com sucesso. Redirecionando para Nextcloud agora." },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/core/l10n/pt_PT.js b/core/l10n/pt_PT.js index ff615b5a5f0..dbe7957cb42 100644 --- a/core/l10n/pt_PT.js +++ b/core/l10n/pt_PT.js @@ -14,10 +14,10 @@ OC.L10N.register( "Crop is not square" : "O recorte não é quadrado", "Couldn't reset password because the token is invalid" : "Não foi possÃvel repor a palavra-passe porque a senha é inválida", "Couldn't reset password because the token is expired" : "Não foi possÃvel repor a palavra-passe porque a senha expirou", - "Couldn't send reset email. Please make sure your username is correct." : "Não foi possÃvel enviar a mensagem de reposição. Por favor, confirme se o seu nome de utilizador está correto.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Não foi possÃvel enviar a mensagem de reposição porque não existe nenhum endereço de e-mail associado para este utilizador. Por favor, contacte o seu administrador.", "%s password reset" : "%s reposição da palavra-passe", "Couldn't send reset email. Please contact your administrator." : "Não foi possÃvel enviar a mensagem de reposição. Por favor, contacte o seu administrador.", + "Couldn't send reset email. Please make sure your username is correct." : "Não foi possÃvel enviar a mensagem de reposição. Por favor, confirme se o seu nome de utilizador está correto.", "Preparing update" : "A preparar atualização", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Aviso de correção:", diff --git a/core/l10n/pt_PT.json b/core/l10n/pt_PT.json index d88b027ca66..6b2e6f40ec2 100644 --- a/core/l10n/pt_PT.json +++ b/core/l10n/pt_PT.json @@ -12,10 +12,10 @@ "Crop is not square" : "O recorte não é quadrado", "Couldn't reset password because the token is invalid" : "Não foi possÃvel repor a palavra-passe porque a senha é inválida", "Couldn't reset password because the token is expired" : "Não foi possÃvel repor a palavra-passe porque a senha expirou", - "Couldn't send reset email. Please make sure your username is correct." : "Não foi possÃvel enviar a mensagem de reposição. Por favor, confirme se o seu nome de utilizador está correto.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Não foi possÃvel enviar a mensagem de reposição porque não existe nenhum endereço de e-mail associado para este utilizador. Por favor, contacte o seu administrador.", "%s password reset" : "%s reposição da palavra-passe", "Couldn't send reset email. Please contact your administrator." : "Não foi possÃvel enviar a mensagem de reposição. Por favor, contacte o seu administrador.", + "Couldn't send reset email. Please make sure your username is correct." : "Não foi possÃvel enviar a mensagem de reposição. Por favor, confirme se o seu nome de utilizador está correto.", "Preparing update" : "A preparar atualização", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Aviso de correção:", diff --git a/core/l10n/ro.js b/core/l10n/ro.js index 9f668dcafa9..95cfa1771e2 100644 --- a/core/l10n/ro.js +++ b/core/l10n/ro.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "SelecÈ›ia nu este pătrată", "Couldn't reset password because the token is invalid" : "Parola nu a putut fi resetată deoarece token-ul este invalid", "Couldn't reset password because the token is expired" : "Parola nu a putut fi resetată deoarece token-ul a expirat", - "Couldn't send reset email. Please make sure your username is correct." : "Nu a putut fi trimis un email pentru resetare. Asigură-te că numele de utilizator este corect.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Nu a putut fi trimis un email pentru resetare deoarece nu există o adresă email pentru acest utilizator. Contactează-È›i administratorul.", "%s password reset" : "%s resetare parola", "Couldn't send reset email. Please contact your administrator." : "Expedierea email-ului de resetare a eÅŸuat. Vă rugăm să contactaÅ£i administratorul dvs.", + "Couldn't send reset email. Please make sure your username is correct." : "Nu a putut fi trimis un email pentru resetare. Asigură-te că numele de utilizator este corect.", "Preparing update" : "Se pregăteÈ™te actualizarea", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Alerte reparare:", diff --git a/core/l10n/ro.json b/core/l10n/ro.json index 06e80367793..e1c3537b406 100644 --- a/core/l10n/ro.json +++ b/core/l10n/ro.json @@ -14,10 +14,10 @@ "Crop is not square" : "SelecÈ›ia nu este pătrată", "Couldn't reset password because the token is invalid" : "Parola nu a putut fi resetată deoarece token-ul este invalid", "Couldn't reset password because the token is expired" : "Parola nu a putut fi resetată deoarece token-ul a expirat", - "Couldn't send reset email. Please make sure your username is correct." : "Nu a putut fi trimis un email pentru resetare. Asigură-te că numele de utilizator este corect.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Nu a putut fi trimis un email pentru resetare deoarece nu există o adresă email pentru acest utilizator. Contactează-È›i administratorul.", "%s password reset" : "%s resetare parola", "Couldn't send reset email. Please contact your administrator." : "Expedierea email-ului de resetare a eÅŸuat. Vă rugăm să contactaÅ£i administratorul dvs.", + "Couldn't send reset email. Please make sure your username is correct." : "Nu a putut fi trimis un email pentru resetare. Asigură-te că numele de utilizator este corect.", "Preparing update" : "Se pregăteÈ™te actualizarea", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Alerte reparare:", diff --git a/core/l10n/ru.js b/core/l10n/ru.js index 124728dc38c..1a0d2d14d31 100644 --- a/core/l10n/ru.js +++ b/core/l10n/ru.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "Кадр не ÑвлÑетÑÑ ÐºÐ²Ð°Ð´Ñ€Ð°Ñ‚Ð¾Ð¼", "Couldn't reset password because the token is invalid" : "Ðе удалоÑÑŒ ÑброÑить пароль из-за неверного токена", "Couldn't reset password because the token is expired" : "Ðе удалоÑÑŒ ÑброÑить пароль, так как Ñрок дейÑÑ‚Ð²Ð¸Ñ Ñ‚Ð¾ÐºÐµÐ½Ð° иÑтек.", - "Couldn't send reset email. Please make sure your username is correct." : "Ðе удалоÑÑŒ отправить пиÑьмо Ð´Ð»Ñ ÑброÑа паролÑ. УбедитеÑÑŒ, что Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¾ верно.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Ðе удалоÑÑŒ отправить пиÑьмо ÑброÑа так как у данного Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ задан Ð°Ð´Ñ€ÐµÑ Ñлектронной почты. ПожалуйÑта, обратитеÑÑŒ к админиÑтратору.", "%s password reset" : "Ð¡Ð±Ñ€Ð¾Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ %s", "Couldn't send reset email. Please contact your administrator." : "Ðе удалоÑÑŒ отправить пиÑьмо Ð´Ð»Ñ ÑброÑа паролÑ. ПожалуйÑта, ÑвÑжитеÑÑŒ Ñ Ð²Ð°ÑˆÐ¸Ð¼ админиÑтратором.", + "Couldn't send reset email. Please make sure your username is correct." : "Ðе удалоÑÑŒ отправить пиÑьмо Ð´Ð»Ñ ÑброÑа паролÑ. УбедитеÑÑŒ, что Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¾ верно.", "Preparing update" : "Подготовка к обновлению", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Предупреждение воÑÑтановлениÑ:", @@ -114,6 +114,7 @@ OC.L10N.register( "Expiration" : "Срок дейÑтвиÑ", "Expiration date" : "Дата окончаниÑ", "Choose a password for the public link" : "Укажите пароль Ð´Ð»Ñ Ð¾Ð±Ñ‰ÐµÐ´Ð¾Ñтупной ÑÑылки", + "Choose a password for the public link or press enter" : "Укажите пароль Ð´Ð»Ñ Ð¾Ð±Ñ‰ÐµÐ´Ð¾Ñтупной ÑÑылки или нажмите ввод.", "Copied!" : "Скопировано!", "Copy" : "Копировать", "Not supported!" : "Ðе поддерживаетÑÑ!", diff --git a/core/l10n/ru.json b/core/l10n/ru.json index 767c032eade..c3ab21b4484 100644 --- a/core/l10n/ru.json +++ b/core/l10n/ru.json @@ -14,10 +14,10 @@ "Crop is not square" : "Кадр не ÑвлÑетÑÑ ÐºÐ²Ð°Ð´Ñ€Ð°Ñ‚Ð¾Ð¼", "Couldn't reset password because the token is invalid" : "Ðе удалоÑÑŒ ÑброÑить пароль из-за неверного токена", "Couldn't reset password because the token is expired" : "Ðе удалоÑÑŒ ÑброÑить пароль, так как Ñрок дейÑÑ‚Ð²Ð¸Ñ Ñ‚Ð¾ÐºÐµÐ½Ð° иÑтек.", - "Couldn't send reset email. Please make sure your username is correct." : "Ðе удалоÑÑŒ отправить пиÑьмо Ð´Ð»Ñ ÑброÑа паролÑ. УбедитеÑÑŒ, что Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¾ верно.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Ðе удалоÑÑŒ отправить пиÑьмо ÑброÑа так как у данного Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ задан Ð°Ð´Ñ€ÐµÑ Ñлектронной почты. ПожалуйÑта, обратитеÑÑŒ к админиÑтратору.", "%s password reset" : "Ð¡Ð±Ñ€Ð¾Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ %s", "Couldn't send reset email. Please contact your administrator." : "Ðе удалоÑÑŒ отправить пиÑьмо Ð´Ð»Ñ ÑброÑа паролÑ. ПожалуйÑта, ÑвÑжитеÑÑŒ Ñ Ð²Ð°ÑˆÐ¸Ð¼ админиÑтратором.", + "Couldn't send reset email. Please make sure your username is correct." : "Ðе удалоÑÑŒ отправить пиÑьмо Ð´Ð»Ñ ÑброÑа паролÑ. УбедитеÑÑŒ, что Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¾ верно.", "Preparing update" : "Подготовка к обновлению", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Предупреждение воÑÑтановлениÑ:", @@ -112,6 +112,7 @@ "Expiration" : "Срок дейÑтвиÑ", "Expiration date" : "Дата окончаниÑ", "Choose a password for the public link" : "Укажите пароль Ð´Ð»Ñ Ð¾Ð±Ñ‰ÐµÐ´Ð¾Ñтупной ÑÑылки", + "Choose a password for the public link or press enter" : "Укажите пароль Ð´Ð»Ñ Ð¾Ð±Ñ‰ÐµÐ´Ð¾Ñтупной ÑÑылки или нажмите ввод.", "Copied!" : "Скопировано!", "Copy" : "Копировать", "Not supported!" : "Ðе поддерживаетÑÑ!", diff --git a/core/l10n/sk.js b/core/l10n/sk.js index 9a4bf4bd152..f2a2a47653e 100644 --- a/core/l10n/sk.js +++ b/core/l10n/sk.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "Orezanie nie je Å¡tvorcové", "Couldn't reset password because the token is invalid" : "Nemožno zmeniÅ¥ heslo pre neplatnosÅ¥ tokenu.", "Couldn't reset password because the token is expired" : "Nepodarilo sa obnoviÅ¥ heslo, pretože platnosÅ¥ tokenu uplynula.", - "Couldn't send reset email. Please make sure your username is correct." : "Nemožno poslaÅ¥ email pre obnovu. Uistite sa, Äi vkladáte správne použÃvateľské meno.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Nemožno poslaÅ¥ email pre obnovu, lebo pre zadaného použÃvateľa neexistuje emailová adresa. Kontaktujte prosÃm vášho administrátora.", "%s password reset" : "reset hesla %s", "Couldn't send reset email. Please contact your administrator." : "Nemožno poslaÅ¥ email pre obnovu. Kontaktujte prosÃm vášho administrátora.", + "Couldn't send reset email. Please make sure your username is correct." : "Nemožno poslaÅ¥ email pre obnovu. Uistite sa, Äi vkladáte správne použÃvateľské meno.", "Preparing update" : "Pripravuje sa aktualizácia", "Repair warning: " : "Oznámenie opravy:", "Repair error: " : "Chyba opravy:", diff --git a/core/l10n/sk.json b/core/l10n/sk.json index 6059bcd6f8a..2a3ecb91741 100644 --- a/core/l10n/sk.json +++ b/core/l10n/sk.json @@ -14,10 +14,10 @@ "Crop is not square" : "Orezanie nie je Å¡tvorcové", "Couldn't reset password because the token is invalid" : "Nemožno zmeniÅ¥ heslo pre neplatnosÅ¥ tokenu.", "Couldn't reset password because the token is expired" : "Nepodarilo sa obnoviÅ¥ heslo, pretože platnosÅ¥ tokenu uplynula.", - "Couldn't send reset email. Please make sure your username is correct." : "Nemožno poslaÅ¥ email pre obnovu. Uistite sa, Äi vkladáte správne použÃvateľské meno.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Nemožno poslaÅ¥ email pre obnovu, lebo pre zadaného použÃvateľa neexistuje emailová adresa. Kontaktujte prosÃm vášho administrátora.", "%s password reset" : "reset hesla %s", "Couldn't send reset email. Please contact your administrator." : "Nemožno poslaÅ¥ email pre obnovu. Kontaktujte prosÃm vášho administrátora.", + "Couldn't send reset email. Please make sure your username is correct." : "Nemožno poslaÅ¥ email pre obnovu. Uistite sa, Äi vkladáte správne použÃvateľské meno.", "Preparing update" : "Pripravuje sa aktualizácia", "Repair warning: " : "Oznámenie opravy:", "Repair error: " : "Chyba opravy:", diff --git a/core/l10n/sl.js b/core/l10n/sl.js index caf80d87f19..87e9f636682 100644 --- a/core/l10n/sl.js +++ b/core/l10n/sl.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "Obrez ni pravokoten", "Couldn't reset password because the token is invalid" : "Ni mogoÄe ponastaviti gesla zaradi neustreznega žetona.", "Couldn't reset password because the token is expired" : "Ni mogoÄe ponastaviti gesla, ker je žeton potekel.", - "Couldn't send reset email. Please make sure your username is correct." : "Ni mogoÄe poslati elektronskega sporoÄila. PrepriÄajte se, da je uporabniÅ¡ko ime pravilno.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Ni mogoÄe poslati elektronskega sporoÄila za ponastavitev gesla, ker ni navedenega elektronskega naslova. Stopite v stik s skrbnikom sistema.", "%s password reset" : "Ponastavitev gesla %s", "Couldn't send reset email. Please contact your administrator." : "Ni mogoÄe nastaviti elektronskega naslova za ponastavitev. Stopite v stik s skrbnikom sistema.", + "Couldn't send reset email. Please make sure your username is correct." : "Ni mogoÄe poslati elektronskega sporoÄila. PrepriÄajte se, da je uporabniÅ¡ko ime pravilno.", "Preparing update" : "Pripravljanje posodobitve", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Opozorilo popravila:", diff --git a/core/l10n/sl.json b/core/l10n/sl.json index 08c0315f07f..8cf70e6e407 100644 --- a/core/l10n/sl.json +++ b/core/l10n/sl.json @@ -14,10 +14,10 @@ "Crop is not square" : "Obrez ni pravokoten", "Couldn't reset password because the token is invalid" : "Ni mogoÄe ponastaviti gesla zaradi neustreznega žetona.", "Couldn't reset password because the token is expired" : "Ni mogoÄe ponastaviti gesla, ker je žeton potekel.", - "Couldn't send reset email. Please make sure your username is correct." : "Ni mogoÄe poslati elektronskega sporoÄila. PrepriÄajte se, da je uporabniÅ¡ko ime pravilno.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Ni mogoÄe poslati elektronskega sporoÄila za ponastavitev gesla, ker ni navedenega elektronskega naslova. Stopite v stik s skrbnikom sistema.", "%s password reset" : "Ponastavitev gesla %s", "Couldn't send reset email. Please contact your administrator." : "Ni mogoÄe nastaviti elektronskega naslova za ponastavitev. Stopite v stik s skrbnikom sistema.", + "Couldn't send reset email. Please make sure your username is correct." : "Ni mogoÄe poslati elektronskega sporoÄila. PrepriÄajte se, da je uporabniÅ¡ko ime pravilno.", "Preparing update" : "Pripravljanje posodobitve", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Opozorilo popravila:", diff --git a/core/l10n/sq.js b/core/l10n/sq.js index 991275956cf..556f864de4b 100644 --- a/core/l10n/sq.js +++ b/core/l10n/sq.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "Qethja s’është katrore", "Couldn't reset password because the token is invalid" : "S’u ricaktua dot fjalëkalimi, ngaqë token-i është i pavlefshëm", "Couldn't reset password because the token is expired" : "S’u ricaktua dot fjalëkalimi, ngaqë token-i ka skaduar", - "Couldn't send reset email. Please make sure your username is correct." : "S’u dërgua dot email ricaktimi. Ju lutemi, sigurohuni që emri juaj i përdoruesit është i saktë.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "S’u dërgua dot email ricaktimi, ngaqë s’ka adresë email për këtë përdoruesi. Ju lutemi, lidhuni me përgjegjësin tuaj.", "%s password reset" : "U ricaktua fjalëkalimi për %s", "Couldn't send reset email. Please contact your administrator." : "S’u dërgua dot email-i i ricaktimit. Ju lutemi, lidhuni me përgjegjësin tuaj.", + "Couldn't send reset email. Please make sure your username is correct." : "S’u dërgua dot email ricaktimi. Ju lutemi, sigurohuni që emri juaj i përdoruesit është i saktë.", "Preparing update" : "Po përgatitet përditësimi", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Sinjalizim ndreqjeje: ", diff --git a/core/l10n/sq.json b/core/l10n/sq.json index 5ba031d3ef3..c68c40aad47 100644 --- a/core/l10n/sq.json +++ b/core/l10n/sq.json @@ -14,10 +14,10 @@ "Crop is not square" : "Qethja s’është katrore", "Couldn't reset password because the token is invalid" : "S’u ricaktua dot fjalëkalimi, ngaqë token-i është i pavlefshëm", "Couldn't reset password because the token is expired" : "S’u ricaktua dot fjalëkalimi, ngaqë token-i ka skaduar", - "Couldn't send reset email. Please make sure your username is correct." : "S’u dërgua dot email ricaktimi. Ju lutemi, sigurohuni që emri juaj i përdoruesit është i saktë.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "S’u dërgua dot email ricaktimi, ngaqë s’ka adresë email për këtë përdoruesi. Ju lutemi, lidhuni me përgjegjësin tuaj.", "%s password reset" : "U ricaktua fjalëkalimi për %s", "Couldn't send reset email. Please contact your administrator." : "S’u dërgua dot email-i i ricaktimit. Ju lutemi, lidhuni me përgjegjësin tuaj.", + "Couldn't send reset email. Please make sure your username is correct." : "S’u dërgua dot email ricaktimi. Ju lutemi, sigurohuni që emri juaj i përdoruesit është i saktë.", "Preparing update" : "Po përgatitet përditësimi", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Sinjalizim ndreqjeje: ", diff --git a/core/l10n/sv.js b/core/l10n/sv.js index faa15eb1bc3..1234e85d94f 100644 --- a/core/l10n/sv.js +++ b/core/l10n/sv.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "Beskärning är inte kvadratisk", "Couldn't reset password because the token is invalid" : "Kunde inte Ã¥terställa lösenordet pÃ¥ grund av felaktig token", "Couldn't reset password because the token is expired" : "Lösenord kunde inte Ã¥terställas eftersom \"token\" har utgÃ¥tt", - "Couldn't send reset email. Please make sure your username is correct." : "Kunde inte skicka Ã¥terställningsmejl. Vänligen kontrollera att ditt användarnamn är korrekt.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Kunde inte skicka Ã¥terställningsmejl eftersom det saknas e-postadress för denna användare. Kontakta din administratör", "%s password reset" : "%s Ã¥terställ lösenord", "Couldn't send reset email. Please contact your administrator." : "Kunde inte skicka Ã¥terställningsmejl. Vänligen kontakta din administratör.", + "Couldn't send reset email. Please make sure your username is correct." : "Kunde inte skicka Ã¥terställningsmejl. Vänligen kontrollera att ditt användarnamn är korrekt.", "Preparing update" : "Förbereder uppdatering", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Reperationsvarning:", diff --git a/core/l10n/sv.json b/core/l10n/sv.json index eb32e6d26de..7b433999043 100644 --- a/core/l10n/sv.json +++ b/core/l10n/sv.json @@ -14,10 +14,10 @@ "Crop is not square" : "Beskärning är inte kvadratisk", "Couldn't reset password because the token is invalid" : "Kunde inte Ã¥terställa lösenordet pÃ¥ grund av felaktig token", "Couldn't reset password because the token is expired" : "Lösenord kunde inte Ã¥terställas eftersom \"token\" har utgÃ¥tt", - "Couldn't send reset email. Please make sure your username is correct." : "Kunde inte skicka Ã¥terställningsmejl. Vänligen kontrollera att ditt användarnamn är korrekt.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Kunde inte skicka Ã¥terställningsmejl eftersom det saknas e-postadress för denna användare. Kontakta din administratör", "%s password reset" : "%s Ã¥terställ lösenord", "Couldn't send reset email. Please contact your administrator." : "Kunde inte skicka Ã¥terställningsmejl. Vänligen kontakta din administratör.", + "Couldn't send reset email. Please make sure your username is correct." : "Kunde inte skicka Ã¥terställningsmejl. Vänligen kontrollera att ditt användarnamn är korrekt.", "Preparing update" : "Förbereder uppdatering", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Reperationsvarning:", diff --git a/core/l10n/tr.js b/core/l10n/tr.js index 59ecdefc2f9..60e0676a3ba 100644 --- a/core/l10n/tr.js +++ b/core/l10n/tr.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "Kırpma kare ÅŸeklinde deÄŸil", "Couldn't reset password because the token is invalid" : "Kod geçersiz olduÄŸundan parola sıfırlanamadı", "Couldn't reset password because the token is expired" : "Kodun süresi geçtiÄŸinden parola sıfırlanamadı", - "Couldn't send reset email. Please make sure your username is correct." : "Sıfırlama e-postası gönderilemedi. Lütfen kullanıcı adınızın doÄŸru olduÄŸundan emin olun.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Bu kullanıcı için bir e-posta adresi olmadığından sıfırlama e-postası gönderilemedi. Lütfen yöneticiniz ile görüşün.", "%s password reset" : "%s parola sıfırlama", "Couldn't send reset email. Please contact your administrator." : "Sıfırlama e-postası gönderilemedi. Lütfen yöneticiniz ile görüşün.", + "Couldn't send reset email. Please make sure your username is correct." : "Sıfırlama e-postası gönderilemedi. Lütfen kullanıcı adınızın doÄŸru olduÄŸundan emin olun.", "Preparing update" : "Güncelleme hazırlanıyor", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Onarım uyarısı:", @@ -114,6 +114,7 @@ OC.L10N.register( "Expiration" : "Son kullanma", "Expiration date" : "Son kullanma tarihi", "Choose a password for the public link" : "Herkese açık baÄŸlantı için bir parola seçin", + "Choose a password for the public link or press enter" : "Herkese açık baÄŸlantı için bir parola belirtin ya da Enter tuÅŸuna basın", "Copied!" : "Kopyalandı!", "Copy" : "Kopyala", "Not supported!" : "Desteklenmiyor!", diff --git a/core/l10n/tr.json b/core/l10n/tr.json index 78813b72762..5ea11a08de5 100644 --- a/core/l10n/tr.json +++ b/core/l10n/tr.json @@ -14,10 +14,10 @@ "Crop is not square" : "Kırpma kare ÅŸeklinde deÄŸil", "Couldn't reset password because the token is invalid" : "Kod geçersiz olduÄŸundan parola sıfırlanamadı", "Couldn't reset password because the token is expired" : "Kodun süresi geçtiÄŸinden parola sıfırlanamadı", - "Couldn't send reset email. Please make sure your username is correct." : "Sıfırlama e-postası gönderilemedi. Lütfen kullanıcı adınızın doÄŸru olduÄŸundan emin olun.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Bu kullanıcı için bir e-posta adresi olmadığından sıfırlama e-postası gönderilemedi. Lütfen yöneticiniz ile görüşün.", "%s password reset" : "%s parola sıfırlama", "Couldn't send reset email. Please contact your administrator." : "Sıfırlama e-postası gönderilemedi. Lütfen yöneticiniz ile görüşün.", + "Couldn't send reset email. Please make sure your username is correct." : "Sıfırlama e-postası gönderilemedi. Lütfen kullanıcı adınızın doÄŸru olduÄŸundan emin olun.", "Preparing update" : "Güncelleme hazırlanıyor", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Onarım uyarısı:", @@ -112,6 +112,7 @@ "Expiration" : "Son kullanma", "Expiration date" : "Son kullanma tarihi", "Choose a password for the public link" : "Herkese açık baÄŸlantı için bir parola seçin", + "Choose a password for the public link or press enter" : "Herkese açık baÄŸlantı için bir parola belirtin ya da Enter tuÅŸuna basın", "Copied!" : "Kopyalandı!", "Copy" : "Kopyala", "Not supported!" : "Desteklenmiyor!", diff --git a/core/l10n/uk.js b/core/l10n/uk.js index f9db736a523..48e2a32a75b 100644 --- a/core/l10n/uk.js +++ b/core/l10n/uk.js @@ -14,10 +14,10 @@ OC.L10N.register( "Crop is not square" : "Кадр не Ñ” квадратом", "Couldn't reset password because the token is invalid" : "Ðеможливо Ñкинути пароль, бо маркер Ñ” недійÑним", "Couldn't reset password because the token is expired" : "Ðеможливо Ñкинути пароль, бо маркер заÑтарів", - "Couldn't send reset email. Please make sure your username is correct." : "Ðе вдалоÑÑ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²Ð¸Ñ‚Ð¸ ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»ÑŽ. Будь лаÑка, переконайтеÑÑ, що ваше ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача Ñ” правильним.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Ðе вдалоÑÑ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²Ð¸Ñ‚Ð¸ ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»ÑŽ, тому що немає адреÑи електронної пошти Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ кориÑтувача. Будь лаÑка, звернітьÑÑ Ð´Ð¾ адмініÑтратора.", "%s password reset" : "%s ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»ÑŽ", "Couldn't send reset email. Please contact your administrator." : "Ðе можу надіÑлати email Ð´Ð»Ñ ÑкиданнÑ. Будь лаÑка, звернітьÑÑ Ð´Ð¾ вашого адмініÑтратора.", + "Couldn't send reset email. Please make sure your username is correct." : "Ðе вдалоÑÑ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²Ð¸Ñ‚Ð¸ ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»ÑŽ. Будь лаÑка, переконайтеÑÑ, що ваше ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача Ñ” правильним.", "Preparing update" : "Підготовка до оновленнÑ", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ:", diff --git a/core/l10n/uk.json b/core/l10n/uk.json index 996cce1bf00..5a4c15495db 100644 --- a/core/l10n/uk.json +++ b/core/l10n/uk.json @@ -12,10 +12,10 @@ "Crop is not square" : "Кадр не Ñ” квадратом", "Couldn't reset password because the token is invalid" : "Ðеможливо Ñкинути пароль, бо маркер Ñ” недійÑним", "Couldn't reset password because the token is expired" : "Ðеможливо Ñкинути пароль, бо маркер заÑтарів", - "Couldn't send reset email. Please make sure your username is correct." : "Ðе вдалоÑÑ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²Ð¸Ñ‚Ð¸ ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»ÑŽ. Будь лаÑка, переконайтеÑÑ, що ваше ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача Ñ” правильним.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Ðе вдалоÑÑ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²Ð¸Ñ‚Ð¸ ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»ÑŽ, тому що немає адреÑи електронної пошти Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ кориÑтувача. Будь лаÑка, звернітьÑÑ Ð´Ð¾ адмініÑтратора.", "%s password reset" : "%s ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»ÑŽ", "Couldn't send reset email. Please contact your administrator." : "Ðе можу надіÑлати email Ð´Ð»Ñ ÑкиданнÑ. Будь лаÑка, звернітьÑÑ Ð´Ð¾ вашого адмініÑтратора.", + "Couldn't send reset email. Please make sure your username is correct." : "Ðе вдалоÑÑ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²Ð¸Ñ‚Ð¸ ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»ÑŽ. Будь лаÑка, переконайтеÑÑ, що ваше ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача Ñ” правильним.", "Preparing update" : "Підготовка до оновленнÑ", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ:", diff --git a/core/l10n/zh_CN.js b/core/l10n/zh_CN.js index e306d69e68f..1237c0dd6ba 100644 --- a/core/l10n/zh_CN.js +++ b/core/l10n/zh_CN.js @@ -16,10 +16,10 @@ OC.L10N.register( "Crop is not square" : "è£å‰ªçš„䏿˜¯æ£æ–¹å½¢", "Couldn't reset password because the token is invalid" : "ä»¤ç‰Œæ— æ•ˆ, æ— æ³•é‡ç½®å¯†ç ", "Couldn't reset password because the token is expired" : "令牌已过期, æ— æ³•é‡ç½®å¯†ç ", - "Couldn't send reset email. Please make sure your username is correct." : "æ— æ³•å‘é€é‡ç½®é‚®ä»¶, è¯·æ£€æŸ¥æ‚¨çš„ç”¨æˆ·åæ˜¯å¦æ£ç¡®.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "该用户没有设置电å邮件地å€, æ— å‘é€é‡ç½®é‚®ä»¶. 请è”系管ç†å‘˜.", "%s password reset" : "é‡ç½® %s 的密ç ", "Couldn't send reset email. Please contact your administrator." : "未能æˆåŠŸå‘é€é‡ç½®é‚®ä»¶, 请è”系管ç†å‘˜.", + "Couldn't send reset email. Please make sure your username is correct." : "æ— æ³•å‘é€é‡ç½®é‚®ä»¶, è¯·æ£€æŸ¥æ‚¨çš„ç”¨æˆ·åæ˜¯å¦æ£ç¡®.", "Preparing update" : "æ£åœ¨å‡†å¤‡æ›´æ–°", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "ä¿®å¤è¦å‘Š:", diff --git a/core/l10n/zh_CN.json b/core/l10n/zh_CN.json index 017af4ca676..bfe859e4482 100644 --- a/core/l10n/zh_CN.json +++ b/core/l10n/zh_CN.json @@ -14,10 +14,10 @@ "Crop is not square" : "è£å‰ªçš„䏿˜¯æ£æ–¹å½¢", "Couldn't reset password because the token is invalid" : "ä»¤ç‰Œæ— æ•ˆ, æ— æ³•é‡ç½®å¯†ç ", "Couldn't reset password because the token is expired" : "令牌已过期, æ— æ³•é‡ç½®å¯†ç ", - "Couldn't send reset email. Please make sure your username is correct." : "æ— æ³•å‘é€é‡ç½®é‚®ä»¶, è¯·æ£€æŸ¥æ‚¨çš„ç”¨æˆ·åæ˜¯å¦æ£ç¡®.", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "该用户没有设置电å邮件地å€, æ— å‘é€é‡ç½®é‚®ä»¶. 请è”系管ç†å‘˜.", "%s password reset" : "é‡ç½® %s 的密ç ", "Couldn't send reset email. Please contact your administrator." : "未能æˆåŠŸå‘é€é‡ç½®é‚®ä»¶, 请è”系管ç†å‘˜.", + "Couldn't send reset email. Please make sure your username is correct." : "æ— æ³•å‘é€é‡ç½®é‚®ä»¶, è¯·æ£€æŸ¥æ‚¨çš„ç”¨æˆ·åæ˜¯å¦æ£ç¡®.", "Preparing update" : "æ£åœ¨å‡†å¤‡æ›´æ–°", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "ä¿®å¤è¦å‘Š:", diff --git a/core/l10n/zh_TW.js b/core/l10n/zh_TW.js index a9363858f47..eb9daa77ea4 100644 --- a/core/l10n/zh_TW.js +++ b/core/l10n/zh_TW.js @@ -14,10 +14,10 @@ OC.L10N.register( "Crop is not square" : "剪è£è¨å®šä¸æ˜¯æ£æ–¹å½¢", "Couldn't reset password because the token is invalid" : "無法é‡è¨å¯†ç¢¼å› 為 token 無效", "Couldn't reset password because the token is expired" : "無法é‡è¨å¯†ç¢¼ï¼Œå› 為 token éŽæœŸ", - "Couldn't send reset email. Please make sure your username is correct." : "無法寄é€é‡è¨ email ï¼Œè«‹ç¢ºèªæ‚¨çš„帳號輸入æ£ç¢º", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "無法寄é€é‡è¨ email ï¼Œå› ç‚ºé€™å€‹å¸³è™Ÿæ²’æœ‰è¨å®š email 地å€ï¼Œè«‹è¯çµ¡æ‚¨çš„系統管ç†å“¡ã€‚", "%s password reset" : "%s 密碼é‡è¨", "Couldn't send reset email. Please contact your administrator." : "無法寄é€é‡è¨ email ,請è¯çµ¡ç³»çµ±ç®¡ç†å“¡", + "Couldn't send reset email. Please make sure your username is correct." : "無法寄é€é‡è¨ email ï¼Œè«‹ç¢ºèªæ‚¨çš„帳號輸入æ£ç¢º", "Preparing update" : "準備更新", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "修復è¦å‘Šï¼š", diff --git a/core/l10n/zh_TW.json b/core/l10n/zh_TW.json index 412cd65eafc..f1191e497d2 100644 --- a/core/l10n/zh_TW.json +++ b/core/l10n/zh_TW.json @@ -12,10 +12,10 @@ "Crop is not square" : "剪è£è¨å®šä¸æ˜¯æ£æ–¹å½¢", "Couldn't reset password because the token is invalid" : "無法é‡è¨å¯†ç¢¼å› 為 token 無效", "Couldn't reset password because the token is expired" : "無法é‡è¨å¯†ç¢¼ï¼Œå› 為 token éŽæœŸ", - "Couldn't send reset email. Please make sure your username is correct." : "無法寄é€é‡è¨ email ï¼Œè«‹ç¢ºèªæ‚¨çš„帳號輸入æ£ç¢º", "Could not send reset email because there is no email address for this username. Please contact your administrator." : "無法寄é€é‡è¨ email ï¼Œå› ç‚ºé€™å€‹å¸³è™Ÿæ²’æœ‰è¨å®š email 地å€ï¼Œè«‹è¯çµ¡æ‚¨çš„系統管ç†å“¡ã€‚", "%s password reset" : "%s 密碼é‡è¨", "Couldn't send reset email. Please contact your administrator." : "無法寄é€é‡è¨ email ,請è¯çµ¡ç³»çµ±ç®¡ç†å“¡", + "Couldn't send reset email. Please make sure your username is correct." : "無法寄é€é‡è¨ email ï¼Œè«‹ç¢ºèªæ‚¨çš„帳號輸入æ£ç¢º", "Preparing update" : "準備更新", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "修復è¦å‘Šï¼š", diff --git a/core/shipped.json b/core/shipped.json index d325117c67e..679e1c7f706 100644 --- a/core/shipped.json +++ b/core/shipped.json @@ -2,6 +2,7 @@ "shippedApps": [ "activity", "admin_audit", + "bruteforcesettings", "comments", "dav", "encryption", diff --git a/core/vendor/.gitignore b/core/vendor/.gitignore index f6eac907f34..4e33cfa586b 100644 --- a/core/vendor/.gitignore +++ b/core/vendor/.gitignore @@ -150,12 +150,12 @@ base64/*min.js clipboard/** !clipboard/.bower.json !clipboard/dist -!clipboard/dist/clipboard.js +!clipboard/dist/clipboard.min.js # autosize autosize/** !autosize/dist -!autosize/dist/autosize.js +!autosize/dist/autosize.min.js !autosize/.bower.json !autosize/LICENCE.md diff --git a/core/vendor/autosize/.bower.json b/core/vendor/autosize/.bower.json index 56e4b46a162..4cea0da89ea 100644 --- a/core/vendor/autosize/.bower.json +++ b/core/vendor/autosize/.bower.json @@ -26,15 +26,14 @@ "amd", "node" ], - "version": "3.0.17", - "_release": "3.0.17", + "version": "3.0.20", + "_release": "3.0.20", "_resolution": { "type": "version", - "tag": "3.0.17", - "commit": "144040e4f545fbea9b304706a5200eba9961ee3f" + "tag": "3.0.20", + "commit": "2277ca66ae8e466c5159faf81069b94575db87aa" }, "_source": "https://github.com/jackmoore/autosize.git", "_target": "^3.0.17", - "_originalSource": "autosize", - "_direct": true + "_originalSource": "autosize" }
\ No newline at end of file diff --git a/core/vendor/autosize/dist/autosize.js b/core/vendor/autosize/dist/autosize.js deleted file mode 100644 index 49b8b0b957f..00000000000 --- a/core/vendor/autosize/dist/autosize.js +++ /dev/null @@ -1,262 +0,0 @@ -/*! - Autosize 3.0.17 - license: MIT - http://www.jacklmoore.com/autosize -*/ -(function (global, factory) { - if (typeof define === 'function' && define.amd) { - define(['exports', 'module'], factory); - } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { - factory(exports, module); - } else { - var mod = { - exports: {} - }; - factory(mod.exports, mod); - global.autosize = mod.exports; - } -})(this, function (exports, module) { - 'use strict'; - - var set = typeof Set === 'function' ? new Set() : (function () { - var list = []; - - return { - has: function has(key) { - return Boolean(list.indexOf(key) > -1); - }, - add: function add(key) { - list.push(key); - }, - 'delete': function _delete(key) { - list.splice(list.indexOf(key), 1); - } }; - })(); - - var createEvent = function createEvent(name) { - return new Event(name); - }; - try { - new Event('test'); - } catch (e) { - // IE does not support `new Event()` - createEvent = function (name) { - var evt = document.createEvent('Event'); - evt.initEvent(name, true, false); - return evt; - }; - } - - function assign(ta) { - if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || set.has(ta)) return; - - var heightOffset = null; - var clientWidth = ta.clientWidth; - var cachedHeight = null; - - function init() { - var style = window.getComputedStyle(ta, null); - - if (style.resize === 'vertical') { - ta.style.resize = 'none'; - } else if (style.resize === 'both') { - ta.style.resize = 'horizontal'; - } - - if (style.boxSizing === 'content-box') { - heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom)); - } else { - heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth); - } - // Fix when a textarea is not on document body and heightOffset is Not a Number - if (isNaN(heightOffset)) { - heightOffset = 0; - } - - update(); - } - - function changeOverflow(value) { - { - // Chrome/Safari-specific fix: - // When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space - // made available by removing the scrollbar. The following forces the necessary text reflow. - var width = ta.style.width; - ta.style.width = '0px'; - // Force reflow: - /* jshint ignore:start */ - ta.offsetWidth; - /* jshint ignore:end */ - ta.style.width = width; - } - - ta.style.overflowY = value; - - resize(); - } - - function getParentOverflows(el) { - var arr = []; - - while (el && el.parentNode && el.parentNode instanceof Element) { - if (el.parentNode.scrollTop) { - arr.push({ - node: el.parentNode, - scrollTop: el.parentNode.scrollTop }); - } - el = el.parentNode; - } - - return arr; - } - - function resize() { - var originalHeight = ta.style.height; - var overflows = getParentOverflows(ta); - var docTop = document.documentElement && document.documentElement.scrollTop; // Needed for Mobile IE (ticket #240) - - ta.style.height = 'auto'; - - var endHeight = ta.scrollHeight + heightOffset; - - if (ta.scrollHeight === 0) { - // If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM. - ta.style.height = originalHeight; - return; - } - - ta.style.height = endHeight + 'px'; - - // used to check if an update is actually necessary on window.resize - clientWidth = ta.clientWidth; - - // prevents scroll-position jumping - overflows.forEach(function (el) { - el.node.scrollTop = el.scrollTop; - }); - - if (docTop) { - document.documentElement.scrollTop = docTop; - } - } - - function update() { - resize(); - - var computed = window.getComputedStyle(ta, null); - var computedHeight = Math.round(parseFloat(computed.height)); - var styleHeight = Math.round(parseFloat(ta.style.height)); - - // The computed height not matching the height set via resize indicates that - // the max-height has been exceeded, in which case the overflow should be set to visible. - if (computedHeight !== styleHeight) { - if (computed.overflowY !== 'visible') { - changeOverflow('visible'); - } - } else { - // Normally keep overflow set to hidden, to avoid flash of scrollbar as the textarea expands. - if (computed.overflowY !== 'hidden') { - changeOverflow('hidden'); - } - } - - if (cachedHeight !== computedHeight) { - cachedHeight = computedHeight; - var evt = createEvent('autosize:resized'); - ta.dispatchEvent(evt); - } - } - - var pageResize = function pageResize() { - if (ta.clientWidth !== clientWidth) { - update(); - } - }; - - var destroy = (function (style) { - window.removeEventListener('resize', pageResize, false); - ta.removeEventListener('input', update, false); - ta.removeEventListener('keyup', update, false); - ta.removeEventListener('autosize:destroy', destroy, false); - ta.removeEventListener('autosize:update', update, false); - set['delete'](ta); - - Object.keys(style).forEach(function (key) { - ta.style[key] = style[key]; - }); - }).bind(ta, { - height: ta.style.height, - resize: ta.style.resize, - overflowY: ta.style.overflowY, - overflowX: ta.style.overflowX, - wordWrap: ta.style.wordWrap }); - - ta.addEventListener('autosize:destroy', destroy, false); - - // IE9 does not fire onpropertychange or oninput for deletions, - // so binding to onkeyup to catch most of those events. - // There is no way that I know of to detect something like 'cut' in IE9. - if ('onpropertychange' in ta && 'oninput' in ta) { - ta.addEventListener('keyup', update, false); - } - - window.addEventListener('resize', pageResize, false); - ta.addEventListener('input', update, false); - ta.addEventListener('autosize:update', update, false); - set.add(ta); - ta.style.overflowX = 'hidden'; - ta.style.wordWrap = 'break-word'; - - init(); - } - - function destroy(ta) { - if (!(ta && ta.nodeName && ta.nodeName === 'TEXTAREA')) return; - var evt = createEvent('autosize:destroy'); - ta.dispatchEvent(evt); - } - - function update(ta) { - if (!(ta && ta.nodeName && ta.nodeName === 'TEXTAREA')) return; - var evt = createEvent('autosize:update'); - ta.dispatchEvent(evt); - } - - var autosize = null; - - // Do nothing in Node.js environment and IE8 (or lower) - if (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') { - autosize = function (el) { - return el; - }; - autosize.destroy = function (el) { - return el; - }; - autosize.update = function (el) { - return el; - }; - } else { - autosize = function (el, options) { - if (el) { - Array.prototype.forEach.call(el.length ? el : [el], function (x) { - return assign(x, options); - }); - } - return el; - }; - autosize.destroy = function (el) { - if (el) { - Array.prototype.forEach.call(el.length ? el : [el], destroy); - } - return el; - }; - autosize.update = function (el) { - if (el) { - Array.prototype.forEach.call(el.length ? el : [el], update); - } - return el; - }; - } - - module.exports = autosize; -});
\ No newline at end of file diff --git a/core/vendor/autosize/dist/autosize.min.js b/core/vendor/autosize/dist/autosize.min.js new file mode 100644 index 00000000000..3d8366b57f4 --- /dev/null +++ b/core/vendor/autosize/dist/autosize.min.js @@ -0,0 +1,6 @@ +/*! + Autosize 3.0.20 + license: MIT + http://www.jacklmoore.com/autosize +*/ +!function(e,t){if("function"==typeof define&&define.amd)define(["exports","module"],t);else if("undefined"!=typeof exports&&"undefined"!=typeof module)t(exports,module);else{var n={exports:{}};t(n.exports,n),e.autosize=n.exports}}(this,function(e,t){"use strict";function n(e){function t(){var t=window.getComputedStyle(e,null);"vertical"===t.resize?e.style.resize="none":"both"===t.resize&&(e.style.resize="horizontal"),s="content-box"===t.boxSizing?-(parseFloat(t.paddingTop)+parseFloat(t.paddingBottom)):parseFloat(t.borderTopWidth)+parseFloat(t.borderBottomWidth),isNaN(s)&&(s=0),l()}function n(t){var n=e.style.width;e.style.width="0px",e.offsetWidth,e.style.width=n,e.style.overflowY=t}function o(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push({node:e.parentNode,scrollTop:e.parentNode.scrollTop}),e=e.parentNode;return t}function r(){var t=e.style.height,n=o(e),r=document.documentElement&&document.documentElement.scrollTop;e.style.height="auto";var i=e.scrollHeight+s;return 0===e.scrollHeight?void(e.style.height=t):(e.style.height=i+"px",u=e.clientWidth,n.forEach(function(e){e.node.scrollTop=e.scrollTop}),void(r&&(document.documentElement.scrollTop=r)))}function l(){r();var t=Math.round(parseFloat(e.style.height)),o=window.getComputedStyle(e,null),i=Math.round(parseFloat(o.height));if(i!==t?"visible"!==o.overflowY&&(n("visible"),r(),i=Math.round(parseFloat(window.getComputedStyle(e,null).height))):"hidden"!==o.overflowY&&(n("hidden"),r(),i=Math.round(parseFloat(window.getComputedStyle(e,null).height))),a!==i){a=i;var l=d("autosize:resized");try{e.dispatchEvent(l)}catch(e){}}}if(e&&e.nodeName&&"TEXTAREA"===e.nodeName&&!i.has(e)){var s=null,u=e.clientWidth,a=null,p=function(){e.clientWidth!==u&&l()},c=function(t){window.removeEventListener("resize",p,!1),e.removeEventListener("input",l,!1),e.removeEventListener("keyup",l,!1),e.removeEventListener("autosize:destroy",c,!1),e.removeEventListener("autosize:update",l,!1),Object.keys(t).forEach(function(n){e.style[n]=t[n]}),i.delete(e)}.bind(e,{height:e.style.height,resize:e.style.resize,overflowY:e.style.overflowY,overflowX:e.style.overflowX,wordWrap:e.style.wordWrap});e.addEventListener("autosize:destroy",c,!1),"onpropertychange"in e&&"oninput"in e&&e.addEventListener("keyup",l,!1),window.addEventListener("resize",p,!1),e.addEventListener("input",l,!1),e.addEventListener("autosize:update",l,!1),e.style.overflowX="hidden",e.style.wordWrap="break-word",i.set(e,{destroy:c,update:l}),t()}}function o(e){var t=i.get(e);t&&t.destroy()}function r(e){var t=i.get(e);t&&t.update()}var i="function"==typeof Map?new Map:function(){var e=[],t=[];return{has:function(t){return e.indexOf(t)>-1},get:function(n){return t[e.indexOf(n)]},set:function(n,o){e.indexOf(n)===-1&&(e.push(n),t.push(o))},delete:function(n){var o=e.indexOf(n);o>-1&&(e.splice(o,1),t.splice(o,1))}}}(),d=function(e){return new Event(e,{bubbles:!0})};try{new Event("test")}catch(e){d=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!1),t}}var l=null;"undefined"==typeof window||"function"!=typeof window.getComputedStyle?(l=function(e){return e},l.destroy=function(e){return e},l.update=function(e){return e}):(l=function(e,t){return e&&Array.prototype.forEach.call(e.length?e:[e],function(e){return n(e,t)}),e},l.destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],o),e},l.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],r),e}),t.exports=l});
\ No newline at end of file diff --git a/core/vendor/clipboard/.bower.json b/core/vendor/clipboard/.bower.json index 28d153baa3c..5e5867dac65 100644 --- a/core/vendor/clipboard/.bower.json +++ b/core/vendor/clipboard/.bower.json @@ -1,6 +1,6 @@ { "name": "clipboard", - "version": "1.5.12", + "version": "1.6.1", "description": "Modern copy to clipboard. No Flash. Just 2kb", "license": "MIT", "main": "dist/clipboard.js", @@ -20,11 +20,11 @@ "cut" ], "homepage": "https://github.com/zenorocha/clipboard.js", - "_release": "1.5.12", + "_release": "1.6.1", "_resolution": { "type": "version", - "tag": "v1.5.12", - "commit": "eb7418b51bb3c963893d83954c5cfa4de3f7f527" + "tag": "v1.6.1", + "commit": "f59d4e6b4db55b0f462eeb96fb74db3469e0765d" }, "_source": "https://github.com/zenorocha/clipboard.js.git", "_target": "^1.5.12", diff --git a/core/vendor/clipboard/dist/clipboard.js b/core/vendor/clipboard/dist/clipboard.js deleted file mode 100644 index 040c5e005c3..00000000000 --- a/core/vendor/clipboard/dist/clipboard.js +++ /dev/null @@ -1,742 +0,0 @@ -/*! - * clipboard.js v1.5.12 - * https://zenorocha.github.io/clipboard.js - * - * Licensed MIT © Zeno Rocha - */ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Clipboard = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ -var matches = require('matches-selector') - -module.exports = function (element, selector, checkYoSelf) { - var parent = checkYoSelf ? element : element.parentNode - - while (parent && parent !== document) { - if (matches(parent, selector)) return parent; - parent = parent.parentNode - } -} - -},{"matches-selector":5}],2:[function(require,module,exports){ -var closest = require('closest'); - -/** - * Delegates event to a selector. - * - * @param {Element} element - * @param {String} selector - * @param {String} type - * @param {Function} callback - * @param {Boolean} useCapture - * @return {Object} - */ -function delegate(element, selector, type, callback, useCapture) { - var listenerFn = listener.apply(this, arguments); - - element.addEventListener(type, listenerFn, useCapture); - - return { - destroy: function() { - element.removeEventListener(type, listenerFn, useCapture); - } - } -} - -/** - * Finds closest match and invokes callback. - * - * @param {Element} element - * @param {String} selector - * @param {String} type - * @param {Function} callback - * @return {Function} - */ -function listener(element, selector, type, callback) { - return function(e) { - e.delegateTarget = closest(e.target, selector, true); - - if (e.delegateTarget) { - callback.call(element, e); - } - } -} - -module.exports = delegate; - -},{"closest":1}],3:[function(require,module,exports){ -/** - * Check if argument is a HTML element. - * - * @param {Object} value - * @return {Boolean} - */ -exports.node = function(value) { - return value !== undefined - && value instanceof HTMLElement - && value.nodeType === 1; -}; - -/** - * Check if argument is a list of HTML elements. - * - * @param {Object} value - * @return {Boolean} - */ -exports.nodeList = function(value) { - var type = Object.prototype.toString.call(value); - - return value !== undefined - && (type === '[object NodeList]' || type === '[object HTMLCollection]') - && ('length' in value) - && (value.length === 0 || exports.node(value[0])); -}; - -/** - * Check if argument is a string. - * - * @param {Object} value - * @return {Boolean} - */ -exports.string = function(value) { - return typeof value === 'string' - || value instanceof String; -}; - -/** - * Check if argument is a function. - * - * @param {Object} value - * @return {Boolean} - */ -exports.fn = function(value) { - var type = Object.prototype.toString.call(value); - - return type === '[object Function]'; -}; - -},{}],4:[function(require,module,exports){ -var is = require('./is'); -var delegate = require('delegate'); - -/** - * Validates all params and calls the right - * listener function based on its target type. - * - * @param {String|HTMLElement|HTMLCollection|NodeList} target - * @param {String} type - * @param {Function} callback - * @return {Object} - */ -function listen(target, type, callback) { - if (!target && !type && !callback) { - throw new Error('Missing required arguments'); - } - - if (!is.string(type)) { - throw new TypeError('Second argument must be a String'); - } - - if (!is.fn(callback)) { - throw new TypeError('Third argument must be a Function'); - } - - if (is.node(target)) { - return listenNode(target, type, callback); - } - else if (is.nodeList(target)) { - return listenNodeList(target, type, callback); - } - else if (is.string(target)) { - return listenSelector(target, type, callback); - } - else { - throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList'); - } -} - -/** - * Adds an event listener to a HTML element - * and returns a remove listener function. - * - * @param {HTMLElement} node - * @param {String} type - * @param {Function} callback - * @return {Object} - */ -function listenNode(node, type, callback) { - node.addEventListener(type, callback); - - return { - destroy: function() { - node.removeEventListener(type, callback); - } - } -} - -/** - * Add an event listener to a list of HTML elements - * and returns a remove listener function. - * - * @param {NodeList|HTMLCollection} nodeList - * @param {String} type - * @param {Function} callback - * @return {Object} - */ -function listenNodeList(nodeList, type, callback) { - Array.prototype.forEach.call(nodeList, function(node) { - node.addEventListener(type, callback); - }); - - return { - destroy: function() { - Array.prototype.forEach.call(nodeList, function(node) { - node.removeEventListener(type, callback); - }); - } - } -} - -/** - * Add an event listener to a selector - * and returns a remove listener function. - * - * @param {String} selector - * @param {String} type - * @param {Function} callback - * @return {Object} - */ -function listenSelector(selector, type, callback) { - return delegate(document.body, selector, type, callback); -} - -module.exports = listen; - -},{"./is":3,"delegate":2}],5:[function(require,module,exports){ - -/** - * Element prototype. - */ - -var proto = Element.prototype; - -/** - * Vendor function. - */ - -var vendor = proto.matchesSelector - || proto.webkitMatchesSelector - || proto.mozMatchesSelector - || proto.msMatchesSelector - || proto.oMatchesSelector; - -/** - * Expose `match()`. - */ - -module.exports = match; - -/** - * Match `el` to `selector`. - * - * @param {Element} el - * @param {String} selector - * @return {Boolean} - * @api public - */ - -function match(el, selector) { - if (vendor) return vendor.call(el, selector); - var nodes = el.parentNode.querySelectorAll(selector); - for (var i = 0; i < nodes.length; ++i) { - if (nodes[i] == el) return true; - } - return false; -} -},{}],6:[function(require,module,exports){ -function select(element) { - var selectedText; - - if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') { - element.focus(); - element.setSelectionRange(0, element.value.length); - - selectedText = element.value; - } - else { - if (element.hasAttribute('contenteditable')) { - element.focus(); - } - - var selection = window.getSelection(); - var range = document.createRange(); - - range.selectNodeContents(element); - selection.removeAllRanges(); - selection.addRange(range); - - selectedText = selection.toString(); - } - - return selectedText; -} - -module.exports = select; - -},{}],7:[function(require,module,exports){ -function E () { - // Keep this empty so it's easier to inherit from - // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3) -} - -E.prototype = { - on: function (name, callback, ctx) { - var e = this.e || (this.e = {}); - - (e[name] || (e[name] = [])).push({ - fn: callback, - ctx: ctx - }); - - return this; - }, - - once: function (name, callback, ctx) { - var self = this; - function listener () { - self.off(name, listener); - callback.apply(ctx, arguments); - }; - - listener._ = callback - return this.on(name, listener, ctx); - }, - - emit: function (name) { - var data = [].slice.call(arguments, 1); - var evtArr = ((this.e || (this.e = {}))[name] || []).slice(); - var i = 0; - var len = evtArr.length; - - for (i; i < len; i++) { - evtArr[i].fn.apply(evtArr[i].ctx, data); - } - - return this; - }, - - off: function (name, callback) { - var e = this.e || (this.e = {}); - var evts = e[name]; - var liveEvents = []; - - if (evts && callback) { - for (var i = 0, len = evts.length; i < len; i++) { - if (evts[i].fn !== callback && evts[i].fn._ !== callback) - liveEvents.push(evts[i]); - } - } - - // Remove event from queue to prevent memory leak - // Suggested by https://github.com/lazd - // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910 - - (liveEvents.length) - ? e[name] = liveEvents - : delete e[name]; - - return this; - } -}; - -module.exports = E; - -},{}],8:[function(require,module,exports){ -(function (global, factory) { - if (typeof define === "function" && define.amd) { - define(['module', 'select'], factory); - } else if (typeof exports !== "undefined") { - factory(module, require('select')); - } else { - var mod = { - exports: {} - }; - factory(mod, global.select); - global.clipboardAction = mod.exports; - } -})(this, function (module, _select) { - 'use strict'; - - var _select2 = _interopRequireDefault(_select); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { - default: obj - }; - } - - var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { - return typeof obj; - } : function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; - }; - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - var _createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - - var ClipboardAction = function () { - /** - * @param {Object} options - */ - - function ClipboardAction(options) { - _classCallCheck(this, ClipboardAction); - - this.resolveOptions(options); - this.initSelection(); - } - - /** - * Defines base properties passed from constructor. - * @param {Object} options - */ - - - ClipboardAction.prototype.resolveOptions = function resolveOptions() { - var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; - - this.action = options.action; - this.emitter = options.emitter; - this.target = options.target; - this.text = options.text; - this.trigger = options.trigger; - - this.selectedText = ''; - }; - - ClipboardAction.prototype.initSelection = function initSelection() { - if (this.text) { - this.selectFake(); - } else if (this.target) { - this.selectTarget(); - } - }; - - ClipboardAction.prototype.selectFake = function selectFake() { - var _this = this; - - var isRTL = document.documentElement.getAttribute('dir') == 'rtl'; - - this.removeFake(); - - this.fakeHandlerCallback = function () { - return _this.removeFake(); - }; - this.fakeHandler = document.body.addEventListener('click', this.fakeHandlerCallback) || true; - - this.fakeElem = document.createElement('textarea'); - // Prevent zooming on iOS - this.fakeElem.style.fontSize = '12pt'; - // Reset box model - this.fakeElem.style.border = '0'; - this.fakeElem.style.padding = '0'; - this.fakeElem.style.margin = '0'; - // Move element out of screen horizontally - this.fakeElem.style.position = 'absolute'; - this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px'; - // Move element to the same position vertically - this.fakeElem.style.top = (window.pageYOffset || document.documentElement.scrollTop) + 'px'; - this.fakeElem.setAttribute('readonly', ''); - this.fakeElem.value = this.text; - - document.body.appendChild(this.fakeElem); - - this.selectedText = (0, _select2.default)(this.fakeElem); - this.copyText(); - }; - - ClipboardAction.prototype.removeFake = function removeFake() { - if (this.fakeHandler) { - document.body.removeEventListener('click', this.fakeHandlerCallback); - this.fakeHandler = null; - this.fakeHandlerCallback = null; - } - - if (this.fakeElem) { - document.body.removeChild(this.fakeElem); - this.fakeElem = null; - } - }; - - ClipboardAction.prototype.selectTarget = function selectTarget() { - this.selectedText = (0, _select2.default)(this.target); - this.copyText(); - }; - - ClipboardAction.prototype.copyText = function copyText() { - var succeeded = undefined; - - try { - succeeded = document.execCommand(this.action); - } catch (err) { - succeeded = false; - } - - this.handleResult(succeeded); - }; - - ClipboardAction.prototype.handleResult = function handleResult(succeeded) { - if (succeeded) { - this.emitter.emit('success', { - action: this.action, - text: this.selectedText, - trigger: this.trigger, - clearSelection: this.clearSelection.bind(this) - }); - } else { - this.emitter.emit('error', { - action: this.action, - trigger: this.trigger, - clearSelection: this.clearSelection.bind(this) - }); - } - }; - - ClipboardAction.prototype.clearSelection = function clearSelection() { - if (this.target) { - this.target.blur(); - } - - window.getSelection().removeAllRanges(); - }; - - ClipboardAction.prototype.destroy = function destroy() { - this.removeFake(); - }; - - _createClass(ClipboardAction, [{ - key: 'action', - set: function set() { - var action = arguments.length <= 0 || arguments[0] === undefined ? 'copy' : arguments[0]; - - this._action = action; - - if (this._action !== 'copy' && this._action !== 'cut') { - throw new Error('Invalid "action" value, use either "copy" or "cut"'); - } - }, - get: function get() { - return this._action; - } - }, { - key: 'target', - set: function set(target) { - if (target !== undefined) { - if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) { - if (this.action === 'copy' && target.hasAttribute('disabled')) { - throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute'); - } - - if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) { - throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes'); - } - - this._target = target; - } else { - throw new Error('Invalid "target" value, use a valid Element'); - } - } - }, - get: function get() { - return this._target; - } - }]); - - return ClipboardAction; - }(); - - module.exports = ClipboardAction; -}); - -},{"select":6}],9:[function(require,module,exports){ -(function (global, factory) { - if (typeof define === "function" && define.amd) { - define(['module', './clipboard-action', 'tiny-emitter', 'good-listener'], factory); - } else if (typeof exports !== "undefined") { - factory(module, require('./clipboard-action'), require('tiny-emitter'), require('good-listener')); - } else { - var mod = { - exports: {} - }; - factory(mod, global.clipboardAction, global.tinyEmitter, global.goodListener); - global.clipboard = mod.exports; - } -})(this, function (module, _clipboardAction, _tinyEmitter, _goodListener) { - 'use strict'; - - var _clipboardAction2 = _interopRequireDefault(_clipboardAction); - - var _tinyEmitter2 = _interopRequireDefault(_tinyEmitter); - - var _goodListener2 = _interopRequireDefault(_goodListener); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { - default: obj - }; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _possibleConstructorReturn(self, call) { - if (!self) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - - return call && (typeof call === "object" || typeof call === "function") ? call : self; - } - - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); - } - - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - enumerable: false, - writable: true, - configurable: true - } - }); - if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; - } - - var Clipboard = function (_Emitter) { - _inherits(Clipboard, _Emitter); - - /** - * @param {String|HTMLElement|HTMLCollection|NodeList} trigger - * @param {Object} options - */ - - function Clipboard(trigger, options) { - _classCallCheck(this, Clipboard); - - var _this = _possibleConstructorReturn(this, _Emitter.call(this)); - - _this.resolveOptions(options); - _this.listenClick(trigger); - return _this; - } - - /** - * Defines if attributes would be resolved using internal setter functions - * or custom functions that were passed in the constructor. - * @param {Object} options - */ - - - Clipboard.prototype.resolveOptions = function resolveOptions() { - var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; - - this.action = typeof options.action === 'function' ? options.action : this.defaultAction; - this.target = typeof options.target === 'function' ? options.target : this.defaultTarget; - this.text = typeof options.text === 'function' ? options.text : this.defaultText; - }; - - Clipboard.prototype.listenClick = function listenClick(trigger) { - var _this2 = this; - - this.listener = (0, _goodListener2.default)(trigger, 'click', function (e) { - return _this2.onClick(e); - }); - }; - - Clipboard.prototype.onClick = function onClick(e) { - var trigger = e.delegateTarget || e.currentTarget; - - if (this.clipboardAction) { - this.clipboardAction = null; - } - - this.clipboardAction = new _clipboardAction2.default({ - action: this.action(trigger), - target: this.target(trigger), - text: this.text(trigger), - trigger: trigger, - emitter: this - }); - }; - - Clipboard.prototype.defaultAction = function defaultAction(trigger) { - return getAttributeValue('action', trigger); - }; - - Clipboard.prototype.defaultTarget = function defaultTarget(trigger) { - var selector = getAttributeValue('target', trigger); - - if (selector) { - return document.querySelector(selector); - } - }; - - Clipboard.prototype.defaultText = function defaultText(trigger) { - return getAttributeValue('text', trigger); - }; - - Clipboard.prototype.destroy = function destroy() { - this.listener.destroy(); - - if (this.clipboardAction) { - this.clipboardAction.destroy(); - this.clipboardAction = null; - } - }; - - return Clipboard; - }(_tinyEmitter2.default); - - /** - * Helper function to retrieve attribute value. - * @param {String} suffix - * @param {Element} element - */ - function getAttributeValue(suffix, element) { - var attribute = 'data-clipboard-' + suffix; - - if (!element.hasAttribute(attribute)) { - return; - } - - return element.getAttribute(attribute); - } - - module.exports = Clipboard; -}); - -},{"./clipboard-action":8,"good-listener":4,"tiny-emitter":7}]},{},[9])(9) -});
\ No newline at end of file diff --git a/core/vendor/clipboard/dist/clipboard.min.js b/core/vendor/clipboard/dist/clipboard.min.js new file mode 100644 index 00000000000..1993676f992 --- /dev/null +++ b/core/vendor/clipboard/dist/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v1.6.1 + * https://zenorocha.github.io/clipboard.js + * + * Licensed MIT © Zeno Rocha + */ +!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.Clipboard=e()}}(function(){var e,t,n;return function e(t,n,o){function i(a,c){if(!n[a]){if(!t[a]){var l="function"==typeof require&&require;if(!c&&l)return l(a,!0);if(r)return r(a,!0);var u=new Error("Cannot find module '"+a+"'");throw u.code="MODULE_NOT_FOUND",u}var s=n[a]={exports:{}};t[a][0].call(s.exports,function(e){var n=t[a][1][e];return i(n?n:e)},s,s.exports,e,t,n,o)}return n[a].exports}for(var r="function"==typeof require&&require,a=0;a<o.length;a++)i(o[a]);return i}({1:[function(e,t,n){function o(e,t){for(;e&&e.nodeType!==i;){if(e.matches(t))return e;e=e.parentNode}}var i=9;if("undefined"!=typeof Element&&!Element.prototype.matches){var r=Element.prototype;r.matches=r.matchesSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.webkitMatchesSelector}t.exports=o},{}],2:[function(e,t,n){function o(e,t,n,o,r){var a=i.apply(this,arguments);return e.addEventListener(n,a,r),{destroy:function(){e.removeEventListener(n,a,r)}}}function i(e,t,n,o){return function(n){n.delegateTarget=r(n.target,t),n.delegateTarget&&o.call(e,n)}}var r=e("./closest");t.exports=o},{"./closest":1}],3:[function(e,t,n){n.node=function(e){return void 0!==e&&e instanceof HTMLElement&&1===e.nodeType},n.nodeList=function(e){var t=Object.prototype.toString.call(e);return void 0!==e&&("[object NodeList]"===t||"[object HTMLCollection]"===t)&&"length"in e&&(0===e.length||n.node(e[0]))},n.string=function(e){return"string"==typeof e||e instanceof String},n.fn=function(e){var t=Object.prototype.toString.call(e);return"[object Function]"===t}},{}],4:[function(e,t,n){function o(e,t,n){if(!e&&!t&&!n)throw new Error("Missing required arguments");if(!c.string(t))throw new TypeError("Second argument must be a String");if(!c.fn(n))throw new TypeError("Third argument must be a Function");if(c.node(e))return i(e,t,n);if(c.nodeList(e))return r(e,t,n);if(c.string(e))return a(e,t,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function i(e,t,n){return e.addEventListener(t,n),{destroy:function(){e.removeEventListener(t,n)}}}function r(e,t,n){return Array.prototype.forEach.call(e,function(e){e.addEventListener(t,n)}),{destroy:function(){Array.prototype.forEach.call(e,function(e){e.removeEventListener(t,n)})}}}function a(e,t,n){return l(document.body,e,t,n)}var c=e("./is"),l=e("delegate");t.exports=o},{"./is":3,delegate:2}],5:[function(e,t,n){function o(e){var t;if("SELECT"===e.nodeName)e.focus(),t=e.value;else if("INPUT"===e.nodeName||"TEXTAREA"===e.nodeName){var n=e.hasAttribute("readonly");n||e.setAttribute("readonly",""),e.select(),e.setSelectionRange(0,e.value.length),n||e.removeAttribute("readonly"),t=e.value}else{e.hasAttribute("contenteditable")&&e.focus();var o=window.getSelection(),i=document.createRange();i.selectNodeContents(e),o.removeAllRanges(),o.addRange(i),t=o.toString()}return t}t.exports=o},{}],6:[function(e,t,n){function o(){}o.prototype={on:function(e,t,n){var o=this.e||(this.e={});return(o[e]||(o[e]=[])).push({fn:t,ctx:n}),this},once:function(e,t,n){function o(){i.off(e,o),t.apply(n,arguments)}var i=this;return o._=t,this.on(e,o,n)},emit:function(e){var t=[].slice.call(arguments,1),n=((this.e||(this.e={}))[e]||[]).slice(),o=0,i=n.length;for(o;o<i;o++)n[o].fn.apply(n[o].ctx,t);return this},off:function(e,t){var n=this.e||(this.e={}),o=n[e],i=[];if(o&&t)for(var r=0,a=o.length;r<a;r++)o[r].fn!==t&&o[r].fn._!==t&&i.push(o[r]);return i.length?n[e]=i:delete n[e],this}},t.exports=o},{}],7:[function(t,n,o){!function(i,r){if("function"==typeof e&&e.amd)e(["module","select"],r);else if("undefined"!=typeof o)r(n,t("select"));else{var a={exports:{}};r(a,i.select),i.clipboardAction=a.exports}}(this,function(e,t){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var i=n(t),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),c=function(){function e(t){o(this,e),this.resolveOptions(t),this.initSelection()}return a(e,[{key:"resolveOptions",value:function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function e(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function e(){var t=this,n="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=document.body.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[n?"right":"left"]="-9999px";var o=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=o+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,document.body.appendChild(this.fakeElem),this.selectedText=(0,i.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function e(){this.fakeHandler&&(document.body.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(document.body.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function e(){this.selectedText=(0,i.default)(this.target),this.copyText()}},{key:"copyText",value:function e(){var t=void 0;try{t=document.execCommand(this.action)}catch(e){t=!1}this.handleResult(t)}},{key:"handleResult",value:function e(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function e(){this.target&&this.target.blur(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function e(){this.removeFake()}},{key:"action",set:function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function e(){return this._action}},{key:"target",set:function e(t){if(void 0!==t){if(!t||"object"!==("undefined"==typeof t?"undefined":r(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function e(){return this._target}}]),e}();e.exports=c})},{select:5}],8:[function(t,n,o){!function(i,r){if("function"==typeof e&&e.amd)e(["module","./clipboard-action","tiny-emitter","good-listener"],r);else if("undefined"!=typeof o)r(n,t("./clipboard-action"),t("tiny-emitter"),t("good-listener"));else{var a={exports:{}};r(a,i.clipboardAction,i.tinyEmitter,i.goodListener),i.clipboard=a.exports}}(this,function(e,t,n,o){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t){var n="data-clipboard-"+e;if(t.hasAttribute(n))return t.getAttribute(n)}var u=i(t),s=i(n),f=i(o),d=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),h=function(e){function t(e,n){r(this,t);var o=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.resolveOptions(n),o.listenClick(e),o}return c(t,e),d(t,[{key:"resolveOptions",value:function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText}},{key:"listenClick",value:function e(t){var n=this;this.listener=(0,f.default)(t,"click",function(e){return n.onClick(e)})}},{key:"onClick",value:function e(t){var n=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new u.default({action:this.action(n),target:this.target(n),text:this.text(n),trigger:n,emitter:this})}},{key:"defaultAction",value:function e(t){return l("action",t)}},{key:"defaultTarget",value:function e(t){var n=l("target",t);if(n)return document.querySelector(n)}},{key:"defaultText",value:function e(t){return l("text",t)}},{key:"destroy",value:function e(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],n="string"==typeof t?[t]:t,o=!!document.queryCommandSupported;return n.forEach(function(e){o=o&&!!document.queryCommandSupported(e)}),o}}]),t}(s.default);e.exports=h})},{"./clipboard-action":7,"good-listener":4,"tiny-emitter":6}]},{},[8])(8)});
\ No newline at end of file diff --git a/core/vendor/core.js b/core/vendor/core.js index ed9b58c0345..aae3d90d2fd 100644 --- a/core/vendor/core.js +++ b/core/vendor/core.js @@ -1,9 +1,11 @@ -/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ -return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ia={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qa[0].contentDocument,b.write(),b.close(),c=sa(a,b),qa.detach()),ra[a]=c),c}var ua=/^margin/,va=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wa=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xa(a,b,c){var d,e,f,g,h=a.style;return c=c||wa(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),va.test(g)&&ua.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function ya(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var za=/^(none|table(?!-c[ea]).+)/,Aa=new RegExp("^("+Q+")(.*)$","i"),Ba=new RegExp("^([+-])=("+Q+")","i"),Ca={position:"absolute",visibility:"hidden",display:"block"},Da={letterSpacing:"0",fontWeight:"400"},Ea=["Webkit","O","Moz","ms"];function Fa(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Ea.length;while(e--)if(b=Ea[e]+c,b in a)return b;return d}function Ga(a,b,c){var d=Aa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Ha(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ia(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wa(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xa(a,b,f),(0>e||null==e)&&(e=a.style[b]),va.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Ha(a,b,c||(g?"border":"content"),d,f)+"px"}function Ja(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",ta(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xa(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fa(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Ba.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fa(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xa(a,b,d)),"normal"===e&&b in Da&&(e=Da[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?za.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Ca,function(){return Ia(a,b,d)}):Ia(a,b,d):void 0},set:function(a,c,d){var e=d&&wa(a);return Ga(a,c,d?Ha(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=ya(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ua.test(a)||(n.cssHooks[a+b].set=Ga)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wa(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Ja(this,!0)},hide:function(){return Ja(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Ka(a,b,c,d,e){return new Ka.prototype.init(a,b,c,d,e)}n.Tween=Ka,Ka.prototype={constructor:Ka,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ka.propHooks[this.prop];return a&&a.get?a.get(this):Ka.propHooks._default.get(this)},run:function(a){var b,c=Ka.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ka.propHooks._default.set(this),this}},Ka.prototype.init.prototype=Ka.prototype,Ka.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Ka.propHooks.scrollTop=Ka.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Ka.prototype.init,n.fx.step={};var La,Ma,Na=/^(?:toggle|show|hide)$/,Oa=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pa=/queueHooks$/,Qa=[Va],Ra={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Oa.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Oa.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sa(){return setTimeout(function(){La=void 0}),La=n.now()}function Ta(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ua(a,b,c){for(var d,e=(Ra[b]||[]).concat(Ra["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Va(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||ta(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Na.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?ta(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ua(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wa(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xa(a,b,c){var d,e,f=0,g=Qa.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=La||Sa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:La||Sa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wa(k,j.opts.specialEasing);g>f;f++)if(d=Qa[f].call(j,a,k,j.opts))return d;return n.map(k,Ua,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xa,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Ra[c]=Ra[c]||[],Ra[c].unshift(b)},prefilter:function(a,b){b?Qa.unshift(a):Qa.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xa(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pa.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Ta(b,!0),a,d,e)}}),n.each({slideDown:Ta("show"),slideUp:Ta("hide"),slideToggle:Ta("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(La=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),La=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ma||(Ma=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Ma),Ma=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Ya,Za,$a=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Za:Ya)), -void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Za={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$a[b]||n.find.attr;$a[b]=function(a,b,d){var e,f;return d||(f=$a[b],$a[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$a[b]=f),e}});var _a=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_a.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ab=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ab," ").indexOf(b)>=0)return!0;return!1}});var bb=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cb=n.now(),db=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var eb=/#.*$/,fb=/([?&])_=[^&]*/,gb=/^(.*?):[ \t]*([^\r\n]*)$/gm,hb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ib=/^(?:GET|HEAD)$/,jb=/^\/\//,kb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,lb={},mb={},nb="*/".concat("*"),ob=a.location.href,pb=kb.exec(ob.toLowerCase())||[];function qb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function rb(a,b,c,d){var e={},f=a===mb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function sb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function ub(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ob,type:"GET",isLocal:hb.test(pb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":nb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sb(sb(a,n.ajaxSettings),b):sb(n.ajaxSettings,a)},ajaxPrefilter:qb(lb),ajaxTransport:qb(mb),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gb.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||ob)+"").replace(eb,"").replace(jb,pb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=kb.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pb[1]&&h[2]===pb[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(pb[3]||("http:"===pb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rb(lb,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!ib.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(db.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=fb.test(d)?d.replace(fb,"$1_="+cb++):d+(db.test(d)?"&":"?")+"_="+cb++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+nb+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rb(mb,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tb(k,v,f)),u=ub(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vb=/%20/g,wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&").replace(vb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bb=0,Cb={},Db={0:200,1223:204},Eb=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Cb)Cb[a]()}),k.cors=!!Eb&&"withCredentials"in Eb,k.ajax=Eb=!!Eb,n.ajaxTransport(function(a){var b;return k.cors||Eb&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cb[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Db[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Cb[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Fb=[],Gb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Fb.pop()||n.expando+"_"+cb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Gb.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Gb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Gb,"$1"+e):b.jsonp!==!1&&(b.url+=(db.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Fb.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Hb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Hb)return Hb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Ib=a.document.documentElement;function Jb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Jb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Ib;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ib})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Jb(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=ya(k.pixelPosition,function(a,c){return c?(c=xa(a,b),va.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Kb=a.jQuery,Lb=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Lb),b&&a.jQuery===n&&(a.jQuery=Kb),n},typeof b===U&&(a.jQuery=a.$=n),n}); -//# sourceMappingURL=jquery.min.map/*! jQuery Migrate v1.4.0 | (c) jQuery Foundation and other contributors | jquery.org/license */ -"undefined"==typeof jQuery.migrateMute&&(jQuery.migrateMute=!0),function(a,b,c){function d(c){var d=b.console;f[c]||(f[c]=!0,a.migrateWarnings.push(c),d&&d.warn&&!a.migrateMute&&(d.warn("JQMIGRATE: "+c),a.migrateTrace&&d.trace&&d.trace()))}function e(b,c,e,f){if(Object.defineProperty)try{return void Object.defineProperty(b,c,{configurable:!0,enumerable:!0,get:function(){return d(f),e},set:function(a){d(f),e=a}})}catch(g){}a._definePropertyBroken=!0,b[c]=e}a.migrateVersion="1.4.0";var f={};a.migrateWarnings=[],b.console&&b.console.log&&b.console.log("JQMIGRATE: Migrate is installed"+(a.migrateMute?"":" with logging active")+", version "+a.migrateVersion),a.migrateTrace===c&&(a.migrateTrace=!0),a.migrateReset=function(){f={},a.migrateWarnings.length=0},"BackCompat"===document.compatMode&&d("jQuery is not compatible with Quirks Mode");var g=a("<input/>",{size:1}).attr("size")&&a.attrFn,h=a.attr,i=a.attrHooks.value&&a.attrHooks.value.get||function(){return null},j=a.attrHooks.value&&a.attrHooks.value.set||function(){return c},k=/^(?:input|button)$/i,l=/^[238]$/,m=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,n=/^(?:checked|selected)$/i;e(a,"attrFn",g||{},"jQuery.attrFn is deprecated"),a.attr=function(b,e,f,i){var j=e.toLowerCase(),o=b&&b.nodeType;return i&&(h.length<4&&d("jQuery.fn.attr( props, pass ) is deprecated"),b&&!l.test(o)&&(g?e in g:a.isFunction(a.fn[e])))?a(b)[e](f):("type"===e&&f!==c&&k.test(b.nodeName)&&b.parentNode&&d("Can't change the 'type' of an input or button in IE 6/7/8"),!a.attrHooks[j]&&m.test(j)&&(a.attrHooks[j]={get:function(b,d){var e,f=a.prop(b,d);return f===!0||"boolean"!=typeof f&&(e=b.getAttributeNode(d))&&e.nodeValue!==!1?d.toLowerCase():c},set:function(b,c,d){var e;return c===!1?a.removeAttr(b,d):(e=a.propFix[d]||d,e in b&&(b[e]=!0),b.setAttribute(d,d.toLowerCase())),d}},n.test(j)&&d("jQuery.fn.attr('"+j+"') might use property instead of attribute")),h.call(a,b,e,f))},a.attrHooks.value={get:function(a,b){var c=(a.nodeName||"").toLowerCase();return"button"===c?i.apply(this,arguments):("input"!==c&&"option"!==c&&d("jQuery.fn.attr('value') no longer gets properties"),b in a?a.value:null)},set:function(a,b){var c=(a.nodeName||"").toLowerCase();return"button"===c?j.apply(this,arguments):("input"!==c&&"option"!==c&&d("jQuery.fn.attr('value', val) no longer sets properties"),void(a.value=b))}};var o,p,q=a.fn.init,r=a.parseJSON,s=/^\s*</,t=/\[\s*\w+\s*[~|^$*]?=\s*(?![\s'"])[^#\]]*#/,u=/^([^<]*)(<[\w\W]+>)([^>]*)$/;a.fn.init=function(b,e,f){var g,h;return b&&"string"==typeof b&&!a.isPlainObject(e)&&(g=u.exec(a.trim(b)))&&g[0]&&(s.test(b)||d("$(html) HTML strings must start with '<' character"),g[3]&&d("$(html) HTML text after last tag is ignored"),"#"===g[0].charAt(0)&&(d("HTML string cannot start with a '#' character"),a.error("JQMIGRATE: Invalid selector string (XSS)")),e&&e.context&&(e=e.context),a.parseHTML)?q.call(this,a.parseHTML(g[2],e&&e.ownerDocument||e||document,!0),e,f):("#"===b?(d("jQuery( '#' ) is not a valid selector"),b=[]):t.test(b)&&d("Attribute selectors with '#' must be quoted: '"+b+"'"),h=q.apply(this,arguments),b&&b.selector!==c?(h.selector=b.selector,h.context=b.context):(h.selector="string"==typeof b?b:"",b&&(h.context=b.nodeType?b:e||document)),h)},a.fn.init.prototype=a.fn,a.parseJSON=function(a){return a?r.apply(this,arguments):(d("jQuery.parseJSON requires a valid JSON string"),null)},a.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a.browser||(o=a.uaMatch(navigator.userAgent),p={},o.browser&&(p[o.browser]=!0,p.version=o.version),p.chrome?p.webkit=!0:p.webkit&&(p.safari=!0),a.browser=p),e(a,"browser",a.browser,"jQuery.browser is deprecated"),a.boxModel=a.support.boxModel="CSS1Compat"===document.compatMode,e(a,"boxModel",a.boxModel,"jQuery.boxModel is deprecated"),e(a.support,"boxModel",a.support.boxModel,"jQuery.support.boxModel is deprecated"),a.sub=function(){function b(a,c){return new b.fn.init(a,c)}a.extend(!0,b,this),b.superclass=this,b.fn=b.prototype=this(),b.fn.constructor=b,b.sub=this.sub,b.fn.init=function(d,e){var f=a.fn.init.call(this,d,e,c);return f instanceof b?f:b(f)},b.fn.init.prototype=b.fn;var c=b(document);return d("jQuery.sub() is deprecated"),b},a.fn.size=function(){return d("jQuery.fn.size() is deprecated; use the .length property"),this.length};var v=!1;a.swap&&a.each(["height","width","reliableMarginRight"],function(b,c){var d=a.cssHooks[c]&&a.cssHooks[c].get;d&&(a.cssHooks[c].get=function(){var a;return v=!0,a=d.apply(this,arguments),v=!1,a})}),a.swap=function(a,b,c,e){var f,g,h={};v||d("jQuery.swap() is undocumented and deprecated");for(g in b)h[g]=a.style[g],a.style[g]=b[g];f=c.apply(a,e||[]);for(g in b)a.style[g]=h[g];return f},a.ajaxSetup({converters:{"text json":a.parseJSON}});var w=a.fn.data;a.fn.data=function(b){var e,f,g=this[0];return!g||"events"!==b||1!==arguments.length||(e=a.data(g,b),f=a._data(g,b),e!==c&&e!==f||f===c)?w.apply(this,arguments):(d("Use of jQuery.fn.data('events') is deprecated"),f)};var x=/\/(java|ecma)script/i;a.clean||(a.clean=function(b,c,e,f){c=c||document,c=!c.nodeType&&c[0]||c,c=c.ownerDocument||c,d("jQuery.clean() is deprecated");var g,h,i,j,k=[];if(a.merge(k,a.buildFragment(b,c).childNodes),e)for(i=function(a){return!a.type||x.test(a.type)?f?f.push(a.parentNode?a.parentNode.removeChild(a):a):e.appendChild(a):void 0},g=0;null!=(h=k[g]);g++)a.nodeName(h,"script")&&i(h)||(e.appendChild(h),"undefined"!=typeof h.getElementsByTagName&&(j=a.grep(a.merge([],h.getElementsByTagName("script")),i),k.splice.apply(k,[g+1,0].concat(j)),g+=j.length));return k});var y=a.event.add,z=a.event.remove,A=a.event.trigger,B=a.fn.toggle,C=a.fn.live,D=a.fn.die,E=a.fn.load,F="ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",G=new RegExp("\\b(?:"+F+")\\b"),H=/(?:^|\s)hover(\.\S+|)\b/,I=function(b){return"string"!=typeof b||a.event.special.hover?b:(H.test(b)&&d("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'"),b&&b.replace(H,"mouseenter$1 mouseleave$1"))};a.event.props&&"attrChange"!==a.event.props[0]&&a.event.props.unshift("attrChange","attrName","relatedNode","srcElement"),a.event.dispatch&&e(a.event,"handle",a.event.dispatch,"jQuery.event.handle is undocumented and deprecated"),a.event.add=function(a,b,c,e,f){a!==document&&G.test(b)&&d("AJAX events should be attached to document: "+b),y.call(this,a,I(b||""),c,e,f)},a.event.remove=function(a,b,c,d,e){z.call(this,a,I(b)||"",c,d,e)},a.each(["load","unload","error"],function(b,c){a.fn[c]=function(){var a=Array.prototype.slice.call(arguments,0);return"load"===c&&"string"==typeof a[0]?E.apply(this,a):(d("jQuery.fn."+c+"() is deprecated"),a.splice(0,0,c),arguments.length?this.bind.apply(this,a):(this.triggerHandler.apply(this,a),this))}}),a.fn.toggle=function(b,c){if(!a.isFunction(b)||!a.isFunction(c))return B.apply(this,arguments);d("jQuery.fn.toggle(handler, handler...) is deprecated");var e=arguments,f=b.guid||a.guid++,g=0,h=function(c){var d=(a._data(this,"lastToggle"+b.guid)||0)%g;return a._data(this,"lastToggle"+b.guid,d+1),c.preventDefault(),e[d].apply(this,arguments)||!1};for(h.guid=f;g<e.length;)e[g++].guid=f;return this.click(h)},a.fn.live=function(b,c,e){return d("jQuery.fn.live() is deprecated"),C?C.apply(this,arguments):(a(this.context).on(b,this.selector,c,e),this)},a.fn.die=function(b,c){return d("jQuery.fn.die() is deprecated"),D?D.apply(this,arguments):(a(this.context).off(b,this.selector||"**",c),this)},a.event.trigger=function(a,b,c,e){return c||G.test(a)||d("Global events are undocumented and deprecated"),A.call(this,a,b,c||document,e)},a.each(F.split("|"),function(b,c){a.event.special[c]={setup:function(){var b=this;return b!==document&&(a.event.add(document,c+"."+a.guid,function(){a.event.trigger(c,Array.prototype.slice.call(arguments,1),b,!0)}),a._data(this,c,a.guid++)),!1},teardown:function(){return this!==document&&a.event.remove(document,c+"."+a._data(this,c)),!1}}}),a.event.special.ready={setup:function(){this===document&&d("'ready' event is deprecated")}};var J=a.fn.andSelf||a.fn.addBack,K=a.fn.find;if(a.fn.andSelf=function(){return d("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()"),J.apply(this,arguments)},a.fn.find=function(a){var b=K.apply(this,arguments);return b.context=this.context,b.selector=this.selector?this.selector+" "+a:a,b},a.Callbacks){var L=a.Deferred,M=[["resolve","done",a.Callbacks("once memory"),a.Callbacks("once memory"),"resolved"],["reject","fail",a.Callbacks("once memory"),a.Callbacks("once memory"),"rejected"],["notify","progress",a.Callbacks("memory"),a.Callbacks("memory")]];a.Deferred=function(b){var c=L(),e=c.promise();return c.pipe=e.pipe=function(){var b=arguments;return d("deferred.pipe() is deprecated"),a.Deferred(function(d){a.each(M,function(f,g){var h=a.isFunction(b[f])&&b[f];c[g[1]](function(){var b=h&&h.apply(this,arguments);b&&a.isFunction(b.promise)?b.promise().done(d.resolve).fail(d.reject).progress(d.notify):d[g[0]+"With"](this===e?d.promise():this,h?[b]:arguments)})}),b=null}).promise()},c.isResolved=function(){return d("deferred.isResolved is deprecated"),"resolved"===c.state()},c.isRejected=function(){return d("deferred.isRejected is deprecated"),"rejected"===c.state()},b&&b.call(c,c),c}}}(jQuery,window);/*! jQuery UI - v1.10.0 - 2013-01-18 +/*! jQuery v2.2.4 | (c) jQuery Foundation | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="2.2.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isPlainObject:function(a){var b;if("object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype||{},"isPrototypeOf"))return!1;for(b in a);return void 0===b||k.call(a,b)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=d.createElement("script"),b.text=a,d.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:h.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(d=e.call(arguments,2),f=function(){return a.apply(b||this,d.concat(e.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=R.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return h.call(b,a)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&f.parentNode&&(this.length=1,this[0]=f),this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?void 0!==c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?h.call(n(a),this[0]):h.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||n.uniqueSort(e),D.test(a)&&e.reverse()),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.removeEventListener("DOMContentLoaded",J),a.removeEventListener("load",J),n.ready()}n.ready.promise=function(b){return I||(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(n.ready):(d.addEventListener("DOMContentLoaded",J),a.addEventListener("load",J))),I.promise(b)},n.ready.promise();var K=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)K(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},L=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function M(){this.expando=n.expando+M.uid++}M.uid=1,M.prototype={register:function(a,b){var c=b||{};return a.nodeType?a[this.expando]=c:Object.defineProperty(a,this.expando,{value:c,writable:!0,configurable:!0}),a[this.expando]},cache:function(a){if(!L(a))return{};var b=a[this.expando];return b||(b={},L(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[b]=c;else for(d in b)e[d]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=a[this.expando];if(void 0!==f){if(void 0===b)this.register(a);else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in f?d=[b,e]:(d=e,d=d in f?[d]:d.match(G)||[])),c=d.length;while(c--)delete f[d[c]]}(void 0===b||n.isEmptyObject(f))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!n.isEmptyObject(b)}};var N=new M,O=new M,P=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Q=/[A-Z]/g;function R(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Q,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:P.test(c)?n.parseJSON(c):c; +}catch(e){}O.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return O.hasData(a)||N.hasData(a)},data:function(a,b,c){return O.access(a,b,c)},removeData:function(a,b){O.remove(a,b)},_data:function(a,b,c){return N.access(a,b,c)},_removeData:function(a,b){N.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=O.get(f),1===f.nodeType&&!N.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),R(f,d,e[d])));N.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){O.set(this,a)}):K(this,function(b){var c,d;if(f&&void 0===b){if(c=O.get(f,a)||O.get(f,a.replace(Q,"-$&").toLowerCase()),void 0!==c)return c;if(d=n.camelCase(a),c=O.get(f,d),void 0!==c)return c;if(c=R(f,d,void 0),void 0!==c)return c}else d=n.camelCase(a),this.each(function(){var c=O.get(this,d);O.set(this,d,b),a.indexOf("-")>-1&&void 0!==c&&O.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){O.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=N.get(a,b),c&&(!d||n.isArray(c)?d=N.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return N.get(a,c)||N.access(a,c,{empty:n.Callbacks("once memory").add(function(){N.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=N.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function W(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&T.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var X=/^(?:checkbox|radio)$/i,Y=/<([\w:-]+)/,Z=/^$|\/(?:java|ecma)script/i,$={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};$.optgroup=$.option,$.tbody=$.tfoot=$.colgroup=$.caption=$.thead,$.th=$.td;function _(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function aa(a,b){for(var c=0,d=a.length;d>c;c++)N.set(a[c],"globalEval",!b||N.get(b[c],"globalEval"))}var ba=/<|&#?\w+;/;function ca(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],o=0,p=a.length;p>o;o++)if(f=a[o],f||0===f)if("object"===n.type(f))n.merge(m,f.nodeType?[f]:f);else if(ba.test(f)){g=g||l.appendChild(b.createElement("div")),h=(Y.exec(f)||["",""])[1].toLowerCase(),i=$[h]||$._default,g.innerHTML=i[1]+n.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;n.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",o=0;while(f=m[o++])if(d&&n.inArray(f,d)>-1)e&&e.push(f);else if(j=n.contains(f.ownerDocument,f),g=_(l.appendChild(f),"script"),j&&aa(g),c){k=0;while(f=g[k++])Z.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var da=/^key/,ea=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,fa=/^([^.]*)(?:\.(.+)|)/;function ga(){return!0}function ha(){return!1}function ia(){try{return d.activeElement}catch(a){}}function ja(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ja(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ha;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return"undefined"!=typeof n&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(G)||[""],j=b.length;while(j--)h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.hasData(a)&&N.get(a);if(r&&(i=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&N.remove(a,"handle events")}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(N.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!==this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||d,e=c.documentElement,f=c.body,a.pageX=b.clientX+(e&&e.scrollLeft||f&&f.scrollLeft||0)-(e&&e.clientLeft||f&&f.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||f&&f.scrollTop||0)-(e&&e.clientTop||f&&f.clientTop||0)),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ea.test(f)?this.mouseHooks:da.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=d),3===a.target.nodeType&&(a.target=a.target.parentNode),h.filter?h.filter(a,g):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==ia()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===ia()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ga:ha):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:ha,isPropagationStopped:ha,isImmediatePropagationStopped:ha,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ga,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ga,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ga,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||n.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),n.fn.extend({on:function(a,b,c,d){return ja(this,a,b,c,d)},one:function(a,b,c,d){return ja(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=ha),this.each(function(){n.event.remove(this,a,c,b)})}});var ka=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,la=/<script|<style|<link/i,ma=/checked\s*(?:[^=]|=\s*.checked.)/i,na=/^true\/(.*)/,oa=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function pa(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function qa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function ra(a){var b=na.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function sa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(N.hasData(a)&&(f=N.access(a),g=N.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}O.hasData(a)&&(h=O.access(a),i=n.extend({},h),O.set(b,i))}}function ta(a,b){var c=b.nodeName.toLowerCase();"input"===c&&X.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function ua(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&ma.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),ua(f,b,c,d)});if(o&&(e=ca(b,a[0].ownerDocument,!1,a,d),g=e.firstChild,1===e.childNodes.length&&(e=g),g||d)){for(h=n.map(_(e,"script"),qa),i=h.length;o>m;m++)j=e,m!==p&&(j=n.clone(j,!0,!0),i&&n.merge(h,_(j,"script"))),c.call(a[m],j,m);if(i)for(k=h[h.length-1].ownerDocument,n.map(h,ra),m=0;i>m;m++)j=h[m],Z.test(j.type||"")&&!N.access(j,"globalEval")&&n.contains(k,j)&&(j.src?n._evalUrl&&n._evalUrl(j.src):n.globalEval(j.textContent.replace(oa,"")))}return a}function va(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(_(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&aa(_(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(ka,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=_(h),f=_(a),d=0,e=f.length;e>d;d++)ta(f[d],g[d]);if(b)if(c)for(f=f||_(a),g=g||_(h),d=0,e=f.length;e>d;d++)sa(f[d],g[d]);else sa(a,h);return g=_(h,"script"),g.length>0&&aa(g,!i&&_(a,"script")),h},cleanData:function(a){for(var b,c,d,e=n.event.special,f=0;void 0!==(c=a[f]);f++)if(L(c)){if(b=c[N.expando]){if(b.events)for(d in b.events)e[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);c[N.expando]=void 0}c[O.expando]&&(c[O.expando]=void 0)}}}),n.fn.extend({domManip:ua,detach:function(a){return va(this,a,!0)},remove:function(a){return va(this,a)},text:function(a){return K(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.appendChild(a)}})},prepend:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(_(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return K(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!la.test(a)&&!$[(Y.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(_(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return ua(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(_(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),f=e.length-1,h=0;f>=h;h++)c=h===f?this:this.clone(!0),n(e[h])[b](c),g.apply(d,c.get());return this.pushStack(d)}});var wa,xa={HTML:"block",BODY:"block"};function ya(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function za(a){var b=d,c=xa[a];return c||(c=ya(a,b),"none"!==c&&c||(wa=(wa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=wa[0].contentDocument,b.write(),b.close(),c=ya(a,b),wa.detach()),xa[a]=c),c}var Aa=/^margin/,Ba=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ca=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Da=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Ea=d.documentElement;!function(){var b,c,e,f,g=d.createElement("div"),h=d.createElement("div");if(h.style){h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,g.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",g.appendChild(h);function i(){h.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",h.innerHTML="",Ea.appendChild(g);var d=a.getComputedStyle(h);b="1%"!==d.top,f="2px"===d.marginLeft,c="4px"===d.width,h.style.marginRight="50%",e="4px"===d.marginRight,Ea.removeChild(g)}n.extend(l,{pixelPosition:function(){return i(),b},boxSizingReliable:function(){return null==c&&i(),c},pixelMarginRight:function(){return null==c&&i(),e},reliableMarginLeft:function(){return null==c&&i(),f},reliableMarginRight:function(){var b,c=h.appendChild(d.createElement("div"));return c.style.cssText=h.style.cssText="-webkit-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",h.style.width="1px",Ea.appendChild(g),b=!parseFloat(a.getComputedStyle(c).marginRight),Ea.removeChild(g),h.removeChild(c),b}})}}();function Fa(a,b,c){var d,e,f,g,h=a.style;return c=c||Ca(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Ba.test(g)&&Aa.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0!==g?g+"":g}function Ga(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Ha=/^(none|table(?!-c[ea]).+)/,Ia={position:"absolute",visibility:"hidden",display:"block"},Ja={letterSpacing:"0",fontWeight:"400"},Ka=["Webkit","O","Moz","ms"],La=d.createElement("div").style;function Ma(a){if(a in La)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ka.length;while(c--)if(a=Ka[c]+b,a in La)return a}function Na(a,b,c){var d=T.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Oa(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Pa(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ca(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Fa(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ba.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Oa(a,b,c||(g?"border":"content"),d,f)+"px"}function Qa(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=N.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=N.access(d,"olddisplay",za(d.nodeName)))):(e=V(d),"none"===c&&e||N.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Fa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Ma(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=T.exec(c))&&e[1]&&(c=W(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Ma(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Fa(a,b,d)),"normal"===e&&b in Ja&&(e=Ja[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Ha.test(n.css(a,"display"))&&0===a.offsetWidth?Da(a,Ia,function(){return Pa(a,b,d)}):Pa(a,b,d):void 0},set:function(a,c,d){var e,f=d&&Ca(a),g=d&&Oa(a,b,d,"border-box"===n.css(a,"boxSizing",!1,f),f);return g&&(e=T.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=n.css(a,b)),Na(a,c,g)}}}),n.cssHooks.marginLeft=Ga(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Fa(a,"marginLeft"))||a.getBoundingClientRect().left-Da(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px":void 0}),n.cssHooks.marginRight=Ga(l.reliableMarginRight,function(a,b){return b?Da(a,{display:"inline-block"},Fa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Aa.test(a)||(n.cssHooks[a+b].set=Na)}),n.fn.extend({css:function(a,b){return K(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ca(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Qa(this,!0)},hide:function(){return Qa(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function Ra(a,b,c,d,e){return new Ra.prototype.init(a,b,c,d,e)}n.Tween=Ra,Ra.prototype={constructor:Ra,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ra.propHooks[this.prop];return a&&a.get?a.get(this):Ra.propHooks._default.get(this)},run:function(a){var b,c=Ra.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ra.propHooks._default.set(this),this}},Ra.prototype.init.prototype=Ra.prototype,Ra.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},Ra.propHooks.scrollTop=Ra.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=Ra.prototype.init,n.fx.step={};var Sa,Ta,Ua=/^(?:toggle|show|hide)$/,Va=/queueHooks$/;function Wa(){return a.setTimeout(function(){Sa=void 0}),Sa=n.now()}function Xa(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=U[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ya(a,b,c){for(var d,e=(_a.tweeners[b]||[]).concat(_a.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Za(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&V(a),q=N.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?N.get(a,"olddisplay")||za(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Ua.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?za(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=N.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;N.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ya(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function $a(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function _a(a,b,c){var d,e,f=0,g=_a.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Sa||Wa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:Sa||Wa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for($a(k,j.opts.specialEasing);g>f;f++)if(d=_a.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,Ya,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(_a,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return W(c.elem,a,T.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],_a.tweeners[c]=_a.tweeners[c]||[],_a.tweeners[c].unshift(b)},prefilters:[Za],prefilter:function(a,b){b?_a.prefilters.unshift(a):_a.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=_a(this,n.extend({},a),f);(e||N.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=N.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Va.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=N.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Xa(b,!0),a,d,e)}}),n.each({slideDown:Xa("show"),slideUp:Xa("hide"),slideToggle:Xa("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Sa=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Sa=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ta||(Ta=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(Ta),Ta=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",l.checkOn=""!==a.value,l.optSelected=c.selected,b.disabled=!0,l.optDisabled=!c.disabled,a=d.createElement("input"),a.value="t",a.type="radio",l.radioValue="t"===a.value}();var ab,bb=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return K(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ab:void 0)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)}}),ab={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=bb[b]||n.find.attr;bb[b]=function(a,b,d){var e,f;return d||(f=bb[b],bb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,bb[b]=f),e}});var cb=/^(?:input|select|textarea|button)$/i,db=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return K(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,e=n.propHooks[b]), +void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):cb.test(a.nodeName)||db.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var eb=/[\t\r\n\f]/g;function fb(a){return a.getAttribute&&a.getAttribute("class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,fb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=fb(c),d=1===c.nodeType&&(" "+e+" ").replace(eb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,fb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=fb(c),d=1===c.nodeType&&(" "+e+" ").replace(eb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,fb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=fb(this),b&&N.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":N.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+fb(c)+" ").replace(eb," ").indexOf(b)>-1)return!0;return!1}});var gb=/\r/g,hb=/[\x20\t\r\n\f]+/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(gb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a)).replace(hb," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(n.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var ib=/^(?:focusinfocus|focusoutblur)$/;n.extend(n.event,{trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!ib.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),l=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},f||!o.trigger||o.trigger.apply(e,c)!==!1)){if(!f&&!o.noBubble&&!n.isWindow(e)){for(j=o.delegateType||q,ib.test(j+q)||(h=h.parentNode);h;h=h.parentNode)p.push(h),i=h;i===(e.ownerDocument||d)&&p.push(i.defaultView||i.parentWindow||a)}g=0;while((h=p[g++])&&!b.isPropagationStopped())b.type=g>1?j:o.bindType||q,m=(N.get(h,"events")||{})[b.type]&&N.get(h,"handle"),m&&m.apply(h,c),m=l&&h[l],m&&m.apply&&L(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=q,f||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!L(e)||l&&n.isFunction(e[q])&&!n.isWindow(e)&&(i=e[l],i&&(e[l]=null),n.event.triggered=q,e[q](),n.event.triggered=void 0,i&&(e[l]=i)),b.result}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b)}}),n.fn.extend({trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),l.focusin="onfocusin"in a,l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=N.access(d,b);e||d.addEventListener(a,c,!0),N.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=N.access(d,b)-1;e?N.access(d,b,e):(d.removeEventListener(a,c,!0),N.remove(d,b))}}});var jb=a.location,kb=n.now(),lb=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var mb=/#.*$/,nb=/([?&])_=[^&]*/,ob=/^(.*?):[ \t]*([^\r\n]*)$/gm,pb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,qb=/^(?:GET|HEAD)$/,rb=/^\/\//,sb={},tb={},ub="*/".concat("*"),vb=d.createElement("a");vb.href=jb.href;function wb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function xb(a,b,c,d){var e={},f=a===tb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function yb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function zb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Ab(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:jb.href,type:"GET",isLocal:pb.test(jb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":ub,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?yb(yb(a,n.ajaxSettings),b):yb(n.ajaxSettings,a)},ajaxPrefilter:wb(sb),ajaxTransport:wb(tb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m=n.ajaxSetup({},c),o=m.context||m,p=m.context&&(o.nodeType||o.jquery)?n(o):n.event,q=n.Deferred(),r=n.Callbacks("once memory"),s=m.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,getResponseHeader:function(a){var b;if(2===v){if(!h){h={};while(b=ob.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===v?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return v||(a=u[c]=u[c]||a,t[a]=b),this},overrideMimeType:function(a){return v||(m.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>v)for(b in a)s[b]=[s[b],a[b]];else x.always(a[x.status]);return this},abort:function(a){var b=a||w;return e&&e.abort(b),z(0,b),this}};if(q.promise(x).complete=r.add,x.success=x.done,x.error=x.fail,m.url=((b||m.url||jb.href)+"").replace(mb,"").replace(rb,jb.protocol+"//"),m.type=c.method||c.type||m.method||m.type,m.dataTypes=n.trim(m.dataType||"*").toLowerCase().match(G)||[""],null==m.crossDomain){j=d.createElement("a");try{j.href=m.url,j.href=j.href,m.crossDomain=vb.protocol+"//"+vb.host!=j.protocol+"//"+j.host}catch(y){m.crossDomain=!0}}if(m.data&&m.processData&&"string"!=typeof m.data&&(m.data=n.param(m.data,m.traditional)),xb(sb,m,c,x),2===v)return x;k=n.event&&m.global,k&&0===n.active++&&n.event.trigger("ajaxStart"),m.type=m.type.toUpperCase(),m.hasContent=!qb.test(m.type),f=m.url,m.hasContent||(m.data&&(f=m.url+=(lb.test(f)?"&":"?")+m.data,delete m.data),m.cache===!1&&(m.url=nb.test(f)?f.replace(nb,"$1_="+kb++):f+(lb.test(f)?"&":"?")+"_="+kb++)),m.ifModified&&(n.lastModified[f]&&x.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&x.setRequestHeader("If-None-Match",n.etag[f])),(m.data&&m.hasContent&&m.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",m.contentType),x.setRequestHeader("Accept",m.dataTypes[0]&&m.accepts[m.dataTypes[0]]?m.accepts[m.dataTypes[0]]+("*"!==m.dataTypes[0]?", "+ub+"; q=0.01":""):m.accepts["*"]);for(l in m.headers)x.setRequestHeader(l,m.headers[l]);if(m.beforeSend&&(m.beforeSend.call(o,x,m)===!1||2===v))return x.abort();w="abort";for(l in{success:1,error:1,complete:1})x[l](m[l]);if(e=xb(tb,m,c,x)){if(x.readyState=1,k&&p.trigger("ajaxSend",[x,m]),2===v)return x;m.async&&m.timeout>0&&(i=a.setTimeout(function(){x.abort("timeout")},m.timeout));try{v=1,e.send(t,z)}catch(y){if(!(2>v))throw y;z(-1,y)}}else z(-1,"No Transport");function z(b,c,d,h){var j,l,t,u,w,y=c;2!==v&&(v=2,i&&a.clearTimeout(i),e=void 0,g=h||"",x.readyState=b>0?4:0,j=b>=200&&300>b||304===b,d&&(u=zb(m,x,d)),u=Ab(m,u,x,j),j?(m.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(n.lastModified[f]=w),w=x.getResponseHeader("etag"),w&&(n.etag[f]=w)),204===b||"HEAD"===m.type?y="nocontent":304===b?y="notmodified":(y=u.state,l=u.data,t=u.error,j=!t)):(t=y,!b&&y||(y="error",0>b&&(b=0))),x.status=b,x.statusText=(c||y)+"",j?q.resolveWith(o,[l,y,x]):q.rejectWith(o,[x,y,t]),x.statusCode(s),s=void 0,k&&p.trigger(j?"ajaxSuccess":"ajaxError",[x,m,j?l:t]),r.fireWith(o,[x,y]),k&&(p.trigger("ajaxComplete",[x,m]),--n.active||n.event.trigger("ajaxStop")))}return x},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return!n.expr.filters.visible(a)},n.expr.filters.visible=function(a){return a.offsetWidth>0||a.offsetHeight>0||a.getClientRects().length>0};var Bb=/%20/g,Cb=/\[\]$/,Db=/\r?\n/g,Eb=/^(?:submit|button|image|reset|file)$/i,Fb=/^(?:input|select|textarea|keygen)/i;function Gb(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Cb.test(a)?d(a,e):Gb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Gb(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Gb(c,a[c],b,e);return d.join("&").replace(Bb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Fb.test(this.nodeName)&&!Eb.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Db,"\r\n")}}):{name:b.name,value:c.replace(Db,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Hb={0:200,1223:204},Ib=n.ajaxSettings.xhr();l.cors=!!Ib&&"withCredentials"in Ib,l.ajax=Ib=!!Ib,n.ajaxTransport(function(b){var c,d;return l.cors||Ib&&!b.crossDomain?{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Hb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=n("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Jb=[],Kb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Jb.pop()||n.expando+"_"+kb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Kb.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Kb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Kb,"$1"+e):b.jsonp!==!1&&(b.url+=(lb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Jb.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||d;var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ca([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var Lb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Lb)return Lb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function Mb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(e=d.getBoundingClientRect(),c=Mb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ea})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;n.fn[a]=function(d){return K(this,function(a,d,e){var f=Mb(a);return void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ga(l.pixelPosition,function(a,c){return c?(c=Fa(a,b),Ba.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return K(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)},size:function(){return this.length}}),n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Nb=a.jQuery,Ob=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Ob),b&&a.jQuery===n&&(a.jQuery=Nb),n},b||(a.jQuery=a.$=n),n}); + +/*! jQuery Migrate v1.4.0 | (c) jQuery Foundation and other contributors | jquery.org/license */ +"undefined"==typeof jQuery.migrateMute&&(jQuery.migrateMute=!0),function(a,b,c){function d(c){var d=b.console;f[c]||(f[c]=!0,a.migrateWarnings.push(c),d&&d.warn&&!a.migrateMute&&(d.warn("JQMIGRATE: "+c),a.migrateTrace&&d.trace&&d.trace()))}function e(b,c,e,f){if(Object.defineProperty)try{return void Object.defineProperty(b,c,{configurable:!0,enumerable:!0,get:function(){return d(f),e},set:function(a){d(f),e=a}})}catch(g){}a._definePropertyBroken=!0,b[c]=e}a.migrateVersion="1.4.0";var f={};a.migrateWarnings=[],b.console&&b.console.log&&b.console.log("JQMIGRATE: Migrate is installed"+(a.migrateMute?"":" with logging active")+", version "+a.migrateVersion),a.migrateTrace===c&&(a.migrateTrace=!0),a.migrateReset=function(){f={},a.migrateWarnings.length=0},"BackCompat"===document.compatMode&&d("jQuery is not compatible with Quirks Mode");var g=a("<input/>",{size:1}).attr("size")&&a.attrFn,h=a.attr,i=a.attrHooks.value&&a.attrHooks.value.get||function(){return null},j=a.attrHooks.value&&a.attrHooks.value.set||function(){return c},k=/^(?:input|button)$/i,l=/^[238]$/,m=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,n=/^(?:checked|selected)$/i;e(a,"attrFn",g||{},"jQuery.attrFn is deprecated"),a.attr=function(b,e,f,i){var j=e.toLowerCase(),o=b&&b.nodeType;return i&&(h.length<4&&d("jQuery.fn.attr( props, pass ) is deprecated"),b&&!l.test(o)&&(g?e in g:a.isFunction(a.fn[e])))?a(b)[e](f):("type"===e&&f!==c&&k.test(b.nodeName)&&b.parentNode&&d("Can't change the 'type' of an input or button in IE 6/7/8"),!a.attrHooks[j]&&m.test(j)&&(a.attrHooks[j]={get:function(b,d){var e,f=a.prop(b,d);return f===!0||"boolean"!=typeof f&&(e=b.getAttributeNode(d))&&e.nodeValue!==!1?d.toLowerCase():c},set:function(b,c,d){var e;return c===!1?a.removeAttr(b,d):(e=a.propFix[d]||d,e in b&&(b[e]=!0),b.setAttribute(d,d.toLowerCase())),d}},n.test(j)&&d("jQuery.fn.attr('"+j+"') might use property instead of attribute")),h.call(a,b,e,f))},a.attrHooks.value={get:function(a,b){var c=(a.nodeName||"").toLowerCase();return"button"===c?i.apply(this,arguments):("input"!==c&&"option"!==c&&d("jQuery.fn.attr('value') no longer gets properties"),b in a?a.value:null)},set:function(a,b){var c=(a.nodeName||"").toLowerCase();return"button"===c?j.apply(this,arguments):("input"!==c&&"option"!==c&&d("jQuery.fn.attr('value', val) no longer sets properties"),void(a.value=b))}};var o,p,q=a.fn.init,r=a.parseJSON,s=/^\s*</,t=/\[\s*\w+\s*[~|^$*]?=\s*(?![\s'"])[^#\]]*#/,u=/^([^<]*)(<[\w\W]+>)([^>]*)$/;a.fn.init=function(b,e,f){var g,h;return b&&"string"==typeof b&&!a.isPlainObject(e)&&(g=u.exec(a.trim(b)))&&g[0]&&(s.test(b)||d("$(html) HTML strings must start with '<' character"),g[3]&&d("$(html) HTML text after last tag is ignored"),"#"===g[0].charAt(0)&&(d("HTML string cannot start with a '#' character"),a.error("JQMIGRATE: Invalid selector string (XSS)")),e&&e.context&&(e=e.context),a.parseHTML)?q.call(this,a.parseHTML(g[2],e&&e.ownerDocument||e||document,!0),e,f):("#"===b?(d("jQuery( '#' ) is not a valid selector"),b=[]):t.test(b)&&d("Attribute selectors with '#' must be quoted: '"+b+"'"),h=q.apply(this,arguments),b&&b.selector!==c?(h.selector=b.selector,h.context=b.context):(h.selector="string"==typeof b?b:"",b&&(h.context=b.nodeType?b:e||document)),h)},a.fn.init.prototype=a.fn,a.parseJSON=function(a){return a?r.apply(this,arguments):(d("jQuery.parseJSON requires a valid JSON string"),null)},a.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a.browser||(o=a.uaMatch(navigator.userAgent),p={},o.browser&&(p[o.browser]=!0,p.version=o.version),p.chrome?p.webkit=!0:p.webkit&&(p.safari=!0),a.browser=p),e(a,"browser",a.browser,"jQuery.browser is deprecated"),a.boxModel=a.support.boxModel="CSS1Compat"===document.compatMode,e(a,"boxModel",a.boxModel,"jQuery.boxModel is deprecated"),e(a.support,"boxModel",a.support.boxModel,"jQuery.support.boxModel is deprecated"),a.sub=function(){function b(a,c){return new b.fn.init(a,c)}a.extend(!0,b,this),b.superclass=this,b.fn=b.prototype=this(),b.fn.constructor=b,b.sub=this.sub,b.fn.init=function(d,e){var f=a.fn.init.call(this,d,e,c);return f instanceof b?f:b(f)},b.fn.init.prototype=b.fn;var c=b(document);return d("jQuery.sub() is deprecated"),b},a.fn.size=function(){return d("jQuery.fn.size() is deprecated; use the .length property"),this.length};var v=!1;a.swap&&a.each(["height","width","reliableMarginRight"],function(b,c){var d=a.cssHooks[c]&&a.cssHooks[c].get;d&&(a.cssHooks[c].get=function(){var a;return v=!0,a=d.apply(this,arguments),v=!1,a})}),a.swap=function(a,b,c,e){var f,g,h={};v||d("jQuery.swap() is undocumented and deprecated");for(g in b)h[g]=a.style[g],a.style[g]=b[g];f=c.apply(a,e||[]);for(g in b)a.style[g]=h[g];return f},a.ajaxSetup({converters:{"text json":a.parseJSON}});var w=a.fn.data;a.fn.data=function(b){var e,f,g=this[0];return!g||"events"!==b||1!==arguments.length||(e=a.data(g,b),f=a._data(g,b),e!==c&&e!==f||f===c)?w.apply(this,arguments):(d("Use of jQuery.fn.data('events') is deprecated"),f)};var x=/\/(java|ecma)script/i;a.clean||(a.clean=function(b,c,e,f){c=c||document,c=!c.nodeType&&c[0]||c,c=c.ownerDocument||c,d("jQuery.clean() is deprecated");var g,h,i,j,k=[];if(a.merge(k,a.buildFragment(b,c).childNodes),e)for(i=function(a){return!a.type||x.test(a.type)?f?f.push(a.parentNode?a.parentNode.removeChild(a):a):e.appendChild(a):void 0},g=0;null!=(h=k[g]);g++)a.nodeName(h,"script")&&i(h)||(e.appendChild(h),"undefined"!=typeof h.getElementsByTagName&&(j=a.grep(a.merge([],h.getElementsByTagName("script")),i),k.splice.apply(k,[g+1,0].concat(j)),g+=j.length));return k});var y=a.event.add,z=a.event.remove,A=a.event.trigger,B=a.fn.toggle,C=a.fn.live,D=a.fn.die,E=a.fn.load,F="ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",G=new RegExp("\\b(?:"+F+")\\b"),H=/(?:^|\s)hover(\.\S+|)\b/,I=function(b){return"string"!=typeof b||a.event.special.hover?b:(H.test(b)&&d("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'"),b&&b.replace(H,"mouseenter$1 mouseleave$1"))};a.event.props&&"attrChange"!==a.event.props[0]&&a.event.props.unshift("attrChange","attrName","relatedNode","srcElement"),a.event.dispatch&&e(a.event,"handle",a.event.dispatch,"jQuery.event.handle is undocumented and deprecated"),a.event.add=function(a,b,c,e,f){a!==document&&G.test(b)&&d("AJAX events should be attached to document: "+b),y.call(this,a,I(b||""),c,e,f)},a.event.remove=function(a,b,c,d,e){z.call(this,a,I(b)||"",c,d,e)},a.each(["load","unload","error"],function(b,c){a.fn[c]=function(){var a=Array.prototype.slice.call(arguments,0);return"load"===c&&"string"==typeof a[0]?E.apply(this,a):(d("jQuery.fn."+c+"() is deprecated"),a.splice(0,0,c),arguments.length?this.bind.apply(this,a):(this.triggerHandler.apply(this,a),this))}}),a.fn.toggle=function(b,c){if(!a.isFunction(b)||!a.isFunction(c))return B.apply(this,arguments);d("jQuery.fn.toggle(handler, handler...) is deprecated");var e=arguments,f=b.guid||a.guid++,g=0,h=function(c){var d=(a._data(this,"lastToggle"+b.guid)||0)%g;return a._data(this,"lastToggle"+b.guid,d+1),c.preventDefault(),e[d].apply(this,arguments)||!1};for(h.guid=f;g<e.length;)e[g++].guid=f;return this.click(h)},a.fn.live=function(b,c,e){return d("jQuery.fn.live() is deprecated"),C?C.apply(this,arguments):(a(this.context).on(b,this.selector,c,e),this)},a.fn.die=function(b,c){return d("jQuery.fn.die() is deprecated"),D?D.apply(this,arguments):(a(this.context).off(b,this.selector||"**",c),this)},a.event.trigger=function(a,b,c,e){return c||G.test(a)||d("Global events are undocumented and deprecated"),A.call(this,a,b,c||document,e)},a.each(F.split("|"),function(b,c){a.event.special[c]={setup:function(){var b=this;return b!==document&&(a.event.add(document,c+"."+a.guid,function(){a.event.trigger(c,Array.prototype.slice.call(arguments,1),b,!0)}),a._data(this,c,a.guid++)),!1},teardown:function(){return this!==document&&a.event.remove(document,c+"."+a._data(this,c)),!1}}}),a.event.special.ready={setup:function(){this===document&&d("'ready' event is deprecated")}};var J=a.fn.andSelf||a.fn.addBack,K=a.fn.find;if(a.fn.andSelf=function(){return d("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()"),J.apply(this,arguments)},a.fn.find=function(a){var b=K.apply(this,arguments);return b.context=this.context,b.selector=this.selector?this.selector+" "+a:a,b},a.Callbacks){var L=a.Deferred,M=[["resolve","done",a.Callbacks("once memory"),a.Callbacks("once memory"),"resolved"],["reject","fail",a.Callbacks("once memory"),a.Callbacks("once memory"),"rejected"],["notify","progress",a.Callbacks("memory"),a.Callbacks("memory")]];a.Deferred=function(b){var c=L(),e=c.promise();return c.pipe=e.pipe=function(){var b=arguments;return d("deferred.pipe() is deprecated"),a.Deferred(function(d){a.each(M,function(f,g){var h=a.isFunction(b[f])&&b[f];c[g[1]](function(){var b=h&&h.apply(this,arguments);b&&a.isFunction(b.promise)?b.promise().done(d.resolve).fail(d.reject).progress(d.notify):d[g[0]+"With"](this===e?d.promise():this,h?[b]:arguments)})}),b=null}).promise()},c.isResolved=function(){return d("deferred.isResolved is deprecated"),"resolved"===c.state()},c.isRejected=function(){return d("deferred.isRejected is deprecated"),"rejected"===c.state()},b&&b.call(c,c),c}}}(jQuery,window); +/*! jQuery UI - v1.10.0 - 2013-01-18 * http://jqueryui.com * Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.menu.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js, jquery.ui.effect.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js * Copyright (c) 2013 jQuery Foundation and other contributors Licensed MIT */ @@ -14853,6 +14855,7 @@ $.effects.effect.transfer = function( o, done ) { }; })(jQuery); + // Underscore.js 1.8.3 // http://underscorejs.org // (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors @@ -16401,6 +16404,7 @@ $.effects.effect.transfer = function( o, done ) { }); } }.call(this)); + !function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){"use strict";function a(){return re.apply(null,arguments)}function b(a){re=a}function c(a){return a instanceof Array||"[object Array]"===Object.prototype.toString.call(a)}function d(a){return null!=a&&"[object Object]"===Object.prototype.toString.call(a)}function e(a){var b;for(b in a)return!1;return!0}function f(a){return void 0===a}function g(a){return"number"==typeof a||"[object Number]"===Object.prototype.toString.call(a)}function h(a){return a instanceof Date||"[object Date]"===Object.prototype.toString.call(a)}function i(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function j(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function k(a,b){for(var c in b)j(b,c)&&(a[c]=b[c]);return j(b,"toString")&&(a.toString=b.toString),j(b,"valueOf")&&(a.valueOf=b.valueOf),a}function l(a,b,c,d){return sb(a,b,c,d,!0).utc()}function m(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}}function n(a){return null==a._pf&&(a._pf=m()),a._pf}function o(a){if(null==a._isValid){var b=n(a),c=te.call(b.parsedDateParts,function(a){return null!=a}),d=!isNaN(a._d.getTime())&&b.overflow<0&&!b.empty&&!b.invalidMonth&&!b.invalidWeekday&&!b.nullInput&&!b.invalidFormat&&!b.userInvalidated&&(!b.meridiem||b.meridiem&&c);if(a._strict&&(d=d&&0===b.charsLeftOver&&0===b.unusedTokens.length&&void 0===b.bigHour),null!=Object.isFrozen&&Object.isFrozen(a))return d;a._isValid=d}return a._isValid}function p(a){var b=l(NaN);return null!=a?k(n(b),a):n(b).userInvalidated=!0,b}function q(a,b){var c,d,e;if(f(b._isAMomentObject)||(a._isAMomentObject=b._isAMomentObject),f(b._i)||(a._i=b._i),f(b._f)||(a._f=b._f),f(b._l)||(a._l=b._l),f(b._strict)||(a._strict=b._strict),f(b._tzm)||(a._tzm=b._tzm),f(b._isUTC)||(a._isUTC=b._isUTC),f(b._offset)||(a._offset=b._offset),f(b._pf)||(a._pf=n(b)),f(b._locale)||(a._locale=b._locale),ue.length>0)for(c=0;c<ue.length;c++)d=ue[c],e=b[d],f(e)||(a[d]=e);return a}function r(b){q(this,b),this._d=new Date(null!=b._d?b._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),ve===!1&&(ve=!0,a.updateOffset(this),ve=!1)}function s(a){return a instanceof r||null!=a&&null!=a._isAMomentObject}function t(a){return a<0?Math.ceil(a)||0:Math.floor(a)}function u(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=t(b)),c}function v(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;d<e;d++)(c&&a[d]!==b[d]||!c&&u(a[d])!==u(b[d]))&&g++;return g+f}function w(b){a.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+b)}function x(b,c){var d=!0;return k(function(){if(null!=a.deprecationHandler&&a.deprecationHandler(null,b),d){for(var e,f=[],g=0;g<arguments.length;g++){if(e="","object"==typeof arguments[g]){e+="\n["+g+"] ";for(var h in arguments[0])e+=h+": "+arguments[0][h]+", ";e=e.slice(0,-2)}else e=arguments[g];f.push(e)}w(b+"\nArguments: "+Array.prototype.slice.call(f).join("")+"\n"+(new Error).stack),d=!1}return c.apply(this,arguments)},c)}function y(b,c){null!=a.deprecationHandler&&a.deprecationHandler(b,c),we[b]||(w(c),we[b]=!0)}function z(a){return a instanceof Function||"[object Function]"===Object.prototype.toString.call(a)}function A(a){var b,c;for(c in a)b=a[c],z(b)?this[c]=b:this["_"+c]=b;this._config=a,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)}function B(a,b){var c,e=k({},a);for(c in b)j(b,c)&&(d(a[c])&&d(b[c])?(e[c]={},k(e[c],a[c]),k(e[c],b[c])):null!=b[c]?e[c]=b[c]:delete e[c]);for(c in a)j(a,c)&&!j(b,c)&&d(a[c])&&(e[c]=k({},e[c]));return e}function C(a){null!=a&&this.set(a)}function D(a,b,c){var d=this._calendar[a]||this._calendar.sameElse;return z(d)?d.call(b,c):d}function E(a){var b=this._longDateFormat[a],c=this._longDateFormat[a.toUpperCase()];return b||!c?b:(this._longDateFormat[a]=c.replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a])}function F(){return this._invalidDate}function G(a){return this._ordinal.replace("%d",a)}function H(a,b,c,d){var e=this._relativeTime[c];return z(e)?e(a,b,c,d):e.replace(/%d/i,a)}function I(a,b){var c=this._relativeTime[a>0?"future":"past"];return z(c)?c(b):c.replace(/%s/i,b)}function J(a,b){var c=a.toLowerCase();Ge[c]=Ge[c+"s"]=Ge[b]=a}function K(a){return"string"==typeof a?Ge[a]||Ge[a.toLowerCase()]:void 0}function L(a){var b,c,d={};for(c in a)j(a,c)&&(b=K(c),b&&(d[b]=a[c]));return d}function M(a,b){He[a]=b}function N(a){var b=[];for(var c in a)b.push({unit:c,priority:He[c]});return b.sort(function(a,b){return a.priority-b.priority}),b}function O(b,c){return function(d){return null!=d?(Q(this,b,d),a.updateOffset(this,c),this):P(this,b)}}function P(a,b){return a.isValid()?a._d["get"+(a._isUTC?"UTC":"")+b]():NaN}function Q(a,b,c){a.isValid()&&a._d["set"+(a._isUTC?"UTC":"")+b](c)}function R(a){return a=K(a),z(this[a])?this[a]():this}function S(a,b){if("object"==typeof a){a=L(a);for(var c=N(a),d=0;d<c.length;d++)this[c[d].unit](a[c[d].unit])}else if(a=K(a),z(this[a]))return this[a](b);return this}function T(a,b,c){var d=""+Math.abs(a),e=b-d.length,f=a>=0;return(f?c?"+":"":"-")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}function U(a,b,c,d){var e=d;"string"==typeof d&&(e=function(){return this[d]()}),a&&(Le[a]=e),b&&(Le[b[0]]=function(){return T(e.apply(this,arguments),b[1],b[2])}),c&&(Le[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function V(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function W(a){var b,c,d=a.match(Ie);for(b=0,c=d.length;b<c;b++)Le[d[b]]?d[b]=Le[d[b]]:d[b]=V(d[b]);return function(b){var e,f="";for(e=0;e<c;e++)f+=z(d[e])?d[e].call(b,a):d[e];return f}}function X(a,b){return a.isValid()?(b=Y(b,a.localeData()),Ke[b]=Ke[b]||W(b),Ke[b](a)):a.localeData().invalidDate()}function Y(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Je.lastIndex=0;d>=0&&Je.test(a);)a=a.replace(Je,c),Je.lastIndex=0,d-=1;return a}function Z(a,b,c){bf[a]=z(b)?b:function(a,d){return a&&c?c:b}}function $(a,b){return j(bf,a)?bf[a](b._strict,b._locale):new RegExp(_(a))}function _(a){return aa(a.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e}))}function aa(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function ba(a,b){var c,d=b;for("string"==typeof a&&(a=[a]),g(b)&&(d=function(a,c){c[b]=u(a)}),c=0;c<a.length;c++)cf[a[c]]=d}function ca(a,b){ba(a,function(a,c,d,e){d._w=d._w||{},b(a,d._w,d,e)})}function da(a,b,c){null!=b&&j(cf,a)&&cf[a](b,c._a,c,a)}function ea(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function fa(a,b){return a?c(this._months)?this._months[a.month()]:this._months[(this._months.isFormat||of).test(b)?"format":"standalone"][a.month()]:c(this._months)?this._months:this._months.standalone}function ga(a,b){return a?c(this._monthsShort)?this._monthsShort[a.month()]:this._monthsShort[of.test(b)?"format":"standalone"][a.month()]:c(this._monthsShort)?this._monthsShort:this._monthsShort.standalone}function ha(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],d=0;d<12;++d)f=l([2e3,d]),this._shortMonthsParse[d]=this.monthsShort(f,"").toLocaleLowerCase(),this._longMonthsParse[d]=this.months(f,"").toLocaleLowerCase();return c?"MMM"===b?(e=nf.call(this._shortMonthsParse,g),e!==-1?e:null):(e=nf.call(this._longMonthsParse,g),e!==-1?e:null):"MMM"===b?(e=nf.call(this._shortMonthsParse,g),e!==-1?e:(e=nf.call(this._longMonthsParse,g),e!==-1?e:null)):(e=nf.call(this._longMonthsParse,g),e!==-1?e:(e=nf.call(this._shortMonthsParse,g),e!==-1?e:null))}function ia(a,b,c){var d,e,f;if(this._monthsParseExact)return ha.call(this,a,b,c);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),d=0;d<12;d++){if(e=l([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}}function ja(a,b){var c;if(!a.isValid())return a;if("string"==typeof b)if(/^\d+$/.test(b))b=u(b);else if(b=a.localeData().monthsParse(b),!g(b))return a;return c=Math.min(a.date(),ea(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a}function ka(b){return null!=b?(ja(this,b),a.updateOffset(this,!0),this):P(this,"Month")}function la(){return ea(this.year(),this.month())}function ma(a){return this._monthsParseExact?(j(this,"_monthsRegex")||oa.call(this),a?this._monthsShortStrictRegex:this._monthsShortRegex):(j(this,"_monthsShortRegex")||(this._monthsShortRegex=rf),this._monthsShortStrictRegex&&a?this._monthsShortStrictRegex:this._monthsShortRegex)}function na(a){return this._monthsParseExact?(j(this,"_monthsRegex")||oa.call(this),a?this._monthsStrictRegex:this._monthsRegex):(j(this,"_monthsRegex")||(this._monthsRegex=sf),this._monthsStrictRegex&&a?this._monthsStrictRegex:this._monthsRegex)}function oa(){function a(a,b){return b.length-a.length}var b,c,d=[],e=[],f=[];for(b=0;b<12;b++)c=l([2e3,b]),d.push(this.monthsShort(c,"")),e.push(this.months(c,"")),f.push(this.months(c,"")),f.push(this.monthsShort(c,""));for(d.sort(a),e.sort(a),f.sort(a),b=0;b<12;b++)d[b]=aa(d[b]),e[b]=aa(e[b]);for(b=0;b<24;b++)f[b]=aa(f[b]);this._monthsRegex=new RegExp("^("+f.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+e.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+d.join("|")+")","i")}function pa(a){return qa(a)?366:365}function qa(a){return a%4===0&&a%100!==0||a%400===0}function ra(){return qa(this.year())}function sa(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return a<100&&a>=0&&isFinite(h.getFullYear())&&h.setFullYear(a),h}function ta(a){var b=new Date(Date.UTC.apply(null,arguments));return a<100&&a>=0&&isFinite(b.getUTCFullYear())&&b.setUTCFullYear(a),b}function ua(a,b,c){var d=7+b-c,e=(7+ta(a,0,d).getUTCDay()-b)%7;return-e+d-1}function va(a,b,c,d,e){var f,g,h=(7+c-d)%7,i=ua(a,d,e),j=1+7*(b-1)+h+i;return j<=0?(f=a-1,g=pa(f)+j):j>pa(a)?(f=a+1,g=j-pa(a)):(f=a,g=j),{year:f,dayOfYear:g}}function wa(a,b,c){var d,e,f=ua(a.year(),b,c),g=Math.floor((a.dayOfYear()-f-1)/7)+1;return g<1?(e=a.year()-1,d=g+xa(e,b,c)):g>xa(a.year(),b,c)?(d=g-xa(a.year(),b,c),e=a.year()+1):(e=a.year(),d=g),{week:d,year:e}}function xa(a,b,c){var d=ua(a,b,c),e=ua(a+1,b,c);return(pa(a)-d+e)/7}function ya(a){return wa(a,this._week.dow,this._week.doy).week}function za(){return this._week.dow}function Aa(){return this._week.doy}function Ba(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")}function Ca(a){var b=wa(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")}function Da(a,b){return"string"!=typeof a?a:isNaN(a)?(a=b.weekdaysParse(a),"number"==typeof a?a:null):parseInt(a,10)}function Ea(a,b){return"string"==typeof a?b.weekdaysParse(a)%7||7:isNaN(a)?null:a}function Fa(a,b){return a?c(this._weekdays)?this._weekdays[a.day()]:this._weekdays[this._weekdays.isFormat.test(b)?"format":"standalone"][a.day()]:c(this._weekdays)?this._weekdays:this._weekdays.standalone}function Ga(a){return a?this._weekdaysShort[a.day()]:this._weekdaysShort}function Ha(a){return a?this._weekdaysMin[a.day()]:this._weekdaysMin}function Ia(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],d=0;d<7;++d)f=l([2e3,1]).day(d),this._minWeekdaysParse[d]=this.weekdaysMin(f,"").toLocaleLowerCase(),this._shortWeekdaysParse[d]=this.weekdaysShort(f,"").toLocaleLowerCase(),this._weekdaysParse[d]=this.weekdays(f,"").toLocaleLowerCase();return c?"dddd"===b?(e=nf.call(this._weekdaysParse,g),e!==-1?e:null):"ddd"===b?(e=nf.call(this._shortWeekdaysParse,g),e!==-1?e:null):(e=nf.call(this._minWeekdaysParse,g),e!==-1?e:null):"dddd"===b?(e=nf.call(this._weekdaysParse,g),e!==-1?e:(e=nf.call(this._shortWeekdaysParse,g),e!==-1?e:(e=nf.call(this._minWeekdaysParse,g),e!==-1?e:null))):"ddd"===b?(e=nf.call(this._shortWeekdaysParse,g),e!==-1?e:(e=nf.call(this._weekdaysParse,g),e!==-1?e:(e=nf.call(this._minWeekdaysParse,g),e!==-1?e:null))):(e=nf.call(this._minWeekdaysParse,g),e!==-1?e:(e=nf.call(this._weekdaysParse,g),e!==-1?e:(e=nf.call(this._shortWeekdaysParse,g),e!==-1?e:null)))}function Ja(a,b,c){var d,e,f;if(this._weekdaysParseExact)return Ia.call(this,a,b,c);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),d=0;d<7;d++){if(e=l([2e3,1]).day(d),c&&!this._fullWeekdaysParse[d]&&(this._fullWeekdaysParse[d]=new RegExp("^"+this.weekdays(e,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[d]=new RegExp("^"+this.weekdaysShort(e,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[d]=new RegExp("^"+this.weekdaysMin(e,"").replace(".",".?")+"$","i")),this._weekdaysParse[d]||(f="^"+this.weekdays(e,"")+"|^"+this.weekdaysShort(e,"")+"|^"+this.weekdaysMin(e,""),this._weekdaysParse[d]=new RegExp(f.replace(".",""),"i")),c&&"dddd"===b&&this._fullWeekdaysParse[d].test(a))return d;if(c&&"ddd"===b&&this._shortWeekdaysParse[d].test(a))return d;if(c&&"dd"===b&&this._minWeekdaysParse[d].test(a))return d;if(!c&&this._weekdaysParse[d].test(a))return d}}function Ka(a){if(!this.isValid())return null!=a?this:NaN;var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=Da(a,this.localeData()),this.add(a-b,"d")):b}function La(a){if(!this.isValid())return null!=a?this:NaN;var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")}function Ma(a){if(!this.isValid())return null!=a?this:NaN;if(null!=a){var b=Ea(a,this.localeData());return this.day(this.day()%7?b:b-7)}return this.day()||7}function Na(a){return this._weekdaysParseExact?(j(this,"_weekdaysRegex")||Qa.call(this),a?this._weekdaysStrictRegex:this._weekdaysRegex):(j(this,"_weekdaysRegex")||(this._weekdaysRegex=yf),this._weekdaysStrictRegex&&a?this._weekdaysStrictRegex:this._weekdaysRegex)}function Oa(a){return this._weekdaysParseExact?(j(this,"_weekdaysRegex")||Qa.call(this),a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(j(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=zf),this._weekdaysShortStrictRegex&&a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Pa(a){return this._weekdaysParseExact?(j(this,"_weekdaysRegex")||Qa.call(this),a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(j(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Af),this._weekdaysMinStrictRegex&&a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Qa(){function a(a,b){return b.length-a.length}var b,c,d,e,f,g=[],h=[],i=[],j=[];for(b=0;b<7;b++)c=l([2e3,1]).day(b),d=this.weekdaysMin(c,""),e=this.weekdaysShort(c,""),f=this.weekdays(c,""),g.push(d),h.push(e),i.push(f),j.push(d),j.push(e),j.push(f);for(g.sort(a),h.sort(a),i.sort(a),j.sort(a),b=0;b<7;b++)h[b]=aa(h[b]),i[b]=aa(i[b]),j[b]=aa(j[b]);this._weekdaysRegex=new RegExp("^("+j.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+g.join("|")+")","i")}function Ra(){return this.hours()%12||12}function Sa(){return this.hours()||24}function Ta(a,b){U(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function Ua(a,b){return b._meridiemParse}function Va(a){return"p"===(a+"").toLowerCase().charAt(0)}function Wa(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"}function Xa(a){return a?a.toLowerCase().replace("_","-"):a}function Ya(a){for(var b,c,d,e,f=0;f<a.length;){for(e=Xa(a[f]).split("-"),b=e.length,c=Xa(a[f+1]),c=c?c.split("-"):null;b>0;){if(d=Za(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&v(e,c,!0)>=b-1)break;b--}f++}return null}function Za(a){var b=null;if(!Ff[a]&&"undefined"!=typeof module&&module&&module.exports)try{b=Bf._abbr,require("./locale/"+a),$a(b)}catch(a){}return Ff[a]}function $a(a,b){var c;return a&&(c=f(b)?bb(a):_a(a,b),c&&(Bf=c)),Bf._abbr}function _a(a,b){if(null!==b){var c=Ef;if(b.abbr=a,null!=Ff[a])y("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),c=Ff[a]._config;else if(null!=b.parentLocale){if(null==Ff[b.parentLocale])return Gf[b.parentLocale]||(Gf[b.parentLocale]=[]),Gf[b.parentLocale].push({name:a,config:b}),null;c=Ff[b.parentLocale]._config}return Ff[a]=new C(B(c,b)),Gf[a]&&Gf[a].forEach(function(a){_a(a.name,a.config)}),$a(a),Ff[a]}return delete Ff[a],null}function ab(a,b){if(null!=b){var c,d=Ef;null!=Ff[a]&&(d=Ff[a]._config),b=B(d,b),c=new C(b),c.parentLocale=Ff[a],Ff[a]=c,$a(a)}else null!=Ff[a]&&(null!=Ff[a].parentLocale?Ff[a]=Ff[a].parentLocale:null!=Ff[a]&&delete Ff[a]);return Ff[a]}function bb(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return Bf;if(!c(a)){if(b=Za(a))return b;a=[a]}return Ya(a)}function cb(){return ze(Ff)}function db(a){var b,c=a._a;return c&&n(a).overflow===-2&&(b=c[ef]<0||c[ef]>11?ef:c[ff]<1||c[ff]>ea(c[df],c[ef])?ff:c[gf]<0||c[gf]>24||24===c[gf]&&(0!==c[hf]||0!==c[jf]||0!==c[kf])?gf:c[hf]<0||c[hf]>59?hf:c[jf]<0||c[jf]>59?jf:c[kf]<0||c[kf]>999?kf:-1,n(a)._overflowDayOfYear&&(b<df||b>ff)&&(b=ff),n(a)._overflowWeeks&&b===-1&&(b=lf),n(a)._overflowWeekday&&b===-1&&(b=mf),n(a).overflow=b),a}function eb(a){var b,c,d,e,f,g,h=a._i,i=Hf.exec(h)||If.exec(h);if(i){for(n(a).iso=!0,b=0,c=Kf.length;b<c;b++)if(Kf[b][1].exec(i[1])){e=Kf[b][0],d=Kf[b][2]!==!1;break}if(null==e)return void(a._isValid=!1);if(i[3]){for(b=0,c=Lf.length;b<c;b++)if(Lf[b][1].exec(i[3])){f=(i[2]||" ")+Lf[b][0];break}if(null==f)return void(a._isValid=!1)}if(!d&&null!=f)return void(a._isValid=!1);if(i[4]){if(!Jf.exec(i[4]))return void(a._isValid=!1);g="Z"}a._f=e+(f||"")+(g||""),lb(a)}else a._isValid=!1}function fb(a){var b,c,d,e,f,g,h,i,j={" GMT":" +0000"," EDT":" -0400"," EST":" -0500"," CDT":" -0500"," CST":" -0600"," MDT":" -0600"," MST":" -0700"," PDT":" -0700"," PST":" -0800"},k="YXWVUTSRQPONZABCDEFGHIKLM";if(b=a._i.replace(/\([^\)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s|\s$/g,""),c=Nf.exec(b)){if(d=c[1]?"ddd"+(5===c[1].length?", ":" "):"",e="D MMM "+(c[2].length>10?"YYYY ":"YY "),f="HH:mm"+(c[4]?":ss":""),c[1]){var l=new Date(c[2]),m=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][l.getDay()];if(c[1].substr(0,3)!==m)return n(a).weekdayMismatch=!0,void(a._isValid=!1)}switch(c[5].length){case 2:0===i?h=" +0000":(i=k.indexOf(c[5][1].toUpperCase())-12,h=(i<0?" -":" +")+(""+i).replace(/^-?/,"0").match(/..$/)[0]+"00");break;case 4:h=j[c[5]];break;default:h=j[" GMT"]}c[5]=h,a._i=c.splice(1).join(""),g=" ZZ",a._f=d+e+f+g,lb(a),n(a).rfc2822=!0}else a._isValid=!1}function gb(b){var c=Mf.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(eb(b),void(b._isValid===!1&&(delete b._isValid,fb(b),b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b)))))}function hb(a,b,c){return null!=a?a:null!=b?b:c}function ib(b){var c=new Date(a.now());return b._useUTC?[c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate()]:[c.getFullYear(),c.getMonth(),c.getDate()]}function jb(a){var b,c,d,e,f=[];if(!a._d){for(d=ib(a),a._w&&null==a._a[ff]&&null==a._a[ef]&&kb(a),null!=a._dayOfYear&&(e=hb(a._a[df],d[df]),(a._dayOfYear>pa(e)||0===a._dayOfYear)&&(n(a)._overflowDayOfYear=!0),c=ta(e,0,a._dayOfYear),a._a[ef]=c.getUTCMonth(),a._a[ff]=c.getUTCDate()),b=0;b<3&&null==a._a[b];++b)a._a[b]=f[b]=d[b];for(;b<7;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[gf]&&0===a._a[hf]&&0===a._a[jf]&&0===a._a[kf]&&(a._nextDay=!0,a._a[gf]=0),a._d=(a._useUTC?ta:sa).apply(null,f),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[gf]=24)}}function kb(a){var b,c,d,e,f,g,h,i;if(b=a._w,null!=b.GG||null!=b.W||null!=b.E)f=1,g=4,c=hb(b.GG,a._a[df],wa(tb(),1,4).year),d=hb(b.W,1),e=hb(b.E,1),(e<1||e>7)&&(i=!0);else{f=a._locale._week.dow,g=a._locale._week.doy;var j=wa(tb(),f,g);c=hb(b.gg,a._a[df],j.year),d=hb(b.w,j.week),null!=b.d?(e=b.d,(e<0||e>6)&&(i=!0)):null!=b.e?(e=b.e+f,(b.e<0||b.e>6)&&(i=!0)):e=f}d<1||d>xa(c,f,g)?n(a)._overflowWeeks=!0:null!=i?n(a)._overflowWeekday=!0:(h=va(c,d,e,f,g),a._a[df]=h.year,a._dayOfYear=h.dayOfYear)}function lb(b){if(b._f===a.ISO_8601)return void eb(b);if(b._f===a.RFC_2822)return void fb(b);b._a=[],n(b).empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,j=0;for(e=Y(b._f,b._locale).match(Ie)||[],c=0;c<e.length;c++)f=e[c],d=(h.match($(f,b))||[])[0],d&&(g=h.substr(0,h.indexOf(d)),g.length>0&&n(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),j+=d.length),Le[f]?(d?n(b).empty=!1:n(b).unusedTokens.push(f),da(f,d,b)):b._strict&&!d&&n(b).unusedTokens.push(f);n(b).charsLeftOver=i-j,h.length>0&&n(b).unusedInput.push(h),b._a[gf]<=12&&n(b).bigHour===!0&&b._a[gf]>0&&(n(b).bigHour=void 0),n(b).parsedDateParts=b._a.slice(0),n(b).meridiem=b._meridiem,b._a[gf]=mb(b._locale,b._a[gf],b._meridiem),jb(b),db(b)}function mb(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&b<12&&(b+=12),d||12!==b||(b=0),b):b}function nb(a){var b,c,d,e,f;if(0===a._f.length)return n(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=0;e<a._f.length;e++)f=0,b=q({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._f=a._f[e],lb(b),o(b)&&(f+=n(b).charsLeftOver,f+=10*n(b).unusedTokens.length,n(b).score=f,(null==d||f<d)&&(d=f,c=b));k(a,c||b)}function ob(a){if(!a._d){var b=L(a._i);a._a=i([b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],function(a){return a&&parseInt(a,10)}),jb(a)}}function pb(a){var b=new r(db(qb(a)));return b._nextDay&&(b.add(1,"d"),b._nextDay=void 0),b}function qb(a){var b=a._i,d=a._f;return a._locale=a._locale||bb(a._l),null===b||void 0===d&&""===b?p({nullInput:!0}):("string"==typeof b&&(a._i=b=a._locale.preparse(b)),s(b)?new r(db(b)):(h(b)?a._d=b:c(d)?nb(a):d?lb(a):rb(a),o(a)||(a._d=null),a))}function rb(b){var e=b._i;f(e)?b._d=new Date(a.now()):h(e)?b._d=new Date(e.valueOf()):"string"==typeof e?gb(b):c(e)?(b._a=i(e.slice(0),function(a){return parseInt(a,10)}),jb(b)):d(e)?ob(b):g(e)?b._d=new Date(e):a.createFromInputFallback(b)}function sb(a,b,f,g,h){var i={};return f!==!0&&f!==!1||(g=f,f=void 0),(d(a)&&e(a)||c(a)&&0===a.length)&&(a=void 0),i._isAMomentObject=!0,i._useUTC=i._isUTC=h,i._l=f,i._i=a,i._f=b,i._strict=g,pb(i)}function tb(a,b,c,d){return sb(a,b,c,d,!1)}function ub(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return tb();for(d=b[0],e=1;e<b.length;++e)b[e].isValid()&&!b[e][a](d)||(d=b[e]);return d}function vb(){var a=[].slice.call(arguments,0);return ub("isBefore",a)}function wb(){var a=[].slice.call(arguments,0);return ub("isAfter",a)}function xb(a){for(var b in a)if(Rf.indexOf(b)===-1||null!=a[b]&&isNaN(a[b]))return!1;for(var c=!1,d=0;d<Rf.length;++d)if(a[Rf[d]]){if(c)return!1;parseFloat(a[Rf[d]])!==u(a[Rf[d]])&&(c=!0)}return!0}function yb(){return this._isValid}function zb(){return Sb(NaN)}function Ab(a){var b=L(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._isValid=xb(b),this._milliseconds=+k+1e3*j+6e4*i+1e3*h*60*60,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=bb(),this._bubble()}function Bb(a){return a instanceof Ab}function Cb(a){return a<0?Math.round(-1*a)*-1:Math.round(a)}function Db(a,b){U(a,0,0,function(){var a=this.utcOffset(),c="+";return a<0&&(a=-a,c="-"),c+T(~~(a/60),2)+b+T(~~a%60,2)})}function Eb(a,b){var c=(b||"").match(a);if(null===c)return null;var d=c[c.length-1]||[],e=(d+"").match(Sf)||["-",0,0],f=+(60*e[1])+u(e[2]);return 0===f?0:"+"===e[0]?f:-f}function Fb(b,c){var d,e;return c._isUTC?(d=c.clone(),e=(s(b)||h(b)?b.valueOf():tb(b).valueOf())-d.valueOf(),d._d.setTime(d._d.valueOf()+e),a.updateOffset(d,!1),d):tb(b).local()}function Gb(a){return 15*-Math.round(a._d.getTimezoneOffset()/15)}function Hb(b,c,d){var e,f=this._offset||0;if(!this.isValid())return null!=b?this:NaN;if(null!=b){if("string"==typeof b){if(b=Eb($e,b),null===b)return this}else Math.abs(b)<16&&!d&&(b=60*b);return!this._isUTC&&c&&(e=Gb(this)),this._offset=b,this._isUTC=!0,null!=e&&this.add(e,"m"),f!==b&&(!c||this._changeInProgress?Xb(this,Sb(b-f,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?f:Gb(this)}function Ib(a,b){return null!=a?("string"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}function Jb(a){return this.utcOffset(0,a)}function Kb(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(Gb(this),"m")),this}function Lb(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var a=Eb(Ze,this._i);null!=a?this.utcOffset(a):this.utcOffset(0,!0)}return this}function Mb(a){return!!this.isValid()&&(a=a?tb(a).utcOffset():0,(this.utcOffset()-a)%60===0)}function Nb(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ob(){if(!f(this._isDSTShifted))return this._isDSTShifted;var a={};if(q(a,this),a=qb(a),a._a){var b=a._isUTC?l(a._a):tb(a._a);this._isDSTShifted=this.isValid()&&v(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Pb(){return!!this.isValid()&&!this._isUTC}function Qb(){return!!this.isValid()&&this._isUTC}function Rb(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function Sb(a,b){var c,d,e,f=a,h=null;return Bb(a)?f={ms:a._milliseconds,d:a._days,M:a._months}:g(a)?(f={},b?f[b]=a:f.milliseconds=a):(h=Tf.exec(a))?(c="-"===h[1]?-1:1,f={y:0,d:u(h[ff])*c,h:u(h[gf])*c,m:u(h[hf])*c,s:u(h[jf])*c,ms:u(Cb(1e3*h[kf]))*c}):(h=Uf.exec(a))?(c="-"===h[1]?-1:1,f={y:Tb(h[2],c),M:Tb(h[3],c),w:Tb(h[4],c),d:Tb(h[5],c),h:Tb(h[6],c),m:Tb(h[7],c),s:Tb(h[8],c)}):null==f?f={}:"object"==typeof f&&("from"in f||"to"in f)&&(e=Vb(tb(f.from),tb(f.to)),f={},f.ms=e.milliseconds,f.M=e.months),d=new Ab(f),Bb(a)&&j(a,"_locale")&&(d._locale=a._locale),d}function Tb(a,b){var c=a&&parseFloat(a.replace(",","."));return(isNaN(c)?0:c)*b}function Ub(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function Vb(a,b){var c;return a.isValid()&&b.isValid()?(b=Fb(b,a),a.isBefore(b)?c=Ub(a,b):(c=Ub(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c):{milliseconds:0,months:0}}function Wb(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(y(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=Sb(c,d),Xb(this,e,a),this}}function Xb(b,c,d,e){var f=c._milliseconds,g=Cb(c._days),h=Cb(c._months);b.isValid()&&(e=null==e||e,f&&b._d.setTime(b._d.valueOf()+f*d),g&&Q(b,"Date",P(b,"Date")+g*d),h&&ja(b,P(b,"Month")+h*d),e&&a.updateOffset(b,g||h))}function Yb(a,b){var c=a.diff(b,"days",!0);return c<-6?"sameElse":c<-1?"lastWeek":c<0?"lastDay":c<1?"sameDay":c<2?"nextDay":c<7?"nextWeek":"sameElse"}function Zb(b,c){var d=b||tb(),e=Fb(d,this).startOf("day"),f=a.calendarFormat(this,e)||"sameElse",g=c&&(z(c[f])?c[f].call(this,d):c[f]);return this.format(g||this.localeData().calendar(f,this,tb(d)))}function $b(){return new r(this)}function _b(a,b){var c=s(a)?a:tb(a);return!(!this.isValid()||!c.isValid())&&(b=K(f(b)?"millisecond":b),"millisecond"===b?this.valueOf()>c.valueOf():c.valueOf()<this.clone().startOf(b).valueOf())}function ac(a,b){var c=s(a)?a:tb(a);return!(!this.isValid()||!c.isValid())&&(b=K(f(b)?"millisecond":b),"millisecond"===b?this.valueOf()<c.valueOf():this.clone().endOf(b).valueOf()<c.valueOf())}function bc(a,b,c,d){return d=d||"()",("("===d[0]?this.isAfter(a,c):!this.isBefore(a,c))&&(")"===d[1]?this.isBefore(b,c):!this.isAfter(b,c))}function cc(a,b){var c,d=s(a)?a:tb(a);return!(!this.isValid()||!d.isValid())&&(b=K(b||"millisecond"),"millisecond"===b?this.valueOf()===d.valueOf():(c=d.valueOf(),this.clone().startOf(b).valueOf()<=c&&c<=this.clone().endOf(b).valueOf()))}function dc(a,b){return this.isSame(a,b)||this.isAfter(a,b)}function ec(a,b){return this.isSame(a,b)||this.isBefore(a,b)}function fc(a,b,c){var d,e,f,g;return this.isValid()?(d=Fb(a,this),d.isValid()?(e=6e4*(d.utcOffset()-this.utcOffset()),b=K(b),"year"===b||"month"===b||"quarter"===b?(g=gc(this,d),"quarter"===b?g/=3:"year"===b&&(g/=12)):(f=this-d,g="second"===b?f/1e3:"minute"===b?f/6e4:"hour"===b?f/36e5:"day"===b?(f-e)/864e5:"week"===b?(f-e)/6048e5:f),c?g:t(g)):NaN):NaN}function gc(a,b){var c,d,e=12*(b.year()-a.year())+(b.month()-a.month()),f=a.clone().add(e,"months");return b-f<0?(c=a.clone().add(e-1,"months"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,"months"),d=(b-f)/(c-f)),-(e+d)||0}function hc(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function ic(){if(!this.isValid())return null;var a=this.clone().utc();return a.year()<0||a.year()>9999?X(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):z(Date.prototype.toISOString)?this.toDate().toISOString():X(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function jc(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var a="moment",b="";this.isLocal()||(a=0===this.utcOffset()?"moment.utc":"moment.parseZone",b="Z");var c="["+a+'("]',d=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",e="-MM-DD[T]HH:mm:ss.SSS",f=b+'[")]';return this.format(c+d+e+f)}function kc(b){b||(b=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var c=X(this,b);return this.localeData().postformat(c)}function lc(a,b){return this.isValid()&&(s(a)&&a.isValid()||tb(a).isValid())?Sb({to:this,from:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function mc(a){return this.from(tb(),a)}function nc(a,b){return this.isValid()&&(s(a)&&a.isValid()||tb(a).isValid())?Sb({from:this,to:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function oc(a){return this.to(tb(),a)}function pc(a){var b;return void 0===a?this._locale._abbr:(b=bb(a),null!=b&&(this._locale=b),this)}function qc(){return this._locale}function rc(a){switch(a=K(a)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a&&this.weekday(0),"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this}function sc(a){return a=K(a),void 0===a||"millisecond"===a?this:("date"===a&&(a="day"),this.startOf(a).add(1,"isoWeek"===a?"week":a).subtract(1,"ms"))}function tc(){return this._d.valueOf()-6e4*(this._offset||0)}function uc(){return Math.floor(this.valueOf()/1e3)}function vc(){return new Date(this.valueOf())}function wc(){var a=this;return[a.year(),a.month(),a.date(),a.hour(),a.minute(),a.second(),a.millisecond()]}function xc(){var a=this;return{years:a.year(),months:a.month(),date:a.date(),hours:a.hours(),minutes:a.minutes(),seconds:a.seconds(),milliseconds:a.milliseconds()}}function yc(){return this.isValid()?this.toISOString():null}function zc(){return o(this)}function Ac(){ return k({},n(this))}function Bc(){return n(this).overflow}function Cc(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Dc(a,b){U(0,[a,a.length],0,b)}function Ec(a){return Ic.call(this,a,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function Fc(a){return Ic.call(this,a,this.isoWeek(),this.isoWeekday(),1,4)}function Gc(){return xa(this.year(),1,4)}function Hc(){var a=this.localeData()._week;return xa(this.year(),a.dow,a.doy)}function Ic(a,b,c,d,e){var f;return null==a?wa(this,d,e).year:(f=xa(a,d,e),b>f&&(b=f),Jc.call(this,a,b,c,d,e))}function Jc(a,b,c,d,e){var f=va(a,b,c,d,e),g=ta(f.year,0,f.dayOfYear);return this.year(g.getUTCFullYear()),this.month(g.getUTCMonth()),this.date(g.getUTCDate()),this}function Kc(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)}function Lc(a){var b=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")}function Mc(a,b){b[kf]=u(1e3*("0."+a))}function Nc(){return this._isUTC?"UTC":""}function Oc(){return this._isUTC?"Coordinated Universal Time":""}function Pc(a){return tb(1e3*a)}function Qc(){return tb.apply(null,arguments).parseZone()}function Rc(a){return a}function Sc(a,b,c,d){var e=bb(),f=l().set(d,b);return e[c](f,a)}function Tc(a,b,c){if(g(a)&&(b=a,a=void 0),a=a||"",null!=b)return Sc(a,b,c,"month");var d,e=[];for(d=0;d<12;d++)e[d]=Sc(a,d,c,"month");return e}function Uc(a,b,c,d){"boolean"==typeof a?(g(b)&&(c=b,b=void 0),b=b||""):(b=a,c=b,a=!1,g(b)&&(c=b,b=void 0),b=b||"");var e=bb(),f=a?e._week.dow:0;if(null!=c)return Sc(b,(c+f)%7,d,"day");var h,i=[];for(h=0;h<7;h++)i[h]=Sc(b,(h+f)%7,d,"day");return i}function Vc(a,b){return Tc(a,b,"months")}function Wc(a,b){return Tc(a,b,"monthsShort")}function Xc(a,b,c){return Uc(a,b,c,"weekdays")}function Yc(a,b,c){return Uc(a,b,c,"weekdaysShort")}function Zc(a,b,c){return Uc(a,b,c,"weekdaysMin")}function $c(){var a=this._data;return this._milliseconds=dg(this._milliseconds),this._days=dg(this._days),this._months=dg(this._months),a.milliseconds=dg(a.milliseconds),a.seconds=dg(a.seconds),a.minutes=dg(a.minutes),a.hours=dg(a.hours),a.months=dg(a.months),a.years=dg(a.years),this}function _c(a,b,c,d){var e=Sb(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function ad(a,b){return _c(this,a,b,1)}function bd(a,b){return _c(this,a,b,-1)}function cd(a){return a<0?Math.floor(a):Math.ceil(a)}function dd(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data;return f>=0&&g>=0&&h>=0||f<=0&&g<=0&&h<=0||(f+=864e5*cd(fd(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=t(f/1e3),i.seconds=a%60,b=t(a/60),i.minutes=b%60,c=t(b/60),i.hours=c%24,g+=t(c/24),e=t(ed(g)),h+=e,g-=cd(fd(e)),d=t(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function ed(a){return 4800*a/146097}function fd(a){return 146097*a/4800}function gd(a){if(!this.isValid())return NaN;var b,c,d=this._milliseconds;if(a=K(a),"month"===a||"year"===a)return b=this._days+d/864e5,c=this._months+ed(b),"month"===a?c:c/12;switch(b=this._days+Math.round(fd(this._months)),a){case"week":return b/7+d/6048e5;case"day":return b+d/864e5;case"hour":return 24*b+d/36e5;case"minute":return 1440*b+d/6e4;case"second":return 86400*b+d/1e3;case"millisecond":return Math.floor(864e5*b)+d;default:throw new Error("Unknown unit "+a)}}function hd(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*u(this._months/12):NaN}function id(a){return function(){return this.as(a)}}function jd(a){return a=K(a),this.isValid()?this[a+"s"]():NaN}function kd(a){return function(){return this.isValid()?this._data[a]:NaN}}function ld(){return t(this.days()/7)}function md(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function nd(a,b,c){var d=Sb(a).abs(),e=tg(d.as("s")),f=tg(d.as("m")),g=tg(d.as("h")),h=tg(d.as("d")),i=tg(d.as("M")),j=tg(d.as("y")),k=e<=ug.ss&&["s",e]||e<ug.s&&["ss",e]||f<=1&&["m"]||f<ug.m&&["mm",f]||g<=1&&["h"]||g<ug.h&&["hh",g]||h<=1&&["d"]||h<ug.d&&["dd",h]||i<=1&&["M"]||i<ug.M&&["MM",i]||j<=1&&["y"]||["yy",j];return k[2]=b,k[3]=+a>0,k[4]=c,md.apply(null,k)}function od(a){return void 0===a?tg:"function"==typeof a&&(tg=a,!0)}function pd(a,b){return void 0!==ug[a]&&(void 0===b?ug[a]:(ug[a]=b,"s"===a&&(ug.ss=b-1),!0))}function qd(a){if(!this.isValid())return this.localeData().invalidDate();var b=this.localeData(),c=nd(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function rd(){if(!this.isValid())return this.localeData().invalidDate();var a,b,c,d=vg(this._milliseconds)/1e3,e=vg(this._days),f=vg(this._months);a=t(d/60),b=t(a/60),d%=60,a%=60,c=t(f/12),f%=12;var g=c,h=f,i=e,j=b,k=a,l=d,m=this.asSeconds();return m?(m<0?"-":"")+"P"+(g?g+"Y":"")+(h?h+"M":"")+(i?i+"D":"")+(j||k||l?"T":"")+(j?j+"H":"")+(k?k+"M":"")+(l?l+"S":""):"P0D"} //! moment.js locale configuration @@ -16905,7 +16909,8 @@ var Th=["جنوری","ÙØ±ÙˆØ±ÛŒ","مارچ","اپریل","مئی","جون","ج٠//! locale : Chinese (Taiwan) [zh-tw] //! author : Ben : https://github.com/ben-lin //! author : Chris Lam : https://github.com/hehachris -return a.defineLocale("ur",{months:Th,monthsShort:Th,weekdays:Uh,weekdaysShort:Uh,weekdaysMin:Uh,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ddddØŒ D MMMM YYYY HH:mm"},meridiemParse:/صبØ|شام/,isPM:function(a){return"شام"===a},meridiem:function(a,b,c){return a<12?"صبØ":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[Ú©Ù„ بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[Ú¯Ø°Ø´ØªÛ Ø±ÙˆØ² بوقت] LT",lastWeek:"[گذشتÛ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹÛ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماÛ",MM:"%d ماÛ",y:"ایک سال",yy:"%d سال"},preparse:function(a){return a.replace(/ØŒ/g,",")},postformat:function(a){return a.replace(/,/g,"ØŒ")},week:{dow:1,doy:4}}),a.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}}),a.defineLocale("uz",{months:"Ñнвар_феврал_март_апрел_май_июн_июл_авгуÑÑ‚_ÑентÑбр_октÑбр_ноÑбр_декабр".split("_"),monthsShort:"Ñнв_фев_мар_апр_май_июн_июл_авг_Ñен_окт_ноÑ_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун Ñоат] LT [да]",nextDay:"[Ðртага] LT [да]",nextWeek:"dddd [куни Ñоат] LT [да]",lastDay:"[Кеча Ñоат] LT [да]",lastWeek:"[Утган] dddd [куни Ñоат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурÑат",m:"бир дакика",mm:"%d дакика",h:"бир Ñоат",hh:"%d Ñоат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}}),a.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chá»§ nháºt_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(a){return/^ch$/i.test(a)},meridiem:function(a,b,c){return a<12?c?"sa":"SA":c?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngà y mai lúc] LT",nextWeek:"dddd [tuần tá»›i lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tá»›i",past:"%s trước",s:"và i giây",m:"má»™t phút",mm:"%d phút",h:"má»™t giá»",hh:"%d giá»",d:"má»™t ngà y",dd:"%d ngà y",M:"má»™t tháng",MM:"%d tháng",y:"má»™t năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}}),a.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Ãp~rÃl_~Máý_~Júñé~_Júl~ý_Ãú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ãpr_~Máý_~Júñ_~Júl_~Ãúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~FrÃd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~FrÃ_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ã~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"Ã~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",m:"á ~mÃñ~úté",mm:"%d m~Ãñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),a.defineLocale("yo",{months:"SẹÌrẹÌ_EÌ€reÌ€leÌ€_Ẹrẹ̀naÌ€_IÌ€gbeÌ_EÌ€bibi_OÌ€kuÌ€du_Agẹmo_OÌ€guÌn_Owewe_Ọ̀waÌ€raÌ€_BeÌluÌ_Ọ̀pẹ̀̀".split("_"),monthsShort:"SẹÌr_EÌ€rl_Ẹrn_IÌ€gb_EÌ€bi_OÌ€kuÌ€_Agẹ_OÌ€guÌ_Owe_Ọ̀waÌ€_BeÌl_Ọ̀pẹ̀̀".split("_"),weekdays:"AÌ€iÌ€kuÌ_AjeÌ_IÌ€sẹÌgun_Ọjá»ÌruÌ_Ọjá»Ìbá»_ẸtiÌ€_AÌ€baÌmẹÌta".split("_"),weekdaysShort:"AÌ€iÌ€k_AjeÌ_IÌ€sẹÌ_Ọjr_Ọjb_ẸtiÌ€_AÌ€baÌ".split("_"),weekdaysMin:"AÌ€iÌ€_Aj_IÌ€s_Ọr_Ọb_Ẹt_AÌ€b".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[OÌ€niÌ€ ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ toÌn'bá»] [ni] LT",lastDay:"[AÌ€na ni] LT",lastWeek:"dddd [Ọsẹ̀ toÌlá»Ì] [ni] LT",sameElse:"L"},relativeTime:{future:"niÌ %s",past:"%s ká»jaÌ",s:"iÌ€sẹjuÌ aayaÌ die",m:"iÌ€sẹjuÌ kan",mm:"iÌ€sẹjuÌ %d",h:"waÌkati kan",hh:"waÌkati %d",d:"á»já»Ì kan",dd:"á»já»Ì %d",M:"osuÌ€ kan",MM:"osuÌ€ %d",y:"á»duÌn kan",yy:"á»duÌn %d"},dayOfMonthOrdinalParse:/á»já»Ì\s\d{1,2}/,ordinal:"á»já»Ì %d",week:{dow:1,doy:4}}),a.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_å…æœˆ_七月_八月_乿œˆ_åæœˆ_å一月_å二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期å…".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周å…".split("_"),weekdaysMin:"æ—¥_一_二_三_å››_五_å…".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYYå¹´MMMDæ—¥",LL:"YYYYå¹´MMMDæ—¥",LLL:"YYYYå¹´MMMDæ—¥Ah点mm分",LLLL:"YYYYå¹´MMMDæ—¥ddddAh点mm分",l:"YYYYå¹´MMMDæ—¥",ll:"YYYYå¹´MMMDæ—¥",lll:"YYYYå¹´MMMDæ—¥ HH:mm",llll:"YYYYå¹´MMMDæ—¥dddd HH:mm"},meridiemParse:/凌晨|早上|上åˆ|ä¸åˆ|下åˆ|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上åˆ"===b?a:"下åˆ"===b||"晚上"===b?a+12:a>=11?a:a+12},meridiem:function(a,b,c){var d=100*a+b;return d<600?"凌晨":d<900?"早上":d<1130?"上åˆ":d<1230?"ä¸åˆ":d<1800?"下åˆ":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(æ—¥|月|周)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"æ—¥";case"M":return a+"月";case"w":case"W":return a+"周";default:return a}},relativeTime:{future:"%s内",past:"%så‰",s:"å‡ ç§’",m:"1 分钟",mm:"%d 分钟",h:"1 å°æ—¶",hh:"%d å°æ—¶",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 å¹´",yy:"%d å¹´"},week:{dow:1,doy:4}}),a.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_å…æœˆ_七月_八月_乿œˆ_åæœˆ_å一月_å二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期å…".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週å…".split("_"),weekdaysMin:"æ—¥_一_二_三_å››_五_å…".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYYå¹´MMMDæ—¥",LL:"YYYYå¹´MMMDæ—¥",LLL:"YYYYå¹´MMMDæ—¥ HH:mm",LLLL:"YYYYå¹´MMMDæ—¥dddd HH:mm",l:"YYYYå¹´MMMDæ—¥",ll:"YYYYå¹´MMMDæ—¥",lll:"YYYYå¹´MMMDæ—¥ HH:mm",llll:"YYYYå¹´MMMDæ—¥dddd HH:mm"},meridiemParse:/凌晨|早上|上åˆ|ä¸åˆ|下åˆ|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上åˆ"===b?a:"ä¸åˆ"===b?a>=11?a:a+12:"下åˆ"===b||"晚上"===b?a+12:void 0},meridiem:function(a,b,c){var d=100*a+b;return d<600?"凌晨":d<900?"早上":d<1130?"上åˆ":d<1230?"ä¸åˆ":d<1800?"下åˆ":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(æ—¥|月|週)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"æ—¥";case"M":return a+"月";case"w":case"W":return a+"週";default:return a}},relativeTime:{future:"%så…§",past:"%så‰",s:"幾秒",m:"1 分é˜",mm:"%d 分é˜",h:"1 å°æ™‚",hh:"%d å°æ™‚",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 å¹´",yy:"%d å¹´"}}),a.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_å…æœˆ_七月_八月_乿œˆ_åæœˆ_å一月_å二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期å…".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週å…".split("_"),weekdaysMin:"æ—¥_一_二_三_å››_五_å…".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYYå¹´MMMDæ—¥",LL:"YYYYå¹´MMMDæ—¥",LLL:"YYYYå¹´MMMDæ—¥ HH:mm",LLLL:"YYYYå¹´MMMDæ—¥dddd HH:mm",l:"YYYYå¹´MMMDæ—¥",ll:"YYYYå¹´MMMDæ—¥",lll:"YYYYå¹´MMMDæ—¥ HH:mm",llll:"YYYYå¹´MMMDæ—¥dddd HH:mm"},meridiemParse:/凌晨|早上|上åˆ|ä¸åˆ|下åˆ|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上åˆ"===b?a:"ä¸åˆ"===b?a>=11?a:a+12:"下åˆ"===b||"晚上"===b?a+12:void 0},meridiem:function(a,b,c){var d=100*a+b;return d<600?"凌晨":d<900?"早上":d<1130?"上åˆ":d<1230?"ä¸åˆ":d<1800?"下åˆ":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(æ—¥|月|週)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"æ—¥";case"M":return a+"月";case"w":case"W":return a+"週";default:return a}},relativeTime:{future:"%så…§",past:"%så‰",s:"幾秒",m:"1 分é˜",mm:"%d 分é˜",h:"1 å°æ™‚",hh:"%d å°æ™‚",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 å¹´",yy:"%d å¹´"}}),a.locale("en"),a});/*! +return a.defineLocale("ur",{months:Th,monthsShort:Th,weekdays:Uh,weekdaysShort:Uh,weekdaysMin:Uh,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ddddØŒ D MMMM YYYY HH:mm"},meridiemParse:/صبØ|شام/,isPM:function(a){return"شام"===a},meridiem:function(a,b,c){return a<12?"صبØ":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[Ú©Ù„ بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[Ú¯Ø°Ø´ØªÛ Ø±ÙˆØ² بوقت] LT",lastWeek:"[گذشتÛ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹÛ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماÛ",MM:"%d ماÛ",y:"ایک سال",yy:"%d سال"},preparse:function(a){return a.replace(/ØŒ/g,",")},postformat:function(a){return a.replace(/,/g,"ØŒ")},week:{dow:1,doy:4}}),a.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}}),a.defineLocale("uz",{months:"Ñнвар_феврал_март_апрел_май_июн_июл_авгуÑÑ‚_ÑентÑбр_октÑбр_ноÑбр_декабр".split("_"),monthsShort:"Ñнв_фев_мар_апр_май_июн_июл_авг_Ñен_окт_ноÑ_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун Ñоат] LT [да]",nextDay:"[Ðртага] LT [да]",nextWeek:"dddd [куни Ñоат] LT [да]",lastDay:"[Кеча Ñоат] LT [да]",lastWeek:"[Утган] dddd [куни Ñоат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурÑат",m:"бир дакика",mm:"%d дакика",h:"бир Ñоат",hh:"%d Ñоат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}}),a.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chá»§ nháºt_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(a){return/^ch$/i.test(a)},meridiem:function(a,b,c){return a<12?c?"sa":"SA":c?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngà y mai lúc] LT",nextWeek:"dddd [tuần tá»›i lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tá»›i",past:"%s trước",s:"và i giây",m:"má»™t phút",mm:"%d phút",h:"má»™t giá»",hh:"%d giá»",d:"má»™t ngà y",dd:"%d ngà y",M:"má»™t tháng",MM:"%d tháng",y:"má»™t năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}}),a.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Ãp~rÃl_~Máý_~Júñé~_Júl~ý_Ãú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ãpr_~Máý_~Júñ_~Júl_~Ãúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~FrÃd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~FrÃ_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ã~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"Ã~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",m:"á ~mÃñ~úté",mm:"%d m~Ãñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),a.defineLocale("yo",{months:"SẹÌrẹÌ_EÌ€reÌ€leÌ€_Ẹrẹ̀naÌ€_IÌ€gbeÌ_EÌ€bibi_OÌ€kuÌ€du_Agẹmo_OÌ€guÌn_Owewe_Ọ̀waÌ€raÌ€_BeÌluÌ_Ọ̀pẹ̀̀".split("_"),monthsShort:"SẹÌr_EÌ€rl_Ẹrn_IÌ€gb_EÌ€bi_OÌ€kuÌ€_Agẹ_OÌ€guÌ_Owe_Ọ̀waÌ€_BeÌl_Ọ̀pẹ̀̀".split("_"),weekdays:"AÌ€iÌ€kuÌ_AjeÌ_IÌ€sẹÌgun_Ọjá»ÌruÌ_Ọjá»Ìbá»_ẸtiÌ€_AÌ€baÌmẹÌta".split("_"),weekdaysShort:"AÌ€iÌ€k_AjeÌ_IÌ€sẹÌ_Ọjr_Ọjb_ẸtiÌ€_AÌ€baÌ".split("_"),weekdaysMin:"AÌ€iÌ€_Aj_IÌ€s_Ọr_Ọb_Ẹt_AÌ€b".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[OÌ€niÌ€ ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ toÌn'bá»] [ni] LT",lastDay:"[AÌ€na ni] LT",lastWeek:"dddd [Ọsẹ̀ toÌlá»Ì] [ni] LT",sameElse:"L"},relativeTime:{future:"niÌ %s",past:"%s ká»jaÌ",s:"iÌ€sẹjuÌ aayaÌ die",m:"iÌ€sẹjuÌ kan",mm:"iÌ€sẹjuÌ %d",h:"waÌkati kan",hh:"waÌkati %d",d:"á»já»Ì kan",dd:"á»já»Ì %d",M:"osuÌ€ kan",MM:"osuÌ€ %d",y:"á»duÌn kan",yy:"á»duÌn %d"},dayOfMonthOrdinalParse:/á»já»Ì\s\d{1,2}/,ordinal:"á»já»Ì %d",week:{dow:1,doy:4}}),a.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_å…æœˆ_七月_八月_乿œˆ_åæœˆ_å一月_å二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期å…".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周å…".split("_"),weekdaysMin:"æ—¥_一_二_三_å››_五_å…".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYYå¹´MMMDæ—¥",LL:"YYYYå¹´MMMDæ—¥",LLL:"YYYYå¹´MMMDæ—¥Ah点mm分",LLLL:"YYYYå¹´MMMDæ—¥ddddAh点mm分",l:"YYYYå¹´MMMDæ—¥",ll:"YYYYå¹´MMMDæ—¥",lll:"YYYYå¹´MMMDæ—¥ HH:mm",llll:"YYYYå¹´MMMDæ—¥dddd HH:mm"},meridiemParse:/凌晨|早上|上åˆ|ä¸åˆ|下åˆ|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上åˆ"===b?a:"下åˆ"===b||"晚上"===b?a+12:a>=11?a:a+12},meridiem:function(a,b,c){var d=100*a+b;return d<600?"凌晨":d<900?"早上":d<1130?"上åˆ":d<1230?"ä¸åˆ":d<1800?"下åˆ":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(æ—¥|月|周)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"æ—¥";case"M":return a+"月";case"w":case"W":return a+"周";default:return a}},relativeTime:{future:"%s内",past:"%så‰",s:"å‡ ç§’",m:"1 分钟",mm:"%d 分钟",h:"1 å°æ—¶",hh:"%d å°æ—¶",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 å¹´",yy:"%d å¹´"},week:{dow:1,doy:4}}),a.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_å…æœˆ_七月_八月_乿œˆ_åæœˆ_å一月_å二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期å…".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週å…".split("_"),weekdaysMin:"æ—¥_一_二_三_å››_五_å…".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYYå¹´MMMDæ—¥",LL:"YYYYå¹´MMMDæ—¥",LLL:"YYYYå¹´MMMDæ—¥ HH:mm",LLLL:"YYYYå¹´MMMDæ—¥dddd HH:mm",l:"YYYYå¹´MMMDæ—¥",ll:"YYYYå¹´MMMDæ—¥",lll:"YYYYå¹´MMMDæ—¥ HH:mm",llll:"YYYYå¹´MMMDæ—¥dddd HH:mm"},meridiemParse:/凌晨|早上|上åˆ|ä¸åˆ|下åˆ|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上åˆ"===b?a:"ä¸åˆ"===b?a>=11?a:a+12:"下åˆ"===b||"晚上"===b?a+12:void 0},meridiem:function(a,b,c){var d=100*a+b;return d<600?"凌晨":d<900?"早上":d<1130?"上åˆ":d<1230?"ä¸åˆ":d<1800?"下åˆ":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(æ—¥|月|週)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"æ—¥";case"M":return a+"月";case"w":case"W":return a+"週";default:return a}},relativeTime:{future:"%så…§",past:"%så‰",s:"幾秒",m:"1 分é˜",mm:"%d 分é˜",h:"1 å°æ™‚",hh:"%d å°æ™‚",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 å¹´",yy:"%d å¹´"}}),a.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_å…æœˆ_七月_八月_乿œˆ_åæœˆ_å一月_å二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期å…".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週å…".split("_"),weekdaysMin:"æ—¥_一_二_三_å››_五_å…".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYYå¹´MMMDæ—¥",LL:"YYYYå¹´MMMDæ—¥",LLL:"YYYYå¹´MMMDæ—¥ HH:mm",LLLL:"YYYYå¹´MMMDæ—¥dddd HH:mm",l:"YYYYå¹´MMMDæ—¥",ll:"YYYYå¹´MMMDæ—¥",lll:"YYYYå¹´MMMDæ—¥ HH:mm",llll:"YYYYå¹´MMMDæ—¥dddd HH:mm"},meridiemParse:/凌晨|早上|上åˆ|ä¸åˆ|下åˆ|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上åˆ"===b?a:"ä¸åˆ"===b?a>=11?a:a+12:"下åˆ"===b||"晚上"===b?a+12:void 0},meridiem:function(a,b,c){var d=100*a+b;return d<600?"凌晨":d<900?"早上":d<1130?"上åˆ":d<1230?"ä¸åˆ":d<1800?"下åˆ":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(æ—¥|月|週)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"æ—¥";case"M":return a+"月";case"w":case"W":return a+"週";default:return a}},relativeTime:{future:"%så…§",past:"%så‰",s:"幾秒",m:"1 分é˜",mm:"%d 分é˜",h:"1 å°æ™‚",hh:"%d å°æ™‚",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 å¹´",yy:"%d å¹´"}}),a.locale("en"),a}); +/*! handlebars v4.0.5 @@ -21512,7 +21517,8 @@ return /******/ (function(modules) { // webpackBootstrap /***/ } /******/ ]) }); -;/* +; +/* * JavaScript MD5 1.0.1 * https://github.com/blueimp/JavaScript-MD5 * @@ -21786,6 +21792,7 @@ return /******/ (function(modules) { // webpackBootstrap $.md5 = md5; } }(this)); + /* ======================================================================== * Bootstrap: tooltip.js v3.3.6 * http://getbootstrap.com/javascript/#tooltip @@ -22300,6 +22307,7 @@ return /******/ (function(modules) { // webpackBootstrap } }(jQuery); + // Backbone.js 1.2.3 // (c) 2010-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors @@ -24194,6 +24202,7 @@ return /******/ (function(modules) { // webpackBootstrap return Backbone; })); + /*! * @overview es6-promise - a tiny implementation of Promises/A+. * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald) @@ -25166,6 +25175,7 @@ return /******/ (function(modules) { // webpackBootstrap lib$es6$promise$polyfill$$default(); }).call(this); + /* * vim: expandtab shiftwidth=4 softtabstop=4 */ @@ -25621,1010 +25631,23 @@ dav.Client.prototype = { }; + /*! - * clipboard.js v1.5.12 + * clipboard.js v1.6.1 * https://zenorocha.github.io/clipboard.js * * Licensed MIT © Zeno Rocha */ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Clipboard = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ -var matches = require('matches-selector') - -module.exports = function (element, selector, checkYoSelf) { - var parent = checkYoSelf ? element : element.parentNode - - while (parent && parent !== document) { - if (matches(parent, selector)) return parent; - parent = parent.parentNode - } -} - -},{"matches-selector":5}],2:[function(require,module,exports){ -var closest = require('closest'); - -/** - * Delegates event to a selector. - * - * @param {Element} element - * @param {String} selector - * @param {String} type - * @param {Function} callback - * @param {Boolean} useCapture - * @return {Object} - */ -function delegate(element, selector, type, callback, useCapture) { - var listenerFn = listener.apply(this, arguments); - - element.addEventListener(type, listenerFn, useCapture); - - return { - destroy: function() { - element.removeEventListener(type, listenerFn, useCapture); - } - } -} - -/** - * Finds closest match and invokes callback. - * - * @param {Element} element - * @param {String} selector - * @param {String} type - * @param {Function} callback - * @return {Function} - */ -function listener(element, selector, type, callback) { - return function(e) { - e.delegateTarget = closest(e.target, selector, true); - - if (e.delegateTarget) { - callback.call(element, e); - } - } -} - -module.exports = delegate; - -},{"closest":1}],3:[function(require,module,exports){ -/** - * Check if argument is a HTML element. - * - * @param {Object} value - * @return {Boolean} - */ -exports.node = function(value) { - return value !== undefined - && value instanceof HTMLElement - && value.nodeType === 1; -}; - -/** - * Check if argument is a list of HTML elements. - * - * @param {Object} value - * @return {Boolean} - */ -exports.nodeList = function(value) { - var type = Object.prototype.toString.call(value); - - return value !== undefined - && (type === '[object NodeList]' || type === '[object HTMLCollection]') - && ('length' in value) - && (value.length === 0 || exports.node(value[0])); -}; - -/** - * Check if argument is a string. - * - * @param {Object} value - * @return {Boolean} - */ -exports.string = function(value) { - return typeof value === 'string' - || value instanceof String; -}; - -/** - * Check if argument is a function. - * - * @param {Object} value - * @return {Boolean} - */ -exports.fn = function(value) { - var type = Object.prototype.toString.call(value); - - return type === '[object Function]'; -}; - -},{}],4:[function(require,module,exports){ -var is = require('./is'); -var delegate = require('delegate'); - -/** - * Validates all params and calls the right - * listener function based on its target type. - * - * @param {String|HTMLElement|HTMLCollection|NodeList} target - * @param {String} type - * @param {Function} callback - * @return {Object} - */ -function listen(target, type, callback) { - if (!target && !type && !callback) { - throw new Error('Missing required arguments'); - } - - if (!is.string(type)) { - throw new TypeError('Second argument must be a String'); - } - - if (!is.fn(callback)) { - throw new TypeError('Third argument must be a Function'); - } - - if (is.node(target)) { - return listenNode(target, type, callback); - } - else if (is.nodeList(target)) { - return listenNodeList(target, type, callback); - } - else if (is.string(target)) { - return listenSelector(target, type, callback); - } - else { - throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList'); - } -} - -/** - * Adds an event listener to a HTML element - * and returns a remove listener function. - * - * @param {HTMLElement} node - * @param {String} type - * @param {Function} callback - * @return {Object} - */ -function listenNode(node, type, callback) { - node.addEventListener(type, callback); - - return { - destroy: function() { - node.removeEventListener(type, callback); - } - } -} - -/** - * Add an event listener to a list of HTML elements - * and returns a remove listener function. - * - * @param {NodeList|HTMLCollection} nodeList - * @param {String} type - * @param {Function} callback - * @return {Object} - */ -function listenNodeList(nodeList, type, callback) { - Array.prototype.forEach.call(nodeList, function(node) { - node.addEventListener(type, callback); - }); - - return { - destroy: function() { - Array.prototype.forEach.call(nodeList, function(node) { - node.removeEventListener(type, callback); - }); - } - } -} - -/** - * Add an event listener to a selector - * and returns a remove listener function. - * - * @param {String} selector - * @param {String} type - * @param {Function} callback - * @return {Object} - */ -function listenSelector(selector, type, callback) { - return delegate(document.body, selector, type, callback); -} - -module.exports = listen; - -},{"./is":3,"delegate":2}],5:[function(require,module,exports){ - -/** - * Element prototype. - */ - -var proto = Element.prototype; - -/** - * Vendor function. - */ - -var vendor = proto.matchesSelector - || proto.webkitMatchesSelector - || proto.mozMatchesSelector - || proto.msMatchesSelector - || proto.oMatchesSelector; - -/** - * Expose `match()`. - */ - -module.exports = match; - -/** - * Match `el` to `selector`. - * - * @param {Element} el - * @param {String} selector - * @return {Boolean} - * @api public - */ - -function match(el, selector) { - if (vendor) return vendor.call(el, selector); - var nodes = el.parentNode.querySelectorAll(selector); - for (var i = 0; i < nodes.length; ++i) { - if (nodes[i] == el) return true; - } - return false; -} -},{}],6:[function(require,module,exports){ -function select(element) { - var selectedText; - - if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') { - element.focus(); - element.setSelectionRange(0, element.value.length); - - selectedText = element.value; - } - else { - if (element.hasAttribute('contenteditable')) { - element.focus(); - } - - var selection = window.getSelection(); - var range = document.createRange(); - - range.selectNodeContents(element); - selection.removeAllRanges(); - selection.addRange(range); - - selectedText = selection.toString(); - } - - return selectedText; -} - -module.exports = select; - -},{}],7:[function(require,module,exports){ -function E () { - // Keep this empty so it's easier to inherit from - // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3) -} - -E.prototype = { - on: function (name, callback, ctx) { - var e = this.e || (this.e = {}); - - (e[name] || (e[name] = [])).push({ - fn: callback, - ctx: ctx - }); - - return this; - }, - - once: function (name, callback, ctx) { - var self = this; - function listener () { - self.off(name, listener); - callback.apply(ctx, arguments); - }; - - listener._ = callback - return this.on(name, listener, ctx); - }, - - emit: function (name) { - var data = [].slice.call(arguments, 1); - var evtArr = ((this.e || (this.e = {}))[name] || []).slice(); - var i = 0; - var len = evtArr.length; - - for (i; i < len; i++) { - evtArr[i].fn.apply(evtArr[i].ctx, data); - } - - return this; - }, - - off: function (name, callback) { - var e = this.e || (this.e = {}); - var evts = e[name]; - var liveEvents = []; - - if (evts && callback) { - for (var i = 0, len = evts.length; i < len; i++) { - if (evts[i].fn !== callback && evts[i].fn._ !== callback) - liveEvents.push(evts[i]); - } - } - - // Remove event from queue to prevent memory leak - // Suggested by https://github.com/lazd - // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910 - - (liveEvents.length) - ? e[name] = liveEvents - : delete e[name]; - - return this; - } -}; - -module.exports = E; - -},{}],8:[function(require,module,exports){ -(function (global, factory) { - if (typeof define === "function" && define.amd) { - define(['module', 'select'], factory); - } else if (typeof exports !== "undefined") { - factory(module, require('select')); - } else { - var mod = { - exports: {} - }; - factory(mod, global.select); - global.clipboardAction = mod.exports; - } -})(this, function (module, _select) { - 'use strict'; - - var _select2 = _interopRequireDefault(_select); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { - default: obj - }; - } - - var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { - return typeof obj; - } : function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; - }; - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - var _createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - - var ClipboardAction = function () { - /** - * @param {Object} options - */ - - function ClipboardAction(options) { - _classCallCheck(this, ClipboardAction); - - this.resolveOptions(options); - this.initSelection(); - } - - /** - * Defines base properties passed from constructor. - * @param {Object} options - */ - - - ClipboardAction.prototype.resolveOptions = function resolveOptions() { - var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; - - this.action = options.action; - this.emitter = options.emitter; - this.target = options.target; - this.text = options.text; - this.trigger = options.trigger; - - this.selectedText = ''; - }; - - ClipboardAction.prototype.initSelection = function initSelection() { - if (this.text) { - this.selectFake(); - } else if (this.target) { - this.selectTarget(); - } - }; - - ClipboardAction.prototype.selectFake = function selectFake() { - var _this = this; - - var isRTL = document.documentElement.getAttribute('dir') == 'rtl'; - - this.removeFake(); - - this.fakeHandlerCallback = function () { - return _this.removeFake(); - }; - this.fakeHandler = document.body.addEventListener('click', this.fakeHandlerCallback) || true; - - this.fakeElem = document.createElement('textarea'); - // Prevent zooming on iOS - this.fakeElem.style.fontSize = '12pt'; - // Reset box model - this.fakeElem.style.border = '0'; - this.fakeElem.style.padding = '0'; - this.fakeElem.style.margin = '0'; - // Move element out of screen horizontally - this.fakeElem.style.position = 'absolute'; - this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px'; - // Move element to the same position vertically - this.fakeElem.style.top = (window.pageYOffset || document.documentElement.scrollTop) + 'px'; - this.fakeElem.setAttribute('readonly', ''); - this.fakeElem.value = this.text; - - document.body.appendChild(this.fakeElem); - - this.selectedText = (0, _select2.default)(this.fakeElem); - this.copyText(); - }; - - ClipboardAction.prototype.removeFake = function removeFake() { - if (this.fakeHandler) { - document.body.removeEventListener('click', this.fakeHandlerCallback); - this.fakeHandler = null; - this.fakeHandlerCallback = null; - } - - if (this.fakeElem) { - document.body.removeChild(this.fakeElem); - this.fakeElem = null; - } - }; - - ClipboardAction.prototype.selectTarget = function selectTarget() { - this.selectedText = (0, _select2.default)(this.target); - this.copyText(); - }; - - ClipboardAction.prototype.copyText = function copyText() { - var succeeded = undefined; - - try { - succeeded = document.execCommand(this.action); - } catch (err) { - succeeded = false; - } - - this.handleResult(succeeded); - }; - - ClipboardAction.prototype.handleResult = function handleResult(succeeded) { - if (succeeded) { - this.emitter.emit('success', { - action: this.action, - text: this.selectedText, - trigger: this.trigger, - clearSelection: this.clearSelection.bind(this) - }); - } else { - this.emitter.emit('error', { - action: this.action, - trigger: this.trigger, - clearSelection: this.clearSelection.bind(this) - }); - } - }; - - ClipboardAction.prototype.clearSelection = function clearSelection() { - if (this.target) { - this.target.blur(); - } - - window.getSelection().removeAllRanges(); - }; - - ClipboardAction.prototype.destroy = function destroy() { - this.removeFake(); - }; - - _createClass(ClipboardAction, [{ - key: 'action', - set: function set() { - var action = arguments.length <= 0 || arguments[0] === undefined ? 'copy' : arguments[0]; - - this._action = action; - - if (this._action !== 'copy' && this._action !== 'cut') { - throw new Error('Invalid "action" value, use either "copy" or "cut"'); - } - }, - get: function get() { - return this._action; - } - }, { - key: 'target', - set: function set(target) { - if (target !== undefined) { - if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) { - if (this.action === 'copy' && target.hasAttribute('disabled')) { - throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute'); - } - - if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) { - throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes'); - } - - this._target = target; - } else { - throw new Error('Invalid "target" value, use a valid Element'); - } - } - }, - get: function get() { - return this._target; - } - }]); - - return ClipboardAction; - }(); - - module.exports = ClipboardAction; -}); - -},{"select":6}],9:[function(require,module,exports){ -(function (global, factory) { - if (typeof define === "function" && define.amd) { - define(['module', './clipboard-action', 'tiny-emitter', 'good-listener'], factory); - } else if (typeof exports !== "undefined") { - factory(module, require('./clipboard-action'), require('tiny-emitter'), require('good-listener')); - } else { - var mod = { - exports: {} - }; - factory(mod, global.clipboardAction, global.tinyEmitter, global.goodListener); - global.clipboard = mod.exports; - } -})(this, function (module, _clipboardAction, _tinyEmitter, _goodListener) { - 'use strict'; - - var _clipboardAction2 = _interopRequireDefault(_clipboardAction); - - var _tinyEmitter2 = _interopRequireDefault(_tinyEmitter); - - var _goodListener2 = _interopRequireDefault(_goodListener); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { - default: obj - }; - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _possibleConstructorReturn(self, call) { - if (!self) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - - return call && (typeof call === "object" || typeof call === "function") ? call : self; - } - - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); - } - - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - enumerable: false, - writable: true, - configurable: true - } - }); - if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; - } - - var Clipboard = function (_Emitter) { - _inherits(Clipboard, _Emitter); - - /** - * @param {String|HTMLElement|HTMLCollection|NodeList} trigger - * @param {Object} options - */ - - function Clipboard(trigger, options) { - _classCallCheck(this, Clipboard); - - var _this = _possibleConstructorReturn(this, _Emitter.call(this)); - - _this.resolveOptions(options); - _this.listenClick(trigger); - return _this; - } - - /** - * Defines if attributes would be resolved using internal setter functions - * or custom functions that were passed in the constructor. - * @param {Object} options - */ - - - Clipboard.prototype.resolveOptions = function resolveOptions() { - var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; - - this.action = typeof options.action === 'function' ? options.action : this.defaultAction; - this.target = typeof options.target === 'function' ? options.target : this.defaultTarget; - this.text = typeof options.text === 'function' ? options.text : this.defaultText; - }; - - Clipboard.prototype.listenClick = function listenClick(trigger) { - var _this2 = this; - - this.listener = (0, _goodListener2.default)(trigger, 'click', function (e) { - return _this2.onClick(e); - }); - }; - - Clipboard.prototype.onClick = function onClick(e) { - var trigger = e.delegateTarget || e.currentTarget; - - if (this.clipboardAction) { - this.clipboardAction = null; - } - - this.clipboardAction = new _clipboardAction2.default({ - action: this.action(trigger), - target: this.target(trigger), - text: this.text(trigger), - trigger: trigger, - emitter: this - }); - }; - - Clipboard.prototype.defaultAction = function defaultAction(trigger) { - return getAttributeValue('action', trigger); - }; - - Clipboard.prototype.defaultTarget = function defaultTarget(trigger) { - var selector = getAttributeValue('target', trigger); - - if (selector) { - return document.querySelector(selector); - } - }; - - Clipboard.prototype.defaultText = function defaultText(trigger) { - return getAttributeValue('text', trigger); - }; - - Clipboard.prototype.destroy = function destroy() { - this.listener.destroy(); - - if (this.clipboardAction) { - this.clipboardAction.destroy(); - this.clipboardAction = null; - } - }; - - return Clipboard; - }(_tinyEmitter2.default); - - /** - * Helper function to retrieve attribute value. - * @param {String} suffix - * @param {Element} element - */ - function getAttributeValue(suffix, element) { - var attribute = 'data-clipboard-' + suffix; - - if (!element.hasAttribute(attribute)) { - return; - } - - return element.getAttribute(attribute); - } - - module.exports = Clipboard; -}); - -},{"./clipboard-action":8,"good-listener":4,"tiny-emitter":7}]},{},[9])(9) -});/*! - Autosize 3.0.17 +!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.Clipboard=e()}}(function(){var e,t,n;return function e(t,n,o){function i(a,c){if(!n[a]){if(!t[a]){var l="function"==typeof require&&require;if(!c&&l)return l(a,!0);if(r)return r(a,!0);var u=new Error("Cannot find module '"+a+"'");throw u.code="MODULE_NOT_FOUND",u}var s=n[a]={exports:{}};t[a][0].call(s.exports,function(e){var n=t[a][1][e];return i(n?n:e)},s,s.exports,e,t,n,o)}return n[a].exports}for(var r="function"==typeof require&&require,a=0;a<o.length;a++)i(o[a]);return i}({1:[function(e,t,n){function o(e,t){for(;e&&e.nodeType!==i;){if(e.matches(t))return e;e=e.parentNode}}var i=9;if("undefined"!=typeof Element&&!Element.prototype.matches){var r=Element.prototype;r.matches=r.matchesSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.webkitMatchesSelector}t.exports=o},{}],2:[function(e,t,n){function o(e,t,n,o,r){var a=i.apply(this,arguments);return e.addEventListener(n,a,r),{destroy:function(){e.removeEventListener(n,a,r)}}}function i(e,t,n,o){return function(n){n.delegateTarget=r(n.target,t),n.delegateTarget&&o.call(e,n)}}var r=e("./closest");t.exports=o},{"./closest":1}],3:[function(e,t,n){n.node=function(e){return void 0!==e&&e instanceof HTMLElement&&1===e.nodeType},n.nodeList=function(e){var t=Object.prototype.toString.call(e);return void 0!==e&&("[object NodeList]"===t||"[object HTMLCollection]"===t)&&"length"in e&&(0===e.length||n.node(e[0]))},n.string=function(e){return"string"==typeof e||e instanceof String},n.fn=function(e){var t=Object.prototype.toString.call(e);return"[object Function]"===t}},{}],4:[function(e,t,n){function o(e,t,n){if(!e&&!t&&!n)throw new Error("Missing required arguments");if(!c.string(t))throw new TypeError("Second argument must be a String");if(!c.fn(n))throw new TypeError("Third argument must be a Function");if(c.node(e))return i(e,t,n);if(c.nodeList(e))return r(e,t,n);if(c.string(e))return a(e,t,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function i(e,t,n){return e.addEventListener(t,n),{destroy:function(){e.removeEventListener(t,n)}}}function r(e,t,n){return Array.prototype.forEach.call(e,function(e){e.addEventListener(t,n)}),{destroy:function(){Array.prototype.forEach.call(e,function(e){e.removeEventListener(t,n)})}}}function a(e,t,n){return l(document.body,e,t,n)}var c=e("./is"),l=e("delegate");t.exports=o},{"./is":3,delegate:2}],5:[function(e,t,n){function o(e){var t;if("SELECT"===e.nodeName)e.focus(),t=e.value;else if("INPUT"===e.nodeName||"TEXTAREA"===e.nodeName){var n=e.hasAttribute("readonly");n||e.setAttribute("readonly",""),e.select(),e.setSelectionRange(0,e.value.length),n||e.removeAttribute("readonly"),t=e.value}else{e.hasAttribute("contenteditable")&&e.focus();var o=window.getSelection(),i=document.createRange();i.selectNodeContents(e),o.removeAllRanges(),o.addRange(i),t=o.toString()}return t}t.exports=o},{}],6:[function(e,t,n){function o(){}o.prototype={on:function(e,t,n){var o=this.e||(this.e={});return(o[e]||(o[e]=[])).push({fn:t,ctx:n}),this},once:function(e,t,n){function o(){i.off(e,o),t.apply(n,arguments)}var i=this;return o._=t,this.on(e,o,n)},emit:function(e){var t=[].slice.call(arguments,1),n=((this.e||(this.e={}))[e]||[]).slice(),o=0,i=n.length;for(o;o<i;o++)n[o].fn.apply(n[o].ctx,t);return this},off:function(e,t){var n=this.e||(this.e={}),o=n[e],i=[];if(o&&t)for(var r=0,a=o.length;r<a;r++)o[r].fn!==t&&o[r].fn._!==t&&i.push(o[r]);return i.length?n[e]=i:delete n[e],this}},t.exports=o},{}],7:[function(t,n,o){!function(i,r){if("function"==typeof e&&e.amd)e(["module","select"],r);else if("undefined"!=typeof o)r(n,t("select"));else{var a={exports:{}};r(a,i.select),i.clipboardAction=a.exports}}(this,function(e,t){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var i=n(t),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),c=function(){function e(t){o(this,e),this.resolveOptions(t),this.initSelection()}return a(e,[{key:"resolveOptions",value:function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function e(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function e(){var t=this,n="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=document.body.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[n?"right":"left"]="-9999px";var o=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=o+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,document.body.appendChild(this.fakeElem),this.selectedText=(0,i.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function e(){this.fakeHandler&&(document.body.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(document.body.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function e(){this.selectedText=(0,i.default)(this.target),this.copyText()}},{key:"copyText",value:function e(){var t=void 0;try{t=document.execCommand(this.action)}catch(e){t=!1}this.handleResult(t)}},{key:"handleResult",value:function e(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function e(){this.target&&this.target.blur(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function e(){this.removeFake()}},{key:"action",set:function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function e(){return this._action}},{key:"target",set:function e(t){if(void 0!==t){if(!t||"object"!==("undefined"==typeof t?"undefined":r(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function e(){return this._target}}]),e}();e.exports=c})},{select:5}],8:[function(t,n,o){!function(i,r){if("function"==typeof e&&e.amd)e(["module","./clipboard-action","tiny-emitter","good-listener"],r);else if("undefined"!=typeof o)r(n,t("./clipboard-action"),t("tiny-emitter"),t("good-listener"));else{var a={exports:{}};r(a,i.clipboardAction,i.tinyEmitter,i.goodListener),i.clipboard=a.exports}}(this,function(e,t,n,o){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t){var n="data-clipboard-"+e;if(t.hasAttribute(n))return t.getAttribute(n)}var u=i(t),s=i(n),f=i(o),d=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),h=function(e){function t(e,n){r(this,t);var o=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.resolveOptions(n),o.listenClick(e),o}return c(t,e),d(t,[{key:"resolveOptions",value:function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText}},{key:"listenClick",value:function e(t){var n=this;this.listener=(0,f.default)(t,"click",function(e){return n.onClick(e)})}},{key:"onClick",value:function e(t){var n=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new u.default({action:this.action(n),target:this.target(n),text:this.text(n),trigger:n,emitter:this})}},{key:"defaultAction",value:function e(t){return l("action",t)}},{key:"defaultTarget",value:function e(t){var n=l("target",t);if(n)return document.querySelector(n)}},{key:"defaultText",value:function e(t){return l("text",t)}},{key:"destroy",value:function e(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],n="string"==typeof t?[t]:t,o=!!document.queryCommandSupported;return n.forEach(function(e){o=o&&!!document.queryCommandSupported(e)}),o}}]),t}(s.default);e.exports=h})},{"./clipboard-action":7,"good-listener":4,"tiny-emitter":6}]},{},[8])(8)}); +/*! + Autosize 3.0.20 license: MIT http://www.jacklmoore.com/autosize */ -(function (global, factory) { - if (typeof define === 'function' && define.amd) { - define(['exports', 'module'], factory); - } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { - factory(exports, module); - } else { - var mod = { - exports: {} - }; - factory(mod.exports, mod); - global.autosize = mod.exports; - } -})(this, function (exports, module) { - 'use strict'; - - var set = typeof Set === 'function' ? new Set() : (function () { - var list = []; - - return { - has: function has(key) { - return Boolean(list.indexOf(key) > -1); - }, - add: function add(key) { - list.push(key); - }, - 'delete': function _delete(key) { - list.splice(list.indexOf(key), 1); - } }; - })(); - - var createEvent = function createEvent(name) { - return new Event(name); - }; - try { - new Event('test'); - } catch (e) { - // IE does not support `new Event()` - createEvent = function (name) { - var evt = document.createEvent('Event'); - evt.initEvent(name, true, false); - return evt; - }; - } - - function assign(ta) { - if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || set.has(ta)) return; - - var heightOffset = null; - var clientWidth = ta.clientWidth; - var cachedHeight = null; - - function init() { - var style = window.getComputedStyle(ta, null); - - if (style.resize === 'vertical') { - ta.style.resize = 'none'; - } else if (style.resize === 'both') { - ta.style.resize = 'horizontal'; - } - - if (style.boxSizing === 'content-box') { - heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom)); - } else { - heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth); - } - // Fix when a textarea is not on document body and heightOffset is Not a Number - if (isNaN(heightOffset)) { - heightOffset = 0; - } - - update(); - } - - function changeOverflow(value) { - { - // Chrome/Safari-specific fix: - // When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space - // made available by removing the scrollbar. The following forces the necessary text reflow. - var width = ta.style.width; - ta.style.width = '0px'; - // Force reflow: - /* jshint ignore:start */ - ta.offsetWidth; - /* jshint ignore:end */ - ta.style.width = width; - } - - ta.style.overflowY = value; - - resize(); - } - - function getParentOverflows(el) { - var arr = []; - - while (el && el.parentNode && el.parentNode instanceof Element) { - if (el.parentNode.scrollTop) { - arr.push({ - node: el.parentNode, - scrollTop: el.parentNode.scrollTop }); - } - el = el.parentNode; - } - - return arr; - } - - function resize() { - var originalHeight = ta.style.height; - var overflows = getParentOverflows(ta); - var docTop = document.documentElement && document.documentElement.scrollTop; // Needed for Mobile IE (ticket #240) - - ta.style.height = 'auto'; - - var endHeight = ta.scrollHeight + heightOffset; - - if (ta.scrollHeight === 0) { - // If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM. - ta.style.height = originalHeight; - return; - } - - ta.style.height = endHeight + 'px'; - - // used to check if an update is actually necessary on window.resize - clientWidth = ta.clientWidth; - - // prevents scroll-position jumping - overflows.forEach(function (el) { - el.node.scrollTop = el.scrollTop; - }); - - if (docTop) { - document.documentElement.scrollTop = docTop; - } - } - - function update() { - resize(); - - var computed = window.getComputedStyle(ta, null); - var computedHeight = Math.round(parseFloat(computed.height)); - var styleHeight = Math.round(parseFloat(ta.style.height)); - - // The computed height not matching the height set via resize indicates that - // the max-height has been exceeded, in which case the overflow should be set to visible. - if (computedHeight !== styleHeight) { - if (computed.overflowY !== 'visible') { - changeOverflow('visible'); - } - } else { - // Normally keep overflow set to hidden, to avoid flash of scrollbar as the textarea expands. - if (computed.overflowY !== 'hidden') { - changeOverflow('hidden'); - } - } - - if (cachedHeight !== computedHeight) { - cachedHeight = computedHeight; - var evt = createEvent('autosize:resized'); - ta.dispatchEvent(evt); - } - } - - var pageResize = function pageResize() { - if (ta.clientWidth !== clientWidth) { - update(); - } - }; - - var destroy = (function (style) { - window.removeEventListener('resize', pageResize, false); - ta.removeEventListener('input', update, false); - ta.removeEventListener('keyup', update, false); - ta.removeEventListener('autosize:destroy', destroy, false); - ta.removeEventListener('autosize:update', update, false); - set['delete'](ta); - - Object.keys(style).forEach(function (key) { - ta.style[key] = style[key]; - }); - }).bind(ta, { - height: ta.style.height, - resize: ta.style.resize, - overflowY: ta.style.overflowY, - overflowX: ta.style.overflowX, - wordWrap: ta.style.wordWrap }); - - ta.addEventListener('autosize:destroy', destroy, false); - - // IE9 does not fire onpropertychange or oninput for deletions, - // so binding to onkeyup to catch most of those events. - // There is no way that I know of to detect something like 'cut' in IE9. - if ('onpropertychange' in ta && 'oninput' in ta) { - ta.addEventListener('keyup', update, false); - } - - window.addEventListener('resize', pageResize, false); - ta.addEventListener('input', update, false); - ta.addEventListener('autosize:update', update, false); - set.add(ta); - ta.style.overflowX = 'hidden'; - ta.style.wordWrap = 'break-word'; - - init(); - } - - function destroy(ta) { - if (!(ta && ta.nodeName && ta.nodeName === 'TEXTAREA')) return; - var evt = createEvent('autosize:destroy'); - ta.dispatchEvent(evt); - } - - function update(ta) { - if (!(ta && ta.nodeName && ta.nodeName === 'TEXTAREA')) return; - var evt = createEvent('autosize:update'); - ta.dispatchEvent(evt); - } - - var autosize = null; - - // Do nothing in Node.js environment and IE8 (or lower) - if (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') { - autosize = function (el) { - return el; - }; - autosize.destroy = function (el) { - return el; - }; - autosize.update = function (el) { - return el; - }; - } else { - autosize = function (el, options) { - if (el) { - Array.prototype.forEach.call(el.length ? el : [el], function (x) { - return assign(x, options); - }); - } - return el; - }; - autosize.destroy = function (el) { - if (el) { - Array.prototype.forEach.call(el.length ? el : [el], destroy); - } - return el; - }; - autosize.update = function (el) { - if (el) { - Array.prototype.forEach.call(el.length ? el : [el], update); - } - return el; - }; - } - - module.exports = autosize; -});(function(e){"use strict";var t=typeof window==="undefined"?null:window;if(typeof define==="function"&&define.amd){define(function(){return e(t)})}else if(typeof module!=="undefined"){module.exports=e(t)}else{t.DOMPurify=e(t)}})(function e(t){"use strict";var r=function(t){return e(t)};r.version="0.8.5";r.removed=[];if(!t||!t.document||t.document.nodeType!==9){r.isSupported=false;return r}var n=t.document;var a=n;var i=t.DocumentFragment;var o=t.HTMLTemplateElement;var l=t.Node;var s=t.NodeFilter;var f=t.NamedNodeMap||t.MozNamedAttrMap;var c=t.Text;var u=t.Comment;var d=t.DOMParser;if(typeof o==="function"){var m=n.createElement("template");if(m.content&&m.content.ownerDocument){n=m.content.ownerDocument}}var p=n.implementation;var v=n.createNodeIterator;var h=n.getElementsByTagName;var g=n.createDocumentFragment;var y=a.importNode;var b={};r.isSupported=typeof p.createHTMLDocument!=="undefined"&&n.documentMode!==9;var T=function(e,t){var r=t.length;while(r--){if(typeof t[r]==="string"){t[r]=t[r].toLowerCase()}e[t[r]]=true}return e};var A=function(e){var t={};var r;for(r in e){if(e.hasOwnProperty(r)){t[r]=e[r]}}return t};var x=null;var k=T({},["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr","svg","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","switch","symbol","text","textpath","title","tref","tspan","view","vkern","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmuliscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mpspace","msqrt","mystyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","#text"]);var w=null;var E=T({},["accept","action","align","alt","autocomplete","background","bgcolor","border","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","coords","datetime","default","dir","disabled","download","enctype","face","for","headers","height","hidden","high","href","hreflang","id","ismap","label","lang","list","loop","low","max","maxlength","media","method","min","multiple","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","rows","rowspan","spellcheck","scope","selected","shape","size","span","srclang","start","src","step","style","summary","tabindex","title","type","usemap","valign","value","width","xmlns","accent-height","accumulate","additivive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mode","min","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","surfacescale","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","u1","u2","unicode","values","viewbox","visibility","vert-adv-y","vert-origin-x","vert-origin-y","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","y","y1","y2","z","zoomandpan","accent","accentunder","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","display","displaystyle","fence","frame","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]);var S=null;var N=null;var D=true;var M=false;var O=false;var L=false;var _=/\{\{[\s\S]*|[\s\S]*\}\}/gm;var C=/<%[\s\S]*|[\s\S]*%>/gm;var R=false;var z=false;var F=false;var H=false;var j=true;var B=true;var I=T({},["audio","head","math","script","style","svg","video"]);var W=T({},["audio","video","img","source"]);var G=T({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]);var q=null;var P=n.createElement("form");var U=function(e){if(typeof e!=="object"){e={}}x="ALLOWED_TAGS"in e?T({},e.ALLOWED_TAGS):k;w="ALLOWED_ATTR"in e?T({},e.ALLOWED_ATTR):E;S="FORBID_TAGS"in e?T({},e.FORBID_TAGS):{};N="FORBID_ATTR"in e?T({},e.FORBID_ATTR):{};D=e.ALLOW_DATA_ATTR!==false;M=e.ALLOW_UNKNOWN_PROTOCOLS||false;O=e.SAFE_FOR_JQUERY||false;L=e.SAFE_FOR_TEMPLATES||false;R=e.WHOLE_DOCUMENT||false;z=e.RETURN_DOM||false;F=e.RETURN_DOM_FRAGMENT||false;H=e.RETURN_DOM_IMPORT||false;j=e.SANITIZE_DOM!==false;B=e.KEEP_CONTENT!==false;if(L){D=false}if(F){z=true}if(e.ADD_TAGS){if(x===k){x=A(x)}T(x,e.ADD_TAGS)}if(e.ADD_ATTR){if(w===E){w=A(w)}T(w,e.ADD_ATTR)}if(e.ADD_URI_SAFE_ATTR){T(G,e.ADD_URI_SAFE_ATTR)}if(B){x["#text"]=true}if(Object&&"freeze"in Object){Object.freeze(e)}q=e};var V=function(e){r.removed.push({element:e});try{e.parentNode.removeChild(e)}catch(t){e.outerHTML=""}};var K=function(e,t){r.removed.push({attribute:t.getAttributeNode(e),from:t});t.removeAttribute(e)};var Y=function(e){var t,r;try{t=(new d).parseFromString(e,"text/html")}catch(n){}if(!t||!t.documentElement){t=p.createHTMLDocument("");r=t.body;r.parentNode.removeChild(r.parentNode.firstElementChild);r.outerHTML=e}if(typeof t.getElementsByTagName==="function"){return t.getElementsByTagName(R?"html":"body")[0]}return h.call(t,R?"html":"body")[0]};var J=function(e){return v.call(e.ownerDocument||e,e,s.SHOW_ELEMENT|s.SHOW_COMMENT|s.SHOW_TEXT,function(){return s.FILTER_ACCEPT},false)};var Q=function(e){if(e instanceof c||e instanceof u){return false}if(typeof e.nodeName!=="string"||typeof e.textContent!=="string"||typeof e.removeChild!=="function"||!(e.attributes instanceof f)||typeof e.removeAttribute!=="function"||typeof e.setAttribute!=="function"){return true}return false};var X=function(e){return typeof l==="object"?e instanceof l:e&&typeof e==="object"&&typeof e.nodeType==="number"&&typeof e.nodeName==="string"};var Z=function(e){var t,n;ie("beforeSanitizeElements",e,null);if(Q(e)){V(e);return true}t=e.nodeName.toLowerCase();ie("uponSanitizeElement",e,{tagName:t,allowedTags:x});if(!x[t]||S[t]){if(B&&!I[t]&&typeof e.insertAdjacentHTML==="function"){try{e.insertAdjacentHTML("AfterEnd",e.innerHTML)}catch(a){}}V(e);return true}if(O&&!e.firstElementChild&&(!e.content||!e.content.firstElementChild)&&/</g.test(e.textContent)){r.removed.push({element:e.cloneNode()});e.innerHTML=e.textContent.replace(/</g,"<")}if(L&&e.nodeType===3){n=e.textContent;n=n.replace(_," ");n=n.replace(C," ");if(e.textContent!==n){r.removed.push({element:e.cloneNode()});e.textContent=n}}ie("afterSanitizeElements",e,null);return false};var $=/^data-[\-\w.\u00B7-\uFFFF]/;var ee=/^(?:(?:(?:f|ht)tps?|mailto|tel):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i;var te=/^(?:\w+script|data):/i;var re=/[\x00-\x20\xA0\u1680\u180E\u2000-\u2029\u205f\u3000]/g;var ne=function(e){var a,i,o,l,s,f,c,u;ie("beforeSanitizeAttributes",e,null);f=e.attributes;if(!f){return}c={attrName:"",attrValue:"",keepAttr:true,allowedAttributes:w};u=f.length;while(u--){a=f[u];i=a.name;o=a.value.trim();l=i.toLowerCase();c.attrName=l;c.attrValue=o;c.keepAttr=true;ie("uponSanitizeAttribute",e,c);o=c.attrValue;if(l==="name"&&e.nodeName==="IMG"&&f.id){s=f.id;f=Array.prototype.slice.apply(f);K("id",e);K(i,e);if(f.indexOf(s)>u){e.setAttribute("id",s.value)}}else{if(i==="id"){e.setAttribute(i,"")}K(i,e)}if(!c.keepAttr){continue}if(j&&(l==="id"||l==="name")&&(o in t||o in n||o in P)){continue}if(L){o=o.replace(_," ");o=o.replace(C," ")}if(D&&$.test(l)){}else if(!w[l]||N[l]){continue}else if(G[l]){}else if(ee.test(o.replace(re,""))){}else if(l==="src"&&o.indexOf("data:")===0&&W[e.nodeName.toLowerCase()]){}else if(M&&!te.test(o.replace(re,""))){}else if(!o){}else{continue}try{e.setAttribute(i,o);r.removed.pop()}catch(d){}}ie("afterSanitizeAttributes",e,null)};var ae=function(e){var t;var r=J(e);ie("beforeSanitizeShadowDOM",e,null);while(t=r.nextNode()){ie("uponSanitizeShadowNode",t,null);if(Z(t)){continue}if(t.content instanceof i){ae(t.content)}ne(t)}ie("afterSanitizeShadowDOM",e,null)};var ie=function(e,t,n){if(!b[e]){return}b[e].forEach(function(e){e.call(r,t,n,q)})};r.sanitize=function(e,n){var o,s,f,c,u,d;if(!e){e="<!-->"}if(typeof e!=="string"&&!X(e)){if(typeof e.toString!=="function"){throw new TypeError("toString is not a function")}else{e=e.toString()}}if(!r.isSupported){if(typeof t.toStaticHTML==="object"||typeof t.toStaticHTML==="function"){if(typeof e==="string"){return t.toStaticHTML(e)}else if(X(e)){return t.toStaticHTML(e.outerHTML)}}return e}U(n);r.removed=[];if(e instanceof l){o=Y("<!-->");s=o.ownerDocument.importNode(e,true);if(s.nodeType===1&&s.nodeName==="BODY"){o=s}else{o.appendChild(s)}}else{if(!z&&!R&&e.indexOf("<")===-1){return e}o=Y(e);if(!o){return z?null:""}}u=J(o);while(f=u.nextNode()){if(f.nodeType===3&&f===c){continue}if(Z(f)){continue}if(f.content instanceof i){ae(f.content)}ne(f);c=f}if(z){if(F){d=g.call(o.ownerDocument);while(o.firstChild){d.appendChild(o.firstChild)}}else{d=o}if(H){d=y.call(a,d,true)}return d}return R?o.outerHTML:o.innerHTML};r.addHook=function(e,t){if(typeof t!=="function"){return}b[e]=b[e]||[];b[e].push(t)};r.removeHook=function(e){if(b[e]){b[e].pop()}};r.removeHooks=function(e){if(b[e]){b[e]=[]}};r.removeAllHooks=function(){b={}};return r}); -//# sourceMappingURL=./dist/purify.min.js.map/*! Snap.js v2.0.0-rc1 */ +!function(e,t){if("function"==typeof define&&define.amd)define(["exports","module"],t);else if("undefined"!=typeof exports&&"undefined"!=typeof module)t(exports,module);else{var n={exports:{}};t(n.exports,n),e.autosize=n.exports}}(this,function(e,t){"use strict";function n(e){function t(){var t=window.getComputedStyle(e,null);"vertical"===t.resize?e.style.resize="none":"both"===t.resize&&(e.style.resize="horizontal"),s="content-box"===t.boxSizing?-(parseFloat(t.paddingTop)+parseFloat(t.paddingBottom)):parseFloat(t.borderTopWidth)+parseFloat(t.borderBottomWidth),isNaN(s)&&(s=0),l()}function n(t){var n=e.style.width;e.style.width="0px",e.offsetWidth,e.style.width=n,e.style.overflowY=t}function o(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push({node:e.parentNode,scrollTop:e.parentNode.scrollTop}),e=e.parentNode;return t}function r(){var t=e.style.height,n=o(e),r=document.documentElement&&document.documentElement.scrollTop;e.style.height="auto";var i=e.scrollHeight+s;return 0===e.scrollHeight?void(e.style.height=t):(e.style.height=i+"px",u=e.clientWidth,n.forEach(function(e){e.node.scrollTop=e.scrollTop}),void(r&&(document.documentElement.scrollTop=r)))}function l(){r();var t=Math.round(parseFloat(e.style.height)),o=window.getComputedStyle(e,null),i=Math.round(parseFloat(o.height));if(i!==t?"visible"!==o.overflowY&&(n("visible"),r(),i=Math.round(parseFloat(window.getComputedStyle(e,null).height))):"hidden"!==o.overflowY&&(n("hidden"),r(),i=Math.round(parseFloat(window.getComputedStyle(e,null).height))),a!==i){a=i;var l=d("autosize:resized");try{e.dispatchEvent(l)}catch(e){}}}if(e&&e.nodeName&&"TEXTAREA"===e.nodeName&&!i.has(e)){var s=null,u=e.clientWidth,a=null,p=function(){e.clientWidth!==u&&l()},c=function(t){window.removeEventListener("resize",p,!1),e.removeEventListener("input",l,!1),e.removeEventListener("keyup",l,!1),e.removeEventListener("autosize:destroy",c,!1),e.removeEventListener("autosize:update",l,!1),Object.keys(t).forEach(function(n){e.style[n]=t[n]}),i.delete(e)}.bind(e,{height:e.style.height,resize:e.style.resize,overflowY:e.style.overflowY,overflowX:e.style.overflowX,wordWrap:e.style.wordWrap});e.addEventListener("autosize:destroy",c,!1),"onpropertychange"in e&&"oninput"in e&&e.addEventListener("keyup",l,!1),window.addEventListener("resize",p,!1),e.addEventListener("input",l,!1),e.addEventListener("autosize:update",l,!1),e.style.overflowX="hidden",e.style.wordWrap="break-word",i.set(e,{destroy:c,update:l}),t()}}function o(e){var t=i.get(e);t&&t.destroy()}function r(e){var t=i.get(e);t&&t.update()}var i="function"==typeof Map?new Map:function(){var e=[],t=[];return{has:function(t){return e.indexOf(t)>-1},get:function(n){return t[e.indexOf(n)]},set:function(n,o){e.indexOf(n)===-1&&(e.push(n),t.push(o))},delete:function(n){var o=e.indexOf(n);o>-1&&(e.splice(o,1),t.splice(o,1))}}}(),d=function(e){return new Event(e,{bubbles:!0})};try{new Event("test")}catch(e){d=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!1),t}}var l=null;"undefined"==typeof window||"function"!=typeof window.getComputedStyle?(l=function(e){return e},l.destroy=function(e){return e},l.update=function(e){return e}):(l=function(e,t){return e&&Array.prototype.forEach.call(e.length?e:[e],function(e){return n(e,t)}),e},l.destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],o),e},l.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],r),e}),t.exports=l}); +(function(e){"use strict";var t=typeof window==="undefined"?null:window;if(typeof define==="function"&&define.amd){define(function(){return e(t)})}else if(typeof module!=="undefined"){module.exports=e(t)}else{t.DOMPurify=e(t)}})(function e(t){"use strict";var r=function(t){return e(t)};r.version="0.8.5";r.removed=[];if(!t||!t.document||t.document.nodeType!==9){r.isSupported=false;return r}var n=t.document;var a=n;var i=t.DocumentFragment;var o=t.HTMLTemplateElement;var l=t.Node;var s=t.NodeFilter;var f=t.NamedNodeMap||t.MozNamedAttrMap;var c=t.Text;var u=t.Comment;var d=t.DOMParser;if(typeof o==="function"){var m=n.createElement("template");if(m.content&&m.content.ownerDocument){n=m.content.ownerDocument}}var p=n.implementation;var v=n.createNodeIterator;var h=n.getElementsByTagName;var g=n.createDocumentFragment;var y=a.importNode;var b={};r.isSupported=typeof p.createHTMLDocument!=="undefined"&&n.documentMode!==9;var T=function(e,t){var r=t.length;while(r--){if(typeof t[r]==="string"){t[r]=t[r].toLowerCase()}e[t[r]]=true}return e};var A=function(e){var t={};var r;for(r in e){if(e.hasOwnProperty(r)){t[r]=e[r]}}return t};var x=null;var k=T({},["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr","svg","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","switch","symbol","text","textpath","title","tref","tspan","view","vkern","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmuliscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mpspace","msqrt","mystyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","#text"]);var w=null;var E=T({},["accept","action","align","alt","autocomplete","background","bgcolor","border","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","coords","datetime","default","dir","disabled","download","enctype","face","for","headers","height","hidden","high","href","hreflang","id","ismap","label","lang","list","loop","low","max","maxlength","media","method","min","multiple","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","rows","rowspan","spellcheck","scope","selected","shape","size","span","srclang","start","src","step","style","summary","tabindex","title","type","usemap","valign","value","width","xmlns","accent-height","accumulate","additivive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mode","min","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","surfacescale","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","u1","u2","unicode","values","viewbox","visibility","vert-adv-y","vert-origin-x","vert-origin-y","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","y","y1","y2","z","zoomandpan","accent","accentunder","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","display","displaystyle","fence","frame","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]);var S=null;var N=null;var D=true;var M=false;var O=false;var L=false;var _=/\{\{[\s\S]*|[\s\S]*\}\}/gm;var C=/<%[\s\S]*|[\s\S]*%>/gm;var R=false;var z=false;var F=false;var H=false;var j=true;var B=true;var I=T({},["audio","head","math","script","style","svg","video"]);var W=T({},["audio","video","img","source"]);var G=T({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]);var q=null;var P=n.createElement("form");var U=function(e){if(typeof e!=="object"){e={}}x="ALLOWED_TAGS"in e?T({},e.ALLOWED_TAGS):k;w="ALLOWED_ATTR"in e?T({},e.ALLOWED_ATTR):E;S="FORBID_TAGS"in e?T({},e.FORBID_TAGS):{};N="FORBID_ATTR"in e?T({},e.FORBID_ATTR):{};D=e.ALLOW_DATA_ATTR!==false;M=e.ALLOW_UNKNOWN_PROTOCOLS||false;O=e.SAFE_FOR_JQUERY||false;L=e.SAFE_FOR_TEMPLATES||false;R=e.WHOLE_DOCUMENT||false;z=e.RETURN_DOM||false;F=e.RETURN_DOM_FRAGMENT||false;H=e.RETURN_DOM_IMPORT||false;j=e.SANITIZE_DOM!==false;B=e.KEEP_CONTENT!==false;if(L){D=false}if(F){z=true}if(e.ADD_TAGS){if(x===k){x=A(x)}T(x,e.ADD_TAGS)}if(e.ADD_ATTR){if(w===E){w=A(w)}T(w,e.ADD_ATTR)}if(e.ADD_URI_SAFE_ATTR){T(G,e.ADD_URI_SAFE_ATTR)}if(B){x["#text"]=true}if(Object&&"freeze"in Object){Object.freeze(e)}q=e};var V=function(e){r.removed.push({element:e});try{e.parentNode.removeChild(e)}catch(t){e.outerHTML=""}};var K=function(e,t){r.removed.push({attribute:t.getAttributeNode(e),from:t});t.removeAttribute(e)};var Y=function(e){var t,r;try{t=(new d).parseFromString(e,"text/html")}catch(n){}if(!t||!t.documentElement){t=p.createHTMLDocument("");r=t.body;r.parentNode.removeChild(r.parentNode.firstElementChild);r.outerHTML=e}if(typeof t.getElementsByTagName==="function"){return t.getElementsByTagName(R?"html":"body")[0]}return h.call(t,R?"html":"body")[0]};var J=function(e){return v.call(e.ownerDocument||e,e,s.SHOW_ELEMENT|s.SHOW_COMMENT|s.SHOW_TEXT,function(){return s.FILTER_ACCEPT},false)};var Q=function(e){if(e instanceof c||e instanceof u){return false}if(typeof e.nodeName!=="string"||typeof e.textContent!=="string"||typeof e.removeChild!=="function"||!(e.attributes instanceof f)||typeof e.removeAttribute!=="function"||typeof e.setAttribute!=="function"){return true}return false};var X=function(e){return typeof l==="object"?e instanceof l:e&&typeof e==="object"&&typeof e.nodeType==="number"&&typeof e.nodeName==="string"};var Z=function(e){var t,n;ie("beforeSanitizeElements",e,null);if(Q(e)){V(e);return true}t=e.nodeName.toLowerCase();ie("uponSanitizeElement",e,{tagName:t,allowedTags:x});if(!x[t]||S[t]){if(B&&!I[t]&&typeof e.insertAdjacentHTML==="function"){try{e.insertAdjacentHTML("AfterEnd",e.innerHTML)}catch(a){}}V(e);return true}if(O&&!e.firstElementChild&&(!e.content||!e.content.firstElementChild)&&/</g.test(e.textContent)){r.removed.push({element:e.cloneNode()});e.innerHTML=e.textContent.replace(/</g,"<")}if(L&&e.nodeType===3){n=e.textContent;n=n.replace(_," ");n=n.replace(C," ");if(e.textContent!==n){r.removed.push({element:e.cloneNode()});e.textContent=n}}ie("afterSanitizeElements",e,null);return false};var $=/^data-[\-\w.\u00B7-\uFFFF]/;var ee=/^(?:(?:(?:f|ht)tps?|mailto|tel):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i;var te=/^(?:\w+script|data):/i;var re=/[\x00-\x20\xA0\u1680\u180E\u2000-\u2029\u205f\u3000]/g;var ne=function(e){var a,i,o,l,s,f,c,u;ie("beforeSanitizeAttributes",e,null);f=e.attributes;if(!f){return}c={attrName:"",attrValue:"",keepAttr:true,allowedAttributes:w};u=f.length;while(u--){a=f[u];i=a.name;o=a.value.trim();l=i.toLowerCase();c.attrName=l;c.attrValue=o;c.keepAttr=true;ie("uponSanitizeAttribute",e,c);o=c.attrValue;if(l==="name"&&e.nodeName==="IMG"&&f.id){s=f.id;f=Array.prototype.slice.apply(f);K("id",e);K(i,e);if(f.indexOf(s)>u){e.setAttribute("id",s.value)}}else{if(i==="id"){e.setAttribute(i,"")}K(i,e)}if(!c.keepAttr){continue}if(j&&(l==="id"||l==="name")&&(o in t||o in n||o in P)){continue}if(L){o=o.replace(_," ");o=o.replace(C," ")}if(D&&$.test(l)){}else if(!w[l]||N[l]){continue}else if(G[l]){}else if(ee.test(o.replace(re,""))){}else if(l==="src"&&o.indexOf("data:")===0&&W[e.nodeName.toLowerCase()]){}else if(M&&!te.test(o.replace(re,""))){}else if(!o){}else{continue}try{e.setAttribute(i,o);r.removed.pop()}catch(d){}}ie("afterSanitizeAttributes",e,null)};var ae=function(e){var t;var r=J(e);ie("beforeSanitizeShadowDOM",e,null);while(t=r.nextNode()){ie("uponSanitizeShadowNode",t,null);if(Z(t)){continue}if(t.content instanceof i){ae(t.content)}ne(t)}ie("afterSanitizeShadowDOM",e,null)};var ie=function(e,t,n){if(!b[e]){return}b[e].forEach(function(e){e.call(r,t,n,q)})};r.sanitize=function(e,n){var o,s,f,c,u,d;if(!e){e="<!-->"}if(typeof e!=="string"&&!X(e)){if(typeof e.toString!=="function"){throw new TypeError("toString is not a function")}else{e=e.toString()}}if(!r.isSupported){if(typeof t.toStaticHTML==="object"||typeof t.toStaticHTML==="function"){if(typeof e==="string"){return t.toStaticHTML(e)}else if(X(e)){return t.toStaticHTML(e.outerHTML)}}return e}U(n);r.removed=[];if(e instanceof l){o=Y("<!-->");s=o.ownerDocument.importNode(e,true);if(s.nodeType===1&&s.nodeName==="BODY"){o=s}else{o.appendChild(s)}}else{if(!z&&!R&&e.indexOf("<")===-1){return e}o=Y(e);if(!o){return z?null:""}}u=J(o);while(f=u.nextNode()){if(f.nodeType===3&&f===c){continue}if(Z(f)){continue}if(f.content instanceof i){ae(f.content)}ne(f);c=f}if(z){if(F){d=g.call(o.ownerDocument);while(o.firstChild){d.appendChild(o.firstChild)}}else{d=o}if(H){d=y.call(a,d,true)}return d}return R?o.outerHTML:o.innerHTML};r.addHook=function(e,t){if(typeof t!=="function"){return}b[e]=b[e]||[];b[e].push(t)};r.removeHook=function(e){if(b[e]){b[e].pop()}};r.removeHooks=function(e){if(b[e]){b[e]=[]}};r.removeAllHooks=function(){b={}};return r}); +//# sourceMappingURL=./dist/purify.min.js.map +/*! Snap.js v2.0.0-rc1 */ (function(win, doc) { 'use strict'; @@ -27409,6 +26432,7 @@ module.exports = E; this[Namespace] = Core; }).call(this, window, document); + /* Copyright 2012 Igor Vaynberg @@ -30857,3 +29881,4 @@ the specific language governing permissions and limitations under the Apache Lic }; }(jQuery)); + diff --git a/issue_template.md b/issue_template.md index 6714371a4eb..ecf2f62ea68 100644 --- a/issue_template.md +++ b/issue_template.md @@ -5,7 +5,8 @@ This is the bug tracker for the Server component. Find other components at https For reporting potential security issues please see https://nextcloud.com/security/ -To make it possible for us to help you please fill out below information carefully. +To make it possible for us to help you please fill out below information carefully. +You can also use the Issue Template application to prefill most of the required information: https://apps.nextcloud.com/apps/issuetemplate --> ### Steps to reproduce 1. @@ -19,6 +20,7 @@ Tell us what should happen Tell us what happens instead ### Server configuration + **Operating system**: **Web server:** @@ -55,7 +57,7 @@ from within your Nextcloud installation folder ``` </details> -**The content of config/config.php:** +**Nextcloud configuration:** <details> <summary>Config report</summary> @@ -66,8 +68,8 @@ from within your Nextcloud installation folder or -Insert your config.php content here -(Without the database password, passwordsalt and secret) +Insert your config.php content here. +Make sure to remove all sensitive content such as passwords. (e.g. database password, passwordsalt, secret, smtp password, …) ``` </details> diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php index f009c0be203..915f5229280 100644 --- a/lib/composer/composer/autoload_classmap.php +++ b/lib/composer/composer/autoload_classmap.php @@ -84,6 +84,7 @@ return array( 'OCP\\DB' => $baseDir . '/lib/public/DB.php', 'OCP\\DB\\QueryBuilder\\ICompositeExpression' => $baseDir . '/lib/public/DB/QueryBuilder/ICompositeExpression.php', 'OCP\\DB\\QueryBuilder\\IExpressionBuilder' => $baseDir . '/lib/public/DB/QueryBuilder/IExpressionBuilder.php', + 'OCP\\DB\\QueryBuilder\\IFunctionBuilder' => $baseDir . '/lib/public/DB/QueryBuilder/IFunctionBuilder.php', 'OCP\\DB\\QueryBuilder\\ILiteral' => $baseDir . '/lib/public/DB/QueryBuilder/ILiteral.php', 'OCP\\DB\\QueryBuilder\\IParameter' => $baseDir . '/lib/public/DB/QueryBuilder/IParameter.php', 'OCP\\DB\\QueryBuilder\\IQueryBuilder' => $baseDir . '/lib/public/DB/QueryBuilder/IQueryBuilder.php', @@ -473,6 +474,11 @@ return array( 'OC\\DB\\QueryBuilder\\ExpressionBuilder\\MySqlExpressionBuilder' => $baseDir . '/lib/private/DB/QueryBuilder/ExpressionBuilder/MySqlExpressionBuilder.php', 'OC\\DB\\QueryBuilder\\ExpressionBuilder\\OCIExpressionBuilder' => $baseDir . '/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php', 'OC\\DB\\QueryBuilder\\ExpressionBuilder\\PgSqlExpressionBuilder' => $baseDir . '/lib/private/DB/QueryBuilder/ExpressionBuilder/PgSqlExpressionBuilder.php', + 'OC\\DB\\QueryBuilder\\ExpressionBuilder\\SqliteExpressionBuilder' => $baseDir . '/lib/private/DB/QueryBuilder/ExpressionBuilder/SqliteExpressionBuilder.php', + 'OC\\DB\\QueryBuilder\\FunctionBuilder\\FunctionBuilder' => $baseDir . '/lib/private/DB/QueryBuilder/FunctionBuilder/FunctionBuilder.php', + 'OC\\DB\\QueryBuilder\\FunctionBuilder\\OCIFunctionBuilder' => $baseDir . '/lib/private/DB/QueryBuilder/FunctionBuilder/OCIFunctionBuilder.php', + 'OC\\DB\\QueryBuilder\\FunctionBuilder\\PgSqlFunctionBuilder' => $baseDir . '/lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php', + 'OC\\DB\\QueryBuilder\\FunctionBuilder\\SqliteFunctionBuilder' => $baseDir . '/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php', 'OC\\DB\\QueryBuilder\\Literal' => $baseDir . '/lib/private/DB/QueryBuilder/Literal.php', 'OC\\DB\\QueryBuilder\\Parameter' => $baseDir . '/lib/private/DB/QueryBuilder/Parameter.php', 'OC\\DB\\QueryBuilder\\QueryBuilder' => $baseDir . '/lib/private/DB/QueryBuilder/QueryBuilder.php', diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php index 9a6a41d8a37..a4dc2dbb489 100644 --- a/lib/composer/composer/autoload_static.php +++ b/lib/composer/composer/autoload_static.php @@ -114,6 +114,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c 'OCP\\DB' => __DIR__ . '/../../..' . '/lib/public/DB.php', 'OCP\\DB\\QueryBuilder\\ICompositeExpression' => __DIR__ . '/../../..' . '/lib/public/DB/QueryBuilder/ICompositeExpression.php', 'OCP\\DB\\QueryBuilder\\IExpressionBuilder' => __DIR__ . '/../../..' . '/lib/public/DB/QueryBuilder/IExpressionBuilder.php', + 'OCP\\DB\\QueryBuilder\\IFunctionBuilder' => __DIR__ . '/../../..' . '/lib/public/DB/QueryBuilder/IFunctionBuilder.php', 'OCP\\DB\\QueryBuilder\\ILiteral' => __DIR__ . '/../../..' . '/lib/public/DB/QueryBuilder/ILiteral.php', 'OCP\\DB\\QueryBuilder\\IParameter' => __DIR__ . '/../../..' . '/lib/public/DB/QueryBuilder/IParameter.php', 'OCP\\DB\\QueryBuilder\\IQueryBuilder' => __DIR__ . '/../../..' . '/lib/public/DB/QueryBuilder/IQueryBuilder.php', @@ -503,6 +504,11 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c 'OC\\DB\\QueryBuilder\\ExpressionBuilder\\MySqlExpressionBuilder' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/ExpressionBuilder/MySqlExpressionBuilder.php', 'OC\\DB\\QueryBuilder\\ExpressionBuilder\\OCIExpressionBuilder' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php', 'OC\\DB\\QueryBuilder\\ExpressionBuilder\\PgSqlExpressionBuilder' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/ExpressionBuilder/PgSqlExpressionBuilder.php', + 'OC\\DB\\QueryBuilder\\ExpressionBuilder\\SqliteExpressionBuilder' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/ExpressionBuilder/SqliteExpressionBuilder.php', + 'OC\\DB\\QueryBuilder\\FunctionBuilder\\FunctionBuilder' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/FunctionBuilder/FunctionBuilder.php', + 'OC\\DB\\QueryBuilder\\FunctionBuilder\\OCIFunctionBuilder' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/FunctionBuilder/OCIFunctionBuilder.php', + 'OC\\DB\\QueryBuilder\\FunctionBuilder\\PgSqlFunctionBuilder' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php', + 'OC\\DB\\QueryBuilder\\FunctionBuilder\\SqliteFunctionBuilder' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php', 'OC\\DB\\QueryBuilder\\Literal' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/Literal.php', 'OC\\DB\\QueryBuilder\\Parameter' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/Parameter.php', 'OC\\DB\\QueryBuilder\\QueryBuilder' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/QueryBuilder.php', diff --git a/lib/l10n/de.js b/lib/l10n/de.js index 505b76cff5a..44c9dff322e 100644 --- a/lib/l10n/de.js +++ b/lib/l10n/de.js @@ -52,6 +52,7 @@ OC.L10N.register( "Redis" : "Redis", "Server settings" : "Servereinstellungen", "Sharing" : "Teilen", + "Security" : "Sicherheit", "Encryption" : "Verschlüsselung", "Additional settings" : "Zusätzliche Einstellungen", "Tips & tricks" : "Tipps & Tricks", diff --git a/lib/l10n/de.json b/lib/l10n/de.json index dfa69984228..3807767b325 100644 --- a/lib/l10n/de.json +++ b/lib/l10n/de.json @@ -50,6 +50,7 @@ "Redis" : "Redis", "Server settings" : "Servereinstellungen", "Sharing" : "Teilen", + "Security" : "Sicherheit", "Encryption" : "Verschlüsselung", "Additional settings" : "Zusätzliche Einstellungen", "Tips & tricks" : "Tipps & Tricks", diff --git a/lib/l10n/de_DE.js b/lib/l10n/de_DE.js index 76b58951580..b839b324121 100644 --- a/lib/l10n/de_DE.js +++ b/lib/l10n/de_DE.js @@ -52,6 +52,7 @@ OC.L10N.register( "Redis" : "Redis", "Server settings" : "Servereinstellungen", "Sharing" : "Teilen", + "Security" : "Sicherheit", "Encryption" : "Verschlüsselung", "Additional settings" : "Zusätzliche Einstellungen", "Tips & tricks" : "Tipps & Tricks", diff --git a/lib/l10n/de_DE.json b/lib/l10n/de_DE.json index ddea99752de..efdb9e7bcab 100644 --- a/lib/l10n/de_DE.json +++ b/lib/l10n/de_DE.json @@ -50,6 +50,7 @@ "Redis" : "Redis", "Server settings" : "Servereinstellungen", "Sharing" : "Teilen", + "Security" : "Sicherheit", "Encryption" : "Verschlüsselung", "Additional settings" : "Zusätzliche Einstellungen", "Tips & tricks" : "Tipps & Tricks", diff --git a/lib/l10n/es_MX.js b/lib/l10n/es_MX.js new file mode 100644 index 00000000000..6bfc384719f --- /dev/null +++ b/lib/l10n/es_MX.js @@ -0,0 +1,192 @@ +OC.L10N.register( + "lib", + { + "Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!", + "This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se soluciona dándole al servidor web acceso para escribir en el directorio config. ", + "See %s" : "Ver %s", + "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Esto generalmente se soluciona %s dándole al servidor web acceso para escribir en el directorio config %s.", + "The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "Los archivos de la aplicación %$1s no fueron correctamente remplazados. Favor de asegurarse de que la versión sea compatible con el servidor.", + "Sample configuration detected" : "Se ha detectado la configuración de muestra", + "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede descomponer su instalacón y no está soportado. Favor de leer la documentación antes de hacer cambios en el archivo config.php", + "%1$s and %2$s" : "%1$s y %2$s", + "%1$s, %2$s and %3$s" : "%1$s, %2$s y %3$s", + "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s y %4$s", + "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s y %5$s", + "PHP %s or higher is required." : "Se requiere de PHPH %s o superior.", + "PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ", + "%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.", + "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s", + "The command line tool %s could not be found" : "No fue posible encontar la herramienta de lÃnea de comando %s", + "The library %s is not available." : "La biblioteca %s no está disponible. ", + "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.", + "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ", + "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s", + "Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ", + "Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ", + "Unknown filetype" : "Tipo de archivo desconocido", + "Invalid image" : "Imagen inválida", + "Avatar image is not square" : "La imagen del avatar no es un cuadrado", + "today" : "hoy", + "yesterday" : "ayer", + "_%n day ago_::_%n days ago_" : ["hace %n dÃa","hace %n dÃas"], + "last month" : "mes pasado", + "_%n month ago_::_%n months ago_" : ["Hace %n mes","Hace %n meses"], + "last year" : "año pasado", + "_%n year ago_::_%n years ago_" : ["hace %n año","hace %n años"], + "_%n hour ago_::_%n hours ago_" : ["Hace %n hora","Hace %n horas"], + "_%n minute ago_::_%n minutes ago_" : ["Hace %n minuto","Hace %n minutos"], + "seconds ago" : "hace segundos", + "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "El módulo con id: %s no existe. Favor de habilitarlo en sus ajustes de aplicación o contacte a su administrador. ", + "File name is a reserved word" : "Nombre de archivo es una palabra reservada", + "File name contains at least one invalid character" : "El nombre del archivo contiene al menos un caracter inválido", + "File name is too long" : "El nombre del archivo es demasiado largo", + "Dot files are not allowed" : "Los archivos Dot no están permitidos", + "Empty filename is not allowed" : "El uso de nombres de archivo vacÃos no está permitido", + "Help" : "Ayuda", + "Apps" : "Aplicaciones", + "Personal" : "Personal", + "Log out" : "Salir de la sesión", + "Users" : "Usuarios", + "Admin" : "Administración", + "APCu" : "APCu", + "Redis" : "Redis", + "Server settings" : "Ajustes del servidor", + "Sharing" : "Compartiendo", + "Encryption" : "Encripción", + "Additional settings" : "Ajustes adicionales", + "Tips & tricks" : "Consejos y trucos", + "%s enter the database username and name." : "%s ingrese el nombre del usuario y nombre de la base de datos", + "%s enter the database username." : "%s ingresar el nombre de usuario de la base de datos.", + "%s enter the database name." : "%s ingresar el nombre de la base de datos", + "%s you may not use dots in the database name" : "%s no puede utilizar puntos en el nombre de la base de datos", + "Oracle connection could not be established" : "No fue posible establecer la conexión a Oracle", + "Oracle username and/or password not valid" : "El nombre de usuario y/o contraseña de Oracle inválidos", + "DB Error: \"%s\"" : "Error de BD: \"%s\"", + "Offending command was: \"%s\"" : "Comando infractor: \"%s\"", + "You need to enter either an existing account or the administrator." : "Tiene que ingresar una cuenta existente o la del administrador.", + "Offending command was: \"%s\", name: %s, password: %s" : "Comando infractor: \"%s\", nombre: %s, contraseña: %s", + "PostgreSQL username and/or password not valid" : "El nombre de usuario y/o contraseña de PostgreSQL inválidos", + "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "OS X de Mac no está soportado y %s no funcionará correctamente en esta plataforma ¡Uselo bajo su propio riesgo!", + "For the best results, please consider using a GNU/Linux server instead." : "Para mejores resultados, favor de cosiderar usar en su lugar un servidor GNU/Linux.", + "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Al parecer esta instancia %s está corriendo en un ambiente PHP de 32-bits y el open_basedir ha sido configurado en el archivo php.ini. Esto generará problemas con archivos de más de 4GB de tamaño y es altamente desalentado. ", + "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Favor de eliminar el ajuste open_basedir de su archivo php.ini o cambie a PHP de 64 bits. ", + "Set an admin username." : "Configurar un nombre de usuario del administrador", + "Set an admin password." : "Establecer la contraseña del administrador.", + "Can't create or write into the data directory %s" : "No es posible crear o escribir en el directorio de datos %s", + "%s shared »%s« with you" : "%s ha compartido »%s« con usted", + "%s via %s" : "%s por %s", + "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i", + "You are not allowed to share %s" : "No tiene permitido compartir %s", + "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s", + "You need to provide a password to create a public link, only protected links are allowed" : "Usted necesita proporcionar una contraseña para crear una liga pública, sólo las ligas protegidas están permitidas. ", + "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s", + "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Se persentó una falla al establecer los permisos para %s, porque los permisos exceden los permisos otorgados a %s", + "Setting permissions for %s failed, because the item was not found" : "Se persentó una falla al establecer los permisos para %s, porque no se encontró el elemento ", + "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos", + "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado", + "Cannot clear expiration date. Shares are required to have an expiration date." : "No ha sido posible borrar la fecha de expiración. Los elelentos compartidos deben tener una fecha de expiración.", + "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s", + "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debÃdo a que no se permite volver a compartir", + "Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s", + "Files can't be shared with delete permissions" : "No es posible compartir archivos con permisos de borrado", + "Files can't be shared with create permissions" : "No es posible compartir archivos con permisos de creación", + "Expiration date is in the past" : "La fecha de expiración ya ha pasado", + "Cannot set expiration date more than %s days in the future" : "No es posible establecer la fecha de expiración más allá de %s dÃas en el futuro", + "Could not find category \"%s\"" : "No fue posible encontrar la categoria \"%s\"", + "Sunday" : "Domingo", + "Monday" : "Lunes", + "Tuesday" : "Martes", + "Wednesday" : "Miércoles", + "Thursday" : "Jueves", + "Friday" : "Viernes", + "Saturday" : "Sábado", + "Sun." : "Dom.", + "Mon." : "Lun.", + "Tue." : "Mar.", + "Wed." : "Mie.", + "Thu." : "Jue.", + "Fri." : "Vie.", + "Sat." : "Sab.", + "Su" : "Do", + "Mo" : "Lu", + "Tu" : "Ma", + "We" : "Mi", + "Th" : "Ju", + "Fr" : "Vi", + "Sa" : "Sa", + "January" : "Enero", + "February" : "Febrero", + "March" : "Marzo", + "April" : "Abril", + "May" : "Mayo", + "June" : "Junio", + "July" : "Julio", + "August" : "Agosto", + "September" : "Septiembre", + "October" : "Octubre", + "November" : "Noviembre", + "December" : "Diciembre", + "Jan." : "Ene.", + "Feb." : "Feb.", + "Mar." : "Mar.", + "Apr." : "Abr.", + "May." : "May.", + "Jun." : "Jun.", + "Jul." : "Jul.", + "Aug." : "Ago.", + "Sep." : "Sep.", + "Oct." : "Oct.", + "Nov." : "Nov.", + "Dec." : "Dic.", + "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Sólo se permiten los siguientes caracteres en el nombre de usuario: \"a-z\", \"A-Z\", \"0-9\" y \"_.@-'\"", + "A valid username must be provided" : "Se debe proporcionar un nombre de usuario válido", + "Username contains whitespace at the beginning or at the end" : "El nombre del usuario contiene un espacio en blanco al inicio o al final", + "A valid password must be provided" : "Se debe proporcionar una contraseña válida", + "The username is already being used" : "Ese nombre de usuario ya está en uso", + "Login canceled by app" : "Inicio de sesión cancelado por la aplicación", + "User disabled" : "Usuario deshabilitado", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "La aplicación \"%s\" no puede ser instalada porque el archivo appinfo no se puede leer. ", + "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "La aplicación \"%s\" no puede ser instalada porque no es compatible con esta versión del servidor. ", + "No app name specified" : "No se ha especificado el nombre de la aplicación", + "App '%s' could not be installed!" : "¡La aplicación \"%s\" no puede ser instalada!", + "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s ", + "a safe home for all your data" : "un lugar seguro para todos sus datos", + "File is currently busy, please try again later" : "El archivo se encuentra actualmente en uso, favor de intentarlo más tarde. ", + "Can't read file" : "No se puede leer el archivo", + "Application is not enabled" : "La aplicación está deshabilitada", + "Authentication error" : "Error de autenticación", + "Token expired. Please reload page." : "La ficha ha expirado. Favor de recarga la página.", + "Unknown user" : "Ususario desconocido", + "No database drivers (sqlite, mysql, or postgresql) installed." : "No cuenta con controladores de base de datos (sqlite, mysql o postgresql) instalados. ", + "Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"", + "Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"", + "Cannot create \"data\" directory (%s)" : "No fue posible crear el directorio (%s)", + "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Esto se puede arreglar generalmente al <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">darle al servidor web accesos al directorio raÃz</a>.", + "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Los permisos se pueden arreglar generalmente al %s darle al servidor web accesos al direcotiro raÃz %s.", + "Setting locale to %s failed" : "Se presentó una falla al establecer la regionalización a %s", + "Please ask your server administrator to install the module." : "Favor de solicitar a su adminsitrador la instalación del módulo. ", + "PHP module %s not installed." : "El módulo de PHP %s no está instalado. ", + "PHP setting \"%s\" is not set to \"%s\"." : "El ajuste PHP \"%s\" no esta establecido a \"%s\".", + "Adjusting this setting in php.ini will make Nextcloud run again" : "El cambiar este ajuste del archivo php.ini hará que Nextcloud corra de nuevo.", + "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload está establecido como \"%s\" en lugar del valor esperado de \"0\"", + "libxml2 2.7.0 is at least required. Currently %s is installed." : "Se requiere de por lo menos libxml2 2.7.0. Actualmente %s esta instalado. ", + "To fix this issue update your libxml2 version and restart your web server." : "Para corregir este tema, favor de actualizar la versión de su libxml2 y reinicie su servidor web. ", + "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Esto ha sido causado probablemente por un acelerador de caché como Zend OPcache o eAccelerator.", + "PHP modules have been installed, but they are still listed as missing?" : "¿Los módulos de PHP han sido instalados, pero se siguen enlistando como faltantes?", + "Please ask your server administrator to restart the web server." : "Favor de solicitar al administrador reiniciar el servidor web. ", + "PostgreSQL >= 9 required" : "Se requiere PostgreSQL >= 9", + "Please upgrade your database version" : "Favor de actualizar la versión de la base de datos", + "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Favor de cambiar los permisos a 0770 para que el directorio no pueda ser enlistado por otros usuarios. ", + "Data directory (%s) is readable by other users" : "El directorio de datos (%s) puede ser leÃdo por otros usuarios", + "Data directory (%s) must be an absolute path" : "El directorio de datos (%s) debe ser una ruta absoluta", + "Check the value of \"datadirectory\" in your configuration" : "Verifique el valor de \"datadirectory\" en su configuración", + "Data directory (%s) is invalid" : "El directorio de datos (%s) es inválido", + "Please check that the data directory contains a file \".ocdata\" in its root." : "Favor de verificar que el directorio de datos tenga un archivo \".ocdata\" en su raÃz. ", + "Could not obtain lock type %d on \"%s\"." : "No fue posible obtener el tipo de bloqueo %d en \"%s\". ", + "Storage unauthorized. %s" : "Almacenamiento no autorizado. %s", + "Storage incomplete configuration. %s" : "Configuración incompleta del almacenamiento. %s", + "Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s", + "Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible", + "Storage connection timeout. %s" : "Se agotó el tiempo de conexión del almacenamiento. %s" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/lib/l10n/es_MX.json b/lib/l10n/es_MX.json new file mode 100644 index 00000000000..0e5092178e6 --- /dev/null +++ b/lib/l10n/es_MX.json @@ -0,0 +1,190 @@ +{ "translations": { + "Cannot write into \"config\" directory!" : "¡No se puede escribir en el directorio \"config\"!", + "This can usually be fixed by giving the webserver write access to the config directory" : "Esto generalmente se soluciona dándole al servidor web acceso para escribir en el directorio config. ", + "See %s" : "Ver %s", + "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Esto generalmente se soluciona %s dándole al servidor web acceso para escribir en el directorio config %s.", + "The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "Los archivos de la aplicación %$1s no fueron correctamente remplazados. Favor de asegurarse de que la versión sea compatible con el servidor.", + "Sample configuration detected" : "Se ha detectado la configuración de muestra", + "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Se ha detectado que la configuración de muestra ha sido copiada. Esto puede descomponer su instalacón y no está soportado. Favor de leer la documentación antes de hacer cambios en el archivo config.php", + "%1$s and %2$s" : "%1$s y %2$s", + "%1$s, %2$s and %3$s" : "%1$s, %2$s y %3$s", + "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s y %4$s", + "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s y %5$s", + "PHP %s or higher is required." : "Se requiere de PHPH %s o superior.", + "PHP with a version lower than %s is required." : "PHP con una versión inferiror a la %s es requerido. ", + "%sbit or higher PHP required." : "se requiere PHP para %sbit o superior.", + "Following databases are supported: %s" : "Las siguientes bases de datos están soportadas: %s", + "The command line tool %s could not be found" : "No fue posible encontar la herramienta de lÃnea de comando %s", + "The library %s is not available." : "La biblioteca %s no está disponible. ", + "Library %s with a version higher than %s is required - available version %s." : "La biblitoteca %s con una versión superiror a la %s es requerida - versión disponible %s.", + "Library %s with a version lower than %s is required - available version %s." : "Se requiere de la biblioteca %s con una versión inferiror a la %s - la versión %s está disponible. ", + "Following platforms are supported: %s" : "Las siguientes plataformas están soportadas: %s", + "Server version %s or higher is required." : "Se requiere la versión del servidor %s o superior. ", + "Server version %s or lower is required." : "La versión del servidor %s o inferior es requerdia. ", + "Unknown filetype" : "Tipo de archivo desconocido", + "Invalid image" : "Imagen inválida", + "Avatar image is not square" : "La imagen del avatar no es un cuadrado", + "today" : "hoy", + "yesterday" : "ayer", + "_%n day ago_::_%n days ago_" : ["hace %n dÃa","hace %n dÃas"], + "last month" : "mes pasado", + "_%n month ago_::_%n months ago_" : ["Hace %n mes","Hace %n meses"], + "last year" : "año pasado", + "_%n year ago_::_%n years ago_" : ["hace %n año","hace %n años"], + "_%n hour ago_::_%n hours ago_" : ["Hace %n hora","Hace %n horas"], + "_%n minute ago_::_%n minutes ago_" : ["Hace %n minuto","Hace %n minutos"], + "seconds ago" : "hace segundos", + "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "El módulo con id: %s no existe. Favor de habilitarlo en sus ajustes de aplicación o contacte a su administrador. ", + "File name is a reserved word" : "Nombre de archivo es una palabra reservada", + "File name contains at least one invalid character" : "El nombre del archivo contiene al menos un caracter inválido", + "File name is too long" : "El nombre del archivo es demasiado largo", + "Dot files are not allowed" : "Los archivos Dot no están permitidos", + "Empty filename is not allowed" : "El uso de nombres de archivo vacÃos no está permitido", + "Help" : "Ayuda", + "Apps" : "Aplicaciones", + "Personal" : "Personal", + "Log out" : "Salir de la sesión", + "Users" : "Usuarios", + "Admin" : "Administración", + "APCu" : "APCu", + "Redis" : "Redis", + "Server settings" : "Ajustes del servidor", + "Sharing" : "Compartiendo", + "Encryption" : "Encripción", + "Additional settings" : "Ajustes adicionales", + "Tips & tricks" : "Consejos y trucos", + "%s enter the database username and name." : "%s ingrese el nombre del usuario y nombre de la base de datos", + "%s enter the database username." : "%s ingresar el nombre de usuario de la base de datos.", + "%s enter the database name." : "%s ingresar el nombre de la base de datos", + "%s you may not use dots in the database name" : "%s no puede utilizar puntos en el nombre de la base de datos", + "Oracle connection could not be established" : "No fue posible establecer la conexión a Oracle", + "Oracle username and/or password not valid" : "El nombre de usuario y/o contraseña de Oracle inválidos", + "DB Error: \"%s\"" : "Error de BD: \"%s\"", + "Offending command was: \"%s\"" : "Comando infractor: \"%s\"", + "You need to enter either an existing account or the administrator." : "Tiene que ingresar una cuenta existente o la del administrador.", + "Offending command was: \"%s\", name: %s, password: %s" : "Comando infractor: \"%s\", nombre: %s, contraseña: %s", + "PostgreSQL username and/or password not valid" : "El nombre de usuario y/o contraseña de PostgreSQL inválidos", + "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "OS X de Mac no está soportado y %s no funcionará correctamente en esta plataforma ¡Uselo bajo su propio riesgo!", + "For the best results, please consider using a GNU/Linux server instead." : "Para mejores resultados, favor de cosiderar usar en su lugar un servidor GNU/Linux.", + "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Al parecer esta instancia %s está corriendo en un ambiente PHP de 32-bits y el open_basedir ha sido configurado en el archivo php.ini. Esto generará problemas con archivos de más de 4GB de tamaño y es altamente desalentado. ", + "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Favor de eliminar el ajuste open_basedir de su archivo php.ini o cambie a PHP de 64 bits. ", + "Set an admin username." : "Configurar un nombre de usuario del administrador", + "Set an admin password." : "Establecer la contraseña del administrador.", + "Can't create or write into the data directory %s" : "No es posible crear o escribir en el directorio de datos %s", + "%s shared »%s« with you" : "%s ha compartido »%s« con usted", + "%s via %s" : "%s por %s", + "Sharing %s failed, because the backend does not allow shares from type %i" : "Se presentó una falla al compartir %s, porque el backend no permite elementos compartidos de tipo %i", + "You are not allowed to share %s" : "No tiene permitido compartir %s", + "Sharing %s failed, because %s is not a member of the group %s" : "Se presentó una falla al compartir %s debido a que %s no es un miembro del grupo %s", + "You need to provide a password to create a public link, only protected links are allowed" : "Usted necesita proporcionar una contraseña para crear una liga pública, sólo las ligas protegidas están permitidas. ", + "Share type %s is not valid for %s" : "El tipo del elemento compartido %s no es válido para %s", + "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Se persentó una falla al establecer los permisos para %s, porque los permisos exceden los permisos otorgados a %s", + "Setting permissions for %s failed, because the item was not found" : "Se persentó una falla al establecer los permisos para %s, porque no se encontró el elemento ", + "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "No ha sido posible establecer la fecha de expiración. Los recursos compartidos no pueden expirar después de %s tras haber sido compartidos", + "Cannot set expiration date. Expiration date is in the past" : "No ha sido posible establecer la fecha de expiración. La fecha de expiración ya ha pasado", + "Cannot clear expiration date. Shares are required to have an expiration date." : "No ha sido posible borrar la fecha de expiración. Los elelentos compartidos deben tener una fecha de expiración.", + "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Se presentó una falla al compartir %s, porque los permisos exceden los permisos otorgados a %s", + "Sharing %s failed, because resharing is not allowed" : "Falla al compartir %s debÃdo a que no se permite volver a compartir", + "Cannot increase permissions of %s" : "No se pueden incrementar los permisos de %s", + "Files can't be shared with delete permissions" : "No es posible compartir archivos con permisos de borrado", + "Files can't be shared with create permissions" : "No es posible compartir archivos con permisos de creación", + "Expiration date is in the past" : "La fecha de expiración ya ha pasado", + "Cannot set expiration date more than %s days in the future" : "No es posible establecer la fecha de expiración más allá de %s dÃas en el futuro", + "Could not find category \"%s\"" : "No fue posible encontrar la categoria \"%s\"", + "Sunday" : "Domingo", + "Monday" : "Lunes", + "Tuesday" : "Martes", + "Wednesday" : "Miércoles", + "Thursday" : "Jueves", + "Friday" : "Viernes", + "Saturday" : "Sábado", + "Sun." : "Dom.", + "Mon." : "Lun.", + "Tue." : "Mar.", + "Wed." : "Mie.", + "Thu." : "Jue.", + "Fri." : "Vie.", + "Sat." : "Sab.", + "Su" : "Do", + "Mo" : "Lu", + "Tu" : "Ma", + "We" : "Mi", + "Th" : "Ju", + "Fr" : "Vi", + "Sa" : "Sa", + "January" : "Enero", + "February" : "Febrero", + "March" : "Marzo", + "April" : "Abril", + "May" : "Mayo", + "June" : "Junio", + "July" : "Julio", + "August" : "Agosto", + "September" : "Septiembre", + "October" : "Octubre", + "November" : "Noviembre", + "December" : "Diciembre", + "Jan." : "Ene.", + "Feb." : "Feb.", + "Mar." : "Mar.", + "Apr." : "Abr.", + "May." : "May.", + "Jun." : "Jun.", + "Jul." : "Jul.", + "Aug." : "Ago.", + "Sep." : "Sep.", + "Oct." : "Oct.", + "Nov." : "Nov.", + "Dec." : "Dic.", + "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Sólo se permiten los siguientes caracteres en el nombre de usuario: \"a-z\", \"A-Z\", \"0-9\" y \"_.@-'\"", + "A valid username must be provided" : "Se debe proporcionar un nombre de usuario válido", + "Username contains whitespace at the beginning or at the end" : "El nombre del usuario contiene un espacio en blanco al inicio o al final", + "A valid password must be provided" : "Se debe proporcionar una contraseña válida", + "The username is already being used" : "Ese nombre de usuario ya está en uso", + "Login canceled by app" : "Inicio de sesión cancelado por la aplicación", + "User disabled" : "Usuario deshabilitado", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "La aplicación \"%s\" no puede ser instalada porque el archivo appinfo no se puede leer. ", + "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "La aplicación \"%s\" no puede ser instalada porque no es compatible con esta versión del servidor. ", + "No app name specified" : "No se ha especificado el nombre de la aplicación", + "App '%s' could not be installed!" : "¡La aplicación \"%s\" no puede ser instalada!", + "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "La aplicación \"%s\" no puede ser instalada porque las siguientes dependencias no están satisfechas: %s ", + "a safe home for all your data" : "un lugar seguro para todos sus datos", + "File is currently busy, please try again later" : "El archivo se encuentra actualmente en uso, favor de intentarlo más tarde. ", + "Can't read file" : "No se puede leer el archivo", + "Application is not enabled" : "La aplicación está deshabilitada", + "Authentication error" : "Error de autenticación", + "Token expired. Please reload page." : "La ficha ha expirado. Favor de recarga la página.", + "Unknown user" : "Ususario desconocido", + "No database drivers (sqlite, mysql, or postgresql) installed." : "No cuenta con controladores de base de datos (sqlite, mysql o postgresql) instalados. ", + "Cannot write into \"config\" directory" : "No fue posible escribir en el directorio \"config\"", + "Cannot write into \"apps\" directory" : "No fue posible escribir en el directorio \"apps\"", + "Cannot create \"data\" directory (%s)" : "No fue posible crear el directorio (%s)", + "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Esto se puede arreglar generalmente al <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">darle al servidor web accesos al directorio raÃz</a>.", + "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Los permisos se pueden arreglar generalmente al %s darle al servidor web accesos al direcotiro raÃz %s.", + "Setting locale to %s failed" : "Se presentó una falla al establecer la regionalización a %s", + "Please ask your server administrator to install the module." : "Favor de solicitar a su adminsitrador la instalación del módulo. ", + "PHP module %s not installed." : "El módulo de PHP %s no está instalado. ", + "PHP setting \"%s\" is not set to \"%s\"." : "El ajuste PHP \"%s\" no esta establecido a \"%s\".", + "Adjusting this setting in php.ini will make Nextcloud run again" : "El cambiar este ajuste del archivo php.ini hará que Nextcloud corra de nuevo.", + "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload está establecido como \"%s\" en lugar del valor esperado de \"0\"", + "libxml2 2.7.0 is at least required. Currently %s is installed." : "Se requiere de por lo menos libxml2 2.7.0. Actualmente %s esta instalado. ", + "To fix this issue update your libxml2 version and restart your web server." : "Para corregir este tema, favor de actualizar la versión de su libxml2 y reinicie su servidor web. ", + "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Esto ha sido causado probablemente por un acelerador de caché como Zend OPcache o eAccelerator.", + "PHP modules have been installed, but they are still listed as missing?" : "¿Los módulos de PHP han sido instalados, pero se siguen enlistando como faltantes?", + "Please ask your server administrator to restart the web server." : "Favor de solicitar al administrador reiniciar el servidor web. ", + "PostgreSQL >= 9 required" : "Se requiere PostgreSQL >= 9", + "Please upgrade your database version" : "Favor de actualizar la versión de la base de datos", + "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Favor de cambiar los permisos a 0770 para que el directorio no pueda ser enlistado por otros usuarios. ", + "Data directory (%s) is readable by other users" : "El directorio de datos (%s) puede ser leÃdo por otros usuarios", + "Data directory (%s) must be an absolute path" : "El directorio de datos (%s) debe ser una ruta absoluta", + "Check the value of \"datadirectory\" in your configuration" : "Verifique el valor de \"datadirectory\" en su configuración", + "Data directory (%s) is invalid" : "El directorio de datos (%s) es inválido", + "Please check that the data directory contains a file \".ocdata\" in its root." : "Favor de verificar que el directorio de datos tenga un archivo \".ocdata\" en su raÃz. ", + "Could not obtain lock type %d on \"%s\"." : "No fue posible obtener el tipo de bloqueo %d en \"%s\". ", + "Storage unauthorized. %s" : "Almacenamiento no autorizado. %s", + "Storage incomplete configuration. %s" : "Configuración incompleta del almacenamiento. %s", + "Storage connection error. %s" : "Se presentó un error con la conexión al almacenamiento. %s", + "Storage is temporarily not available" : "El almacenamieto se encuentra temporalmente no disponible", + "Storage connection timeout. %s" : "Se agotó el tiempo de conexión del almacenamiento. %s" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js index e97a4611386..d007950d9c9 100644 --- a/lib/l10n/fr.js +++ b/lib/l10n/fr.js @@ -52,6 +52,7 @@ OC.L10N.register( "Redis" : "Redis", "Server settings" : "Paramètres serveur", "Sharing" : "Partage", + "Security" : "Sécurité", "Encryption" : "Chiffrement", "Additional settings" : "Paramètres supplémentaires", "Tips & tricks" : "Trucs et astuces", diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json index 3ef10e60d13..150b566dffe 100644 --- a/lib/l10n/fr.json +++ b/lib/l10n/fr.json @@ -50,6 +50,7 @@ "Redis" : "Redis", "Server settings" : "Paramètres serveur", "Sharing" : "Partage", + "Security" : "Sécurité", "Encryption" : "Chiffrement", "Additional settings" : "Paramètres supplémentaires", "Tips & tricks" : "Trucs et astuces", diff --git a/lib/l10n/hu.js b/lib/l10n/hu.js index e81871b02ea..93648ed8ccb 100644 --- a/lib/l10n/hu.js +++ b/lib/l10n/hu.js @@ -45,12 +45,14 @@ OC.L10N.register( "Help" : "Súgó", "Apps" : "Alkalmazások", "Personal" : "Személyes", + "Log out" : "Kijelentkezés", "Users" : "Felhasználók", "Admin" : "Adminisztrátor", "APCu" : "APCu", "Redis" : "Redis", "Server settings" : "Szerver beállÃtások", "Sharing" : "Megosztás", + "Security" : "Biztonság", "Encryption" : "TitkosÃtás", "Additional settings" : "További beállÃtások", "Tips & tricks" : "Tippek és trükkök", diff --git a/lib/l10n/hu.json b/lib/l10n/hu.json index 280cfe6d75a..954bd34eb88 100644 --- a/lib/l10n/hu.json +++ b/lib/l10n/hu.json @@ -43,12 +43,14 @@ "Help" : "Súgó", "Apps" : "Alkalmazások", "Personal" : "Személyes", + "Log out" : "Kijelentkezés", "Users" : "Felhasználók", "Admin" : "Adminisztrátor", "APCu" : "APCu", "Redis" : "Redis", "Server settings" : "Szerver beállÃtások", "Sharing" : "Megosztás", + "Security" : "Biztonság", "Encryption" : "TitkosÃtás", "Additional settings" : "További beállÃtások", "Tips & tricks" : "Tippek és trükkök", diff --git a/lib/l10n/ja.js b/lib/l10n/ja.js index 22bd07b209d..bf1daae259a 100644 --- a/lib/l10n/ja.js +++ b/lib/l10n/ja.js @@ -45,12 +45,14 @@ OC.L10N.register( "Help" : "ヘルプ", "Apps" : "アプリ", "Personal" : "個人", + "Log out" : "ãƒã‚°ã‚¢ã‚¦ãƒˆ", "Users" : "ユーザー", "Admin" : "管ç†", "APCu" : "APCu", "Redis" : "Redis", "Server settings" : "サーãƒãƒ¼è¨å®š", "Sharing" : "共有", + "Security" : "ã‚»ã‚ュリティ", "Encryption" : "æš—å·åŒ–", "Additional settings" : "è¿½åŠ è¨å®š", "Tips & tricks" : "ヒントã¨ã‚³ãƒ„", diff --git a/lib/l10n/ja.json b/lib/l10n/ja.json index c6a9929940d..771020b9890 100644 --- a/lib/l10n/ja.json +++ b/lib/l10n/ja.json @@ -43,12 +43,14 @@ "Help" : "ヘルプ", "Apps" : "アプリ", "Personal" : "個人", + "Log out" : "ãƒã‚°ã‚¢ã‚¦ãƒˆ", "Users" : "ユーザー", "Admin" : "管ç†", "APCu" : "APCu", "Redis" : "Redis", "Server settings" : "サーãƒãƒ¼è¨å®š", "Sharing" : "共有", + "Security" : "ã‚»ã‚ュリティ", "Encryption" : "æš—å·åŒ–", "Additional settings" : "è¿½åŠ è¨å®š", "Tips & tricks" : "ヒントã¨ã‚³ãƒ„", diff --git a/lib/l10n/pl.js b/lib/l10n/pl.js index bd9113027c3..881b04ccc30 100644 --- a/lib/l10n/pl.js +++ b/lib/l10n/pl.js @@ -52,6 +52,7 @@ OC.L10N.register( "Redis" : "Redis", "Server settings" : "Ustawienia serwera", "Sharing" : "UdostÄ™pnianie", + "Security" : "BepieczeÅ„stwo", "Encryption" : "Szyfrowanie", "Additional settings" : "Ustawienia dodatkowe", "Tips & tricks" : "Porady i wskazówki", diff --git a/lib/l10n/pl.json b/lib/l10n/pl.json index 8673a21fb46..19bc38b3705 100644 --- a/lib/l10n/pl.json +++ b/lib/l10n/pl.json @@ -50,6 +50,7 @@ "Redis" : "Redis", "Server settings" : "Ustawienia serwera", "Sharing" : "UdostÄ™pnianie", + "Security" : "BepieczeÅ„stwo", "Encryption" : "Szyfrowanie", "Additional settings" : "Ustawienia dodatkowe", "Tips & tricks" : "Porady i wskazówki", diff --git a/lib/l10n/pt_BR.js b/lib/l10n/pt_BR.js index a9f3ddaf2e0..94f90321708 100644 --- a/lib/l10n/pt_BR.js +++ b/lib/l10n/pt_BR.js @@ -4,25 +4,25 @@ OC.L10N.register( "Cannot write into \"config\" directory!" : "Não é possÃvel gravar no diretório \"config\"!", "This can usually be fixed by giving the webserver write access to the config directory" : "Isso geralmente pode ser corrigido dando o acesso de gravação ao webserver para o diretório de configuração", "See %s" : "Ver %s", - "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Isso geralmente pode ser corrigido dando permissão de gravação %sgiving ao webserver para o directory%s de configuração.", - "The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "Os arquivos do app %$1s não foram substituÃdos corretamente. Certifique-se de que é uma versão compatÃvel com o servidor.", - "Sample configuration detected" : "Exemplo de configuração detectada", - "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Foi detectado que a configuração exemplo foi copiada. Isso pode desestabilizar sua instalação e não é suportado. Por favor, leia a documentação antes de realizar mudanças no config.php", + "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Isso geralmente pode ser corrigido por %s dando permissão de gravação ao servidor web para o diretório de configuração %s.", + "The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "Os arquivos do aplicativo %$1s não foram substituÃdos corretamente. Certifique-se de que é uma versão compatÃvel com o servidor.", + "Sample configuration detected" : "Configuração de exemplo detectada", + "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Foi detectado que a configuração de exemplo foi copiada. Isso pode desestabilizar sua instalação e não é suportado. Por favor leia a documentação antes de realizar mudanças no config.php", "%1$s and %2$s" : "%1$s e %2$s", "%1$s, %2$s and %3$s" : "%1$s, %2$s e %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s e %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s e %5$s", - "PHP %s or higher is required." : "É requerido PHP %s ou superior.", + "PHP %s or higher is required." : "PHP %s ou superior é requerido.", "PHP with a version lower than %s is required." : "É requerida uma versão PHP mais antiga que a %s .", "%sbit or higher PHP required." : "%sbit ou maior é requerido.", - "Following databases are supported: %s" : "Following databases are supported: %s", + "Following databases are supported: %s" : "Os seguintes bancos de dados são suportsdos: %s", "The command line tool %s could not be found" : "A ferramenta de linha de comando %s não pode ser encontrada", "The library %s is not available." : "A biblioteca %s não está disponÃvel.", "Library %s with a version higher than %s is required - available version %s." : "É requerida uma biblioteca %s com uma versão maior que %s - versão disponÃvel %s.", "Library %s with a version lower than %s is required - available version %s." : "É requerida uma biblioteca %s com uma versão menor que %s - versão disponÃvel %s.", "Following platforms are supported: %s" : "As seguintes plataformas são suportadas: %s", - "Server version %s or higher is required." : "É requerido um Servidor da versão %s ou superior.", - "Server version %s or lower is required." : "É requerido um Servidor da versão %s ou anterior.", + "Server version %s or higher is required." : "É requerido um servidor da versão %s ou superior.", + "Server version %s or lower is required." : "É requerido um servidor da versão %s ou anterior.", "Unknown filetype" : "Tipo de arquivo desconhecido", "Invalid image" : "Imagem inválida", "Avatar image is not square" : "A imagem do avatar não é quadrada", @@ -38,22 +38,24 @@ OC.L10N.register( "seconds ago" : "segundos atrás", "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Módulo com id: %s não existe. Ative-o em suas configurações de aplicativos ou contate o administrador.", "File name is a reserved word" : "O nome do arquivo é uma palavra reservada", - "File name contains at least one invalid character" : "O nome do arquivo contém pelo menos um caractere inválido", + "File name contains at least one invalid character" : "O nome do arquivo contém pelo menos um caracter inválido", "File name is too long" : "O nome do arquivo é muito longo", - "Dot files are not allowed" : "Dot arquivos não são permitidos", - "Empty filename is not allowed" : "Um nome de arquivo vazio não é permitido.", + "Dot files are not allowed" : "Arquivos Dot não são permitidos", + "Empty filename is not allowed" : "Nome de arquivo vazio não é permitido.", "Help" : "Ajuda", "Apps" : "Aplicações", "Personal" : "Pessoal", + "Log out" : "SaÃda", "Users" : "Usuários", "Admin" : "Admin", "APCu" : "APCu", "Redis" : "Redis", - "Server settings" : "Configurações de servidor", + "Server settings" : "Configurações do servidor", "Sharing" : "Compartilhamento", + "Security" : "Segurança", "Encryption" : "Criptografia", "Additional settings" : "Configurações adicionais", - "Tips & tricks" : "Dias & truques", + "Tips & tricks" : "Dicas & truques", "%s enter the database username and name." : "%s insira o nome de usuário e o nome do banco de dados.", "%s enter the database username." : "%s insira o nome de usuário do banco de dados.", "%s enter the database name." : "%s insira o nome do banco de dados.", @@ -66,13 +68,13 @@ OC.L10N.register( "Offending command was: \"%s\", name: %s, password: %s" : "Comando ofensivo era: \"%s\", nome: %s, senha: %s", "PostgreSQL username and/or password not valid" : "Nome de usuário e/ou senha PostgreSQL inválido(s)", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X não é suportado e %s não funcionará corretamente nesta plataforma. Use-o por sua conta e risco!", - "For the best results, please consider using a GNU/Linux server instead." : "Para obter os melhores resultados, por favor, considere o uso de um servidor GNU/Linux em seu lugar.", - "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Aparentemente a instância %s está rodando em um ambiente PHP de 32bit e o open_basedir foi configurado no php.ini. Isto pode gerar problemas com arquivos maiores que 4GB e é altamente desencorajado.", + "For the best results, please consider using a GNU/Linux server instead." : "Para obter melhores resultados, por favor considere o uso de um servidor GNU/Linux em seu lugar.", + "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Aparentemente a instância %s está rodando em um ambiente PHP de 32 bits e o open_basedir foi configurado no php.ini. Isto pode gerar problemas com arquivos maiores que 4GB e é altamente desencorajado.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Por favor, remova a configuração de open_basedir de seu php.ini ou altere o PHP para 64bit.", "Set an admin username." : "Defina um nome do usuário administrador.", "Set an admin password." : "Defina uma senha de administrador.", "Can't create or write into the data directory %s" : "Não é possÃvel criar ou gravar no diretório de dados %s", - "Invalid Federated Cloud ID" : "Associação Inválida de Nuvem ID", + "Invalid Federated Cloud ID" : "ID inválida de Nuvem Federada", "%s shared »%s« with you" : "%s compartilhou »%s« com você", "%s via %s" : "%s via %s", "Sharing %s failed, because the backend does not allow shares from type %i" : "O compartilhamento %s falhou, porque o processo interno não permite ações de tipo %i", @@ -88,21 +90,21 @@ OC.L10N.register( "You need to provide a password to create a public link, only protected links are allowed" : "Você precisa fornecer uma senha para criar um link público, apenas links protegidos são permitidos", "Sharing %s failed, because sharing with links is not allowed" : "Compartilhamento %s falhou, porque compartilhamento com links não é permitido", "Not allowed to create a federated share with the same user" : "Não é permitido criar um compartilhamento associado com o mesmo usuário", - "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "O compartilhamento %s falhou, porque não foi possÃvel encontrar %s, talvez o servidor esteja inacessÃvel.", + "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "O compartilhamento %s falhou, porque não foi possÃvel encontrar %s. Talvez o servidor esteja inacessÃvel.", "Share type %s is not valid for %s" : "Tipo de compartilhamento %s não é válido para %s", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Definir permissões para %s falhou, porque as permissões excedem as permissões concedidas a %s", "Setting permissions for %s failed, because the item was not found" : "Definir permissões para %s falhou, porque o item não foi encontrado", "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Não é possÃvel definir a data de expiração. Compartilhamentos não podem expirar mais tarde que %s depois de terem sido compartilhados", "Cannot set expiration date. Expiration date is in the past" : "Não é possÃvel definir a data de validade. Data de expiração está no passado", - "Cannot clear expiration date. Shares are required to have an expiration date." : "Não é possÃvel eliminar a data de expiração. Ações são obrigados a ter uma data de expiração.", + "Cannot clear expiration date. Shares are required to have an expiration date." : "Não é possÃvel eliminar a data de expiração. Compartilhamentos devem ter uma data de expiração.", "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Compartilhando backend %s deve implementar a interface OCP\\Share_Backend", "Sharing backend %s not found" : "Compartilhamento backend %s não encontrado", "Sharing backend for %s not found" : "Compartilhamento backend para %s não encontrado", "Sharing failed, because the user %s is the original sharer" : "O compartilhamento falhou, porque o usuário %s é o compartilhador original", "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Compartilhamento %s falhou, porque as permissões excedem as permissões concedidas a %s", "Sharing %s failed, because resharing is not allowed" : "Compartilhamento %s falhou, porque recompartilhamentos não são permitidos", - "Sharing %s failed, because the sharing backend for %s could not find its source" : "Compartilhamento %s falhou, porque a infra-estrutura de compartilhamento para %s não conseguiu encontrar a sua fonte", - "Sharing %s failed, because the file could not be found in the file cache" : "Compartilhamento %s falhou, porque o arquivo não pôde ser encontrado no cache de arquivos", + "Sharing %s failed, because the sharing backend for %s could not find its source" : "Compartilhamento %s falhou, porque a infraestrutura de compartilhamento para %s não conseguiu encontrar a sua fonte", + "Sharing %s failed, because the file could not be found in the file cache" : "Compartilhamento %s falhou, porque o arquivo não pode ser encontrado no cache de arquivos", "Cannot increase permissions of %s" : "Não é possÃvel aumentar as permissões de %s", "Files can't be shared with delete permissions" : "Os arquivos não podem ser compartilhadas com permissões de exclusão", "Files can't be shared with create permissions" : "Os arquivos não podem ser compartilhados com permissões de criação", @@ -113,7 +115,7 @@ OC.L10N.register( "Monday" : "Segunda-feira", "Tuesday" : "Terça-feira", "Wednesday" : "Quarta-feira", - "Thursday" : "Quita-feira", + "Thursday" : "Quinta-feira", "Friday" : "Sexta-feira", "Saturday" : "Sabado", "Sun." : "Dom.", @@ -161,11 +163,11 @@ OC.L10N.register( "The username is already being used" : "Este nome de usuário já está sendo usado", "Login canceled by app" : "Login cancelado pelo aplicativo", "User disabled" : "Usuário desativado", - "App \"%s\" cannot be installed because appinfo file cannot be read." : "O App \"%s\" não pode ser instalado porque o arquivo appinfo não pode ser lido.", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "O aplicativo \"%s\" não pode ser instalado porque o arquivo appinfo não pode ser lido.", "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "O aplicativo \"%s\" não pode ser instalado pois não é compatÃvel com a versão do servidor.", "No app name specified" : "O nome do aplicativo não foi especificado.", "App '%s' could not be installed!" : "O aplicativo '%s' pode não estar instalado!", - "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "App \"%s\" não pode ser instalado porque as seguintes dependências não foram cumpridas: %s", + "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "O aplicativo \"%s\" não pode ser instalado porque as seguintes dependências não foram cumpridas: %s", "a safe home for all your data" : "um local seguro para todos os seus dados", "File is currently busy, please try again later" : "O arquivo está ocupado, tente novamente mais tarde", "Can't read file" : "Não é possÃvel ler arquivo", @@ -176,27 +178,27 @@ OC.L10N.register( "No database drivers (sqlite, mysql, or postgresql) installed." : "Nenhum driver de banco de dados (sqlite, mysql, or postgresql) instalado.", "Cannot write into \"config\" directory" : "Não é possÃvel gravar no diretório \"config\"", "Cannot write into \"apps\" directory" : "Não é possÃvel gravar no diretório \"apps\"", - "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Isto pode ser corrigido dando ao webserver permissão de escrita %sgiving para o diretório apps directory%s ou desabilitando o appstore no arquivo de configuração.", + "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Isto pode ser corrigido por %sdando ao servidor web permissão de escrita para o diretório app%s ou desabilitando o appstore no arquivo de configuração.", "Cannot create \"data\" directory (%s)" : "Não pode ser criado \"dados\" no diretório (%s)", - "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Esta geralmente pode ser fixado por <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">dando permissão de gravação ao diretório raiz do servidor</a>.", - "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Permissões podem ser corrigidas dando permissão de escita %sgiving ao webserver para o diretório raiz directory%s", - "Setting locale to %s failed" : "Falha ao configurar localidade para %s", + "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Isto geralmente pode ser corrigido ao <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">dar permissão de gravação no diretório raiz</a>.", + "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Permissões podem ser corrigidas por %sdando permissão de escrita ao servidor web para o diretório raiz %s", + "Setting locale to %s failed" : "Falha ao configurar localização para %s", "Please install one of these locales on your system and restart your webserver." : "Por favor, defina uma dessas localizações em seu sistema e reinicie o seu servidor web.", "Please ask your server administrator to install the module." : "Por favor, peça ao seu administrador do servidor para instalar o módulo.", "PHP module %s not installed." : "Módulo PHP %s não instalado.", - "PHP setting \"%s\" is not set to \"%s\"." : "Configurações \"%s\" PHP não está configurado para \"%s\".", + "PHP setting \"%s\" is not set to \"%s\"." : "Configuração PHP \"%s\" não está configurado para \"%s\".", "Adjusting this setting in php.ini will make Nextcloud run again" : "Ajustar a configuração no php.ini fará com que o Nextcloud execute novamente", - "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload está definido para \"%s\" em vez do valor esperado \"0\"", + "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload está definido para \"%s\" ao invés do valor esperado \"0\"", "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Para corrigir esse problema defina <code>mbstring.func_overload</code> para <code>0</code> em seu php.ini", "libxml2 2.7.0 is at least required. Currently %s is installed." : "A libxml2 2.7.0 é a mÃnima versão requerida. Atualmente a versão %s está instalada.", "To fix this issue update your libxml2 version and restart your web server." : "Para corrigir este problema, atualize a versão da sua libxml2 e reinicie seu servidor web.", - "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP está, aparentemente, configurado para retirar blocos doc inline. Isso fará com que vários aplicativos do núcleo fiquem inacessÃveis.", - "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Isso provavelmente é causado por uma cache/acelerador, como Zend OPcache ou eAccelerator.", - "PHP modules have been installed, but they are still listed as missing?" : "Módulos do PHP foram instalados, mas eles ainda estão listados como desaparecidos?", - "Please ask your server administrator to restart the web server." : "Por favor, peça ao seu administrador do servidor para reiniciar o servidor web.", + "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP aparentemente está configurado para retirar blocos doc inline. Isso fará com que vários aplicativos do núcleo fiquem inacessÃveis.", + "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Isso provavelmente é causado por um cache/acelerador, como Zend OPcache ou eAccelerator.", + "PHP modules have been installed, but they are still listed as missing?" : "Módulos do PHP foram instalados, mas eles ainda estão listados como faltantes?", + "Please ask your server administrator to restart the web server." : "Por favor peça ao seu administrador do servidor para reiniciar o servidor web.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 requirido", - "Please upgrade your database version" : "Por favor, atualize sua versão do banco de dados", - "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Por favor, altere as permissões para 0770 para que o diretório não possa ser listado por outros usuários.", + "Please upgrade your database version" : "Por favor atualize sua versão do banco de dados", + "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Por favor altere as permissões para 0770 para que o diretório não possa ser listado por outros usuários.", "Data directory (%s) is readable by other users" : "Diretório de dados (%s) pode ser lido por outros usuários", "Data directory (%s) must be an absolute path" : "Diretório de dados (%s) deve ser um caminho absoluto", "Check the value of \"datadirectory\" in your configuration" : "Verifique o valor do \"diretóriodedados\" na sua configuração", diff --git a/lib/l10n/pt_BR.json b/lib/l10n/pt_BR.json index 8ba757466f6..f518a494e98 100644 --- a/lib/l10n/pt_BR.json +++ b/lib/l10n/pt_BR.json @@ -2,25 +2,25 @@ "Cannot write into \"config\" directory!" : "Não é possÃvel gravar no diretório \"config\"!", "This can usually be fixed by giving the webserver write access to the config directory" : "Isso geralmente pode ser corrigido dando o acesso de gravação ao webserver para o diretório de configuração", "See %s" : "Ver %s", - "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Isso geralmente pode ser corrigido dando permissão de gravação %sgiving ao webserver para o directory%s de configuração.", - "The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "Os arquivos do app %$1s não foram substituÃdos corretamente. Certifique-se de que é uma versão compatÃvel com o servidor.", - "Sample configuration detected" : "Exemplo de configuração detectada", - "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Foi detectado que a configuração exemplo foi copiada. Isso pode desestabilizar sua instalação e não é suportado. Por favor, leia a documentação antes de realizar mudanças no config.php", + "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Isso geralmente pode ser corrigido por %s dando permissão de gravação ao servidor web para o diretório de configuração %s.", + "The files of the app %$1s were not replaced correctly. Make sure it is a version compatible with the server." : "Os arquivos do aplicativo %$1s não foram substituÃdos corretamente. Certifique-se de que é uma versão compatÃvel com o servidor.", + "Sample configuration detected" : "Configuração de exemplo detectada", + "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Foi detectado que a configuração de exemplo foi copiada. Isso pode desestabilizar sua instalação e não é suportado. Por favor leia a documentação antes de realizar mudanças no config.php", "%1$s and %2$s" : "%1$s e %2$s", "%1$s, %2$s and %3$s" : "%1$s, %2$s e %3$s", "%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s e %4$s", "%1$s, %2$s, %3$s, %4$s and %5$s" : "%1$s, %2$s, %3$s, %4$s e %5$s", - "PHP %s or higher is required." : "É requerido PHP %s ou superior.", + "PHP %s or higher is required." : "PHP %s ou superior é requerido.", "PHP with a version lower than %s is required." : "É requerida uma versão PHP mais antiga que a %s .", "%sbit or higher PHP required." : "%sbit ou maior é requerido.", - "Following databases are supported: %s" : "Following databases are supported: %s", + "Following databases are supported: %s" : "Os seguintes bancos de dados são suportsdos: %s", "The command line tool %s could not be found" : "A ferramenta de linha de comando %s não pode ser encontrada", "The library %s is not available." : "A biblioteca %s não está disponÃvel.", "Library %s with a version higher than %s is required - available version %s." : "É requerida uma biblioteca %s com uma versão maior que %s - versão disponÃvel %s.", "Library %s with a version lower than %s is required - available version %s." : "É requerida uma biblioteca %s com uma versão menor que %s - versão disponÃvel %s.", "Following platforms are supported: %s" : "As seguintes plataformas são suportadas: %s", - "Server version %s or higher is required." : "É requerido um Servidor da versão %s ou superior.", - "Server version %s or lower is required." : "É requerido um Servidor da versão %s ou anterior.", + "Server version %s or higher is required." : "É requerido um servidor da versão %s ou superior.", + "Server version %s or lower is required." : "É requerido um servidor da versão %s ou anterior.", "Unknown filetype" : "Tipo de arquivo desconhecido", "Invalid image" : "Imagem inválida", "Avatar image is not square" : "A imagem do avatar não é quadrada", @@ -36,22 +36,24 @@ "seconds ago" : "segundos atrás", "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Módulo com id: %s não existe. Ative-o em suas configurações de aplicativos ou contate o administrador.", "File name is a reserved word" : "O nome do arquivo é uma palavra reservada", - "File name contains at least one invalid character" : "O nome do arquivo contém pelo menos um caractere inválido", + "File name contains at least one invalid character" : "O nome do arquivo contém pelo menos um caracter inválido", "File name is too long" : "O nome do arquivo é muito longo", - "Dot files are not allowed" : "Dot arquivos não são permitidos", - "Empty filename is not allowed" : "Um nome de arquivo vazio não é permitido.", + "Dot files are not allowed" : "Arquivos Dot não são permitidos", + "Empty filename is not allowed" : "Nome de arquivo vazio não é permitido.", "Help" : "Ajuda", "Apps" : "Aplicações", "Personal" : "Pessoal", + "Log out" : "SaÃda", "Users" : "Usuários", "Admin" : "Admin", "APCu" : "APCu", "Redis" : "Redis", - "Server settings" : "Configurações de servidor", + "Server settings" : "Configurações do servidor", "Sharing" : "Compartilhamento", + "Security" : "Segurança", "Encryption" : "Criptografia", "Additional settings" : "Configurações adicionais", - "Tips & tricks" : "Dias & truques", + "Tips & tricks" : "Dicas & truques", "%s enter the database username and name." : "%s insira o nome de usuário e o nome do banco de dados.", "%s enter the database username." : "%s insira o nome de usuário do banco de dados.", "%s enter the database name." : "%s insira o nome do banco de dados.", @@ -64,13 +66,13 @@ "Offending command was: \"%s\", name: %s, password: %s" : "Comando ofensivo era: \"%s\", nome: %s, senha: %s", "PostgreSQL username and/or password not valid" : "Nome de usuário e/ou senha PostgreSQL inválido(s)", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X não é suportado e %s não funcionará corretamente nesta plataforma. Use-o por sua conta e risco!", - "For the best results, please consider using a GNU/Linux server instead." : "Para obter os melhores resultados, por favor, considere o uso de um servidor GNU/Linux em seu lugar.", - "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Aparentemente a instância %s está rodando em um ambiente PHP de 32bit e o open_basedir foi configurado no php.ini. Isto pode gerar problemas com arquivos maiores que 4GB e é altamente desencorajado.", + "For the best results, please consider using a GNU/Linux server instead." : "Para obter melhores resultados, por favor considere o uso de um servidor GNU/Linux em seu lugar.", + "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Aparentemente a instância %s está rodando em um ambiente PHP de 32 bits e o open_basedir foi configurado no php.ini. Isto pode gerar problemas com arquivos maiores que 4GB e é altamente desencorajado.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Por favor, remova a configuração de open_basedir de seu php.ini ou altere o PHP para 64bit.", "Set an admin username." : "Defina um nome do usuário administrador.", "Set an admin password." : "Defina uma senha de administrador.", "Can't create or write into the data directory %s" : "Não é possÃvel criar ou gravar no diretório de dados %s", - "Invalid Federated Cloud ID" : "Associação Inválida de Nuvem ID", + "Invalid Federated Cloud ID" : "ID inválida de Nuvem Federada", "%s shared »%s« with you" : "%s compartilhou »%s« com você", "%s via %s" : "%s via %s", "Sharing %s failed, because the backend does not allow shares from type %i" : "O compartilhamento %s falhou, porque o processo interno não permite ações de tipo %i", @@ -86,21 +88,21 @@ "You need to provide a password to create a public link, only protected links are allowed" : "Você precisa fornecer uma senha para criar um link público, apenas links protegidos são permitidos", "Sharing %s failed, because sharing with links is not allowed" : "Compartilhamento %s falhou, porque compartilhamento com links não é permitido", "Not allowed to create a federated share with the same user" : "Não é permitido criar um compartilhamento associado com o mesmo usuário", - "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "O compartilhamento %s falhou, porque não foi possÃvel encontrar %s, talvez o servidor esteja inacessÃvel.", + "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "O compartilhamento %s falhou, porque não foi possÃvel encontrar %s. Talvez o servidor esteja inacessÃvel.", "Share type %s is not valid for %s" : "Tipo de compartilhamento %s não é válido para %s", "Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Definir permissões para %s falhou, porque as permissões excedem as permissões concedidas a %s", "Setting permissions for %s failed, because the item was not found" : "Definir permissões para %s falhou, porque o item não foi encontrado", "Cannot set expiration date. Shares cannot expire later than %s after they have been shared" : "Não é possÃvel definir a data de expiração. Compartilhamentos não podem expirar mais tarde que %s depois de terem sido compartilhados", "Cannot set expiration date. Expiration date is in the past" : "Não é possÃvel definir a data de validade. Data de expiração está no passado", - "Cannot clear expiration date. Shares are required to have an expiration date." : "Não é possÃvel eliminar a data de expiração. Ações são obrigados a ter uma data de expiração.", + "Cannot clear expiration date. Shares are required to have an expiration date." : "Não é possÃvel eliminar a data de expiração. Compartilhamentos devem ter uma data de expiração.", "Sharing backend %s must implement the interface OCP\\Share_Backend" : "Compartilhando backend %s deve implementar a interface OCP\\Share_Backend", "Sharing backend %s not found" : "Compartilhamento backend %s não encontrado", "Sharing backend for %s not found" : "Compartilhamento backend para %s não encontrado", "Sharing failed, because the user %s is the original sharer" : "O compartilhamento falhou, porque o usuário %s é o compartilhador original", "Sharing %s failed, because the permissions exceed permissions granted to %s" : "Compartilhamento %s falhou, porque as permissões excedem as permissões concedidas a %s", "Sharing %s failed, because resharing is not allowed" : "Compartilhamento %s falhou, porque recompartilhamentos não são permitidos", - "Sharing %s failed, because the sharing backend for %s could not find its source" : "Compartilhamento %s falhou, porque a infra-estrutura de compartilhamento para %s não conseguiu encontrar a sua fonte", - "Sharing %s failed, because the file could not be found in the file cache" : "Compartilhamento %s falhou, porque o arquivo não pôde ser encontrado no cache de arquivos", + "Sharing %s failed, because the sharing backend for %s could not find its source" : "Compartilhamento %s falhou, porque a infraestrutura de compartilhamento para %s não conseguiu encontrar a sua fonte", + "Sharing %s failed, because the file could not be found in the file cache" : "Compartilhamento %s falhou, porque o arquivo não pode ser encontrado no cache de arquivos", "Cannot increase permissions of %s" : "Não é possÃvel aumentar as permissões de %s", "Files can't be shared with delete permissions" : "Os arquivos não podem ser compartilhadas com permissões de exclusão", "Files can't be shared with create permissions" : "Os arquivos não podem ser compartilhados com permissões de criação", @@ -111,7 +113,7 @@ "Monday" : "Segunda-feira", "Tuesday" : "Terça-feira", "Wednesday" : "Quarta-feira", - "Thursday" : "Quita-feira", + "Thursday" : "Quinta-feira", "Friday" : "Sexta-feira", "Saturday" : "Sabado", "Sun." : "Dom.", @@ -159,11 +161,11 @@ "The username is already being used" : "Este nome de usuário já está sendo usado", "Login canceled by app" : "Login cancelado pelo aplicativo", "User disabled" : "Usuário desativado", - "App \"%s\" cannot be installed because appinfo file cannot be read." : "O App \"%s\" não pode ser instalado porque o arquivo appinfo não pode ser lido.", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "O aplicativo \"%s\" não pode ser instalado porque o arquivo appinfo não pode ser lido.", "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "O aplicativo \"%s\" não pode ser instalado pois não é compatÃvel com a versão do servidor.", "No app name specified" : "O nome do aplicativo não foi especificado.", "App '%s' could not be installed!" : "O aplicativo '%s' pode não estar instalado!", - "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "App \"%s\" não pode ser instalado porque as seguintes dependências não foram cumpridas: %s", + "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "O aplicativo \"%s\" não pode ser instalado porque as seguintes dependências não foram cumpridas: %s", "a safe home for all your data" : "um local seguro para todos os seus dados", "File is currently busy, please try again later" : "O arquivo está ocupado, tente novamente mais tarde", "Can't read file" : "Não é possÃvel ler arquivo", @@ -174,27 +176,27 @@ "No database drivers (sqlite, mysql, or postgresql) installed." : "Nenhum driver de banco de dados (sqlite, mysql, or postgresql) instalado.", "Cannot write into \"config\" directory" : "Não é possÃvel gravar no diretório \"config\"", "Cannot write into \"apps\" directory" : "Não é possÃvel gravar no diretório \"apps\"", - "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Isto pode ser corrigido dando ao webserver permissão de escrita %sgiving para o diretório apps directory%s ou desabilitando o appstore no arquivo de configuração.", + "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Isto pode ser corrigido por %sdando ao servidor web permissão de escrita para o diretório app%s ou desabilitando o appstore no arquivo de configuração.", "Cannot create \"data\" directory (%s)" : "Não pode ser criado \"dados\" no diretório (%s)", - "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Esta geralmente pode ser fixado por <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">dando permissão de gravação ao diretório raiz do servidor</a>.", - "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Permissões podem ser corrigidas dando permissão de escita %sgiving ao webserver para o diretório raiz directory%s", - "Setting locale to %s failed" : "Falha ao configurar localidade para %s", + "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Isto geralmente pode ser corrigido ao <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">dar permissão de gravação no diretório raiz</a>.", + "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "Permissões podem ser corrigidas por %sdando permissão de escrita ao servidor web para o diretório raiz %s", + "Setting locale to %s failed" : "Falha ao configurar localização para %s", "Please install one of these locales on your system and restart your webserver." : "Por favor, defina uma dessas localizações em seu sistema e reinicie o seu servidor web.", "Please ask your server administrator to install the module." : "Por favor, peça ao seu administrador do servidor para instalar o módulo.", "PHP module %s not installed." : "Módulo PHP %s não instalado.", - "PHP setting \"%s\" is not set to \"%s\"." : "Configurações \"%s\" PHP não está configurado para \"%s\".", + "PHP setting \"%s\" is not set to \"%s\"." : "Configuração PHP \"%s\" não está configurado para \"%s\".", "Adjusting this setting in php.ini will make Nextcloud run again" : "Ajustar a configuração no php.ini fará com que o Nextcloud execute novamente", - "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload está definido para \"%s\" em vez do valor esperado \"0\"", + "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload está definido para \"%s\" ao invés do valor esperado \"0\"", "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini" : "Para corrigir esse problema defina <code>mbstring.func_overload</code> para <code>0</code> em seu php.ini", "libxml2 2.7.0 is at least required. Currently %s is installed." : "A libxml2 2.7.0 é a mÃnima versão requerida. Atualmente a versão %s está instalada.", "To fix this issue update your libxml2 version and restart your web server." : "Para corrigir este problema, atualize a versão da sua libxml2 e reinicie seu servidor web.", - "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP está, aparentemente, configurado para retirar blocos doc inline. Isso fará com que vários aplicativos do núcleo fiquem inacessÃveis.", - "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Isso provavelmente é causado por uma cache/acelerador, como Zend OPcache ou eAccelerator.", - "PHP modules have been installed, but they are still listed as missing?" : "Módulos do PHP foram instalados, mas eles ainda estão listados como desaparecidos?", - "Please ask your server administrator to restart the web server." : "Por favor, peça ao seu administrador do servidor para reiniciar o servidor web.", + "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "PHP aparentemente está configurado para retirar blocos doc inline. Isso fará com que vários aplicativos do núcleo fiquem inacessÃveis.", + "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Isso provavelmente é causado por um cache/acelerador, como Zend OPcache ou eAccelerator.", + "PHP modules have been installed, but they are still listed as missing?" : "Módulos do PHP foram instalados, mas eles ainda estão listados como faltantes?", + "Please ask your server administrator to restart the web server." : "Por favor peça ao seu administrador do servidor para reiniciar o servidor web.", "PostgreSQL >= 9 required" : "PostgreSQL >= 9 requirido", - "Please upgrade your database version" : "Por favor, atualize sua versão do banco de dados", - "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Por favor, altere as permissões para 0770 para que o diretório não possa ser listado por outros usuários.", + "Please upgrade your database version" : "Por favor atualize sua versão do banco de dados", + "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Por favor altere as permissões para 0770 para que o diretório não possa ser listado por outros usuários.", "Data directory (%s) is readable by other users" : "Diretório de dados (%s) pode ser lido por outros usuários", "Data directory (%s) must be an absolute path" : "Diretório de dados (%s) deve ser um caminho absoluto", "Check the value of \"datadirectory\" in your configuration" : "Verifique o valor do \"diretóriodedados\" na sua configuração", diff --git a/lib/l10n/tr.js b/lib/l10n/tr.js index d57025f5991..51ebb4bc213 100644 --- a/lib/l10n/tr.js +++ b/lib/l10n/tr.js @@ -52,6 +52,7 @@ OC.L10N.register( "Redis" : "Redis", "Server settings" : "Sunucu ayarları", "Sharing" : "Paylaşım", + "Security" : "Güvenlik", "Encryption" : "Åžifreleme", "Additional settings" : "Ek ayarlar", "Tips & tricks" : "İpucu ve kolaylıklar", @@ -162,11 +163,11 @@ OC.L10N.register( "The username is already being used" : "Bu kullanıcı adı zaten var", "Login canceled by app" : "Oturum açma iÅŸlemi uygulama tarafından iptal edildi", "User disabled" : "Kullanıcı devre dışı", - "App \"%s\" cannot be installed because appinfo file cannot be read." : "appinfo dosyası okunamadığından \"%s\" uygulaması yüklenemez.", - "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "\"%s\" uygulaması sunucu sürümüyle uyumlu olmadığından yüklenemez.", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "appinfo dosyası okunamadığından \"%s\" uygulaması kurulamaz.", + "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "\"%s\" uygulaması sunucu sürümüyle uyumlu olmadığından kurulamaz.", "No app name specified" : "Uygulama adı belirtilmemiÅŸ", "App '%s' could not be installed!" : "'%s' uygulaması kurulamadı!", - "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "\"%s\" uygulaması, ÅŸu gereklilikler saÄŸlanmadığı için yüklenemiyor: %s", + "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "\"%s\" uygulaması, ÅŸu gereklilikler saÄŸlanmadığı için kurulamıyor: %s", "a safe home for all your data" : "verileriniz için güvenli bir barınak", "File is currently busy, please try again later" : "Dosya ÅŸu anda meÅŸgul, lütfen daha sonra deneyin", "Can't read file" : "Dosya okunamadı", @@ -174,7 +175,7 @@ OC.L10N.register( "Authentication error" : "Kimlik doÄŸrulama hatası", "Token expired. Please reload page." : "Kodun süresi dolmuÅŸ. Lütfen sayfayı yenileyin.", "Unknown user" : "Kullanıcı bilinmiyor", - "No database drivers (sqlite, mysql, or postgresql) installed." : "Herhangi bir veritabanı sürücüsü (sqlite, mysql ya da postgresql) yüklü deÄŸil.", + "No database drivers (sqlite, mysql, or postgresql) installed." : "Herhangi bir veritabanı sürücüsü (sqlite, mysql ya da postgresql) kurulmamış.", "Cannot write into \"config\" directory" : "\"config\" klasörüne yazılamıyor", "Cannot write into \"apps\" directory" : "\"apps\" klasörüne yazılamıyor", "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Bu sorun genellikle, %sweb sunucusuna apps klasörüne yazma izni verilerek%s çözülebilir.", @@ -182,9 +183,9 @@ OC.L10N.register( "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Bu sorun genellikle, <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">web sunucusuna kök klasöre yazma izni verilerek</a> çözülebilir.", "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "İzinler genellikle, %sweb sunucusuna kök klasöre yazma izni verilerek%s düzeltilebilir.", "Setting locale to %s failed" : "Dil %s olarak ayarlanamadı", - "Please install one of these locales on your system and restart your webserver." : "Lütfen bu dillerden birini sisteminize yükleyin ve web sunucunuzu yeniden baÅŸlatın.", + "Please install one of these locales on your system and restart your webserver." : "Lütfen bu dillerden birini sisteminize kurun ve web sunucunuzu yeniden baÅŸlatın.", "Please ask your server administrator to install the module." : "Lütfen modülü kurması için sunucu yöneticinizle görüşün.", - "PHP module %s not installed." : "PHP %s modülü yüklü deÄŸil.", + "PHP module %s not installed." : "PHP %s modülü kurulmamış.", "PHP setting \"%s\" is not set to \"%s\"." : "\"%s\" PHP ayarı \"%s\" olarak ayarlanmamış.", "Adjusting this setting in php.ini will make Nextcloud run again" : "php.ini dosyasında bu ayar yapıldığında Nextcloud yeniden çalışır", "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload, beklenen \"0\" deÄŸeri yerine \"%s\" olarak ayarlanmış", diff --git a/lib/l10n/tr.json b/lib/l10n/tr.json index b855bca1e08..899f1603d19 100644 --- a/lib/l10n/tr.json +++ b/lib/l10n/tr.json @@ -50,6 +50,7 @@ "Redis" : "Redis", "Server settings" : "Sunucu ayarları", "Sharing" : "Paylaşım", + "Security" : "Güvenlik", "Encryption" : "Åžifreleme", "Additional settings" : "Ek ayarlar", "Tips & tricks" : "İpucu ve kolaylıklar", @@ -160,11 +161,11 @@ "The username is already being used" : "Bu kullanıcı adı zaten var", "Login canceled by app" : "Oturum açma iÅŸlemi uygulama tarafından iptal edildi", "User disabled" : "Kullanıcı devre dışı", - "App \"%s\" cannot be installed because appinfo file cannot be read." : "appinfo dosyası okunamadığından \"%s\" uygulaması yüklenemez.", - "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "\"%s\" uygulaması sunucu sürümüyle uyumlu olmadığından yüklenemez.", + "App \"%s\" cannot be installed because appinfo file cannot be read." : "appinfo dosyası okunamadığından \"%s\" uygulaması kurulamaz.", + "App \"%s\" cannot be installed because it is not compatible with this version of the server." : "\"%s\" uygulaması sunucu sürümüyle uyumlu olmadığından kurulamaz.", "No app name specified" : "Uygulama adı belirtilmemiÅŸ", "App '%s' could not be installed!" : "'%s' uygulaması kurulamadı!", - "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "\"%s\" uygulaması, ÅŸu gereklilikler saÄŸlanmadığı için yüklenemiyor: %s", + "App \"%s\" cannot be installed because the following dependencies are not fulfilled: %s" : "\"%s\" uygulaması, ÅŸu gereklilikler saÄŸlanmadığı için kurulamıyor: %s", "a safe home for all your data" : "verileriniz için güvenli bir barınak", "File is currently busy, please try again later" : "Dosya ÅŸu anda meÅŸgul, lütfen daha sonra deneyin", "Can't read file" : "Dosya okunamadı", @@ -172,7 +173,7 @@ "Authentication error" : "Kimlik doÄŸrulama hatası", "Token expired. Please reload page." : "Kodun süresi dolmuÅŸ. Lütfen sayfayı yenileyin.", "Unknown user" : "Kullanıcı bilinmiyor", - "No database drivers (sqlite, mysql, or postgresql) installed." : "Herhangi bir veritabanı sürücüsü (sqlite, mysql ya da postgresql) yüklü deÄŸil.", + "No database drivers (sqlite, mysql, or postgresql) installed." : "Herhangi bir veritabanı sürücüsü (sqlite, mysql ya da postgresql) kurulmamış.", "Cannot write into \"config\" directory" : "\"config\" klasörüne yazılamıyor", "Cannot write into \"apps\" directory" : "\"apps\" klasörüne yazılamıyor", "This can usually be fixed by %sgiving the webserver write access to the apps directory%s or disabling the appstore in the config file." : "Bu sorun genellikle, %sweb sunucusuna apps klasörüne yazma izni verilerek%s çözülebilir.", @@ -180,9 +181,9 @@ "This can usually be fixed by <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">giving the webserver write access to the root directory</a>." : "Bu sorun genellikle, <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">web sunucusuna kök klasöre yazma izni verilerek</a> çözülebilir.", "Permissions can usually be fixed by %sgiving the webserver write access to the root directory%s." : "İzinler genellikle, %sweb sunucusuna kök klasöre yazma izni verilerek%s düzeltilebilir.", "Setting locale to %s failed" : "Dil %s olarak ayarlanamadı", - "Please install one of these locales on your system and restart your webserver." : "Lütfen bu dillerden birini sisteminize yükleyin ve web sunucunuzu yeniden baÅŸlatın.", + "Please install one of these locales on your system and restart your webserver." : "Lütfen bu dillerden birini sisteminize kurun ve web sunucunuzu yeniden baÅŸlatın.", "Please ask your server administrator to install the module." : "Lütfen modülü kurması için sunucu yöneticinizle görüşün.", - "PHP module %s not installed." : "PHP %s modülü yüklü deÄŸil.", + "PHP module %s not installed." : "PHP %s modülü kurulmamış.", "PHP setting \"%s\" is not set to \"%s\"." : "\"%s\" PHP ayarı \"%s\" olarak ayarlanmamış.", "Adjusting this setting in php.ini will make Nextcloud run again" : "php.ini dosyasında bu ayar yapıldığında Nextcloud yeniden çalışır", "mbstring.func_overload is set to \"%s\" instead of the expected value \"0\"" : "mbstring.func_overload, beklenen \"0\" deÄŸeri yerine \"%s\" olarak ayarlanmış", diff --git a/lib/private/AppFramework/Http/Request.php b/lib/private/AppFramework/Http/Request.php index fd43d468568..3f1e6fd951a 100644 --- a/lib/private/AppFramework/Http/Request.php +++ b/lib/private/AppFramework/Http/Request.php @@ -401,6 +401,8 @@ class Request implements \ArrayAccess, \Countable, IRequest { protected function getContent() { // If the content can't be parsed into an array then return a stream resource. if ($this->method === 'PUT' + && $this->getHeader('Content-Length') !== 0 + && $this->getHeader('Content-Length') !== null && strpos($this->getHeader('Content-Type'), 'application/x-www-form-urlencoded') === false && strpos($this->getHeader('Content-Type'), 'application/json') === false ) { diff --git a/lib/private/AppFramework/Routing/RouteConfig.php b/lib/private/AppFramework/Routing/RouteConfig.php index 70208725f46..e2675a3c847 100644 --- a/lib/private/AppFramework/Routing/RouteConfig.php +++ b/lib/private/AppFramework/Routing/RouteConfig.php @@ -231,9 +231,15 @@ class RouteConfig { $routeName = $this->appName . '.' . strtolower($resource) . '.' . strtolower($method); - $this->router->create($routeName, $url)->method($verb)->action( + $route = $this->router->create($routeName, $url)->method($verb)->action( new RouteActionHandler($this->container, $controllerName, $actionName) ); + + if (!$collectionAction) { + $route->requirements([ + 'id' => '[^?]*' + ]); + } } } } diff --git a/lib/private/Cache/CappedMemoryCache.php b/lib/private/Cache/CappedMemoryCache.php index c6b45c49c1c..2e180cfb013 100644 --- a/lib/private/Cache/CappedMemoryCache.php +++ b/lib/private/Cache/CappedMemoryCache.php @@ -47,7 +47,11 @@ class CappedMemoryCache implements ICache, \ArrayAccess { } public function set($key, $value, $ttl = 0) { - $this->cache[$key] = $value; + if (is_null($key)) { + $this->cache[] = $value; + } else { + $this->cache[$key] = $value; + } $this->garbageCollect(); } diff --git a/lib/private/DB/AdapterOCI8.php b/lib/private/DB/AdapterOCI8.php index e23f74345ae..359e4ba1b67 100644 --- a/lib/private/DB/AdapterOCI8.php +++ b/lib/private/DB/AdapterOCI8.php @@ -41,7 +41,6 @@ class AdapterOCI8 extends Adapter { const UNIX_TIMESTAMP_REPLACEMENT = "(cast(sys_extract_utc(systimestamp) as date) - date'1970-01-01') * 86400"; public function fixupStatement($statement) { - $statement = preg_replace('( LIKE \?)', '$0 ESCAPE \'\\\'', $statement); $statement = preg_replace('/`(\w+)` ILIKE \?/', 'REGEXP_LIKE(`$1`, \'^\' || REPLACE(?, \'%\', \'.*\') || \'$\', \'i\')', $statement); $statement = str_replace('`', '"', $statement); $statement = str_ireplace('NOW()', 'CURRENT_TIMESTAMP', $statement); diff --git a/lib/private/DB/AdapterSqlite.php b/lib/private/DB/AdapterSqlite.php index 7a69cb7e8c2..5507699c54a 100644 --- a/lib/private/DB/AdapterSqlite.php +++ b/lib/private/DB/AdapterSqlite.php @@ -41,7 +41,6 @@ class AdapterSqlite extends Adapter { } public function fixupStatement($statement) { - $statement = preg_replace('( I?LIKE \?)', '$0 ESCAPE \'\\\'', $statement); $statement = preg_replace('/`(\w+)` ILIKE \?/', 'LOWER($1) LIKE LOWER(?)', $statement); $statement = str_replace( '`', '"', $statement ); $statement = str_ireplace( 'NOW()', 'datetime(\'now\')', $statement ); diff --git a/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php b/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php index 69c34947feb..179ce72e8e1 100644 --- a/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php +++ b/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php @@ -156,6 +156,13 @@ class OCIExpressionBuilder extends ExpressionBuilder { /** * @inheritdoc */ + public function like($x, $y, $type = null) { + return parent::like($x, $y, $type) . " ESCAPE '\\'"; + } + + /** + * @inheritdoc + */ public function iLike($x, $y, $type = null) { $x = $this->helper->quoteColumnName($x); $y = $this->helper->quoteColumnName($y); diff --git a/lib/private/DB/QueryBuilder/ExpressionBuilder/SqliteExpressionBuilder.php b/lib/private/DB/QueryBuilder/ExpressionBuilder/SqliteExpressionBuilder.php new file mode 100644 index 00000000000..e4d7a3902fd --- /dev/null +++ b/lib/private/DB/QueryBuilder/ExpressionBuilder/SqliteExpressionBuilder.php @@ -0,0 +1,38 @@ +<?php +/** + * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OC\DB\QueryBuilder\ExpressionBuilder; + + +use OC\DB\QueryBuilder\QueryFunction; +use OCP\DB\QueryBuilder\ILiteral; +use OCP\DB\QueryBuilder\IParameter; +use OCP\DB\QueryBuilder\IQueryBuilder; +use OCP\DB\QueryBuilder\IQueryFunction; + +class SqliteExpressionBuilder extends ExpressionBuilder { + /** + * @inheritdoc + */ + public function like($x, $y, $type = null) { + return parent::like($x, $y, $type) . " ESCAPE '\\'"; + } +} diff --git a/lib/private/DB/QueryBuilder/FunctionBuilder/FunctionBuilder.php b/lib/private/DB/QueryBuilder/FunctionBuilder/FunctionBuilder.php new file mode 100644 index 00000000000..6bd98e4ce50 --- /dev/null +++ b/lib/private/DB/QueryBuilder/FunctionBuilder/FunctionBuilder.php @@ -0,0 +1,56 @@ +<?php +/** + * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OC\DB\QueryBuilder\FunctionBuilder; + +use OC\DB\QueryBuilder\QueryFunction; +use OC\DB\QueryBuilder\QuoteHelper; +use OCP\DB\QueryBuilder\IFunctionBuilder; + +class FunctionBuilder implements IFunctionBuilder { + /** @var QuoteHelper */ + protected $helper; + + /** + * ExpressionBuilder constructor. + * + * @param QuoteHelper $helper + */ + public function __construct(QuoteHelper $helper) { + $this->helper = $helper; + } + + public function md5($input) { + return new QueryFunction('MD5(' . $this->helper->quoteColumnName($input) . ')'); + } + + public function concat($x, $y) { + return new QueryFunction('CONCAT(' . $this->helper->quoteColumnName($x) . ', ' . $this->helper->quoteColumnName($y) . ')'); + } + + public function substring($input, $start, $length = null) { + if ($length) { + return new QueryFunction('SUBSTR(' . $this->helper->quoteColumnName($input) . ', ' . $this->helper->quoteColumnName($start) . ', ' . $this->helper->quoteColumnName($length) . ')'); + } else { + return new QueryFunction('SUBSTR(' . $this->helper->quoteColumnName($input) . ', ' . $this->helper->quoteColumnName($start) . ')'); + } + } +} diff --git a/lib/private/DB/QueryBuilder/FunctionBuilder/OCIFunctionBuilder.php b/lib/private/DB/QueryBuilder/FunctionBuilder/OCIFunctionBuilder.php new file mode 100644 index 00000000000..0f7a7dad236 --- /dev/null +++ b/lib/private/DB/QueryBuilder/FunctionBuilder/OCIFunctionBuilder.php @@ -0,0 +1,30 @@ +<?php +/** + * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OC\DB\QueryBuilder\FunctionBuilder; + +use OC\DB\QueryBuilder\QueryFunction; + +class OCIFunctionBuilder extends FunctionBuilder { + public function md5($input) { + return new QueryFunction('LOWER(DBMS_OBFUSCATION_TOOLKIT.md5 (input => UTL_RAW.cast_to_raw(' . $this->helper->quoteColumnName($input) .')))'); + } +} diff --git a/lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php b/lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php new file mode 100644 index 00000000000..27ebf1a04f9 --- /dev/null +++ b/lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php @@ -0,0 +1,30 @@ +<?php +/** + * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OC\DB\QueryBuilder\FunctionBuilder; + +use OC\DB\QueryBuilder\QueryFunction; + +class PgSqlFunctionBuilder extends FunctionBuilder { + public function concat($x, $y) { + return new QueryFunction($this->helper->quoteColumnName($x) . ' || ' . $this->helper->quoteColumnName($y)); + } +} diff --git a/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php b/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php new file mode 100644 index 00000000000..e985b7306a4 --- /dev/null +++ b/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php @@ -0,0 +1,30 @@ +<?php +/** + * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OC\DB\QueryBuilder\FunctionBuilder; + +use OC\DB\QueryBuilder\QueryFunction; + +class SqliteFunctionBuilder extends FunctionBuilder { + public function concat($x, $y) { + return new QueryFunction($this->helper->quoteColumnName($x) . ' || ' . $this->helper->quoteColumnName($y)); + } +} diff --git a/lib/private/DB/QueryBuilder/QueryBuilder.php b/lib/private/DB/QueryBuilder/QueryBuilder.php index d5dd9cf0366..eac13b452ac 100644 --- a/lib/private/DB/QueryBuilder/QueryBuilder.php +++ b/lib/private/DB/QueryBuilder/QueryBuilder.php @@ -26,11 +26,17 @@ namespace OC\DB\QueryBuilder; use Doctrine\DBAL\Platforms\MySqlPlatform; use Doctrine\DBAL\Platforms\PostgreSqlPlatform; +use Doctrine\DBAL\Platforms\SqlitePlatform; use OC\DB\OracleConnection; use OC\DB\QueryBuilder\ExpressionBuilder\ExpressionBuilder; use OC\DB\QueryBuilder\ExpressionBuilder\MySqlExpressionBuilder; use OC\DB\QueryBuilder\ExpressionBuilder\OCIExpressionBuilder; use OC\DB\QueryBuilder\ExpressionBuilder\PgSqlExpressionBuilder; +use OC\DB\QueryBuilder\ExpressionBuilder\SqliteExpressionBuilder; +use OC\DB\QueryBuilder\FunctionBuilder\FunctionBuilder; +use OC\DB\QueryBuilder\FunctionBuilder\OCIFunctionBuilder; +use OC\DB\QueryBuilder\FunctionBuilder\PgSqlFunctionBuilder; +use OC\DB\QueryBuilder\FunctionBuilder\SqliteFunctionBuilder; use OC\SystemConfig; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\DB\QueryBuilder\IQueryFunction; @@ -110,12 +116,42 @@ class QueryBuilder implements IQueryBuilder { return new PgSqlExpressionBuilder($this->connection); } else if ($this->connection->getDatabasePlatform() instanceof MySqlPlatform) { return new MySqlExpressionBuilder($this->connection); + } else if ($this->connection->getDatabasePlatform() instanceof SqlitePlatform) { + return new SqliteExpressionBuilder($this->connection); } else { return new ExpressionBuilder($this->connection); } } /** + * Gets an FunctionBuilder used for object-oriented construction of query functions. + * This producer method is intended for convenient inline usage. Example: + * + * <code> + * $qb = $conn->getQueryBuilder() + * ->select('u') + * ->from('users', 'u') + * ->where($qb->fun()->md5('u.id')); + * </code> + * + * For more complex function construction, consider storing the function + * builder object in a local variable. + * + * @return \OCP\DB\QueryBuilder\IFunctionBuilder + */ + public function func() { + if ($this->connection instanceof OracleConnection) { + return new OCIFunctionBuilder($this->helper); + } else if ($this->connection->getDatabasePlatform() instanceof SqlitePlatform) { + return new SqliteFunctionBuilder($this->helper); + } else if ($this->connection->getDatabasePlatform() instanceof PostgreSqlPlatform) { + return new PgSqlFunctionBuilder($this->helper); + } else { + return new FunctionBuilder($this->helper); + } + } + + /** * Gets the type of the currently built query. * * @return integer diff --git a/lib/private/DB/SQLiteSessionInit.php b/lib/private/DB/SQLiteSessionInit.php index f8e6dcef8ad..0e947b9918e 100644 --- a/lib/private/DB/SQLiteSessionInit.php +++ b/lib/private/DB/SQLiteSessionInit.php @@ -58,6 +58,9 @@ class SQLiteSessionInit implements EventSubscriber { $sensitive = ($this->caseSensitiveLike) ? 'true' : 'false'; $args->getConnection()->executeUpdate('PRAGMA case_sensitive_like = ' . $sensitive); $args->getConnection()->executeUpdate('PRAGMA journal_mode = ' . $this->journalMode); + /** @var \PDO $pdo */ + $pdo = $args->getConnection()->getWrappedConnection(); + $pdo->sqliteCreateFunction('md5', 'md5', 1); } public function getSubscribedEvents() { diff --git a/lib/private/Encryption/Manager.php b/lib/private/Encryption/Manager.php index 4d40675801e..9053e371b65 100644 --- a/lib/private/Encryption/Manager.php +++ b/lib/private/Encryption/Manager.php @@ -254,8 +254,11 @@ class Manager implements IManager { * Add storage wrapper */ public function setupStorage() { - $encryptionWrapper = new EncryptionWrapper($this->arrayCache, $this, $this->logger); - Filesystem::addStorageWrapper('oc_encryption', array($encryptionWrapper, 'wrapStorage'), 2); + // If encryption is disabled and there are no loaded modules it makes no sense to load the wrapper + if (!empty($this->encryptionModules) || $this->isEnabled()) { + $encryptionWrapper = new EncryptionWrapper($this->arrayCache, $this, $this->logger); + Filesystem::addStorageWrapper('oc_encryption', array($encryptionWrapper, 'wrapStorage'), 2); + } } diff --git a/lib/private/Files/Cache/Cache.php b/lib/private/Files/Cache/Cache.php index 2b04226f20e..1f3f2433e45 100644 --- a/lib/private/Files/Cache/Cache.php +++ b/lib/private/Files/Cache/Cache.php @@ -37,6 +37,7 @@ namespace OC\Files\Cache; +use OCP\DB\QueryBuilder\IQueryBuilder; use Doctrine\DBAL\Driver\Statement; use OCP\Files\Cache\ICache; use OCP\Files\Cache\ICacheEntry; @@ -130,7 +131,7 @@ class Cache implements ICache { $where = 'WHERE `fileid` = ?'; $params = array($file); } - $sql = 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, + $sql = 'SELECT `fileid`, `storage`, `path`, `path_hash`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `storage_mtime`, `encrypted`, `etag`, `permissions`, `checksum` FROM `*PREFIX*filecache` ' . $where; $result = $this->connection->executeQuery($sql, $params); @@ -522,27 +523,35 @@ class Cache implements ICache { throw new \Exception('Invalid target storage id: ' . $targetStorageId); } - // sql for final update - $moveSql = 'UPDATE `*PREFIX*filecache` SET `storage` = ?, `path` = ?, `path_hash` = ?, `name` = ?, `parent` =? WHERE `fileid` = ?'; - + $this->connection->beginTransaction(); if ($sourceData['mimetype'] === 'httpd/unix-directory') { - //find all child entries - $sql = 'SELECT `path`, `fileid` FROM `*PREFIX*filecache` WHERE `storage` = ? AND `path` LIKE ?'; - $result = $this->connection->executeQuery($sql, [$sourceStorageId, $this->connection->escapeLikeParameter($sourcePath) . '/%']); - $childEntries = $result->fetchAll(); + //update all child entries $sourceLength = strlen($sourcePath); - $this->connection->beginTransaction(); - $query = $this->connection->prepare('UPDATE `*PREFIX*filecache` SET `storage` = ?, `path` = ?, `path_hash` = ? WHERE `fileid` = ?'); - - foreach ($childEntries as $child) { - $newTargetPath = $targetPath . substr($child['path'], $sourceLength); - $query->execute([$targetStorageId, $newTargetPath, md5($newTargetPath), $child['fileid']]); + $query = $this->connection->getQueryBuilder(); + + $fun = $query->func(); + $newPathFunction = $fun->concat( + $query->createNamedParameter($targetPath), + $fun->substring('path', $query->createNamedParameter($sourceLength + 1, IQueryBuilder::PARAM_INT))// +1 for the leading slash + ); + $query->update('filecache') + ->set('storage', $query->createNamedParameter($targetStorageId, IQueryBuilder::PARAM_INT)) + ->set('path_hash', $fun->md5($newPathFunction)) + ->set('path', $newPathFunction) + ->where($query->expr()->eq('storage', $query->createNamedParameter($sourceStorageId, IQueryBuilder::PARAM_INT))) + ->andWhere($query->expr()->like('path', $query->createNamedParameter($this->connection->escapeLikeParameter($sourcePath) . '/%'))); + + try { + $query->execute(); + } catch (\OC\DatabaseException $e) { + $this->connection->rollBack(); + throw $e; } - $this->connection->executeQuery($moveSql, [$targetStorageId, $targetPath, md5($targetPath), basename($targetPath), $newParentId, $sourceId]); - $this->connection->commit(); - } else { - $this->connection->executeQuery($moveSql, [$targetStorageId, $targetPath, md5($targetPath), \OC_Util::basename($targetPath), $newParentId, $sourceId]); } + + $sql = 'UPDATE `*PREFIX*filecache` SET `storage` = ?, `path` = ?, `path_hash` = ?, `name` = ?, `parent` = ? WHERE `fileid` = ?'; + $this->connection->executeQuery($sql, array($targetStorageId, $targetPath, md5($targetPath), \OC_Util::basename($targetPath), $newParentId, $sourceId)); + $this->connection->commit(); } else { $this->moveFromCacheFallback($sourceCache, $sourcePath, $targetPath); } diff --git a/lib/private/Lockdown/LockdownManager.php b/lib/private/Lockdown/LockdownManager.php index 5ce52a03683..93752dc922f 100644 --- a/lib/private/Lockdown/LockdownManager.php +++ b/lib/private/Lockdown/LockdownManager.php @@ -20,27 +20,60 @@ namespace OC\Lockdown; use OC\Authentication\Token\IToken; +use OCP\ISession; use OCP\Lockdown\ILockdownManager; class LockdownManager implements ILockdownManager { + /** @var ISession */ + private $sessionCallback; + private $enabled = false; /** @var array|null */ private $scope; + /** + * LockdownManager constructor. + * + * @param callable $sessionCallback we need to inject the session lazily to avoid dependency loops + */ + public function __construct(callable $sessionCallback) { + $this->sessionCallback = $sessionCallback; + } + + public function enable() { $this->enabled = true; } + /** + * @return ISession + */ + private function getSession() { + $callback = $this->sessionCallback; + return $callback(); + } + + private function getScopeAsArray() { + if (!$this->scope) { + $session = $this->getSession(); + $sessionScope = $session->get('token_scope'); + if ($sessionScope) { + $this->scope = $sessionScope; + } + } + return $this->scope; + } + public function setToken(IToken $token) { $this->scope = $token->getScopeAsArray(); + $session = $this->getSession(); + $session->set('token_scope', $this->scope); $this->enable(); } public function canAccessFilesystem() { - if (!$this->enabled) { - return true; - } - return !$this->scope || $this->scope['filesystem']; + $scope = $this->getScopeAsArray(); + return !$scope || $scope['filesystem']; } } diff --git a/lib/private/Log/File.php b/lib/private/Log/File.php index 4c7ef446a05..8011f63ab13 100644 --- a/lib/private/Log/File.php +++ b/lib/private/Log/File.php @@ -119,7 +119,9 @@ class File { ); $entry = json_encode($entry); $handle = @fopen(self::$logFile, 'a'); - @chmod(self::$logFile, 0640); + if ((fileperms(self::$logFile) & 0777) != 0640) { + @chmod(self::$logFile, 0640); + } if ($handle) { fwrite($handle, $entry."\n"); fclose($handle); diff --git a/lib/private/Security/Bruteforce/Throttler.php b/lib/private/Security/Bruteforce/Throttler.php index 765f109fdb3..73a27b677b0 100644 --- a/lib/private/Security/Bruteforce/Throttler.php +++ b/lib/private/Security/Bruteforce/Throttler.php @@ -186,6 +186,67 @@ class Throttler { } /** + * Check if the IP is whitelisted + * + * @param string $ip + * @return bool + */ + private function isIPWhitelisted($ip) { + $keys = $this->config->getAppKeys('bruteForce'); + $keys = array_filter($keys, function($key) { + $regex = '/^whitelist_/S'; + return preg_match($regex, $key) === 1; + }); + + if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { + $type = 4; + } else if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) { + $type = 6; + } else { + return false; + } + + $ip = inet_pton($ip); + + foreach ($keys as $key) { + $cidr = $this->config->getAppValue('bruteForce', $key, null); + + $cx = explode('/', $cidr); + $addr = $cx[0]; + $mask = (int)$cx[1]; + + // Do not compare ipv4 to ipv6 + if (($type === 4 && !filter_var($addr, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) || + ($type === 6 && !filter_var($addr, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6))) { + continue; + } + + $addr = inet_pton($addr); + + $valid = true; + for($i = 0; $i < $mask; $i++) { + $part = ord($addr[(int)($i/8)]); + $orig = ord($ip[(int)($i/8)]); + + $part = $part & (15 << (1 - ($i % 2))); + $orig = $orig & (15 << (1 - ($i % 2))); + + if ($part !== $orig) { + $valid = false; + break; + } + } + + if ($valid === true) { + return true; + } + } + + return false; + + } + + /** * Get the throttling delay (in milliseconds) * * @param string $ip @@ -193,6 +254,10 @@ class Throttler { * @return int */ public function getDelay($ip, $action = '') { + if ($this->isIPWhitelisted($ip)) { + return 0; + } + $cutoffTime = (new \DateTime()) ->sub($this->getCutoff(43200)) ->getTimestamp(); diff --git a/lib/private/Server.php b/lib/private/Server.php index 10f9a810de9..98910b097b7 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -307,7 +307,7 @@ class Server extends ServerContainer implements IServerContainer { $defaultTokenProvider = null; } - $userSession = new \OC\User\Session($manager, $session, $timeFactory, $defaultTokenProvider, $c->getConfig(), $c->getSecureRandom()); + $userSession = new \OC\User\Session($manager, $session, $timeFactory, $defaultTokenProvider, $c->getConfig(), $c->getSecureRandom(), $c->getLockdownManager()); $userSession->listen('\OC\User', 'preCreateUser', function ($uid, $password) { \OC_Hook::emit('OC_User', 'pre_createUser', array('run' => true, 'uid' => $uid, 'password' => $password)); }); @@ -930,7 +930,9 @@ class Server extends ServerContainer implements IServerContainer { }); $this->registerService('LockdownManager', function (Server $c) { - return new LockdownManager(); + return new LockdownManager(function() use ($c) { + return $c->getSession(); + }); }); $this->registerService(ICloudIdManager::class, function (Server $c) { diff --git a/lib/private/Session/CryptoSessionData.php b/lib/private/Session/CryptoSessionData.php index 58020edf66d..4e0b852cb35 100644 --- a/lib/private/Session/CryptoSessionData.php +++ b/lib/private/Session/CryptoSessionData.php @@ -129,7 +129,11 @@ class CryptoSessionData implements \ArrayAccess, ISession { * Reset and recreate the session */ public function clear() { + $requesttoken = $this->get('requesttoken'); $this->sessionValues = []; + if ($requesttoken !== null) { + $this->set('requesttoken', $requesttoken); + } $this->isModified = true; $this->session->clear(); } diff --git a/lib/private/Settings/Admin/Sharing.php b/lib/private/Settings/Admin/Sharing.php index 9b17efa8028..8f57f77b20a 100644 --- a/lib/private/Settings/Admin/Sharing.php +++ b/lib/private/Settings/Admin/Sharing.php @@ -64,6 +64,7 @@ class Sharing implements ISettings { 'shareExcludeGroups' => $this->config->getAppValue('core', 'shareapi_exclude_groups', 'no') === 'yes' ? true : false, 'shareExcludedGroupsList' => $excludeGroupsList, 'publicShareDisclaimerText' => $this->config->getAppValue('core', 'shareapi_public_link_disclaimertext', null), + 'enableLinkPasswordByDefault' => $this->config->getAppValue('core', 'shareapi_enable_link_password_by_default', 'no'), ]; return new TemplateResponse('settings', 'admin/sharing', $parameters, ''); diff --git a/lib/private/Settings/Manager.php b/lib/private/Settings/Manager.php index 94df00551d4..080b697b238 100644 --- a/lib/private/Settings/Manager.php +++ b/lib/private/Settings/Manager.php @@ -273,6 +273,7 @@ class Manager implements IManager { $sections = [ 0 => [new Section('server', $this->l->t('Server settings'), 0, $this->url->imagePath('settings', 'admin.svg'))], 5 => [new Section('sharing', $this->l->t('Sharing'), 0, $this->url->imagePath('core', 'actions/share.svg'))], + 10 => [new Section('security', $this->l->t('Security'), 0, $this->url->imagePath('core', 'actions/password.svg'))], 45 => [new Section('encryption', $this->l->t('Encryption'), 0, $this->url->imagePath('core', 'actions/password.svg'))], 98 => [new Section('additional', $this->l->t('Additional settings'), 0, $this->url->imagePath('core', 'actions/settings-dark.svg'))], 99 => [new Section('tips-tricks', $this->l->t('Tips & tricks'), 0, $this->url->imagePath('settings', 'help.svg'))], diff --git a/lib/private/Template/JSCombiner.php b/lib/private/Template/JSCombiner.php index 0f30fb915f7..604cd2cceb7 100644 --- a/lib/private/Template/JSCombiner.php +++ b/lib/private/Template/JSCombiner.php @@ -98,7 +98,7 @@ class JSCombiner { $fileName = str_replace('.json', '.js', $fileName) . '.deps'; try { $deps = $this->depsCache->get($folder->getName() . '-' . $fileName); - if ($deps === null) { + if ($deps === null || $deps === '') { $depFile = $folder->getFile($fileName); $deps = $depFile->getContent(); $this->depsCache->set($folder->getName() . '-' . $fileName, $deps); @@ -155,9 +155,9 @@ class JSCombiner { } try { - $gzipFile = $folder->getFile($fileName . '.gz'); + $gzipFile = $folder->getFile($fileName . '.gzip'); # Safari doesn't like .gz } catch (NotFoundException $e) { - $gzipFile = $folder->newFile($fileName . '.gz'); + $gzipFile = $folder->newFile($fileName . '.gzip'); # Safari doesn't like .gz } try { diff --git a/lib/private/Template/JSConfigHelper.php b/lib/private/Template/JSConfigHelper.php index ca45bbee9c6..4fc21680211 100644 --- a/lib/private/Template/JSConfigHelper.php +++ b/lib/private/Template/JSConfigHelper.php @@ -112,6 +112,9 @@ class JSConfigHelper { $apps_paths[$app] = \OC_App::getAppWebPath($app); } + + $enableLinkPasswordByDefault = $this->config->getAppValue('core', 'shareapi_enable_link_password_by_default', 'no'); + $enableLinkPasswordByDefault = ($enableLinkPasswordByDefault === 'yes') ? true : false; $defaultExpireDateEnabled = $this->config->getAppValue('core', 'shareapi_default_expire_date', 'no') === 'yes'; $defaultExpireDate = $enforceDefaultExpireDate = null; if ($defaultExpireDateEnabled) { @@ -217,6 +220,7 @@ class JSConfigHelper { 'defaultExpireDate' => $defaultExpireDate, 'defaultExpireDateEnforced' => $enforceDefaultExpireDate, 'enforcePasswordForPublicLink' => \OCP\Util::isPublicLinkPasswordRequired(), + 'enableLinkPasswordByDefault' => $enableLinkPasswordByDefault, 'sharingDisabledForUser' => \OCP\Util::isSharingDisabledForUser(), 'resharingAllowed' => \OCP\Share::isResharingAllowed(), 'remoteShareAllowed' => $outgoingServer2serverShareEnabled, diff --git a/lib/private/Template/SCSSCacher.php b/lib/private/Template/SCSSCacher.php index df2e0232508..6e09f41a215 100644 --- a/lib/private/Template/SCSSCacher.php +++ b/lib/private/Template/SCSSCacher.php @@ -188,9 +188,9 @@ class SCSSCacher { // Gzip file try { - $gzipFile = $folder->getFile($fileNameCSS . '.gz'); + $gzipFile = $folder->getFile($fileNameCSS . '.gzip'); # Safari doesn't like .gz } catch (NotFoundException $e) { - $gzipFile = $folder->newFile($fileNameCSS . '.gz'); + $gzipFile = $folder->newFile($fileNameCSS . '.gzip'); # Safari doesn't like .gz } try { diff --git a/lib/private/User/Database.php b/lib/private/User/Database.php index 22b335ebfbd..73506c7d7c5 100644 --- a/lib/private/User/Database.php +++ b/lib/private/User/Database.php @@ -237,9 +237,10 @@ class Database extends Backend implements IUserBackend { * @return boolean true if user was found, false otherwise */ private function loadUser($uid) { + $uid = (string) $uid; if (!isset($this->cache[$uid])) { //guests $uid could be NULL or '' - if ($uid === null || $uid === '') { + if ($uid === '') { $this->cache[$uid]=false; return true; } diff --git a/lib/private/User/Session.php b/lib/private/User/Session.php index 4980318b554..73a8196cecd 100644 --- a/lib/private/User/Session.php +++ b/lib/private/User/Session.php @@ -51,6 +51,7 @@ use OCP\ISession; use OCP\IUser; use OCP\IUserManager; use OCP\IUserSession; +use OCP\Lockdown\ILockdownManager; use OCP\Security\ISecureRandom; use OCP\Session\Exceptions\SessionNotAvailableException; use OCP\Util; @@ -84,7 +85,7 @@ class Session implements IUserSession, Emitter { private $session; /** @var ITimeFactory */ - private $timeFacory; + private $timeFactory; /** @var IProvider */ private $tokenProvider; @@ -98,26 +99,33 @@ class Session implements IUserSession, Emitter { /** @var ISecureRandom */ private $random; + /** @var ILockdownManager */ + private $lockdownManager; + /** * @param IUserManager $manager * @param ISession $session - * @param ITimeFactory $timeFacory + * @param ITimeFactory $timeFactory * @param IProvider $tokenProvider * @param IConfig $config * @param ISecureRandom $random + * @param ILockdownManager $lockdownManager */ public function __construct(IUserManager $manager, ISession $session, - ITimeFactory $timeFacory, + ITimeFactory $timeFactory, $tokenProvider, IConfig $config, - ISecureRandom $random) { + ISecureRandom $random, + ILockdownManager $lockdownManager + ) { $this->manager = $manager; $this->session = $session; - $this->timeFacory = $timeFacory; + $this->timeFactory = $timeFactory; $this->tokenProvider = $tokenProvider; $this->config = $config; $this->random = $random; + $this->lockdownManager = $lockdownManager; } /** @@ -374,7 +382,7 @@ class Session implements IUserSession, Emitter { if (!is_null($request->getCookie('cookie_test'))) { return true; } - setcookie('cookie_test', 'test', $this->timeFacory->getTime() + 3600); + setcookie('cookie_test', 'test', $this->timeFactory->getTime() + 3600); return false; } @@ -464,7 +472,7 @@ class Session implements IUserSession, Emitter { ); // Set the last-password-confirm session to make the sudo mode work - $this->session->set('last-password-confirm', $this->timeFacory->getTime()); + $this->session->set('last-password-confirm', $this->timeFactory->getTime()); return true; } @@ -550,7 +558,7 @@ class Session implements IUserSession, Emitter { $this->setUser($user); $this->setLoginName($dbToken->getLoginName()); $this->setToken($dbToken->getId()); - \OC::$server->getLockdownManager()->setToken($dbToken); + $this->lockdownManager->setToken($dbToken); $this->manager->emit('\OC\User', 'postLogin', array($user, $password)); if ($this->isLoggedIn()) { @@ -626,7 +634,7 @@ class Session implements IUserSession, Emitter { // Check whether login credentials are still valid and the user was not disabled // This check is performed each 5 minutes $lastCheck = $dbToken->getLastCheck() ? : 0; - $now = $this->timeFacory->getTime(); + $now = $this->timeFactory->getTime(); if ($lastCheck > ($now - 60 * 5)) { // Checked performed recently, nothing to do now return true; @@ -747,7 +755,7 @@ class Session implements IUserSession, Emitter { // replace successfully used token with a new one $this->config->deleteUserValue($uid, 'login_token', $currentToken); $newToken = $this->random->generate(32); - $this->config->setUserValue($uid, 'login_token', $newToken, $this->timeFacory->getTime()); + $this->config->setUserValue($uid, 'login_token', $newToken, $this->timeFactory->getTime()); try { $sessionId = $this->session->getId(); @@ -766,6 +774,7 @@ class Session implements IUserSession, Emitter { $this->setUser($user); $this->setLoginName($token->getLoginName()); $this->setToken($token->getId()); + $this->lockdownManager->setToken($token); $user->updateLastLoginTimestamp(); $this->manager->emit('\OC\User', 'postRememberedLogin', [$user]); return true; @@ -776,7 +785,7 @@ class Session implements IUserSession, Emitter { */ public function createRememberMeToken(IUser $user) { $token = $this->random->generate(32); - $this->config->setUserValue($user->getUID(), 'login_token', $token, $this->timeFacory->getTime()); + $this->config->setUserValue($user->getUID(), 'login_token', $token, $this->timeFactory->getTime()); $this->setMagicInCookie($user->getUID(), $token); } @@ -814,7 +823,7 @@ class Session implements IUserSession, Emitter { $webRoot = '/'; } - $expires = $this->timeFacory->getTime() + $this->config->getSystemValue('remember_login_cookie_lifetime', 60 * 60 * 24 * 15); + $expires = $this->timeFactory->getTime() + $this->config->getSystemValue('remember_login_cookie_lifetime', 60 * 60 * 24 * 15); setcookie('nc_username', $username, $expires, $webRoot, '', $secureCookie, true); setcookie('nc_token', $token, $expires, $webRoot, '', $secureCookie, true); try { @@ -834,14 +843,14 @@ class Session implements IUserSession, Emitter { unset($_COOKIE['nc_username']); //TODO: DI unset($_COOKIE['nc_token']); unset($_COOKIE['nc_session_id']); - setcookie('nc_username', '', $this->timeFacory->getTime() - 3600, OC::$WEBROOT, '', $secureCookie, true); - setcookie('nc_token', '', $this->timeFacory->getTime() - 3600, OC::$WEBROOT, '', $secureCookie, true); - setcookie('nc_session_id', '', $this->timeFacory->getTime() - 3600, OC::$WEBROOT, '', $secureCookie, true); + setcookie('nc_username', '', $this->timeFactory->getTime() - 3600, OC::$WEBROOT, '', $secureCookie, true); + setcookie('nc_token', '', $this->timeFactory->getTime() - 3600, OC::$WEBROOT, '', $secureCookie, true); + setcookie('nc_session_id', '', $this->timeFactory->getTime() - 3600, OC::$WEBROOT, '', $secureCookie, true); // old cookies might be stored under /webroot/ instead of /webroot // and Firefox doesn't like it! - setcookie('nc_username', '', $this->timeFacory->getTime() - 3600, OC::$WEBROOT . '/', '', $secureCookie, true); - setcookie('nc_token', '', $this->timeFacory->getTime() - 3600, OC::$WEBROOT . '/', '', $secureCookie, true); - setcookie('nc_session_id', '', $this->timeFacory->getTime() - 3600, OC::$WEBROOT . '/', '', $secureCookie, true); + setcookie('nc_username', '', $this->timeFactory->getTime() - 3600, OC::$WEBROOT . '/', '', $secureCookie, true); + setcookie('nc_token', '', $this->timeFactory->getTime() - 3600, OC::$WEBROOT . '/', '', $secureCookie, true); + setcookie('nc_session_id', '', $this->timeFactory->getTime() - 3600, OC::$WEBROOT . '/', '', $secureCookie, true); } /** diff --git a/lib/private/legacy/util.php b/lib/private/legacy/util.php index 7f351c5b00e..0672fefbe0c 100644 --- a/lib/private/legacy/util.php +++ b/lib/private/legacy/util.php @@ -981,9 +981,9 @@ class OC_Util { ); exit(); } - // Redirect to index page if 2FA challenge was not solved yet + // Redirect to 2FA challenge selection if 2FA challenge was not solved yet if (\OC::$server->getTwoFactorAuthManager()->needsSecondFactor(\OC::$server->getUserSession()->getUser())) { - header('Location: ' . \OCP\Util::linkToAbsolute('', 'index.php')); + header('Location: ' . \OC::$server->getURLGenerator()->linkToRoute('core.TwoFactorChallenge.selectChallenge')); exit(); } } diff --git a/lib/public/DB/QueryBuilder/IFunctionBuilder.php b/lib/public/DB/QueryBuilder/IFunctionBuilder.php new file mode 100644 index 00000000000..6c1f596966d --- /dev/null +++ b/lib/public/DB/QueryBuilder/IFunctionBuilder.php @@ -0,0 +1,62 @@ +<?php +/** + * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCP\DB\QueryBuilder; + +/** + * This class provides a builder for sql some functions + * + * @since 12.0.0 + */ +interface IFunctionBuilder { + /** + * Calculates the MD5 hash of a given input + * + * @param mixed $input The input to be hashed + * + * @return IQueryFunction + * @since 12.0.0 + */ + public function md5($input); + + /** + * Combines two input strings + * + * @param mixed $x The first input string + * @param mixed $y The seccond input string + * + * @return IQueryFunction + * @since 12.0.0 + */ + public function concat($x, $y); + + /** + * Takes a substring from the input string + * + * @param mixed $input The input string + * @param mixed $start The start of the substring, note that counting starts at 1 + * @param mixed $length The length of the substring + * + * @return IQueryFunction + * @since 12.0.0 + */ + public function substring($input, $start, $length = null); +} diff --git a/lib/public/DB/QueryBuilder/IQueryBuilder.php b/lib/public/DB/QueryBuilder/IQueryBuilder.php index 8ef8a96b25f..a176bb917a3 100644 --- a/lib/public/DB/QueryBuilder/IQueryBuilder.php +++ b/lib/public/DB/QueryBuilder/IQueryBuilder.php @@ -95,6 +95,25 @@ interface IQueryBuilder { public function expr(); /** + * Gets an FunctionBuilder used for object-oriented construction of query functions. + * This producer method is intended for convenient inline usage. Example: + * + * <code> + * $qb = $conn->getQueryBuilder() + * ->select('u') + * ->from('users', 'u') + * ->where($qb->fun()->md5('u.id')); + * </code> + * + * For more complex function construction, consider storing the function + * builder object in a local variable. + * + * @return \OCP\DB\QueryBuilder\IFunctionBuilder + * @since 12.0.0 + */ + public function func(); + + /** * Gets the type of the currently built query. * * @return integer diff --git a/settings/l10n/az.js b/settings/l10n/az.js index d06840563e4..fcfc3663257 100644 --- a/settings/l10n/az.js +++ b/settings/l10n/az.js @@ -161,10 +161,9 @@ OC.L10N.register( "Username" : "İstifadəçi adı", "Done" : "Edildi", "Show storage location" : "Depo ünvanını göstÉ™r", - "Show last log in" : "Son giriÅŸi göstÉ™r", "Show user backend" : "Daxili istifadəçini göstÉ™r", - "Send email to new user" : "Yeni istifadəçiyÉ™ mÉ™ktub yolla", "Show email address" : "Email ünvanını göstÉ™r", + "Send email to new user" : "Yeni istifadəçiyÉ™ mÉ™ktub yolla", "E-Mail" : "E-Mail", "Create" : "Yarat", "Admin Recovery Password" : "İnzibatçı bÉ™rpa ÅŸifrÉ™si", @@ -181,6 +180,7 @@ OC.L10N.register( "Please provide an admin recovery password, otherwise all user data will be lost" : "Xahış olunur inzibatçı geriyÉ™ qayıdış ÅŸifrÉ™sini tÉ™qdim edÉ™siniz, É™ks halda bütün istfadəçi datası itÉ™cÉ™k.", "Admins can't remove themself from the admin group" : "İnzibatçılar özlÉ™rini inzibatçı qrupundan silÉ™ bilmÉ™z", "Unable to add user to group %s" : "İstifadəçini %s qrupuna É™lavÉ™ etmÉ™k mümkün olmadı", - "Unable to remove user from group %s" : "İstifadəçini %s qrupundan silmÉ™k mümkün olmadı" + "Unable to remove user from group %s" : "İstifadəçini %s qrupundan silmÉ™k mümkün olmadı", + "Show last log in" : "Son giriÅŸi göstÉ™r" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/az.json b/settings/l10n/az.json index af404233be7..ed924a8af0d 100644 --- a/settings/l10n/az.json +++ b/settings/l10n/az.json @@ -159,10 +159,9 @@ "Username" : "İstifadəçi adı", "Done" : "Edildi", "Show storage location" : "Depo ünvanını göstÉ™r", - "Show last log in" : "Son giriÅŸi göstÉ™r", "Show user backend" : "Daxili istifadəçini göstÉ™r", - "Send email to new user" : "Yeni istifadəçiyÉ™ mÉ™ktub yolla", "Show email address" : "Email ünvanını göstÉ™r", + "Send email to new user" : "Yeni istifadəçiyÉ™ mÉ™ktub yolla", "E-Mail" : "E-Mail", "Create" : "Yarat", "Admin Recovery Password" : "İnzibatçı bÉ™rpa ÅŸifrÉ™si", @@ -179,6 +178,7 @@ "Please provide an admin recovery password, otherwise all user data will be lost" : "Xahış olunur inzibatçı geriyÉ™ qayıdış ÅŸifrÉ™sini tÉ™qdim edÉ™siniz, É™ks halda bütün istfadəçi datası itÉ™cÉ™k.", "Admins can't remove themself from the admin group" : "İnzibatçılar özlÉ™rini inzibatçı qrupundan silÉ™ bilmÉ™z", "Unable to add user to group %s" : "İstifadəçini %s qrupuna É™lavÉ™ etmÉ™k mümkün olmadı", - "Unable to remove user from group %s" : "İstifadəçini %s qrupundan silmÉ™k mümkün olmadı" + "Unable to remove user from group %s" : "İstifadəçini %s qrupundan silmÉ™k mümkün olmadı", + "Show last log in" : "Son giriÅŸi göstÉ™r" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/bg.js b/settings/l10n/bg.js index dd03c570f7f..41fb343be24 100644 --- a/settings/l10n/bg.js +++ b/settings/l10n/bg.js @@ -215,9 +215,8 @@ OC.L10N.register( "Done" : "Завършен", "Subscribe to our newsletter!" : "Ðбонирайте Ñе за нашата емиÑиÑ!", "Show storage location" : "Покажи мÑÑтото на хранилището", - "Show last log in" : "Покажи поÑледно впиÑване", - "Send email to new user" : "Изпращай пиÑмо към нов потребител", "Show email address" : "Покажи адреÑа на електронната поща", + "Send email to new user" : "Изпращай пиÑмо към нов потребител", "E-Mail" : "Имейл", "Create" : "Създаване", "Admin Recovery Password" : "ВъзÑтановÑване на админиÑтраторÑката парола", @@ -239,6 +238,7 @@ OC.L10N.register( "Please provide an admin recovery password, otherwise all user data will be lost" : "МолÑ, поÑочете админиÑтраторÑката парола за възÑтановÑване. Ð’ противен Ñлучай, вÑичката Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð½Ð° потребителите ще бъде загубена.", "Admins can't remove themself from the admin group" : "ÐдминиÑтраторите не могат да премахват Ñебе Ñи от групата \"admin\".", "Unable to add user to group %s" : "ÐеуÑпешно добавÑне на потребител към групата %s.", - "Unable to remove user from group %s" : "ÐеуÑпешно премахване на потребител от групата %s." + "Unable to remove user from group %s" : "ÐеуÑпешно премахване на потребител от групата %s.", + "Show last log in" : "Покажи поÑледно впиÑване" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/bg.json b/settings/l10n/bg.json index dbbb39f8b68..057c9f12e01 100644 --- a/settings/l10n/bg.json +++ b/settings/l10n/bg.json @@ -213,9 +213,8 @@ "Done" : "Завършен", "Subscribe to our newsletter!" : "Ðбонирайте Ñе за нашата емиÑиÑ!", "Show storage location" : "Покажи мÑÑтото на хранилището", - "Show last log in" : "Покажи поÑледно впиÑване", - "Send email to new user" : "Изпращай пиÑмо към нов потребител", "Show email address" : "Покажи адреÑа на електронната поща", + "Send email to new user" : "Изпращай пиÑмо към нов потребител", "E-Mail" : "Имейл", "Create" : "Създаване", "Admin Recovery Password" : "ВъзÑтановÑване на админиÑтраторÑката парола", @@ -237,6 +236,7 @@ "Please provide an admin recovery password, otherwise all user data will be lost" : "МолÑ, поÑочете админиÑтраторÑката парола за възÑтановÑване. Ð’ противен Ñлучай, вÑичката Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð½Ð° потребителите ще бъде загубена.", "Admins can't remove themself from the admin group" : "ÐдминиÑтраторите не могат да премахват Ñебе Ñи от групата \"admin\".", "Unable to add user to group %s" : "ÐеуÑпешно добавÑне на потребител към групата %s.", - "Unable to remove user from group %s" : "ÐеуÑпешно премахване на потребител от групата %s." + "Unable to remove user from group %s" : "ÐеуÑпешно премахване на потребител от групата %s.", + "Show last log in" : "Покажи поÑледно впиÑване" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/bs.js b/settings/l10n/bs.js index 61fff19cd92..7d88f833127 100644 --- a/settings/l10n/bs.js +++ b/settings/l10n/bs.js @@ -136,10 +136,9 @@ OC.L10N.register( "Name" : "Ime", "Username" : "KorisniÄko ime", "Show storage location" : "Prikaži mjesto pohrane", - "Show last log in" : "Prikaži zadnju prijavu", "Show user backend" : "Prikaži korisniÄku pozadinu (backend)", - "Send email to new user" : "PoÅ¡alji e-poÅ¡tu novom korisniku", "Show email address" : "Prikaži adresu e-poÅ¡te", + "Send email to new user" : "PoÅ¡alji e-poÅ¡tu novom korisniku", "E-Mail" : "E-poÅ¡ta", "Create" : "Kreiraj", "Admin Recovery Password" : "Admin lozinka za oporavak", @@ -156,6 +155,7 @@ OC.L10N.register( "Please provide an admin recovery password, otherwise all user data will be lost" : "Molim navedite admin lozinku za povratak, u protivnom će svi korisniÄki podaci biti izgubljeni", "Admins can't remove themself from the admin group" : "Administratori ne mogu sami sebe ukloniti iz admin grupe", "Unable to add user to group %s" : "Dodavanje korisnika grupi %s nije moguće", - "Unable to remove user from group %s" : "Uklanjanje korisnika iz grupe %s nije moguće" + "Unable to remove user from group %s" : "Uklanjanje korisnika iz grupe %s nije moguće", + "Show last log in" : "Prikaži zadnju prijavu" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/settings/l10n/bs.json b/settings/l10n/bs.json index f595c64d55f..f5c3f659c70 100644 --- a/settings/l10n/bs.json +++ b/settings/l10n/bs.json @@ -134,10 +134,9 @@ "Name" : "Ime", "Username" : "KorisniÄko ime", "Show storage location" : "Prikaži mjesto pohrane", - "Show last log in" : "Prikaži zadnju prijavu", "Show user backend" : "Prikaži korisniÄku pozadinu (backend)", - "Send email to new user" : "PoÅ¡alji e-poÅ¡tu novom korisniku", "Show email address" : "Prikaži adresu e-poÅ¡te", + "Send email to new user" : "PoÅ¡alji e-poÅ¡tu novom korisniku", "E-Mail" : "E-poÅ¡ta", "Create" : "Kreiraj", "Admin Recovery Password" : "Admin lozinka za oporavak", @@ -154,6 +153,7 @@ "Please provide an admin recovery password, otherwise all user data will be lost" : "Molim navedite admin lozinku za povratak, u protivnom će svi korisniÄki podaci biti izgubljeni", "Admins can't remove themself from the admin group" : "Administratori ne mogu sami sebe ukloniti iz admin grupe", "Unable to add user to group %s" : "Dodavanje korisnika grupi %s nije moguće", - "Unable to remove user from group %s" : "Uklanjanje korisnika iz grupe %s nije moguće" + "Unable to remove user from group %s" : "Uklanjanje korisnika iz grupe %s nije moguće", + "Show last log in" : "Prikaži zadnju prijavu" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/settings/l10n/ca.js b/settings/l10n/ca.js index b13bc791378..4de9aff6bb7 100644 --- a/settings/l10n/ca.js +++ b/settings/l10n/ca.js @@ -234,10 +234,9 @@ OC.L10N.register( "Username" : "Nom d'usuari", "Done" : "Fet", "Show storage location" : "Mostra la ubicació del magatzem", - "Show last log in" : "Mostrar l'últim accés", "Show user backend" : "Mostrar backend d'usuari", - "Send email to new user" : "Enviar correu electrònic al nou usuari", "Show email address" : "Mostrar l'adreça de correu electrònic", + "Send email to new user" : "Enviar correu electrònic al nou usuari", "E-Mail" : "E-mail", "Create" : "Crea", "Admin Recovery Password" : "Recuperació de contrasenya d'administrador", @@ -257,6 +256,7 @@ OC.L10N.register( "Please provide an admin recovery password, otherwise all user data will be lost" : "Sisplau, proporcioneu una contrasenya de recuperació d'administrador, altrament totes les dades d'usuari es perdran", "Admins can't remove themself from the admin group" : "Els administradors no es poden eliminar del grup admin", "Unable to add user to group %s" : "No es pot afegir l'usuari al grup %s", - "Unable to remove user from group %s" : "No es pot eliminar l'usuari del grup %s" + "Unable to remove user from group %s" : "No es pot eliminar l'usuari del grup %s", + "Show last log in" : "Mostrar l'últim accés" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/ca.json b/settings/l10n/ca.json index 42763c40081..7165eba75ea 100644 --- a/settings/l10n/ca.json +++ b/settings/l10n/ca.json @@ -232,10 +232,9 @@ "Username" : "Nom d'usuari", "Done" : "Fet", "Show storage location" : "Mostra la ubicació del magatzem", - "Show last log in" : "Mostrar l'últim accés", "Show user backend" : "Mostrar backend d'usuari", - "Send email to new user" : "Enviar correu electrònic al nou usuari", "Show email address" : "Mostrar l'adreça de correu electrònic", + "Send email to new user" : "Enviar correu electrònic al nou usuari", "E-Mail" : "E-mail", "Create" : "Crea", "Admin Recovery Password" : "Recuperació de contrasenya d'administrador", @@ -255,6 +254,7 @@ "Please provide an admin recovery password, otherwise all user data will be lost" : "Sisplau, proporcioneu una contrasenya de recuperació d'administrador, altrament totes les dades d'usuari es perdran", "Admins can't remove themself from the admin group" : "Els administradors no es poden eliminar del grup admin", "Unable to add user to group %s" : "No es pot afegir l'usuari al grup %s", - "Unable to remove user from group %s" : "No es pot eliminar l'usuari del grup %s" + "Unable to remove user from group %s" : "No es pot eliminar l'usuari del grup %s", + "Show last log in" : "Mostrar l'últim accés" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/cs.js b/settings/l10n/cs.js index f7b4919dc90..6f3627f64ca 100644 --- a/settings/l10n/cs.js +++ b/settings/l10n/cs.js @@ -322,11 +322,9 @@ OC.L10N.register( "Subscribe to our news feed!" : "OdebÃrejte náš kanál s novinkami!", "Subscribe to our newsletter!" : "OdebÃrejte náš newsletter!", "Show storage location" : "Cesta k datům", - "Show last log in" : "Poslednà pÅ™ihlášenÃ", "Show user backend" : "Zobrazit vedenà uživatelů", - "Send email to new user" : "Poslat email novému uživateli", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Pokud je heslo nového uživatele ponecháno prázdné, je uživateli poslán aktivaÄnà e-mail s odkazem na nastavenà hesla", "Show email address" : "Zobrazit emailové adresy", + "Send email to new user" : "Poslat email novému uživateli", "E-Mail" : "Email", "Create" : "VytvoÅ™it", "Admin Recovery Password" : "Heslo obnovy správce", @@ -350,6 +348,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "Správci se nemohou odebrat sami ze skupiny správců", "Unable to add user to group %s" : "Nelze pÅ™idat uživatele do skupiny %s", "Unable to remove user from group %s" : "Nelze odebrat uživatele ze skupiny %s", - "For password recovery and notifications" : "Pro obnovenà hesla a upozornÄ›nÃ" + "For password recovery and notifications" : "Pro obnovenà hesla a upozornÄ›nÃ", + "Show last log in" : "Poslednà pÅ™ihlášenÃ" }, "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); diff --git a/settings/l10n/cs.json b/settings/l10n/cs.json index fef3fc0664e..29a7d6b46cf 100644 --- a/settings/l10n/cs.json +++ b/settings/l10n/cs.json @@ -320,11 +320,9 @@ "Subscribe to our news feed!" : "OdebÃrejte náš kanál s novinkami!", "Subscribe to our newsletter!" : "OdebÃrejte náš newsletter!", "Show storage location" : "Cesta k datům", - "Show last log in" : "Poslednà pÅ™ihlášenÃ", "Show user backend" : "Zobrazit vedenà uživatelů", - "Send email to new user" : "Poslat email novému uživateli", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Pokud je heslo nového uživatele ponecháno prázdné, je uživateli poslán aktivaÄnà e-mail s odkazem na nastavenà hesla", "Show email address" : "Zobrazit emailové adresy", + "Send email to new user" : "Poslat email novému uživateli", "E-Mail" : "Email", "Create" : "VytvoÅ™it", "Admin Recovery Password" : "Heslo obnovy správce", @@ -348,6 +346,7 @@ "Admins can't remove themself from the admin group" : "Správci se nemohou odebrat sami ze skupiny správců", "Unable to add user to group %s" : "Nelze pÅ™idat uživatele do skupiny %s", "Unable to remove user from group %s" : "Nelze odebrat uživatele ze skupiny %s", - "For password recovery and notifications" : "Pro obnovenà hesla a upozornÄ›nÃ" + "For password recovery and notifications" : "Pro obnovenà hesla a upozornÄ›nÃ", + "Show last log in" : "Poslednà pÅ™ihlášenÃ" },"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" }
\ No newline at end of file diff --git a/settings/l10n/da.js b/settings/l10n/da.js index 48f8ba9f04e..b7878d92514 100644 --- a/settings/l10n/da.js +++ b/settings/l10n/da.js @@ -200,10 +200,9 @@ OC.L10N.register( "Username" : "Brugernavn", "Done" : "Færdig", "Show storage location" : "Vis placering af lageret", - "Show last log in" : "Vis seneste login", "Show user backend" : "Vis bruger-backend", - "Send email to new user" : "Send e-mail til ny bruger", "Show email address" : "Vis e-mailadresse", + "Send email to new user" : "Send e-mail til ny bruger", "E-Mail" : "E-mail", "Create" : "Ny", "Admin Recovery Password" : "Administrator gendannelse kodeord", @@ -221,6 +220,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "Administratorer kan ikke fjerne dem selv fra admin gruppen", "Unable to add user to group %s" : "Brugeren kan ikke tilføjes til gruppen %s", "Unable to remove user from group %s" : "Brugeren kan ikke fjernes fra gruppen %s", - "For password recovery and notifications" : "Angiv en e-mailadresse for at aktivere gendannelse af adgangskode og modtage notifikationer" + "For password recovery and notifications" : "Angiv en e-mailadresse for at aktivere gendannelse af adgangskode og modtage notifikationer", + "Show last log in" : "Vis seneste login" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/da.json b/settings/l10n/da.json index 4a238112993..a4374fd6121 100644 --- a/settings/l10n/da.json +++ b/settings/l10n/da.json @@ -198,10 +198,9 @@ "Username" : "Brugernavn", "Done" : "Færdig", "Show storage location" : "Vis placering af lageret", - "Show last log in" : "Vis seneste login", "Show user backend" : "Vis bruger-backend", - "Send email to new user" : "Send e-mail til ny bruger", "Show email address" : "Vis e-mailadresse", + "Send email to new user" : "Send e-mail til ny bruger", "E-Mail" : "E-mail", "Create" : "Ny", "Admin Recovery Password" : "Administrator gendannelse kodeord", @@ -219,6 +218,7 @@ "Admins can't remove themself from the admin group" : "Administratorer kan ikke fjerne dem selv fra admin gruppen", "Unable to add user to group %s" : "Brugeren kan ikke tilføjes til gruppen %s", "Unable to remove user from group %s" : "Brugeren kan ikke fjernes fra gruppen %s", - "For password recovery and notifications" : "Angiv en e-mailadresse for at aktivere gendannelse af adgangskode og modtage notifikationer" + "For password recovery and notifications" : "Angiv en e-mailadresse for at aktivere gendannelse af adgangskode og modtage notifikationer", + "Show last log in" : "Vis seneste login" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/de.js b/settings/l10n/de.js index da6e13d69b1..9bd09a78997 100644 --- a/settings/l10n/de.js +++ b/settings/l10n/de.js @@ -213,6 +213,7 @@ OC.L10N.register( "Allow apps to use the Share API" : "Apps die Benutzung der Share-API erlauben", "Allow users to share via link" : "Benutzern erlauben, Inhalte über Links zu teilen", "Allow public uploads" : "Öffentliches Hochladen erlauben", + "Always ask for a password" : "Immer nach einem Passwort fragen", "Enforce password protection" : "Passwortschutz erzwingen", "Set default expiration date" : "Standardmäßiges Ablaufdatum setzen", "Expire after " : "Ablauf nach ", @@ -323,11 +324,9 @@ OC.L10N.register( "Subscribe to our newsletter!" : "Abonniere unseren Newsletter!", "Settings" : "Einstellungen", "Show storage location" : "Speicherort anzeigen", - "Show last log in" : "Letzte Anmeldung anzeigen", "Show user backend" : "Benutzer-Backend anzeigen", - "Send email to new user" : "E-Mail an neuen Benutzer senden", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Wenn das Passwort für den neuen Benutzer leer gelassen wird, wird an ihn eine Aktivierungs-E-Mail mit einem Link zur Passwortvergabe versandt.", "Show email address" : "E-Mail-Adresse anzeigen", + "Send email to new user" : "E-Mail an neuen Benutzer senden", "E-Mail" : "E-Mail", "Create" : "Anlegen", "Admin Recovery Password" : "Admin-Wiederherstellungspasswort", @@ -351,6 +350,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "Administratoren können sich nicht selbst aus der Admin-Gruppe löschen.", "Unable to add user to group %s" : "Der Benutzer konnte nicht zur Gruppe %s hinzugefügt werden", "Unable to remove user from group %s" : "Der Benutzer konnte nicht aus der Gruppe %s entfernt werden", - "For password recovery and notifications" : "Für Passwort-Wiederherstellung und Benachrichtigungen" + "For password recovery and notifications" : "Für Passwort-Wiederherstellung und Benachrichtigungen", + "Show last log in" : "Letzte Anmeldung anzeigen" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/de.json b/settings/l10n/de.json index fe874b71f0b..d8b67203cf6 100644 --- a/settings/l10n/de.json +++ b/settings/l10n/de.json @@ -211,6 +211,7 @@ "Allow apps to use the Share API" : "Apps die Benutzung der Share-API erlauben", "Allow users to share via link" : "Benutzern erlauben, Inhalte über Links zu teilen", "Allow public uploads" : "Öffentliches Hochladen erlauben", + "Always ask for a password" : "Immer nach einem Passwort fragen", "Enforce password protection" : "Passwortschutz erzwingen", "Set default expiration date" : "Standardmäßiges Ablaufdatum setzen", "Expire after " : "Ablauf nach ", @@ -321,11 +322,9 @@ "Subscribe to our newsletter!" : "Abonniere unseren Newsletter!", "Settings" : "Einstellungen", "Show storage location" : "Speicherort anzeigen", - "Show last log in" : "Letzte Anmeldung anzeigen", "Show user backend" : "Benutzer-Backend anzeigen", - "Send email to new user" : "E-Mail an neuen Benutzer senden", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Wenn das Passwort für den neuen Benutzer leer gelassen wird, wird an ihn eine Aktivierungs-E-Mail mit einem Link zur Passwortvergabe versandt.", "Show email address" : "E-Mail-Adresse anzeigen", + "Send email to new user" : "E-Mail an neuen Benutzer senden", "E-Mail" : "E-Mail", "Create" : "Anlegen", "Admin Recovery Password" : "Admin-Wiederherstellungspasswort", @@ -349,6 +348,7 @@ "Admins can't remove themself from the admin group" : "Administratoren können sich nicht selbst aus der Admin-Gruppe löschen.", "Unable to add user to group %s" : "Der Benutzer konnte nicht zur Gruppe %s hinzugefügt werden", "Unable to remove user from group %s" : "Der Benutzer konnte nicht aus der Gruppe %s entfernt werden", - "For password recovery and notifications" : "Für Passwort-Wiederherstellung und Benachrichtigungen" + "For password recovery and notifications" : "Für Passwort-Wiederherstellung und Benachrichtigungen", + "Show last log in" : "Letzte Anmeldung anzeigen" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/de_DE.js b/settings/l10n/de_DE.js index 880bca6890d..0d44265a191 100644 --- a/settings/l10n/de_DE.js +++ b/settings/l10n/de_DE.js @@ -213,6 +213,7 @@ OC.L10N.register( "Allow apps to use the Share API" : "Apps die Benutzung der Share-API erlauben", "Allow users to share via link" : "Benutzern erlauben, Inhalte über Links zu teilen", "Allow public uploads" : "Öffentliches Hochladen erlauben", + "Always ask for a password" : "Immer nach einem Passwort fragen", "Enforce password protection" : "Passwortschutz erzwingen", "Set default expiration date" : "Standardmäßiges Ablaufdatum setzen", "Expire after " : "Ablauf nach ", @@ -323,11 +324,9 @@ OC.L10N.register( "Subscribe to our newsletter!" : "Abonnieren Sie unseren Newsletter!", "Settings" : "Einstellungen", "Show storage location" : "Speicherort anzeigen", - "Show last log in" : "Letzte Anmeldung anzeigen", "Show user backend" : "Benutzer-Backend anzeigen", - "Send email to new user" : "E-Mail an neuen Benutzer senden", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Wenn das Passwort für den neuen Benutzer leer gelassen wird, wird an ihn eine Aktivierungs-E-Mail mit einem Link zur Passwortvergabe versandt.", "Show email address" : "E-Mail Adresse anzeigen", + "Send email to new user" : "E-Mail an neuen Benutzer senden", "E-Mail" : "E-Mail", "Create" : "Erstellen", "Admin Recovery Password" : "Admin-Passwort-Wiederherstellung", @@ -351,6 +350,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "Administratoren können sich nicht selbst aus der admin-Gruppe löschen", "Unable to add user to group %s" : "Der Benutzer konnte nicht zur Gruppe %s hinzugefügt werden", "Unable to remove user from group %s" : "Der Benutzer konnte nicht aus der Gruppe %s entfernt werden", - "For password recovery and notifications" : "Für Passwort-Wiederherstellung und Benachrichtigungen" + "For password recovery and notifications" : "Für Passwort-Wiederherstellung und Benachrichtigungen", + "Show last log in" : "Letzte Anmeldung anzeigen" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/de_DE.json b/settings/l10n/de_DE.json index 47d9ac7c9c8..f13fb7bdec7 100644 --- a/settings/l10n/de_DE.json +++ b/settings/l10n/de_DE.json @@ -211,6 +211,7 @@ "Allow apps to use the Share API" : "Apps die Benutzung der Share-API erlauben", "Allow users to share via link" : "Benutzern erlauben, Inhalte über Links zu teilen", "Allow public uploads" : "Öffentliches Hochladen erlauben", + "Always ask for a password" : "Immer nach einem Passwort fragen", "Enforce password protection" : "Passwortschutz erzwingen", "Set default expiration date" : "Standardmäßiges Ablaufdatum setzen", "Expire after " : "Ablauf nach ", @@ -321,11 +322,9 @@ "Subscribe to our newsletter!" : "Abonnieren Sie unseren Newsletter!", "Settings" : "Einstellungen", "Show storage location" : "Speicherort anzeigen", - "Show last log in" : "Letzte Anmeldung anzeigen", "Show user backend" : "Benutzer-Backend anzeigen", - "Send email to new user" : "E-Mail an neuen Benutzer senden", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Wenn das Passwort für den neuen Benutzer leer gelassen wird, wird an ihn eine Aktivierungs-E-Mail mit einem Link zur Passwortvergabe versandt.", "Show email address" : "E-Mail Adresse anzeigen", + "Send email to new user" : "E-Mail an neuen Benutzer senden", "E-Mail" : "E-Mail", "Create" : "Erstellen", "Admin Recovery Password" : "Admin-Passwort-Wiederherstellung", @@ -349,6 +348,7 @@ "Admins can't remove themself from the admin group" : "Administratoren können sich nicht selbst aus der admin-Gruppe löschen", "Unable to add user to group %s" : "Der Benutzer konnte nicht zur Gruppe %s hinzugefügt werden", "Unable to remove user from group %s" : "Der Benutzer konnte nicht aus der Gruppe %s entfernt werden", - "For password recovery and notifications" : "Für Passwort-Wiederherstellung und Benachrichtigungen" + "For password recovery and notifications" : "Für Passwort-Wiederherstellung und Benachrichtigungen", + "Show last log in" : "Letzte Anmeldung anzeigen" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/el.js b/settings/l10n/el.js index 7d50d48ee45..d47e4117297 100644 --- a/settings/l10n/el.js +++ b/settings/l10n/el.js @@ -272,10 +272,9 @@ OC.L10N.register( "Subscribe to our twitter channel!" : "ΕγγÏαφείτε στο κανάλι μας στο twitter!", "Subscribe to our news feed!" : "ΕγγÏαφείτε στην Ïοή των νÎων μας!", "Show storage location" : "Εμφάνιση τοποθεσίας αποθήκευσης", - "Show last log in" : "Εμφάνιση τελευταίας εισόδου", "Show user backend" : "Εμφάνιση χÏήστη συστήματος υποστήÏιξης", - "Send email to new user" : "Αποστολή μηνÏματος στο νÎο χÏήστη", "Show email address" : "Εμφάνιση διεÏθυνσης ηλ. αλληλογÏαφίας", + "Send email to new user" : "Αποστολή μηνÏματος στο νÎο χÏήστη", "E-Mail" : "ΗλεκτÏονική αλληλογÏαφία", "Create" : "ΔημιουÏγία", "Admin Recovery Password" : "Κωδικός ΕπαναφοÏάς ΔιαχειÏιστή ", @@ -298,6 +297,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "Οι διαχειÏιστÎÏ‚ δεν μποÏοÏν να αφαιÏÎσουν τους εαυτοÏÏ‚ τους από την ομάδα των διαχειÏιστών", "Unable to add user to group %s" : "Αδυναμία Ï€Ïοσθήκη χÏήστη στην ομάδα %s", "Unable to remove user from group %s" : "Αδυναμία αφαίÏεσης χÏήστη από την ομάδα %s", - "For password recovery and notifications" : "Η ανάκτηση του ÏƒÏ…Î½Î¸Î·Î¼Î±Ï„Î¹ÎºÎ¿Ï ÎºÎ±Î¹ οι ειδοποιήσεις" + "For password recovery and notifications" : "Η ανάκτηση του ÏƒÏ…Î½Î¸Î·Î¼Î±Ï„Î¹ÎºÎ¿Ï ÎºÎ±Î¹ οι ειδοποιήσεις", + "Show last log in" : "Εμφάνιση τελευταίας εισόδου" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/el.json b/settings/l10n/el.json index bf716b05866..cb58e464aca 100644 --- a/settings/l10n/el.json +++ b/settings/l10n/el.json @@ -270,10 +270,9 @@ "Subscribe to our twitter channel!" : "ΕγγÏαφείτε στο κανάλι μας στο twitter!", "Subscribe to our news feed!" : "ΕγγÏαφείτε στην Ïοή των νÎων μας!", "Show storage location" : "Εμφάνιση τοποθεσίας αποθήκευσης", - "Show last log in" : "Εμφάνιση τελευταίας εισόδου", "Show user backend" : "Εμφάνιση χÏήστη συστήματος υποστήÏιξης", - "Send email to new user" : "Αποστολή μηνÏματος στο νÎο χÏήστη", "Show email address" : "Εμφάνιση διεÏθυνσης ηλ. αλληλογÏαφίας", + "Send email to new user" : "Αποστολή μηνÏματος στο νÎο χÏήστη", "E-Mail" : "ΗλεκτÏονική αλληλογÏαφία", "Create" : "ΔημιουÏγία", "Admin Recovery Password" : "Κωδικός ΕπαναφοÏάς ΔιαχειÏιστή ", @@ -296,6 +295,7 @@ "Admins can't remove themself from the admin group" : "Οι διαχειÏιστÎÏ‚ δεν μποÏοÏν να αφαιÏÎσουν τους εαυτοÏÏ‚ τους από την ομάδα των διαχειÏιστών", "Unable to add user to group %s" : "Αδυναμία Ï€Ïοσθήκη χÏήστη στην ομάδα %s", "Unable to remove user from group %s" : "Αδυναμία αφαίÏεσης χÏήστη από την ομάδα %s", - "For password recovery and notifications" : "Η ανάκτηση του ÏƒÏ…Î½Î¸Î·Î¼Î±Ï„Î¹ÎºÎ¿Ï ÎºÎ±Î¹ οι ειδοποιήσεις" + "For password recovery and notifications" : "Η ανάκτηση του ÏƒÏ…Î½Î¸Î·Î¼Î±Ï„Î¹ÎºÎ¿Ï ÎºÎ±Î¹ οι ειδοποιήσεις", + "Show last log in" : "Εμφάνιση τελευταίας εισόδου" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/en_GB.js b/settings/l10n/en_GB.js index aad87239153..c405bed3792 100644 --- a/settings/l10n/en_GB.js +++ b/settings/l10n/en_GB.js @@ -240,10 +240,9 @@ OC.L10N.register( "Username" : "Username", "Done" : "Done", "Show storage location" : "Show storage location", - "Show last log in" : "Show last log in", "Show user backend" : "Show user backend", - "Send email to new user" : "Send email to new user", "Show email address" : "Show email address", + "Send email to new user" : "Send email to new user", "E-Mail" : "E-Mail", "Create" : "Create", "Admin Recovery Password" : "Admin Recovery Password", @@ -261,6 +260,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "Admins can't remove themselves from the admin group", "Unable to add user to group %s" : "Unable to add user to group %s", "Unable to remove user from group %s" : "Unable to remove user from group %s", - "For password recovery and notifications" : "For password recovery and notifications" + "For password recovery and notifications" : "For password recovery and notifications", + "Show last log in" : "Show last log in" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/en_GB.json b/settings/l10n/en_GB.json index 7629420c25e..4842b573007 100644 --- a/settings/l10n/en_GB.json +++ b/settings/l10n/en_GB.json @@ -238,10 +238,9 @@ "Username" : "Username", "Done" : "Done", "Show storage location" : "Show storage location", - "Show last log in" : "Show last log in", "Show user backend" : "Show user backend", - "Send email to new user" : "Send email to new user", "Show email address" : "Show email address", + "Send email to new user" : "Send email to new user", "E-Mail" : "E-Mail", "Create" : "Create", "Admin Recovery Password" : "Admin Recovery Password", @@ -259,6 +258,7 @@ "Admins can't remove themself from the admin group" : "Admins can't remove themselves from the admin group", "Unable to add user to group %s" : "Unable to add user to group %s", "Unable to remove user from group %s" : "Unable to remove user from group %s", - "For password recovery and notifications" : "For password recovery and notifications" + "For password recovery and notifications" : "For password recovery and notifications", + "Show last log in" : "Show last log in" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/eo.js b/settings/l10n/eo.js index 5e3ed50d7c8..34513297942 100644 --- a/settings/l10n/eo.js +++ b/settings/l10n/eo.js @@ -108,7 +108,6 @@ OC.L10N.register( "Name" : "Nomo", "Username" : "Uzantonomo", "Done" : "Farita", - "Show last log in" : "Montri lastan ensaluton", "Show user backend" : "Montri uzantomotoron", "E-Mail" : "RetpoÅtadreso", "Create" : "Krei", @@ -122,6 +121,7 @@ OC.L10N.register( "Default" : "DefaÅlta", "Admins can't remove themself from the admin group" : "Administrantoj ne povas forigi sin mem el la administra grupo.", "Unable to add user to group %s" : "Ne eblis aldoni la uzanton al la grupo %s", - "Unable to remove user from group %s" : "Ne eblis forigi la uzantan el la grupo %s" + "Unable to remove user from group %s" : "Ne eblis forigi la uzantan el la grupo %s", + "Show last log in" : "Montri lastan ensaluton" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/eo.json b/settings/l10n/eo.json index d64c76800eb..b4e570f18e5 100644 --- a/settings/l10n/eo.json +++ b/settings/l10n/eo.json @@ -106,7 +106,6 @@ "Name" : "Nomo", "Username" : "Uzantonomo", "Done" : "Farita", - "Show last log in" : "Montri lastan ensaluton", "Show user backend" : "Montri uzantomotoron", "E-Mail" : "RetpoÅtadreso", "Create" : "Krei", @@ -120,6 +119,7 @@ "Default" : "DefaÅlta", "Admins can't remove themself from the admin group" : "Administrantoj ne povas forigi sin mem el la administra grupo.", "Unable to add user to group %s" : "Ne eblis aldoni la uzanton al la grupo %s", - "Unable to remove user from group %s" : "Ne eblis forigi la uzantan el la grupo %s" + "Unable to remove user from group %s" : "Ne eblis forigi la uzantan el la grupo %s", + "Show last log in" : "Montri lastan ensaluton" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/es.js b/settings/l10n/es.js index e460ee3e708..3757d24df88 100644 --- a/settings/l10n/es.js +++ b/settings/l10n/es.js @@ -323,11 +323,9 @@ OC.L10N.register( "Subscribe to our newsletter!" : "¡SuscrÃbete a nuestro boletÃn!", "Settings" : "Configuración", "Show storage location" : "Mostrar la ubicación del almacenamiento", - "Show last log in" : "Mostrar el último inicio de sesión", "Show user backend" : "Mostrar motor de usuario", - "Send email to new user" : "Enviar correo al usuario nuevo", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Cuando la contraseña del nuevo usuario se deja vacÃa, un correo electrónico de activación con un enlace para establecer la contraseña se envÃa al usuario", "Show email address" : "Mostrar dirección de correo electrónico", + "Send email to new user" : "Enviar correo al usuario nuevo", "E-Mail" : "Correo electrónico", "Create" : "Crear", "Admin Recovery Password" : "Recuperación de la contraseña de administración", @@ -351,6 +349,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "Los administradores no se pueden eliminar a ellos mismos del grupo de administrador", "Unable to add user to group %s" : "No se pudo añadir el usuario al grupo %s", "Unable to remove user from group %s" : "No se pudo eliminar al usuario del grupo %s", - "For password recovery and notifications" : "Para la recuperación de contraseña y notificaciones" + "For password recovery and notifications" : "Para la recuperación de contraseña y notificaciones", + "Show last log in" : "Mostrar el último inicio de sesión" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/es.json b/settings/l10n/es.json index 2a183f1c54b..2f2bad7d8b0 100644 --- a/settings/l10n/es.json +++ b/settings/l10n/es.json @@ -321,11 +321,9 @@ "Subscribe to our newsletter!" : "¡SuscrÃbete a nuestro boletÃn!", "Settings" : "Configuración", "Show storage location" : "Mostrar la ubicación del almacenamiento", - "Show last log in" : "Mostrar el último inicio de sesión", "Show user backend" : "Mostrar motor de usuario", - "Send email to new user" : "Enviar correo al usuario nuevo", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Cuando la contraseña del nuevo usuario se deja vacÃa, un correo electrónico de activación con un enlace para establecer la contraseña se envÃa al usuario", "Show email address" : "Mostrar dirección de correo electrónico", + "Send email to new user" : "Enviar correo al usuario nuevo", "E-Mail" : "Correo electrónico", "Create" : "Crear", "Admin Recovery Password" : "Recuperación de la contraseña de administración", @@ -349,6 +347,7 @@ "Admins can't remove themself from the admin group" : "Los administradores no se pueden eliminar a ellos mismos del grupo de administrador", "Unable to add user to group %s" : "No se pudo añadir el usuario al grupo %s", "Unable to remove user from group %s" : "No se pudo eliminar al usuario del grupo %s", - "For password recovery and notifications" : "Para la recuperación de contraseña y notificaciones" + "For password recovery and notifications" : "Para la recuperación de contraseña y notificaciones", + "Show last log in" : "Mostrar el último inicio de sesión" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/es_MX.js b/settings/l10n/es_MX.js index 3410db1cb7d..d3c94a31b85 100644 --- a/settings/l10n/es_MX.js +++ b/settings/l10n/es_MX.js @@ -2,81 +2,331 @@ OC.L10N.register( "settings", { "Enabled" : "Habilitar", + "Not enabled" : "No habilitado", "Wrong password" : "Contraseña incorrecta", "Saved" : "Guardado", - "No user supplied" : "No se especificó un usuario", - "Unable to change password" : "No se ha podido cambiar la contraseña", + "No user supplied" : "No se proporcionó un usuario", + "Unable to change password" : "No fue posible cambiar la contraseña", "Authentication error" : "Error de autenticación", - "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor compruebe la contraseña e inténtelo de nuevo.", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Favor de proporcionar una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Favor de verificarla e inténtelo de nuevo.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartiendo la Nube Federada", + "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL está usando una versión anticuada (%s) de %s. Favor de actualizar su sistema operativo o las funcialidades tales como %s no funcionarán de forma confiable.", + "A problem occurred, please check your log files (Error: %s)" : "Se presentó un problema, favor de verificar sus archivos de bitácoras (Error: %s)", + "Migration Completed" : "Migración completada", + "Group already exists." : "El grupo ya existe.", + "Unable to add group." : "No fue posible agregar al grupo.", + "Unable to delete group." : "No fue posible borrar el grupo.", + "test email settings" : "probar los ajustes del correo electrónico", + "Mail could not be sent. Check your mail server log" : "El correo no pudo ser enviado. Verifique la bitáctora del servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Favor de revisar sus ajustes (Error: %s)", "Email sent" : "Correo electrónico enviado", - "Invalid request" : "Petición no válida", - "Unable to change full name" : "No se puede cambiar el nombre completo", - "Your full name has been changed." : "Se ha cambiado su nombre completo.", + "You need to set your user email before being able to send test emails." : "Requiere establecer su correo electrónico andes de poder enviar correos electrónicos de prueba. ", + "Invalid request" : "Solicitud inválida", + "Invalid mail address" : "Dirección de correo inválida", + "No valid group selected" : "No se ha seleccionado un grupo válido", + "A user with that name already exists." : "Un usuario con ese nombre ya existe. ", + "To send a password link to the user an email address is required." : "Para enviar la liga a una contraseña al usuario, se requiere de una dirección de correo electrónico.", + "Unable to create user." : "No fue posible crear el usuario. ", + "Your %s account was created" : "Su %s cuenta ha sido creada", + "Unable to delete user." : "No fue posible eliminar el usuario.", + "Settings saved" : "Se han guardado los ajustes", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "Your full name has been changed." : "Su nombre completo ha sido cambiado.", + "Forbidden" : "Prohibido", + "Invalid user" : "Usuario inválido", + "Unable to change mail address" : "No fue posible cambiar la dirección de correo", "Email saved" : "Correo electrónico guardado", - "Couldn't update app." : "No se pudo actualizar la aplicación.", + "Password confirmation is required" : "Se requiere la confirmación de la contraseña", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Are you really sure you want add {domain} as trusted domain?" : "¿Realmente está seguro que quiere agregar a {domain} como un dominio de confianza?", + "Add trusted domain" : "Agregar dominio de confianza", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Favor de aguardar hasta que termine", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending..." : "Enviando...", + "Official" : "Oficial", "All" : "Todos", - "Error while disabling app" : "Error mientras se desactivaba la aplicación", - "Disable" : "Desactivar", - "Enable" : "Activar", - "Error while enabling app" : "Error mientras se activaba la aplicación", + "Update to %s" : "Actualizar a %s", + "_You have %n app update pending_::_You have %n app updates pending_" : ["Usted tiene %n actualización de la aplicación pendiente","Usted tiene %n actualizaciones de la aplicación pendientes"], + "No apps found for your version" : "No se encontraron aplicaciones para su versión", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Disabling app …" : "Deshabilitando la aplicación ...", + "Error while disabling app" : "Se presentó un error mientras se deshabilitaba la aplicación", + "Disable" : "Deshabilitar", + "Enable" : "Habilitar", + "Enabling app …" : "Habilitando aplicación ...", + "Error while enabling app" : "Se presentó un error al habilitar la aplicación", + "Error: this app cannot be enabled because it makes the server unstable" : "Error: esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "Error: could not disable broken app" : "Error: No fue posible deshaiblitar la aplicación rota", + "Error while disabling broken app" : "Se presentó un error al deshabilitar la aplicación rota", "Updating...." : "Actualizando....", - "Error while updating app" : "Error mientras se actualizaba la aplicación", + "Error while updating app" : "Se presentó un error al actualizar la aplicación", "Updated" : "Actualizado", - "Delete" : "Eliminar", + "Uninstalling ...." : "Desinstalando ...", + "Error while uninstalling app" : "Se presentó un error al desinstalar la aplicación", + "Uninstall" : "Desinstalar", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación está habilitada pero necesita ser actualizada. Usted será redireccionado a la página de actualización en 5 segundos. ", + "App update" : "Actualización de la aplicación", + "Approved" : "Aprovado", + "Experimental" : "Experimental", + "No apps found for {query}" : "No se encontraron aplicación para {query}", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Disconnect" : "Desconectar", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "iPhone iOS" : "iPhone iOS", + "iPad iOS" : "iPad iOS", + "iOS Client" : "Cliente iOS", + "Android Client" : "Cliente Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Copy" : "Copiar", + "Copied!" : "¡Credenciales!", + "Not supported!" : "¡No soportado!", + "Press ⌘-C to copy." : "Presione ⌘-C para copiar. ", + "Press Ctrl-C to copy." : "Presione Ctrl-C para copiar.", + "Error while loading browser sessions and device tokens" : "Se presentó un error al cargar las sesiones de su navegador y las fichas en los dispositivos.", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Favor de cargar un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Delete" : "Borrar", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para usted", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", "Select a profile picture" : "Seleccionar una imagen de perfil", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", "Groups" : "Grupos", + "Unable to delete {objName}" : "No fue posuble borrar {objName}", + "Error creating group: {message}" : "Se presentó un error al crear el grupo: {message}", + "A valid group name must be provided" : "Debe proporcionar un nombre de grupo válido", + "deleted {groupName}" : "borrado {groupName}", "undo" : "deshacer", "never" : "nunca", + "deleted {userName}" : "borrado {userName}", + "No user found for <strong>{pattern}</strong>" : "No se encontraron usuarios para <strong>{pattern}</strong>", + "Unable to add user to group {group}" : "No fue posible agregar el usuario al grupo {group}", + "Unable to remove user from group {group}" : "No fue posible eliminar el usuario del grupo {group}", + "Add group" : "Agregar grupo", + "Invalid quota value \"{val}\"" : "Valor de cuota inválido \"{val}\"", + "no group" : "sin grupos", + "Password successfully changed" : "La contraseña fue cambiada exitosamente", + "Changing the password will result in data loss, because data recovery is not available for this user" : "El cambiar la contraseña puede generar pérdida de datos, porque la recuperación de datos no está disponible para este usuario", + "Could not change the users email" : "No fue posible cambiar el correo electrónico de los susuarios", "A valid username must be provided" : "Se debe proporcionar un nombre de usuario válido", + "Error creating user: {message}" : "Se presentó un error al crear el usuario: {message}", "A valid password must be provided" : "Se debe proporcionar una contraseña válida", + "A valid email must be provided" : "Se debe proporcionar un correo electrónico válido", "__language_name__" : "Español (México)", "Unlimited" : "Ilimitado", + "Personal info" : "Información personal", + "Sessions" : "Sesiones", + "App passwords" : "Contraseñas de aplicación", + "Sync clients" : "Sincronizar clientes", "None" : "Ninguno", - "Login" : "Iniciar sesión", - "Encryption" : "Cifrado", + "Login" : "Inicio de sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "This is used for sending out notifications." : "Esto se usa para enviar notificaciones", + "Send mode" : "Modo de envÃo", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", "Server address" : "Dirección del servidor", "Port" : "Puerto", - "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "No se ha encontrado el modulo PHP 'fileinfo'. Le recomendamos encarecidamente que habilite este módulo para obtener mejores resultados con la detección de tipos MIME.", - "System locale can not be set to a one which supports UTF-8." : "No se puede escoger una configuración regional que soporte UTF-8.", + "Credentials" : "Credenciales", + "SMTP Username" : "nombre de usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Store credentials" : "Almacenar credenciales", + "Test email settings" : "Probar ajsutes de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Server-side encryption" : "Encripción del lado del servidor", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Favor de leer detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sà sola no garantiza la seguridad del sistema. Favor de consultar la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Favor de considerar que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de sus datos, en caso de tener encripción asegúrese de respaldar las llaves de encripción junto con sus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente desea habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, favor de habilitar un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Seleccionar modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Usted necesita migrar sus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Favor de habilitar el \"Módulo de encripción predeterminado\" y ejecute el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Usted necesita migar sus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Comenzar migración", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "La configuración de Sólo Lectura ha sido habilitada. Esto previene establecer algunas configuraciones mediante la interface web. Adicionalmente, el archivo necesita que se le establezcan tener permisos de escritura manualemente en cada actualización. ", + "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Esto es posiblemente causado por un caché/acelerador tal como Zend OPcache o eAccelerator. ", + "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Su base de datos no puede correr con el nivel de aislamiento de transacción de \"READ COMMITTED\". Puede causar problemas cuando mútiples acciones sean ejecutadas en paralelo.", + "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "El modulo PHP 'fileinfo' no ha sido encontrado. Le recomendamos ámpliamente que habilite este módulo para obtener los mejores resultados en la detección de tipos MIME.", + "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "El bloqueo de archivos transaccional se encuentra deshabilitado, esto puede generar temas bajo ciertas condiciones. Abilite 'filelocking.enabled' en el archivo config.php para evitar problemas. Favor de consultar la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentatcón ↗</a> para mayor información.", + "System locale can not be set to a one which supports UTF-8." : "No es posible establecer la regionalización del sistema a una que soporte UTF-8.", "This means that there might be problems with certain characters in file names." : "Esto significa que puede haber problemas con ciertos caracteres en los nombres de los archivos.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Le sugerimos ámpliamente instalar en su sistema los paquetes requeridos para soportar alguno de los sigueintes locales: %s.", + "It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : "No fue posible ejecutar la tarea de cron con CLI. Se presentaron los siguientes errores técnicos:", + "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Favor de volver a verificar <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">guÃas de instalación↗</a>, y compruebe que no haya errores o advertenicas en la <a href=\"%s\">bitácora</a>.", + "All checks passed." : "Pasaron todas las verificaciones. ", "Cron" : "Cron", + "Last cron job execution: %s." : "Última ejecución de tareas de cron: %s.", + "Last cron job execution: %s. Something seems wrong." : "Última ejecución de tareas de cron: %s. Algo parece estar mal. ", + "Cron was not executed yet!" : "¡Aún no han sido ejecutas las tareas programadas!", "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php se registra en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP.", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario del sistema \"%s\".", "Version" : "Versión", "Sharing" : "Compartiendo", "Allow apps to use the Share API" : "Permitir a las aplicaciones utilizar la API de Compartición", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", "Allow public uploads" : "Permitir subidas públicas", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", "days" : "dÃas", - "Allow resharing" : "Permitir re-compartición", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos áun podrán recibir elementos compartidos, pero no los podrán iniciar.", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Tips & tricks" : "Consejos & trucos", + "This is particularly recommended when using the desktop client for file synchronisation." : "Esto es particularmente recomendado cuando se usa el cliente de escritorio para sincronización de archivos. ", + "How to do backups" : "Cómo hacer respaldos", + "Advanced monitoring" : "Monitoreo avanzado", + "Performance tuning" : "Optimización de rendimiento", + "Improving the config.php" : "Mejorando la config.php", + "Check the security of your Nextcloud over our security scan" : "Verifique la seguridad de su Nextcloud con nuestro escaneo de seguridad", + "Hardening and security guidance" : "Consejos de reforzamiento y seguridad", + "Developer documentation" : "Documentación del desarrollador", + "by %s" : "por %s", + "%s-licensed" : "%s-licensed", + "Documentation:" : "Documentación:", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Visit website" : "Visite el sitio web", + "Report a bug" : "Reporte un tema", + "Show description …" : "Mostrar descripción ...", + "Hide description …" : "Ocultar descripción ...", + "This app has an update available." : "Esta aplicación tiene una actualización disponible.", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mÃnima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "Enable only for specific groups" : "Habilitar sólo para grupos especÃficos", + "Uninstall app" : "Desinstalar la aplicación", + "SSL Root Certificates" : "Certificado SSL RaÃz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raÃz", + "Hey there,<br><br>just letting you know that you now have a %s account.<br><br>Your username: <strong>%s</strong><br>Access it: <strong><a href=\"%s\">%s</a></strong><br><br>" : "Hola,<br><br> sólo queremos informarle que ahora usted tiene una cuenta %s.<br><br> Su nombre de usuario es: <strong>%s</strong> <br>Ingrese a ella: <strong><a href=\"%s\">%s</a></strong><br><br>", "Cheers!" : "¡Saludos!", + "Hey there,\n\njust letting you know that you now have a %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Hola,\n\nsólo queremos informarle que ahora usted tiene una cuenta %s.\n\nSu nombre de usuario es: %s\n\nIngrese a ella: %s\n", + "Administrator documentation" : "Documentación de adminsitrador", + "Online documentation" : "Documentación en lÃnea", "Forum" : "Foro", + "Getting help" : "Obtener ayuda", + "Commercial support" : "Soporte comercial", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "Usted está usando <strong>%s</strong> de <strong>%s</strong>", + "You are using <strong>%s</strong> of <strong>%s</strong> (<strong>%s %%</strong>)" : "Usted está usando <strong>%s</strong> de <strong>%s</strong> (<strong> %s %%</strong>)", "Profile picture" : "Foto de perfil", "Upload new" : "Subir otra", - "Remove image" : "Borrar imagen", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionadoa por la cuenta original ", "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", "Email" : "Correo electrónico", - "Your email address" : "Su dirección de correo", + "Your email address" : "Su dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para reestablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Su dirección postal", + "Website" : "Sitio web", + "Your website" : "Su sitio web", + "Twitter" : "Twitter", + "You are member of the following groups:" : "Usted es un miembro de los siguientes grupos:", "Password" : "Contraseña", "Current password" : "Contraseña actual", "New password" : "Nueva contraseña", "Change password" : "Cambiar contraseña", "Language" : "Idioma", - "Help translate" : "Ayúdanos a traducir", + "Help translate" : "Ayude a traducir", "Get the apps to sync your files" : "Obtener las aplicaciones para sincronizar sus archivos", + "Desktop client" : "Cliente de escritorio", + "Android app" : "Aplicación android", + "iOS app" : "Aplicación iOS", + "If you want to support the project {contributeopen}join development{linkclose} or {contributeopen}spread the word{linkclose}!" : "¡Si desea apoyar al proyecto {contributeopen}júnase al desarrollo{linkclose} o {contributeopen} pase la vozd{linkclose}!", "Show First Run Wizard again" : "Mostrar nuevamente el Asistente de ejecución inicial", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móbiles han iniciado sesión en su cuenta. ", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Passcodes that give an app or device permissions to access your account." : "Los códigos de seguridad que le dan permisos a la aplicación o dispositivo para accesar a su cuenta. ", "Name" : "Nombre", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Use las siguientes credenciales para configurar su aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", "Username" : "Nombre de usuario", + "Done" : "Terminado", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Follow us on Google Plus!" : "¡SÃganos en Google Plus!", + "Subscribe to our twitter channel!" : "¡SuscrÃbase a nuestro canal de twitter!", + "Subscribe to our news feed!" : "¡Suscribase a nuestra fuente de noticias!", + "Subscribe to our newsletter!" : "¡Suscribase a nuestro boletÃn!", + "Settings" : "Ajustes", + "Show storage location" : "Mostrar la ubicación del almacenamiento", + "Show email address" : "Mostrar dirección de correo electrónico", + "Send email to new user" : "Enviar un correo electrónico al usuario nuevo", + "E-Mail" : "Correo electrónico", "Create" : "Crear", - "Admin Recovery Password" : "Recuperación de la contraseña de administración", + "Admin Recovery Password" : "Recuperación de la contraseña del administración", "Enter the recovery password in order to recover the users files during password change" : "Introduzca la contraseña de recuperación a fin de recuperar los archivos de los usuarios durante el cambio de contraseña.", - "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Por favor indique la cúota de almacenamiento (ej: \"512 MB\" o \"12 GB\")", + "Group name" : "Nombre del grupo", + "Everyone" : "Todos", + "Admins" : "Administradores", + "Default quota" : "Cuota predeterminada", + "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Favor de indicar la cuota de almacenamiento (ejem: \"512 MB\" ó \"12 GB\")", "Other" : "Otro", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Storage location" : "Úbicación del almacenamiento", + "Last login" : "Último inicio de sesión", "change full name" : "cambiar el nombre completo", "set new password" : "establecer nueva contraseña", + "change email address" : "cambiar dirección de correo electrónico", "Default" : "Predeterminado", - "Please provide an admin recovery password, otherwise all user data will be lost" : "Por favor facilite una contraseña de recuperación de administrador, sino podrÃan perderse todos los datos de usuario", + "Please provide an admin recovery password, otherwise all user data will be lost" : "Favor de proporcionar una contraseña de recuperación del administrador, de lo contrario se perderán todos los datos de usuario", "Admins can't remove themself from the admin group" : "Los administradores no se pueden eliminar a ellos mismos del grupo de administrador", - "Unable to add user to group %s" : "No se pudo añadir el usuario al grupo %s", - "Unable to remove user from group %s" : "No se pudo eliminar al usuario del grupo %s" + "Unable to add user to group %s" : "No fue posible agregar el usuario al grupo %s", + "Unable to remove user from group %s" : "No fue posible eliminar el usuario del grupo %s", + "For password recovery and notifications" : "Para recuperación de contraseña y notificaciones", + "Show last log in" : "Mostrar el último inicio de sesión" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/es_MX.json b/settings/l10n/es_MX.json index b757e72b492..8447428c511 100644 --- a/settings/l10n/es_MX.json +++ b/settings/l10n/es_MX.json @@ -1,80 +1,330 @@ { "translations": { "Enabled" : "Habilitar", + "Not enabled" : "No habilitado", "Wrong password" : "Contraseña incorrecta", "Saved" : "Guardado", - "No user supplied" : "No se especificó un usuario", - "Unable to change password" : "No se ha podido cambiar la contraseña", + "No user supplied" : "No se proporcionó un usuario", + "Unable to change password" : "No fue posible cambiar la contraseña", "Authentication error" : "Error de autenticación", - "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Por favor compruebe la contraseña e inténtelo de nuevo.", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Favor de proporcionar una contraseña de recuperación de administrador; de lo contrario toda la información del usuario se perderá. ", + "Wrong admin recovery password. Please check the password and try again." : "Contraseña de recuperación de administrador incorrecta. Favor de verificarla e inténtelo de nuevo.", + "installing and updating apps via the app store or Federated Cloud Sharing" : "instalando y actualizando aplicaciones por la tienda de aplicaciones o Compartiendo la Nube Federada", + "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL está usando una versión anticuada (%s) de %s. Favor de actualizar su sistema operativo o las funcialidades tales como %s no funcionarán de forma confiable.", + "A problem occurred, please check your log files (Error: %s)" : "Se presentó un problema, favor de verificar sus archivos de bitácoras (Error: %s)", + "Migration Completed" : "Migración completada", + "Group already exists." : "El grupo ya existe.", + "Unable to add group." : "No fue posible agregar al grupo.", + "Unable to delete group." : "No fue posible borrar el grupo.", + "test email settings" : "probar los ajustes del correo electrónico", + "Mail could not be sent. Check your mail server log" : "El correo no pudo ser enviado. Verifique la bitáctora del servidor de correo", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Se presentó un problema al enviar el correo electrónico. Favor de revisar sus ajustes (Error: %s)", "Email sent" : "Correo electrónico enviado", - "Invalid request" : "Petición no válida", - "Unable to change full name" : "No se puede cambiar el nombre completo", - "Your full name has been changed." : "Se ha cambiado su nombre completo.", + "You need to set your user email before being able to send test emails." : "Requiere establecer su correo electrónico andes de poder enviar correos electrónicos de prueba. ", + "Invalid request" : "Solicitud inválida", + "Invalid mail address" : "Dirección de correo inválida", + "No valid group selected" : "No se ha seleccionado un grupo válido", + "A user with that name already exists." : "Un usuario con ese nombre ya existe. ", + "To send a password link to the user an email address is required." : "Para enviar la liga a una contraseña al usuario, se requiere de una dirección de correo electrónico.", + "Unable to create user." : "No fue posible crear el usuario. ", + "Your %s account was created" : "Su %s cuenta ha sido creada", + "Unable to delete user." : "No fue posible eliminar el usuario.", + "Settings saved" : "Se han guardado los ajustes", + "Unable to change full name" : "No fue posible cambiar el nombre completo", + "Unable to change email address" : "No fue posible cambiar la dirección de correo electrónico", + "Your full name has been changed." : "Su nombre completo ha sido cambiado.", + "Forbidden" : "Prohibido", + "Invalid user" : "Usuario inválido", + "Unable to change mail address" : "No fue posible cambiar la dirección de correo", "Email saved" : "Correo electrónico guardado", - "Couldn't update app." : "No se pudo actualizar la aplicación.", + "Password confirmation is required" : "Se requiere la confirmación de la contraseña", + "Couldn't remove app." : "No fue posible eliminar la aplicación. ", + "Couldn't update app." : "No fue posible actualizar la aplicación.", + "Are you really sure you want add {domain} as trusted domain?" : "¿Realmente está seguro que quiere agregar a {domain} como un dominio de confianza?", + "Add trusted domain" : "Agregar dominio de confianza", + "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Favor de aguardar hasta que termine", + "Migration started …" : "La migración ha comenzado ...", + "Not saved" : "No guardado", + "Sending..." : "Enviando...", + "Official" : "Oficial", "All" : "Todos", - "Error while disabling app" : "Error mientras se desactivaba la aplicación", - "Disable" : "Desactivar", - "Enable" : "Activar", - "Error while enabling app" : "Error mientras se activaba la aplicación", + "Update to %s" : "Actualizar a %s", + "_You have %n app update pending_::_You have %n app updates pending_" : ["Usted tiene %n actualización de la aplicación pendiente","Usted tiene %n actualizaciones de la aplicación pendientes"], + "No apps found for your version" : "No se encontraron aplicaciones para su versión", + "The app will be downloaded from the app store" : "La aplicación será descargada de la tienda de aplicaciones <app store>", + "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Las aplicaciones oficiales son desarrolladas por y dentro de la comunidad. Ofrecen una funcionalidad centralizada y se encuentran listas para ser usadas en producción. ", + "Disabling app …" : "Deshabilitando la aplicación ...", + "Error while disabling app" : "Se presentó un error mientras se deshabilitaba la aplicación", + "Disable" : "Deshabilitar", + "Enable" : "Habilitar", + "Enabling app …" : "Habilitando aplicación ...", + "Error while enabling app" : "Se presentó un error al habilitar la aplicación", + "Error: this app cannot be enabled because it makes the server unstable" : "Error: esta aplicación no puede ser habilitada porque genera inestabilidad en el servidor", + "Error: could not disable broken app" : "Error: No fue posible deshaiblitar la aplicación rota", + "Error while disabling broken app" : "Se presentó un error al deshabilitar la aplicación rota", "Updating...." : "Actualizando....", - "Error while updating app" : "Error mientras se actualizaba la aplicación", + "Error while updating app" : "Se presentó un error al actualizar la aplicación", "Updated" : "Actualizado", - "Delete" : "Eliminar", + "Uninstalling ...." : "Desinstalando ...", + "Error while uninstalling app" : "Se presentó un error al desinstalar la aplicación", + "Uninstall" : "Desinstalar", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación está habilitada pero necesita ser actualizada. Usted será redireccionado a la página de actualización en 5 segundos. ", + "App update" : "Actualización de la aplicación", + "Approved" : "Aprovado", + "Experimental" : "Experimental", + "No apps found for {query}" : "No se encontraron aplicación para {query}", + "Allow filesystem access" : "Permitir acceso al sistema de archivos", + "Disconnect" : "Desconectar", + "Revoke" : "Revocar", + "Internet Explorer" : "Internet Explorer", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome para Android", + "iPhone iOS" : "iPhone iOS", + "iPad iOS" : "iPad iOS", + "iOS Client" : "Cliente iOS", + "Android Client" : "Cliente Android", + "Sync client - {os}" : "Sync client - {os}", + "This session" : "Esta sesión", + "Copy" : "Copiar", + "Copied!" : "¡Credenciales!", + "Not supported!" : "¡No soportado!", + "Press ⌘-C to copy." : "Presione ⌘-C para copiar. ", + "Press Ctrl-C to copy." : "Presione Ctrl-C para copiar.", + "Error while loading browser sessions and device tokens" : "Se presentó un error al cargar las sesiones de su navegador y las fichas en los dispositivos.", + "Error while creating device token" : "Se presentó un error al crear la ficha en el dispositivo", + "Error while deleting the token" : "Se presentó un error al borrar la ficha", + "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Se presentó un error. Favor de cargar un certificado PEM con codificación ASCII", + "Valid until {date}" : "Válido hasta {date}", + "Delete" : "Borrar", + "Local" : "Local", + "Private" : "Privado", + "Only visible to local users" : "Visible sólo para usuarios locales", + "Only visible to you" : "Sólo visible para usted", + "Contacts" : "Contactos", + "Visible to local users and to trusted servers" : "Visible para usuarios locales y para servidores de confianza", + "Public" : "Público", + "Will be synced to a global and public address book" : "Será sincronizado a una libreta de direcciones global y pública", "Select a profile picture" : "Seleccionar una imagen de perfil", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña aceptable", + "Good password" : "Buena contraseña", + "Strong password" : "Contraseña fuerte", "Groups" : "Grupos", + "Unable to delete {objName}" : "No fue posuble borrar {objName}", + "Error creating group: {message}" : "Se presentó un error al crear el grupo: {message}", + "A valid group name must be provided" : "Debe proporcionar un nombre de grupo válido", + "deleted {groupName}" : "borrado {groupName}", "undo" : "deshacer", "never" : "nunca", + "deleted {userName}" : "borrado {userName}", + "No user found for <strong>{pattern}</strong>" : "No se encontraron usuarios para <strong>{pattern}</strong>", + "Unable to add user to group {group}" : "No fue posible agregar el usuario al grupo {group}", + "Unable to remove user from group {group}" : "No fue posible eliminar el usuario del grupo {group}", + "Add group" : "Agregar grupo", + "Invalid quota value \"{val}\"" : "Valor de cuota inválido \"{val}\"", + "no group" : "sin grupos", + "Password successfully changed" : "La contraseña fue cambiada exitosamente", + "Changing the password will result in data loss, because data recovery is not available for this user" : "El cambiar la contraseña puede generar pérdida de datos, porque la recuperación de datos no está disponible para este usuario", + "Could not change the users email" : "No fue posible cambiar el correo electrónico de los susuarios", "A valid username must be provided" : "Se debe proporcionar un nombre de usuario válido", + "Error creating user: {message}" : "Se presentó un error al crear el usuario: {message}", "A valid password must be provided" : "Se debe proporcionar una contraseña válida", + "A valid email must be provided" : "Se debe proporcionar un correo electrónico válido", "__language_name__" : "Español (México)", "Unlimited" : "Ilimitado", + "Personal info" : "Información personal", + "Sessions" : "Sesiones", + "App passwords" : "Contraseñas de aplicación", + "Sync clients" : "Sincronizar clientes", "None" : "Ninguno", - "Login" : "Iniciar sesión", - "Encryption" : "Cifrado", + "Login" : "Inicio de sesión", + "Plain" : "Plano", + "NT LAN Manager" : "Administrador de LAN NT", + "SSL/TLS" : "SSL/TLS", + "STARTTLS" : "STARTTLS", + "Email server" : "Servidor de correo electrónico", + "Open documentation" : "Abrir documentación", + "This is used for sending out notifications." : "Esto se usa para enviar notificaciones", + "Send mode" : "Modo de envÃo", + "Encryption" : "Encripción", + "From address" : "De la dirección", + "mail" : "correo", + "Authentication method" : "Método de autenticación", + "Authentication required" : "Autenticación requerida", "Server address" : "Dirección del servidor", "Port" : "Puerto", - "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "No se ha encontrado el modulo PHP 'fileinfo'. Le recomendamos encarecidamente que habilite este módulo para obtener mejores resultados con la detección de tipos MIME.", - "System locale can not be set to a one which supports UTF-8." : "No se puede escoger una configuración regional que soporte UTF-8.", + "Credentials" : "Credenciales", + "SMTP Username" : "nombre de usuario SMTP", + "SMTP Password" : "Contraseña SMTP", + "Store credentials" : "Almacenar credenciales", + "Test email settings" : "Probar ajsutes de correo electrónico", + "Send email" : "Enviar correo electrónico", + "Server-side encryption" : "Encripción del lado del servidor", + "Enable server-side encryption" : "Habilitar encripción del lado del servidor", + "Please read carefully before activating server-side encryption: " : "Favor de leer detenidamente antes de activar la encripción del lado de servidor:", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que la encripción se encuentre habilitada, todos lo archivos cargados al servidor desde ese momento en tiempo, se encriptarán en el servidor. Sólo será posible deshabilitar la encripción en una fecha posterior si el modulo de encripción activo soporta esa funcionalidad y si todas las preciondiciones están satisfechas (ejem. establecer una llave de recuperación).", + "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "La encripción por sà sola no garantiza la seguridad del sistema. Favor de consultar la documentación para mayores informes de cómo funciona la aplicación de encripción y de los casos de uso soportados. ", + "Be aware that encryption always increases the file size." : "Favor de considerar que la encripción siempre aumenta el tamaño de los archivos. ", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Siempre es una buena idea generar respaldos de sus datos, en caso de tener encripción asegúrese de respaldar las llaves de encripción junto con sus datos. ", + "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente desea habilitar la encripción?", + "Enable encryption" : "Habilitar encripción", + "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, favor de habilitar un módulo de encripción en el menú de la aplicación. ", + "Select default encryption module:" : "Seleccionar modulo de encripción predeterminado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Usted necesita migrar sus llaves de encripción de la encripción anterior (ownCloud <= 8.0) a la actual. Favor de habilitar el \"Módulo de encripción predeterminado\" y ejecute el comando 'occ encryption:migrate'", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Usted necesita migar sus llaves de encripción de la encripción anterior (ownCloud <=8.0) a la actual. ", + "Start migration" : "Comenzar migración", + "Security & setup warnings" : "Advertencias de seguridad y configuración", + "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "La configuración de Sólo Lectura ha sido habilitada. Esto previene establecer algunas configuraciones mediante la interface web. Adicionalmente, el archivo necesita que se le establezcan tener permisos de escritura manualemente en cada actualización. ", + "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Esto es posiblemente causado por un caché/acelerador tal como Zend OPcache o eAccelerator. ", + "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Su base de datos no puede correr con el nivel de aislamiento de transacción de \"READ COMMITTED\". Puede causar problemas cuando mútiples acciones sean ejecutadas en paralelo.", + "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "El modulo PHP 'fileinfo' no ha sido encontrado. Le recomendamos ámpliamente que habilite este módulo para obtener los mejores resultados en la detección de tipos MIME.", + "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "El bloqueo de archivos transaccional se encuentra deshabilitado, esto puede generar temas bajo ciertas condiciones. Abilite 'filelocking.enabled' en el archivo config.php para evitar problemas. Favor de consultar la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentatcón ↗</a> para mayor información.", + "System locale can not be set to a one which supports UTF-8." : "No es posible establecer la regionalización del sistema a una que soporte UTF-8.", "This means that there might be problems with certain characters in file names." : "Esto significa que puede haber problemas con ciertos caracteres en los nombres de los archivos.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Le sugerimos ámpliamente instalar en su sistema los paquetes requeridos para soportar alguno de los sigueintes locales: %s.", + "It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : "No fue posible ejecutar la tarea de cron con CLI. Se presentaron los siguientes errores técnicos:", + "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Favor de volver a verificar <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">guÃas de instalación↗</a>, y compruebe que no haya errores o advertenicas en la <a href=\"%s\">bitácora</a>.", + "All checks passed." : "Pasaron todas las verificaciones. ", "Cron" : "Cron", + "Last cron job execution: %s." : "Última ejecución de tareas de cron: %s.", + "Last cron job execution: %s. Something seems wrong." : "Última ejecución de tareas de cron: %s. Algo parece estar mal. ", + "Cron was not executed yet!" : "¡Aún no han sido ejecutas las tareas programadas!", "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php se registra en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP.", + "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario del sistema \"%s\".", "Version" : "Versión", "Sharing" : "Compartiendo", "Allow apps to use the Share API" : "Permitir a las aplicaciones utilizar la API de Compartición", + "Allow users to share via link" : "Permitir a los usuarios compartir mediante ligas", "Allow public uploads" : "Permitir subidas públicas", + "Enforce password protection" : "Forzar protección de contraseñas", + "Set default expiration date" : "Establecer la fecha de expiración predeterminada", + "Expire after " : "Expirar después de", "days" : "dÃas", - "Allow resharing" : "Permitir re-compartición", + "Enforce expiration date" : "Forzar fecha de expiración", + "Allow resharing" : "Permitir volver a compartir", + "Allow sharing with groups" : "Permitir compartir con grupos", + "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos áun podrán recibir elementos compartidos, pero no los podrán iniciar.", + "This text will be shown on the public link upload page when the file list is hidden." : "Este texto se mostrará en la página de carga de la liga pública cuando la lista de archivos esté oculta. ", + "Tips & tricks" : "Consejos & trucos", + "This is particularly recommended when using the desktop client for file synchronisation." : "Esto es particularmente recomendado cuando se usa el cliente de escritorio para sincronización de archivos. ", + "How to do backups" : "Cómo hacer respaldos", + "Advanced monitoring" : "Monitoreo avanzado", + "Performance tuning" : "Optimización de rendimiento", + "Improving the config.php" : "Mejorando la config.php", + "Check the security of your Nextcloud over our security scan" : "Verifique la seguridad de su Nextcloud con nuestro escaneo de seguridad", + "Hardening and security guidance" : "Consejos de reforzamiento y seguridad", + "Developer documentation" : "Documentación del desarrollador", + "by %s" : "por %s", + "%s-licensed" : "%s-licensed", + "Documentation:" : "Documentación:", + "User documentation" : "Documentación del usuario", + "Admin documentation" : "Documentación del administrador", + "Visit website" : "Visite el sitio web", + "Report a bug" : "Reporte un tema", + "Show description …" : "Mostrar descripción ...", + "Hide description …" : "Ocultar descripción ...", + "This app has an update available." : "Esta aplicación tiene una actualización disponible.", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión mÃnima de Nextcloud asignada. Esto será un error en el futuro.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Esta aplicación no cuenta con una versión máxima de Nextcloud asignada. Esto será un error en el futuro.", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Esta aplicación no puede ser instalada porque las siguientes dependencias no están satisfechas:", + "Enable only for specific groups" : "Habilitar sólo para grupos especÃficos", + "Uninstall app" : "Desinstalar la aplicación", + "SSL Root Certificates" : "Certificado SSL RaÃz", + "Common Name" : "Nombre común", + "Valid until" : "Válido hasta", + "Issued By" : "Levantado Por", + "Valid until %s" : "Válido hasta %s", + "Import root certificate" : "Importar certificado raÃz", + "Hey there,<br><br>just letting you know that you now have a %s account.<br><br>Your username: <strong>%s</strong><br>Access it: <strong><a href=\"%s\">%s</a></strong><br><br>" : "Hola,<br><br> sólo queremos informarle que ahora usted tiene una cuenta %s.<br><br> Su nombre de usuario es: <strong>%s</strong> <br>Ingrese a ella: <strong><a href=\"%s\">%s</a></strong><br><br>", "Cheers!" : "¡Saludos!", + "Hey there,\n\njust letting you know that you now have a %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Hola,\n\nsólo queremos informarle que ahora usted tiene una cuenta %s.\n\nSu nombre de usuario es: %s\n\nIngrese a ella: %s\n", + "Administrator documentation" : "Documentación de adminsitrador", + "Online documentation" : "Documentación en lÃnea", "Forum" : "Foro", + "Getting help" : "Obtener ayuda", + "Commercial support" : "Soporte comercial", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "Usted está usando <strong>%s</strong> de <strong>%s</strong>", + "You are using <strong>%s</strong> of <strong>%s</strong> (<strong>%s %%</strong>)" : "Usted está usando <strong>%s</strong> de <strong>%s</strong> (<strong> %s %%</strong>)", "Profile picture" : "Foto de perfil", "Upload new" : "Subir otra", - "Remove image" : "Borrar imagen", + "Select from Files" : "Seleccionar desde Archivos", + "Remove image" : "Eliminar imagen", + "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", + "Picture provided by original account" : "Imagen proporcionadoa por la cuenta original ", "Cancel" : "Cancelar", + "Choose as profile picture" : "Seleccionar como foto del perfil", + "Full name" : "Nombre completo", + "No display name set" : "No se ha establecido el nombre a desplegar", "Email" : "Correo electrónico", - "Your email address" : "Su dirección de correo", + "Your email address" : "Su dirección de correo electrónico", + "No email address set" : "No se ha establecido la dirección de correo electrónico", + "For password reset and notifications" : "Para reestablecer contraseña y notificaciones", + "Phone number" : "Número de teléfono", + "Your phone number" : "Su número telefónico", + "Address" : "Dirección", + "Your postal address" : "Su dirección postal", + "Website" : "Sitio web", + "Your website" : "Su sitio web", + "Twitter" : "Twitter", + "You are member of the following groups:" : "Usted es un miembro de los siguientes grupos:", "Password" : "Contraseña", "Current password" : "Contraseña actual", "New password" : "Nueva contraseña", "Change password" : "Cambiar contraseña", "Language" : "Idioma", - "Help translate" : "Ayúdanos a traducir", + "Help translate" : "Ayude a traducir", "Get the apps to sync your files" : "Obtener las aplicaciones para sincronizar sus archivos", + "Desktop client" : "Cliente de escritorio", + "Android app" : "Aplicación android", + "iOS app" : "Aplicación iOS", + "If you want to support the project {contributeopen}join development{linkclose} or {contributeopen}spread the word{linkclose}!" : "¡Si desea apoyar al proyecto {contributeopen}júnase al desarrollo{linkclose} o {contributeopen} pase la vozd{linkclose}!", "Show First Run Wizard again" : "Mostrar nuevamente el Asistente de ejecución inicial", + "Web, desktop and mobile clients currently logged in to your account." : "Clientes web, de escritorio y móbiles han iniciado sesión en su cuenta. ", + "Device" : "Dispositivo", + "Last activity" : "Última actividad", + "Passcodes that give an app or device permissions to access your account." : "Los códigos de seguridad que le dan permisos a la aplicación o dispositivo para accesar a su cuenta. ", "Name" : "Nombre", + "App name" : "Nombre de la aplicación", + "Create new app password" : "Crear una nueva contraseña de aplicación", + "Use the credentials below to configure your app or device." : "Use las siguientes credenciales para configurar su aplicación o dispositivo. ", + "For security reasons this password will only be shown once." : "Por razones de seguridad esta contraseña sólo se mostrará una vez. ", "Username" : "Nombre de usuario", + "Done" : "Terminado", + "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Desarrollado por la {communityopen}comunidad Nextcloud {linkclose}, el {githubopen}código fuente {linkclose} está licenciado bajo {licenseopen}AGPL{linkclose}.", + "Follow us on Google Plus!" : "¡SÃganos en Google Plus!", + "Subscribe to our twitter channel!" : "¡SuscrÃbase a nuestro canal de twitter!", + "Subscribe to our news feed!" : "¡Suscribase a nuestra fuente de noticias!", + "Subscribe to our newsletter!" : "¡Suscribase a nuestro boletÃn!", + "Settings" : "Ajustes", + "Show storage location" : "Mostrar la ubicación del almacenamiento", + "Show email address" : "Mostrar dirección de correo electrónico", + "Send email to new user" : "Enviar un correo electrónico al usuario nuevo", + "E-Mail" : "Correo electrónico", "Create" : "Crear", - "Admin Recovery Password" : "Recuperación de la contraseña de administración", + "Admin Recovery Password" : "Recuperación de la contraseña del administración", "Enter the recovery password in order to recover the users files during password change" : "Introduzca la contraseña de recuperación a fin de recuperar los archivos de los usuarios durante el cambio de contraseña.", - "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Por favor indique la cúota de almacenamiento (ej: \"512 MB\" o \"12 GB\")", + "Group name" : "Nombre del grupo", + "Everyone" : "Todos", + "Admins" : "Administradores", + "Default quota" : "Cuota predeterminada", + "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Favor de indicar la cuota de almacenamiento (ejem: \"512 MB\" ó \"12 GB\")", "Other" : "Otro", + "Group admin for" : "Administrador del grupo para", + "Quota" : "Cuota", + "Storage location" : "Úbicación del almacenamiento", + "Last login" : "Último inicio de sesión", "change full name" : "cambiar el nombre completo", "set new password" : "establecer nueva contraseña", + "change email address" : "cambiar dirección de correo electrónico", "Default" : "Predeterminado", - "Please provide an admin recovery password, otherwise all user data will be lost" : "Por favor facilite una contraseña de recuperación de administrador, sino podrÃan perderse todos los datos de usuario", + "Please provide an admin recovery password, otherwise all user data will be lost" : "Favor de proporcionar una contraseña de recuperación del administrador, de lo contrario se perderán todos los datos de usuario", "Admins can't remove themself from the admin group" : "Los administradores no se pueden eliminar a ellos mismos del grupo de administrador", - "Unable to add user to group %s" : "No se pudo añadir el usuario al grupo %s", - "Unable to remove user from group %s" : "No se pudo eliminar al usuario del grupo %s" + "Unable to add user to group %s" : "No fue posible agregar el usuario al grupo %s", + "Unable to remove user from group %s" : "No fue posible eliminar el usuario del grupo %s", + "For password recovery and notifications" : "Para recuperación de contraseña y notificaciones", + "Show last log in" : "Mostrar el último inicio de sesión" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/et_EE.js b/settings/l10n/et_EE.js index 1ad3ca4f190..2e766d032ff 100644 --- a/settings/l10n/et_EE.js +++ b/settings/l10n/et_EE.js @@ -176,9 +176,8 @@ OC.L10N.register( "Username" : "Kasutajanimi", "Done" : "Valmis", "Show storage location" : "Näita salvestusruumi asukohta", - "Show last log in" : "Viimane sisselogimine", - "Send email to new user" : "Saada uuele kasutajale e-kiri", "Show email address" : "Näita e-posti aadressi", + "Send email to new user" : "Saada uuele kasutajale e-kiri", "E-Mail" : "E-post", "Create" : "Lisa", "Admin Recovery Password" : "Admini parooli taastamine", @@ -195,6 +194,7 @@ OC.L10N.register( "Please provide an admin recovery password, otherwise all user data will be lost" : "Palun sisesta administraatori taasteparool, muidu kaotad kõik kasutajate andmed", "Admins can't remove themself from the admin group" : "Administraatorid ei saa ise end admin grupist eemaldada", "Unable to add user to group %s" : "Kasutajat ei saa lisada gruppi %s", - "Unable to remove user from group %s" : "Kasutajat ei saa eemaldada grupist %s" + "Unable to remove user from group %s" : "Kasutajat ei saa eemaldada grupist %s", + "Show last log in" : "Viimane sisselogimine" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/et_EE.json b/settings/l10n/et_EE.json index 5518c3e555a..2636e4d868e 100644 --- a/settings/l10n/et_EE.json +++ b/settings/l10n/et_EE.json @@ -174,9 +174,8 @@ "Username" : "Kasutajanimi", "Done" : "Valmis", "Show storage location" : "Näita salvestusruumi asukohta", - "Show last log in" : "Viimane sisselogimine", - "Send email to new user" : "Saada uuele kasutajale e-kiri", "Show email address" : "Näita e-posti aadressi", + "Send email to new user" : "Saada uuele kasutajale e-kiri", "E-Mail" : "E-post", "Create" : "Lisa", "Admin Recovery Password" : "Admini parooli taastamine", @@ -193,6 +192,7 @@ "Please provide an admin recovery password, otherwise all user data will be lost" : "Palun sisesta administraatori taasteparool, muidu kaotad kõik kasutajate andmed", "Admins can't remove themself from the admin group" : "Administraatorid ei saa ise end admin grupist eemaldada", "Unable to add user to group %s" : "Kasutajat ei saa lisada gruppi %s", - "Unable to remove user from group %s" : "Kasutajat ei saa eemaldada grupist %s" + "Unable to remove user from group %s" : "Kasutajat ei saa eemaldada grupist %s", + "Show last log in" : "Viimane sisselogimine" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/eu.js b/settings/l10n/eu.js index ae57bf92c38..4238bc0e1d4 100644 --- a/settings/l10n/eu.js +++ b/settings/l10n/eu.js @@ -292,10 +292,9 @@ OC.L10N.register( "Username" : "Erabiltzaile izena", "Done" : "Egina", "Show storage location" : "Erakutsi biltegiaren kokapena", - "Show last log in" : "Erakutsi azkeneko saio hasiera", "Show user backend" : "Bistaratu erabiltzaile motorra", - "Send email to new user" : "Bidali eposta erabiltzaile berriari", "Show email address" : "Bistaratu eposta helbidea", + "Send email to new user" : "Bidali eposta erabiltzaile berriari", "E-Mail" : "E-posta", "Create" : "Sortu", "Admin Recovery Password" : "Administratzailearen pasahitza berreskuratzea", @@ -318,6 +317,7 @@ OC.L10N.register( "Please provide an admin recovery password, otherwise all user data will be lost" : "Mesedez eman berreskuratzeko administrazio pasahitza, bestela erabiltzaile datu guztiak galduko dira", "Admins can't remove themself from the admin group" : "Kudeatzaileak ezin du bere burua kendu kudeatzaile taldetik", "Unable to add user to group %s" : "Ezin izan da erabiltzailea %s taldera gehitu", - "Unable to remove user from group %s" : "Ezin izan da erabiltzailea %s taldetik ezabatu" + "Unable to remove user from group %s" : "Ezin izan da erabiltzailea %s taldetik ezabatu", + "Show last log in" : "Erakutsi azkeneko saio hasiera" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/eu.json b/settings/l10n/eu.json index 084f48085eb..192ffa0c7b5 100644 --- a/settings/l10n/eu.json +++ b/settings/l10n/eu.json @@ -290,10 +290,9 @@ "Username" : "Erabiltzaile izena", "Done" : "Egina", "Show storage location" : "Erakutsi biltegiaren kokapena", - "Show last log in" : "Erakutsi azkeneko saio hasiera", "Show user backend" : "Bistaratu erabiltzaile motorra", - "Send email to new user" : "Bidali eposta erabiltzaile berriari", "Show email address" : "Bistaratu eposta helbidea", + "Send email to new user" : "Bidali eposta erabiltzaile berriari", "E-Mail" : "E-posta", "Create" : "Sortu", "Admin Recovery Password" : "Administratzailearen pasahitza berreskuratzea", @@ -316,6 +315,7 @@ "Please provide an admin recovery password, otherwise all user data will be lost" : "Mesedez eman berreskuratzeko administrazio pasahitza, bestela erabiltzaile datu guztiak galduko dira", "Admins can't remove themself from the admin group" : "Kudeatzaileak ezin du bere burua kendu kudeatzaile taldetik", "Unable to add user to group %s" : "Ezin izan da erabiltzailea %s taldera gehitu", - "Unable to remove user from group %s" : "Ezin izan da erabiltzailea %s taldetik ezabatu" + "Unable to remove user from group %s" : "Ezin izan da erabiltzailea %s taldetik ezabatu", + "Show last log in" : "Erakutsi azkeneko saio hasiera" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/fa.js b/settings/l10n/fa.js index 17290391e89..dbce9a9d484 100644 --- a/settings/l10n/fa.js +++ b/settings/l10n/fa.js @@ -168,9 +168,8 @@ OC.L10N.register( "Name" : "نام", "Username" : "نام کاربری", "Show storage location" : "نمایش Ù…ØÙ„ ذخیره‌سازی", - "Show last log in" : "نمایش اخرین ورود", - "Send email to new user" : "ارسال ایمیل به کاربر جدید", "Show email address" : "نمایش پست الکترونیکی", + "Send email to new user" : "ارسال ایمیل به کاربر جدید", "E-Mail" : "ایمیل", "Create" : "ایجاد کردن", "Admin Recovery Password" : "مدیریت بازیابی رمز عبور", @@ -187,6 +186,7 @@ OC.L10N.register( "Please provide an admin recovery password, otherwise all user data will be lost" : "Ù„Ø·ÙØ§Ù‹ یک رمز مدیریتی برای بازیابی کردن تعری٠نمایید. در غیر اینصورت اطلاعات تمامی کاربران از دست خواهند Ø±ÙØª.", "Admins can't remove themself from the admin group" : "مدیران نمی توانند خود را از گروه مدیریت ØØ°Ù کنند", "Unable to add user to group %s" : "امکان Ø§ÙØ²ÙˆØ¯Ù† کاربر به گروه %s نیست", - "Unable to remove user from group %s" : "امکان ØØ°Ù کاربر از گروه %s نیست" + "Unable to remove user from group %s" : "امکان ØØ°Ù کاربر از گروه %s نیست", + "Show last log in" : "نمایش اخرین ورود" }, "nplurals=1; plural=0;"); diff --git a/settings/l10n/fa.json b/settings/l10n/fa.json index 73e03ade4b3..622b934337a 100644 --- a/settings/l10n/fa.json +++ b/settings/l10n/fa.json @@ -166,9 +166,8 @@ "Name" : "نام", "Username" : "نام کاربری", "Show storage location" : "نمایش Ù…ØÙ„ ذخیره‌سازی", - "Show last log in" : "نمایش اخرین ورود", - "Send email to new user" : "ارسال ایمیل به کاربر جدید", "Show email address" : "نمایش پست الکترونیکی", + "Send email to new user" : "ارسال ایمیل به کاربر جدید", "E-Mail" : "ایمیل", "Create" : "ایجاد کردن", "Admin Recovery Password" : "مدیریت بازیابی رمز عبور", @@ -185,6 +184,7 @@ "Please provide an admin recovery password, otherwise all user data will be lost" : "Ù„Ø·ÙØ§Ù‹ یک رمز مدیریتی برای بازیابی کردن تعری٠نمایید. در غیر اینصورت اطلاعات تمامی کاربران از دست خواهند Ø±ÙØª.", "Admins can't remove themself from the admin group" : "مدیران نمی توانند خود را از گروه مدیریت ØØ°Ù کنند", "Unable to add user to group %s" : "امکان Ø§ÙØ²ÙˆØ¯Ù† کاربر به گروه %s نیست", - "Unable to remove user from group %s" : "امکان ØØ°Ù کاربر از گروه %s نیست" + "Unable to remove user from group %s" : "امکان ØØ°Ù کاربر از گروه %s نیست", + "Show last log in" : "نمایش اخرین ورود" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/settings/l10n/fi.js b/settings/l10n/fi.js index b844c4d1ed2..07d718e8728 100644 --- a/settings/l10n/fi.js +++ b/settings/l10n/fi.js @@ -8,6 +8,7 @@ OC.L10N.register( "No user supplied" : "Käyttäjää ei määritetty", "Unable to change password" : "Salasanan vaihto ei onnistunut", "Authentication error" : "Tunnistautumisvirhe", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Anna ylläpitäjän palautussalasana; muuten kaikki käyttäjien data menetetään.", "Wrong admin recovery password. Please check the password and try again." : "Väärä ylläpitäjän salasana. Tarkista salasana ja yritä uudelleen.", "Backend doesn't support password change, but the user's encryption key was successfully updated." : "Taustaosa ei tue salasanan vaihtoa, mutta käyttäjän salausavain päivitettiin onnistuneesti.", "installing and updating apps via the app store or Federated Cloud Sharing" : "Sovellusten asennus tai päivitys sovelluskaupasta tai federoidusta pilvijaosta", @@ -125,6 +126,7 @@ OC.L10N.register( "Unable to add user to group {group}" : "Käyttäjän lisääminen ryhmään {group} ei onnistunut", "Unable to remove user from group {group}" : "Käyttäjän poistaminen ryhmästä {group} ei onnistunut", "Add group" : "Lisää ryhmä", + "no group" : "ei ryhmää", "Password successfully changed" : "Salasana vaihdettiin onnistuneesti", "Changing the password will result in data loss, because data recovery is not available for this user" : "Salasanan muuttaminen johtaa tietojen häviämiseen, koska tietojen palautusta ei ole käytettävissä tämän käyttäjän kohdalla", "Could not change the users email" : "Käyttäjän sähköpostiosoitteen vaihtaminen epäonnistui", @@ -196,6 +198,7 @@ OC.L10N.register( "Allow apps to use the Share API" : "Salli sovellusten käyttää jakamisen ohjelmointirajapintaa", "Allow users to share via link" : "Salli käyttäjien jakaa linkkien kautta", "Allow public uploads" : "Salli julkiset lähetykset", + "Always ask for a password" : "Kysy aina salasanaa", "Enforce password protection" : "Pakota salasanasuojaus", "Set default expiration date" : "Aseta oletusvanhenemispäivä", "Expire after " : "Vanhenna", @@ -216,7 +219,7 @@ OC.L10N.register( "Hardening and security guidance" : "Turvaamis- ja tietoturvaopas", "Developer documentation" : "Kehittäjädokumentaatio", "by %s" : "tekijä %s", - "%s-licensed" : "%s -lisensoitu", + "%s-licensed" : "%s-lisensoitu", "Documentation:" : "Ohjeistus:", "User documentation" : "Käyttäjädokumentaatio", "Admin documentation" : "Ylläpitäjän ohjeistus", @@ -240,8 +243,10 @@ OC.L10N.register( "Administrator documentation" : "Ylläpidon dokumentaatio", "Online documentation" : "Verkkodokumentaatio", "Forum" : "Keskustelupalsta", + "Getting help" : "Apua", "Commercial support" : "Kaupallinen tuki", "You are using <strong>%s</strong> of <strong>%s</strong>" : "Käytössäsi on <strong>%s</strong>/<strong>%s</strong>", + "You are using <strong>%s</strong> of <strong>%s</strong> (<strong>%s %%</strong>)" : "Käytössäsi on <strong>%s</strong>/<strong>%s</strong> (<strong>%s %%</strong>)", "Profile picture" : "Profiilikuva", "Upload new" : "Lähetä uusi", "Select from Files" : "Valitse tiedostosovelluksesta", @@ -294,12 +299,11 @@ OC.L10N.register( "Subscribe to our twitter channel!" : "Seuraa Twitter-tiliämme!", "Subscribe to our news feed!" : "Tilaa uutissyötteemme!", "Subscribe to our newsletter!" : "Tilaa uutiskirjeemme!", + "Settings" : "Asetukset", "Show storage location" : "Näytä tallennustilan sijainti", - "Show last log in" : "Näytä viimeisin sisäänkirjautuminen", "Show user backend" : "Näytä käyttäjätaustaosa", - "Send email to new user" : "Lähetä sähköpostia uudelle käyttäjälle", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Kun uuden käyttäjän salasana jätetään tyhjäksi, hänelle lähetetään aktivointiviesti, joka sisältää linkin, jolla hän voi asettaa salasanansa", "Show email address" : "Näytä sähköpostiosoite", + "Send email to new user" : "Lähetä sähköpostia uudelle käyttäjälle", "E-Mail" : "Sähköposti", "Create" : "Luo", "Admin Recovery Password" : "Ylläpitäjän palautussalasana", @@ -323,6 +327,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "Ylläpitäjät eivät poistaa omia tunnuksiaan ylläpitäjien ryhmästä", "Unable to add user to group %s" : "Käyttäjän tai ryhmän %s lisääminen ei onnistu", "Unable to remove user from group %s" : "Käyttäjän poistaminen ryhmästä %s ei onnistu", - "For password recovery and notifications" : "Salasanan nollausta ja ilmoituksia varten" + "For password recovery and notifications" : "Salasanan nollausta ja ilmoituksia varten", + "Show last log in" : "Näytä viimeisin sisäänkirjautuminen" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/fi.json b/settings/l10n/fi.json index 5ec1618f2f1..051aa7aed1d 100644 --- a/settings/l10n/fi.json +++ b/settings/l10n/fi.json @@ -6,6 +6,7 @@ "No user supplied" : "Käyttäjää ei määritetty", "Unable to change password" : "Salasanan vaihto ei onnistunut", "Authentication error" : "Tunnistautumisvirhe", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Anna ylläpitäjän palautussalasana; muuten kaikki käyttäjien data menetetään.", "Wrong admin recovery password. Please check the password and try again." : "Väärä ylläpitäjän salasana. Tarkista salasana ja yritä uudelleen.", "Backend doesn't support password change, but the user's encryption key was successfully updated." : "Taustaosa ei tue salasanan vaihtoa, mutta käyttäjän salausavain päivitettiin onnistuneesti.", "installing and updating apps via the app store or Federated Cloud Sharing" : "Sovellusten asennus tai päivitys sovelluskaupasta tai federoidusta pilvijaosta", @@ -123,6 +124,7 @@ "Unable to add user to group {group}" : "Käyttäjän lisääminen ryhmään {group} ei onnistunut", "Unable to remove user from group {group}" : "Käyttäjän poistaminen ryhmästä {group} ei onnistunut", "Add group" : "Lisää ryhmä", + "no group" : "ei ryhmää", "Password successfully changed" : "Salasana vaihdettiin onnistuneesti", "Changing the password will result in data loss, because data recovery is not available for this user" : "Salasanan muuttaminen johtaa tietojen häviämiseen, koska tietojen palautusta ei ole käytettävissä tämän käyttäjän kohdalla", "Could not change the users email" : "Käyttäjän sähköpostiosoitteen vaihtaminen epäonnistui", @@ -194,6 +196,7 @@ "Allow apps to use the Share API" : "Salli sovellusten käyttää jakamisen ohjelmointirajapintaa", "Allow users to share via link" : "Salli käyttäjien jakaa linkkien kautta", "Allow public uploads" : "Salli julkiset lähetykset", + "Always ask for a password" : "Kysy aina salasanaa", "Enforce password protection" : "Pakota salasanasuojaus", "Set default expiration date" : "Aseta oletusvanhenemispäivä", "Expire after " : "Vanhenna", @@ -214,7 +217,7 @@ "Hardening and security guidance" : "Turvaamis- ja tietoturvaopas", "Developer documentation" : "Kehittäjädokumentaatio", "by %s" : "tekijä %s", - "%s-licensed" : "%s -lisensoitu", + "%s-licensed" : "%s-lisensoitu", "Documentation:" : "Ohjeistus:", "User documentation" : "Käyttäjädokumentaatio", "Admin documentation" : "Ylläpitäjän ohjeistus", @@ -238,8 +241,10 @@ "Administrator documentation" : "Ylläpidon dokumentaatio", "Online documentation" : "Verkkodokumentaatio", "Forum" : "Keskustelupalsta", + "Getting help" : "Apua", "Commercial support" : "Kaupallinen tuki", "You are using <strong>%s</strong> of <strong>%s</strong>" : "Käytössäsi on <strong>%s</strong>/<strong>%s</strong>", + "You are using <strong>%s</strong> of <strong>%s</strong> (<strong>%s %%</strong>)" : "Käytössäsi on <strong>%s</strong>/<strong>%s</strong> (<strong>%s %%</strong>)", "Profile picture" : "Profiilikuva", "Upload new" : "Lähetä uusi", "Select from Files" : "Valitse tiedostosovelluksesta", @@ -292,12 +297,11 @@ "Subscribe to our twitter channel!" : "Seuraa Twitter-tiliämme!", "Subscribe to our news feed!" : "Tilaa uutissyötteemme!", "Subscribe to our newsletter!" : "Tilaa uutiskirjeemme!", + "Settings" : "Asetukset", "Show storage location" : "Näytä tallennustilan sijainti", - "Show last log in" : "Näytä viimeisin sisäänkirjautuminen", "Show user backend" : "Näytä käyttäjätaustaosa", - "Send email to new user" : "Lähetä sähköpostia uudelle käyttäjälle", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Kun uuden käyttäjän salasana jätetään tyhjäksi, hänelle lähetetään aktivointiviesti, joka sisältää linkin, jolla hän voi asettaa salasanansa", "Show email address" : "Näytä sähköpostiosoite", + "Send email to new user" : "Lähetä sähköpostia uudelle käyttäjälle", "E-Mail" : "Sähköposti", "Create" : "Luo", "Admin Recovery Password" : "Ylläpitäjän palautussalasana", @@ -321,6 +325,7 @@ "Admins can't remove themself from the admin group" : "Ylläpitäjät eivät poistaa omia tunnuksiaan ylläpitäjien ryhmästä", "Unable to add user to group %s" : "Käyttäjän tai ryhmän %s lisääminen ei onnistu", "Unable to remove user from group %s" : "Käyttäjän poistaminen ryhmästä %s ei onnistu", - "For password recovery and notifications" : "Salasanan nollausta ja ilmoituksia varten" + "For password recovery and notifications" : "Salasanan nollausta ja ilmoituksia varten", + "Show last log in" : "Näytä viimeisin sisäänkirjautuminen" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/fr.js b/settings/l10n/fr.js index 4c755041ea1..fb97f5a4baa 100644 --- a/settings/l10n/fr.js +++ b/settings/l10n/fr.js @@ -213,6 +213,7 @@ OC.L10N.register( "Allow apps to use the Share API" : "Autoriser les applications à utiliser l'API de partage", "Allow users to share via link" : "Autoriser les utilisateurs à partager par lien", "Allow public uploads" : "Autoriser les téléversements publics", + "Always ask for a password" : "Toujours demander un mot de passe", "Enforce password protection" : "Imposer la protection par mot de passe", "Set default expiration date" : "Indiquer une date d'expiration par défaut", "Expire after " : "Expiration après ", @@ -323,11 +324,9 @@ OC.L10N.register( "Subscribe to our newsletter!" : "Abonnez-vous à notre newsletter!", "Settings" : "Paramètres", "Show storage location" : "Afficher l'emplacement du stockage", - "Show last log in" : "Montrer la dernière connexion", "Show user backend" : "Montrer la source de l'identifiant", - "Send email to new user" : "Envoyer un e-mail aux utilisateurs créés", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Quand le mot de passe du nouvel utilisateur est laissé vide, un mail d'activation avec un lien pour configurer le mot de passe est envoyé à l'utilisateur", "Show email address" : "Afficher l'adresse e-mail", + "Send email to new user" : "Envoyer un e-mail aux utilisateurs créés", "E-Mail" : "E-Mail", "Create" : "Créer", "Admin Recovery Password" : "Mot de passe Administrateur de récupération", @@ -351,6 +350,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "Les administrateurs ne peuvent pas se retirer eux-mêmes du groupe admin", "Unable to add user to group %s" : "Impossible d'ajouter l'utilisateur au groupe %s", "Unable to remove user from group %s" : "Impossible de supprimer l'utilisateur du groupe %s", - "For password recovery and notifications" : "Pour la récupération de mot de passe et les notifications" + "For password recovery and notifications" : "Pour la récupération de mot de passe et les notifications", + "Show last log in" : "Montrer la dernière connexion" }, "nplurals=2; plural=(n > 1);"); diff --git a/settings/l10n/fr.json b/settings/l10n/fr.json index 81b913ad3e4..34777eacb7b 100644 --- a/settings/l10n/fr.json +++ b/settings/l10n/fr.json @@ -211,6 +211,7 @@ "Allow apps to use the Share API" : "Autoriser les applications à utiliser l'API de partage", "Allow users to share via link" : "Autoriser les utilisateurs à partager par lien", "Allow public uploads" : "Autoriser les téléversements publics", + "Always ask for a password" : "Toujours demander un mot de passe", "Enforce password protection" : "Imposer la protection par mot de passe", "Set default expiration date" : "Indiquer une date d'expiration par défaut", "Expire after " : "Expiration après ", @@ -321,11 +322,9 @@ "Subscribe to our newsletter!" : "Abonnez-vous à notre newsletter!", "Settings" : "Paramètres", "Show storage location" : "Afficher l'emplacement du stockage", - "Show last log in" : "Montrer la dernière connexion", "Show user backend" : "Montrer la source de l'identifiant", - "Send email to new user" : "Envoyer un e-mail aux utilisateurs créés", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Quand le mot de passe du nouvel utilisateur est laissé vide, un mail d'activation avec un lien pour configurer le mot de passe est envoyé à l'utilisateur", "Show email address" : "Afficher l'adresse e-mail", + "Send email to new user" : "Envoyer un e-mail aux utilisateurs créés", "E-Mail" : "E-Mail", "Create" : "Créer", "Admin Recovery Password" : "Mot de passe Administrateur de récupération", @@ -349,6 +348,7 @@ "Admins can't remove themself from the admin group" : "Les administrateurs ne peuvent pas se retirer eux-mêmes du groupe admin", "Unable to add user to group %s" : "Impossible d'ajouter l'utilisateur au groupe %s", "Unable to remove user from group %s" : "Impossible de supprimer l'utilisateur du groupe %s", - "For password recovery and notifications" : "Pour la récupération de mot de passe et les notifications" + "For password recovery and notifications" : "Pour la récupération de mot de passe et les notifications", + "Show last log in" : "Montrer la dernière connexion" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/settings/l10n/gl.js b/settings/l10n/gl.js index b453f860428..585a2b9a064 100644 --- a/settings/l10n/gl.js +++ b/settings/l10n/gl.js @@ -193,10 +193,9 @@ OC.L10N.register( "Username" : "Nome de usuario", "Done" : "Feito", "Show storage location" : "Amosar a localización do almacenamento", - "Show last log in" : "Amosar a última conexión", "Show user backend" : "Amosar a infraestrutura do usuario", - "Send email to new user" : "Enviar correo ao novo usuario", "Show email address" : "Amosar o enderezo de correo", + "Send email to new user" : "Enviar correo ao novo usuario", "E-Mail" : "Correo-e", "Create" : "Crear", "Admin Recovery Password" : "Contrasinal de recuperación do administrador", @@ -213,6 +212,7 @@ OC.L10N.register( "Please provide an admin recovery password, otherwise all user data will be lost" : "Forneza un contrasinal de recuperación do administrador de recuperación, senón perderanse todos os datos do usuario", "Admins can't remove themself from the admin group" : "Os administradores non poden eliminarse a si mesmos do grupo admin", "Unable to add user to group %s" : "Non é posÃbel engadir o usuario ao grupo %s", - "Unable to remove user from group %s" : "Non é posÃbel eliminar o usuario do grupo %s" + "Unable to remove user from group %s" : "Non é posÃbel eliminar o usuario do grupo %s", + "Show last log in" : "Amosar a última conexión" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/gl.json b/settings/l10n/gl.json index cbcd194fc8c..b82bb94e376 100644 --- a/settings/l10n/gl.json +++ b/settings/l10n/gl.json @@ -191,10 +191,9 @@ "Username" : "Nome de usuario", "Done" : "Feito", "Show storage location" : "Amosar a localización do almacenamento", - "Show last log in" : "Amosar a última conexión", "Show user backend" : "Amosar a infraestrutura do usuario", - "Send email to new user" : "Enviar correo ao novo usuario", "Show email address" : "Amosar o enderezo de correo", + "Send email to new user" : "Enviar correo ao novo usuario", "E-Mail" : "Correo-e", "Create" : "Crear", "Admin Recovery Password" : "Contrasinal de recuperación do administrador", @@ -211,6 +210,7 @@ "Please provide an admin recovery password, otherwise all user data will be lost" : "Forneza un contrasinal de recuperación do administrador de recuperación, senón perderanse todos os datos do usuario", "Admins can't remove themself from the admin group" : "Os administradores non poden eliminarse a si mesmos do grupo admin", "Unable to add user to group %s" : "Non é posÃbel engadir o usuario ao grupo %s", - "Unable to remove user from group %s" : "Non é posÃbel eliminar o usuario do grupo %s" + "Unable to remove user from group %s" : "Non é posÃbel eliminar o usuario do grupo %s", + "Show last log in" : "Amosar a última conexión" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/he.js b/settings/l10n/he.js index c0bb4448a7c..fdbdf5204e1 100644 --- a/settings/l10n/he.js +++ b/settings/l10n/he.js @@ -234,10 +234,9 @@ OC.L10N.register( "Username" : "×©× ×ž×©×ª×ž×©", "Done" : "הסתיי×", "Show storage location" : "הצגת ×ž×™×§×•× ×חסון", - "Show last log in" : "הצגת ×›× ×™×¡×” ××—×¨×•× ×”", "Show user backend" : "הצגת צד ×חורי למשתמש", - "Send email to new user" : "שליחת דו×ר ××œ×§×˜×¨×•× ×™ למשתמש חדש", "Show email address" : "הצגת כתובת דו×ר ××œ×§×˜×¨×•× ×™", + "Send email to new user" : "שליחת דו×ר ××œ×§×˜×¨×•× ×™ למשתמש חדש", "E-Mail" : "דו×ר ××œ×§×˜×¨×•× ×™", "Create" : "יצירה", "Admin Recovery Password" : "סיסמת השחזור של ×”×ž× ×”×œ", @@ -255,6 +254,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "×ž× ×”×œ×™× ×œ× ×™×›×•×œ×™× ×œ×”×¡×™×¨ ×ת ×¢×¦×ž× ×ž×§×‘×•×¦×ª ×”×ž× ×”×œ×™×", "Unable to add user to group %s" : "×œ× × ×™×ª×Ÿ להוסיף משתמש לקבוצה %s", "Unable to remove user from group %s" : "×œ× × ×™×ª×Ÿ להסיר משתמש מהקבוצה %s", - "For password recovery and notifications" : "לשחזור ×¡×™×¡×ž× ×•×”×•×“×¢×•×ª" + "For password recovery and notifications" : "לשחזור ×¡×™×¡×ž× ×•×”×•×“×¢×•×ª", + "Show last log in" : "הצגת ×›× ×™×¡×” ××—×¨×•× ×”" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/he.json b/settings/l10n/he.json index 0c8b0c329f9..12ce36f90a1 100644 --- a/settings/l10n/he.json +++ b/settings/l10n/he.json @@ -232,10 +232,9 @@ "Username" : "×©× ×ž×©×ª×ž×©", "Done" : "הסתיי×", "Show storage location" : "הצגת ×ž×™×§×•× ×חסון", - "Show last log in" : "הצגת ×›× ×™×¡×” ××—×¨×•× ×”", "Show user backend" : "הצגת צד ×חורי למשתמש", - "Send email to new user" : "שליחת דו×ר ××œ×§×˜×¨×•× ×™ למשתמש חדש", "Show email address" : "הצגת כתובת דו×ר ××œ×§×˜×¨×•× ×™", + "Send email to new user" : "שליחת דו×ר ××œ×§×˜×¨×•× ×™ למשתמש חדש", "E-Mail" : "דו×ר ××œ×§×˜×¨×•× ×™", "Create" : "יצירה", "Admin Recovery Password" : "סיסמת השחזור של ×”×ž× ×”×œ", @@ -253,6 +252,7 @@ "Admins can't remove themself from the admin group" : "×ž× ×”×œ×™× ×œ× ×™×›×•×œ×™× ×œ×”×¡×™×¨ ×ת ×¢×¦×ž× ×ž×§×‘×•×¦×ª ×”×ž× ×”×œ×™×", "Unable to add user to group %s" : "×œ× × ×™×ª×Ÿ להוסיף משתמש לקבוצה %s", "Unable to remove user from group %s" : "×œ× × ×™×ª×Ÿ להסיר משתמש מהקבוצה %s", - "For password recovery and notifications" : "לשחזור ×¡×™×¡×ž× ×•×”×•×“×¢×•×ª" + "For password recovery and notifications" : "לשחזור ×¡×™×¡×ž× ×•×”×•×“×¢×•×ª", + "Show last log in" : "הצגת ×›× ×™×¡×” ××—×¨×•× ×”" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/hr.js b/settings/l10n/hr.js index 6870963aaba..15c548573a1 100644 --- a/settings/l10n/hr.js +++ b/settings/l10n/hr.js @@ -116,7 +116,6 @@ OC.L10N.register( "Name" : "Naziv", "Username" : "KorisniÄko ime", "Show storage location" : "Prikaži mjesto pohrane", - "Show last log in" : "Prikaži zadnje spajanje", "Create" : "Kreirajte", "Admin Recovery Password" : "Admin lozinka za oporavak", "Enter the recovery password in order to recover the users files during password change" : "Unesite lozinku za oporavak da biste oporavili korisniÄke datoteke tijekom promjene lozinke", @@ -131,6 +130,7 @@ OC.L10N.register( "Please provide an admin recovery password, otherwise all user data will be lost" : "Molimo navedite admin lozinku za oporavak, u protivnom će svi korisniÄki podaci biti izgubljeni.", "Admins can't remove themself from the admin group" : "Administratori ne mogu sami sebe ukloniti iz admin grupe", "Unable to add user to group %s" : "Dodavanje korisnika grupi %s nije moguće", - "Unable to remove user from group %s" : "Uklanjanje korisnika iz grupe %s nije moguće" + "Unable to remove user from group %s" : "Uklanjanje korisnika iz grupe %s nije moguće", + "Show last log in" : "Prikaži zadnje spajanje" }, "nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"); diff --git a/settings/l10n/hr.json b/settings/l10n/hr.json index 2316ab335b8..3c4017cd039 100644 --- a/settings/l10n/hr.json +++ b/settings/l10n/hr.json @@ -114,7 +114,6 @@ "Name" : "Naziv", "Username" : "KorisniÄko ime", "Show storage location" : "Prikaži mjesto pohrane", - "Show last log in" : "Prikaži zadnje spajanje", "Create" : "Kreirajte", "Admin Recovery Password" : "Admin lozinka za oporavak", "Enter the recovery password in order to recover the users files during password change" : "Unesite lozinku za oporavak da biste oporavili korisniÄke datoteke tijekom promjene lozinke", @@ -129,6 +128,7 @@ "Please provide an admin recovery password, otherwise all user data will be lost" : "Molimo navedite admin lozinku za oporavak, u protivnom će svi korisniÄki podaci biti izgubljeni.", "Admins can't remove themself from the admin group" : "Administratori ne mogu sami sebe ukloniti iz admin grupe", "Unable to add user to group %s" : "Dodavanje korisnika grupi %s nije moguće", - "Unable to remove user from group %s" : "Uklanjanje korisnika iz grupe %s nije moguće" + "Unable to remove user from group %s" : "Uklanjanje korisnika iz grupe %s nije moguće", + "Show last log in" : "Prikaži zadnje spajanje" },"pluralForm" :"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;" }
\ No newline at end of file diff --git a/settings/l10n/hu.js b/settings/l10n/hu.js index 32a4d6de441..60ea2412c37 100644 --- a/settings/l10n/hu.js +++ b/settings/l10n/hu.js @@ -8,6 +8,7 @@ OC.L10N.register( "No user supplied" : "Nincs megadva felhasználó", "Unable to change password" : "Nem sikerült megváltoztatni a jelszót", "Authentication error" : "AzonosÃtási hiba", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Kérjük, adjon meg egy adminisztrátori visszaállÃtó jelszót; különben, az összes felhasználó adata eltűnik.", "Wrong admin recovery password. Please check the password and try again." : "Hibás admin helyreállÃtási jelszó. EllenÅ‘rizze a jelszót és próbálja újra!", "Backend doesn't support password change, but the user's encryption key was successfully updated." : "A háttér-alrendszer nem támogatja a jelszómódosÃtást, de felhasználó titkosÃtási kulcsát sikeresen frissÃtettük.", "installing and updating apps via the app store or Federated Cloud Sharing" : "alkalmazások telepÃtése és frissÃtése az alkalmazás tárból vagy Szövetséges FelhÅ‘ Megosztásból", @@ -19,6 +20,7 @@ OC.L10N.register( "Unable to add group." : "Nem lehet létrehozni a csoportot.", "Unable to delete group." : "Nem lehet törölni a csoportot.", "test email settings" : "e-mail beállÃtások ellenÅ‘rzése", + "Mail could not be sent. Check your mail server log" : "A levél nem küldhetÅ‘ el. Kérjük, ellenÅ‘rizze a levelezÅ‘rendszer naplóit!", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Hiba történt az e-mail küldésekor. Kérlek ellenÅ‘rizd a beállÃtásokat! (Hiba: %s)", "Email sent" : "Az e-mail elküldve!", "You need to set your user email before being able to send test emails." : "ElÅ‘bb meg kell adnia az e-mail cÃmét, mielÅ‘tt tesztelni tudná az e-mail küldést.", @@ -26,6 +28,7 @@ OC.L10N.register( "Invalid mail address" : "Érvénytelen e-mail cÃm", "No valid group selected" : "Nincs érvényes csoport kiválasztva", "A user with that name already exists." : "Ilyen névvel már létezik felhasználó!", + "To send a password link to the user an email address is required." : "A jelszóvisszaállÃtó levél elküldéséhez a felhasználónak egy e-mail cÃmre van szüksége.", "Unable to create user." : "Nem lehet létrehozni a felhasználót.", "Your %s account was created" : "%s fiók létrehozva", "Unable to delete user." : "Nem lehet törölni a felhasználót.", @@ -123,6 +126,9 @@ OC.L10N.register( "undo" : "visszavonás", "never" : "soha", "deleted {userName}" : "törölve: {userName}", + "No user found for <strong>{pattern}</strong>" : "Nem található erre felhasználó: <strong>{pattern}</strong>", + "Unable to add user to group {group}" : "A felhasználót nem lehet hozzáadni ehhez a csoporthoz: {group}", + "Unable to remove user from group {group}" : "Nem sikerült törölni a felhasználót ebbÅ‘l a csoportból: {group}", "Add group" : "csoport hozzáadása", "Invalid quota value \"{val}\"" : "Érvénytelen kvóta érték \"{val}\"", "no group" : "nincs csoport", @@ -207,6 +213,7 @@ OC.L10N.register( "Allow apps to use the Share API" : "LehetÅ‘vé teszi, hogy a programmodulok is használhassák a megosztást", "Allow users to share via link" : "Engedjük meg a fájlok hivatkozással történÅ‘ megosztását", "Allow public uploads" : "Nyilvános feltöltés engedélyezése", + "Always ask for a password" : "Mindig kérdezze meg a jelszót", "Enforce password protection" : "Legyen kötelezÅ‘ a linkek jelszóval való védelme", "Set default expiration date" : "Alapértelmezett lejárati idÅ‘ beállÃtása", "Expire after " : "A lejárat legyen", @@ -229,6 +236,7 @@ OC.L10N.register( "Performance tuning" : "TeljesÃtmény hangolás", "Improving the config.php" : "config.php javÃtása", "Theming" : "Témázás", + "Check the security of your Nextcloud over our security scan" : "EllenÅ‘rizze a Nextcloud biztonságát a biztonsági ellenÅ‘rzÅ‘nkkel ", "Hardening and security guidance" : "MegerÅ‘sÃtési és biztonsági útmutató", "Developer documentation" : "FejlesztÅ‘i dokumentáció", "by %s" : "készÃtÅ‘: %s", @@ -261,6 +269,7 @@ OC.L10N.register( "Getting help" : "SegÃtség kérés", "Commercial support" : "Kereskedelmi támogatás", "You are using <strong>%s</strong> of <strong>%s</strong>" : "Jelenleg használt: <strong>%s</strong>, maximálisan elérhetÅ‘: <strong>%s</strong>", + "You are using <strong>%s</strong> of <strong>%s</strong> (<strong>%s %%</strong>)" : "Jelenleg használt: <strong>%s</strong>, ebbÅ‘l: <strong>%s</strong> (<strong>%s %%</strong>)", "Profile picture" : "Profilkép", "Upload new" : "Új feltöltése", "Select from Files" : "Kiválasztás a Fájlkból", @@ -313,11 +322,11 @@ OC.L10N.register( "Subscribe to our twitter channel!" : "Iratkozz fel a Twitter csatornánkra!", "Subscribe to our news feed!" : "Iratkozz fel a hÃrfolyamunkra!", "Subscribe to our newsletter!" : "Iratkozz fel a hÃrlevelünkre!", + "Settings" : "BeállÃtások", "Show storage location" : "Háttértároló helyének mutatása", - "Show last log in" : "Utolsó bejelentkezés megjelenÃtése", "Show user backend" : "Felhasználói háttér mutatása", - "Send email to new user" : "E-mail küldése az új felhasználónak", "Show email address" : "E-mail cÃm megjelenÃtése", + "Send email to new user" : "E-mail küldése az új felhasználónak", "E-Mail" : "E-mail", "Create" : "Létrehozás", "Admin Recovery Password" : "Adminisztrátori jelszó a fájlok visszanyerésére", @@ -341,6 +350,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "Adminisztrátorok nem távolÃthatják el magukat az admin csoportból.", "Unable to add user to group %s" : "A felhasználó nem adható hozzá ehhez a csoporthoz: %s", "Unable to remove user from group %s" : "A felhasználó nem távolÃtható el ebbÅ‘l a csoportból: %s", - "For password recovery and notifications" : "Jelszó helyreállÃtáshoz és értesÃtésekhez" + "For password recovery and notifications" : "Jelszó helyreállÃtáshoz és értesÃtésekhez", + "Show last log in" : "Utolsó bejelentkezés megjelenÃtése" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/hu.json b/settings/l10n/hu.json index 0c0b8a274f6..cd77a01834c 100644 --- a/settings/l10n/hu.json +++ b/settings/l10n/hu.json @@ -6,6 +6,7 @@ "No user supplied" : "Nincs megadva felhasználó", "Unable to change password" : "Nem sikerült megváltoztatni a jelszót", "Authentication error" : "AzonosÃtási hiba", + "Please provide an admin recovery password; otherwise, all user data will be lost." : "Kérjük, adjon meg egy adminisztrátori visszaállÃtó jelszót; különben, az összes felhasználó adata eltűnik.", "Wrong admin recovery password. Please check the password and try again." : "Hibás admin helyreállÃtási jelszó. EllenÅ‘rizze a jelszót és próbálja újra!", "Backend doesn't support password change, but the user's encryption key was successfully updated." : "A háttér-alrendszer nem támogatja a jelszómódosÃtást, de felhasználó titkosÃtási kulcsát sikeresen frissÃtettük.", "installing and updating apps via the app store or Federated Cloud Sharing" : "alkalmazások telepÃtése és frissÃtése az alkalmazás tárból vagy Szövetséges FelhÅ‘ Megosztásból", @@ -17,6 +18,7 @@ "Unable to add group." : "Nem lehet létrehozni a csoportot.", "Unable to delete group." : "Nem lehet törölni a csoportot.", "test email settings" : "e-mail beállÃtások ellenÅ‘rzése", + "Mail could not be sent. Check your mail server log" : "A levél nem küldhetÅ‘ el. Kérjük, ellenÅ‘rizze a levelezÅ‘rendszer naplóit!", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Hiba történt az e-mail küldésekor. Kérlek ellenÅ‘rizd a beállÃtásokat! (Hiba: %s)", "Email sent" : "Az e-mail elküldve!", "You need to set your user email before being able to send test emails." : "ElÅ‘bb meg kell adnia az e-mail cÃmét, mielÅ‘tt tesztelni tudná az e-mail küldést.", @@ -24,6 +26,7 @@ "Invalid mail address" : "Érvénytelen e-mail cÃm", "No valid group selected" : "Nincs érvényes csoport kiválasztva", "A user with that name already exists." : "Ilyen névvel már létezik felhasználó!", + "To send a password link to the user an email address is required." : "A jelszóvisszaállÃtó levél elküldéséhez a felhasználónak egy e-mail cÃmre van szüksége.", "Unable to create user." : "Nem lehet létrehozni a felhasználót.", "Your %s account was created" : "%s fiók létrehozva", "Unable to delete user." : "Nem lehet törölni a felhasználót.", @@ -121,6 +124,9 @@ "undo" : "visszavonás", "never" : "soha", "deleted {userName}" : "törölve: {userName}", + "No user found for <strong>{pattern}</strong>" : "Nem található erre felhasználó: <strong>{pattern}</strong>", + "Unable to add user to group {group}" : "A felhasználót nem lehet hozzáadni ehhez a csoporthoz: {group}", + "Unable to remove user from group {group}" : "Nem sikerült törölni a felhasználót ebbÅ‘l a csoportból: {group}", "Add group" : "csoport hozzáadása", "Invalid quota value \"{val}\"" : "Érvénytelen kvóta érték \"{val}\"", "no group" : "nincs csoport", @@ -205,6 +211,7 @@ "Allow apps to use the Share API" : "LehetÅ‘vé teszi, hogy a programmodulok is használhassák a megosztást", "Allow users to share via link" : "Engedjük meg a fájlok hivatkozással történÅ‘ megosztását", "Allow public uploads" : "Nyilvános feltöltés engedélyezése", + "Always ask for a password" : "Mindig kérdezze meg a jelszót", "Enforce password protection" : "Legyen kötelezÅ‘ a linkek jelszóval való védelme", "Set default expiration date" : "Alapértelmezett lejárati idÅ‘ beállÃtása", "Expire after " : "A lejárat legyen", @@ -227,6 +234,7 @@ "Performance tuning" : "TeljesÃtmény hangolás", "Improving the config.php" : "config.php javÃtása", "Theming" : "Témázás", + "Check the security of your Nextcloud over our security scan" : "EllenÅ‘rizze a Nextcloud biztonságát a biztonsági ellenÅ‘rzÅ‘nkkel ", "Hardening and security guidance" : "MegerÅ‘sÃtési és biztonsági útmutató", "Developer documentation" : "FejlesztÅ‘i dokumentáció", "by %s" : "készÃtÅ‘: %s", @@ -259,6 +267,7 @@ "Getting help" : "SegÃtség kérés", "Commercial support" : "Kereskedelmi támogatás", "You are using <strong>%s</strong> of <strong>%s</strong>" : "Jelenleg használt: <strong>%s</strong>, maximálisan elérhetÅ‘: <strong>%s</strong>", + "You are using <strong>%s</strong> of <strong>%s</strong> (<strong>%s %%</strong>)" : "Jelenleg használt: <strong>%s</strong>, ebbÅ‘l: <strong>%s</strong> (<strong>%s %%</strong>)", "Profile picture" : "Profilkép", "Upload new" : "Új feltöltése", "Select from Files" : "Kiválasztás a Fájlkból", @@ -311,11 +320,11 @@ "Subscribe to our twitter channel!" : "Iratkozz fel a Twitter csatornánkra!", "Subscribe to our news feed!" : "Iratkozz fel a hÃrfolyamunkra!", "Subscribe to our newsletter!" : "Iratkozz fel a hÃrlevelünkre!", + "Settings" : "BeállÃtások", "Show storage location" : "Háttértároló helyének mutatása", - "Show last log in" : "Utolsó bejelentkezés megjelenÃtése", "Show user backend" : "Felhasználói háttér mutatása", - "Send email to new user" : "E-mail küldése az új felhasználónak", "Show email address" : "E-mail cÃm megjelenÃtése", + "Send email to new user" : "E-mail küldése az új felhasználónak", "E-Mail" : "E-mail", "Create" : "Létrehozás", "Admin Recovery Password" : "Adminisztrátori jelszó a fájlok visszanyerésére", @@ -339,6 +348,7 @@ "Admins can't remove themself from the admin group" : "Adminisztrátorok nem távolÃthatják el magukat az admin csoportból.", "Unable to add user to group %s" : "A felhasználó nem adható hozzá ehhez a csoporthoz: %s", "Unable to remove user from group %s" : "A felhasználó nem távolÃtható el ebbÅ‘l a csoportból: %s", - "For password recovery and notifications" : "Jelszó helyreállÃtáshoz és értesÃtésekhez" + "For password recovery and notifications" : "Jelszó helyreállÃtáshoz és értesÃtésekhez", + "Show last log in" : "Utolsó bejelentkezés megjelenÃtése" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/ia.js b/settings/l10n/ia.js index d36d39691e7..29c77da2eec 100644 --- a/settings/l10n/ia.js +++ b/settings/l10n/ia.js @@ -235,8 +235,8 @@ OC.L10N.register( "Subscribe to our twitter channel!" : "Subscribe a nostre canal Twitter!", "Subscribe to our news feed!" : "Subscribe a nostre syndication de novas!", "Show storage location" : "Monstrar loco de immagazinage", - "Send email to new user" : "Inviar message de e-posta a nove usator", "Show email address" : "Monstrar adresse de e-posta", + "Send email to new user" : "Inviar message de e-posta a nove usator", "E-Mail" : "E-posta", "Create" : "Crear", "Admin Recovery Password" : "Recuperation de Contrasigno del Administrator", diff --git a/settings/l10n/ia.json b/settings/l10n/ia.json index a7bfa46ccbc..7fdce7e04d2 100644 --- a/settings/l10n/ia.json +++ b/settings/l10n/ia.json @@ -233,8 +233,8 @@ "Subscribe to our twitter channel!" : "Subscribe a nostre canal Twitter!", "Subscribe to our news feed!" : "Subscribe a nostre syndication de novas!", "Show storage location" : "Monstrar loco de immagazinage", - "Send email to new user" : "Inviar message de e-posta a nove usator", "Show email address" : "Monstrar adresse de e-posta", + "Send email to new user" : "Inviar message de e-posta a nove usator", "E-Mail" : "E-posta", "Create" : "Crear", "Admin Recovery Password" : "Recuperation de Contrasigno del Administrator", diff --git a/settings/l10n/id.js b/settings/l10n/id.js index 8f802a3a3ea..883baffe681 100644 --- a/settings/l10n/id.js +++ b/settings/l10n/id.js @@ -263,10 +263,9 @@ OC.L10N.register( "Done" : "Selesai", "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Dikembangkan oleh {commmunityopen}komunitas Nextcloud{linkclose}, {githubopen}sumber kode{linkclose} dilisensikan dibawah {licenseopen}AGPL{linkclose}.", "Show storage location" : "Tampilkan kolasi penyimpanan", - "Show last log in" : "Tampilkan masuk terakhir", "Show user backend" : "Tampilkan pengguna backend", - "Send email to new user" : "Kirim email kepada pengguna baru", "Show email address" : "Tampilkan alamat email", + "Send email to new user" : "Kirim email kepada pengguna baru", "E-Mail" : "E-Mail", "Create" : "Buat", "Admin Recovery Password" : "Sandi pemulihan Admin", @@ -289,6 +288,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "Admin tidak dapat menghapus dirinya sendiri dari grup admin", "Unable to add user to group %s" : "Tidak dapat menambahkan pengguna ke grup %s", "Unable to remove user from group %s" : "Tidak dapat menghapus pengguna dari grup %s", - "For password recovery and notifications" : "Untuk pemulihan sandi dan pemberitahuan" + "For password recovery and notifications" : "Untuk pemulihan sandi dan pemberitahuan", + "Show last log in" : "Tampilkan masuk terakhir" }, "nplurals=1; plural=0;"); diff --git a/settings/l10n/id.json b/settings/l10n/id.json index e229324013b..e2d21d512bc 100644 --- a/settings/l10n/id.json +++ b/settings/l10n/id.json @@ -261,10 +261,9 @@ "Done" : "Selesai", "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Dikembangkan oleh {commmunityopen}komunitas Nextcloud{linkclose}, {githubopen}sumber kode{linkclose} dilisensikan dibawah {licenseopen}AGPL{linkclose}.", "Show storage location" : "Tampilkan kolasi penyimpanan", - "Show last log in" : "Tampilkan masuk terakhir", "Show user backend" : "Tampilkan pengguna backend", - "Send email to new user" : "Kirim email kepada pengguna baru", "Show email address" : "Tampilkan alamat email", + "Send email to new user" : "Kirim email kepada pengguna baru", "E-Mail" : "E-Mail", "Create" : "Buat", "Admin Recovery Password" : "Sandi pemulihan Admin", @@ -287,6 +286,7 @@ "Admins can't remove themself from the admin group" : "Admin tidak dapat menghapus dirinya sendiri dari grup admin", "Unable to add user to group %s" : "Tidak dapat menambahkan pengguna ke grup %s", "Unable to remove user from group %s" : "Tidak dapat menghapus pengguna dari grup %s", - "For password recovery and notifications" : "Untuk pemulihan sandi dan pemberitahuan" + "For password recovery and notifications" : "Untuk pemulihan sandi dan pemberitahuan", + "Show last log in" : "Tampilkan masuk terakhir" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/settings/l10n/is.js b/settings/l10n/is.js index 8b4655c755e..879137aaf00 100644 --- a/settings/l10n/is.js +++ b/settings/l10n/is.js @@ -213,6 +213,7 @@ OC.L10N.register( "Allow apps to use the Share API" : "Leyfa forritum að nota Share API", "Allow users to share via link" : "Leyfa notendum að deila með tengli", "Allow public uploads" : "Leyfa opinberar innsendingar", + "Always ask for a password" : "Alltaf biðja um lykilorð", "Enforce password protection" : "Krefjast verndunar með aðgangsorði", "Set default expiration date" : "Setja sjálfgefinn gildistÃma", "Expire after " : "Rennur út eftir ", @@ -323,11 +324,9 @@ OC.L10N.register( "Subscribe to our newsletter!" : "Gerstu áskrifandi að fréttabréfinu okkar!", "Settings" : "Stillingar", "Show storage location" : "Birta staðsetningu gagnageymslu", - "Show last log in" : "Birta sÃðustu innskráningu", "Show user backend" : "Birta bakenda notanda", - "Send email to new user" : "Senda tölvupóst til nýs notanda", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Þegar lykilorð nýs notanda er skilið eftir autt, mun honum verða sendur tölvupóstur með tengli til að virkja aðganginn sinn", "Show email address" : "Birta tölvupóstfang", + "Send email to new user" : "Senda tölvupóst til nýs notanda", "E-Mail" : "Tölvupóstfang", "Create" : "Búa til", "Admin Recovery Password" : "Endurheimtulykilorð kerfisstjóra", @@ -351,6 +350,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "Stjórnendur geta ekki fjarlægt sjálfa sig úr stjórnendahóp", "Unable to add user to group %s" : "Ekki tókst að bæta notanda við hópinn %s", "Unable to remove user from group %s" : "Ekki tókst að fjarlægja notanda úr hópnum %s", - "For password recovery and notifications" : "Fyrir tilkynningar og endurheimtingu lykilorðs" + "For password recovery and notifications" : "Fyrir tilkynningar og endurheimtingu lykilorðs", + "Show last log in" : "Birta sÃðustu innskráningu" }, "nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"); diff --git a/settings/l10n/is.json b/settings/l10n/is.json index 853ef6bfc62..5baa880a97a 100644 --- a/settings/l10n/is.json +++ b/settings/l10n/is.json @@ -211,6 +211,7 @@ "Allow apps to use the Share API" : "Leyfa forritum að nota Share API", "Allow users to share via link" : "Leyfa notendum að deila með tengli", "Allow public uploads" : "Leyfa opinberar innsendingar", + "Always ask for a password" : "Alltaf biðja um lykilorð", "Enforce password protection" : "Krefjast verndunar með aðgangsorði", "Set default expiration date" : "Setja sjálfgefinn gildistÃma", "Expire after " : "Rennur út eftir ", @@ -321,11 +322,9 @@ "Subscribe to our newsletter!" : "Gerstu áskrifandi að fréttabréfinu okkar!", "Settings" : "Stillingar", "Show storage location" : "Birta staðsetningu gagnageymslu", - "Show last log in" : "Birta sÃðustu innskráningu", "Show user backend" : "Birta bakenda notanda", - "Send email to new user" : "Senda tölvupóst til nýs notanda", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Þegar lykilorð nýs notanda er skilið eftir autt, mun honum verða sendur tölvupóstur með tengli til að virkja aðganginn sinn", "Show email address" : "Birta tölvupóstfang", + "Send email to new user" : "Senda tölvupóst til nýs notanda", "E-Mail" : "Tölvupóstfang", "Create" : "Búa til", "Admin Recovery Password" : "Endurheimtulykilorð kerfisstjóra", @@ -349,6 +348,7 @@ "Admins can't remove themself from the admin group" : "Stjórnendur geta ekki fjarlægt sjálfa sig úr stjórnendahóp", "Unable to add user to group %s" : "Ekki tókst að bæta notanda við hópinn %s", "Unable to remove user from group %s" : "Ekki tókst að fjarlægja notanda úr hópnum %s", - "For password recovery and notifications" : "Fyrir tilkynningar og endurheimtingu lykilorðs" + "For password recovery and notifications" : "Fyrir tilkynningar og endurheimtingu lykilorðs", + "Show last log in" : "Birta sÃðustu innskráningu" },"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);" }
\ No newline at end of file diff --git a/settings/l10n/it.js b/settings/l10n/it.js index 2240aee7ea4..63ad34a6be6 100644 --- a/settings/l10n/it.js +++ b/settings/l10n/it.js @@ -322,11 +322,9 @@ OC.L10N.register( "Subscribe to our news feed!" : "Iscriviti alla nostra fonte di notizie!", "Subscribe to our newsletter!" : "Iscriviti alla nostra newsletter!", "Show storage location" : "Mostra posizione di archiviazione", - "Show last log in" : "Mostra ultimo accesso", "Show user backend" : "Mostra il motore utente", - "Send email to new user" : "Invia email al nuovo utente", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Quando la password del nuovo utente è lasciata vuota una email con un collegamento per impostare la password è inviata all'utente", "Show email address" : "Mostra l'indirizzo email", + "Send email to new user" : "Invia email al nuovo utente", "E-Mail" : "Posta elettronica", "Create" : "Crea", "Admin Recovery Password" : "Password di ripristino amministrativa", @@ -350,6 +348,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "Gli amministratori non possono rimuovere se stessi dal gruppo di amministrazione", "Unable to add user to group %s" : "Impossibile aggiungere l'utente al gruppo %s", "Unable to remove user from group %s" : "Impossibile rimuovere l'utente dal gruppo %s", - "For password recovery and notifications" : "Per il ripristino della password e per le notifiche" + "For password recovery and notifications" : "Per il ripristino della password e per le notifiche", + "Show last log in" : "Mostra ultimo accesso" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/it.json b/settings/l10n/it.json index b87721e075e..bcb3ef5ffc0 100644 --- a/settings/l10n/it.json +++ b/settings/l10n/it.json @@ -320,11 +320,9 @@ "Subscribe to our news feed!" : "Iscriviti alla nostra fonte di notizie!", "Subscribe to our newsletter!" : "Iscriviti alla nostra newsletter!", "Show storage location" : "Mostra posizione di archiviazione", - "Show last log in" : "Mostra ultimo accesso", "Show user backend" : "Mostra il motore utente", - "Send email to new user" : "Invia email al nuovo utente", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Quando la password del nuovo utente è lasciata vuota una email con un collegamento per impostare la password è inviata all'utente", "Show email address" : "Mostra l'indirizzo email", + "Send email to new user" : "Invia email al nuovo utente", "E-Mail" : "Posta elettronica", "Create" : "Crea", "Admin Recovery Password" : "Password di ripristino amministrativa", @@ -348,6 +346,7 @@ "Admins can't remove themself from the admin group" : "Gli amministratori non possono rimuovere se stessi dal gruppo di amministrazione", "Unable to add user to group %s" : "Impossibile aggiungere l'utente al gruppo %s", "Unable to remove user from group %s" : "Impossibile rimuovere l'utente dal gruppo %s", - "For password recovery and notifications" : "Per il ripristino della password e per le notifiche" + "For password recovery and notifications" : "Per il ripristino della password e per le notifiche", + "Show last log in" : "Mostra ultimo accesso" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/ja.js b/settings/l10n/ja.js index 0ff1e27c294..56ba1f905bf 100644 --- a/settings/l10n/ja.js +++ b/settings/l10n/ja.js @@ -213,6 +213,7 @@ OC.L10N.register( "Allow apps to use the Share API" : "アプリã‹ã‚‰ã®å…±æœ‰APIã®åˆ©ç”¨ã‚’許å¯ã™ã‚‹", "Allow users to share via link" : "URLリンクã§ã®å…±æœ‰ã‚’許å¯ã™ã‚‹", "Allow public uploads" : "パブリックãªã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã‚’許å¯ã™ã‚‹", + "Always ask for a password" : "常ã«ãƒ‘スワードを尋ãã‚‹", "Enforce password protection" : "常ã«ãƒ‘スワードä¿è·ã‚’有効ã«ã™ã‚‹", "Set default expiration date" : "有効期é™ã®ãƒ‡ãƒ•ォルト値をè¨å®šã™ã‚‹", "Expire after " : "無効ã«ãªã‚‹ã¾ã§", @@ -321,12 +322,11 @@ OC.L10N.register( "Subscribe to our twitter channel!" : "twitterãƒãƒ£ãƒ³ãƒãƒ«ã‚’è³¼èªã™ã‚‹ï¼", "Subscribe to our news feed!" : "ç§ãŸã¡ã®ãƒ‹ãƒ¥ãƒ¼ã‚¹ãƒ•ィードを購èªï¼", "Subscribe to our newsletter!" : "ニュースレターを購èªã™ã‚‹ï¼", + "Settings" : "è¨å®š", "Show storage location" : "データã®ä¿å˜å ´æ‰€ã‚’表示", - "Show last log in" : "最終ãƒã‚°ã‚¤ãƒ³ã‚’表示", "Show user backend" : "ユーザーãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã‚’表示", - "Send email to new user" : "æ–°è¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ãƒ¡ãƒ¼ãƒ«ã‚’é€ä¿¡", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "æ–°ã—ã„ユーザーã®ãƒ‘スワードを空ã®ã¾ã¾ã«ã™ã‚‹ã¨ã€ãƒ‘スワードをè¨å®šã™ã‚‹ãŸã‚ã®ãƒªãƒ³ã‚¯ã‚’å«ã‚€ã‚¢ã‚¯ãƒ†ã‚£ãƒ™ãƒ¼ã‚·ãƒ§ãƒ³ã®ãƒ¡ãƒ¼ãƒ«ãŒãƒ¦ãƒ¼ã‚¶ãƒ¼ã«é€ä¿¡ã•れã¾ã™", "Show email address" : "メールアドレスを表示", + "Send email to new user" : "æ–°è¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ãƒ¡ãƒ¼ãƒ«ã‚’é€ä¿¡", "E-Mail" : "メール", "Create" : "作æˆ", "Admin Recovery Password" : "管ç†è€…リカãƒãƒªãƒ‘スワード", @@ -350,6 +350,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "管ç†è€…ã¯è‡ªèº«ã‚’管ç†è€…グループã‹ã‚‰å‰Šé™¤ã§ãã¾ã›ã‚“。", "Unable to add user to group %s" : "ユーザーをグループ %s ã«è¿½åŠ ã§ãã¾ã›ã‚“", "Unable to remove user from group %s" : "ユーザーをグループ %s ã‹ã‚‰å‰Šé™¤ã§ãã¾ã›ã‚“", - "For password recovery and notifications" : "パスワード回復ã¨é€šçŸ¥ç”¨" + "For password recovery and notifications" : "パスワード回復ã¨é€šçŸ¥ç”¨", + "Show last log in" : "最終ãƒã‚°ã‚¤ãƒ³ã‚’表示" }, "nplurals=1; plural=0;"); diff --git a/settings/l10n/ja.json b/settings/l10n/ja.json index 16b6711422b..ee08e29d7ef 100644 --- a/settings/l10n/ja.json +++ b/settings/l10n/ja.json @@ -211,6 +211,7 @@ "Allow apps to use the Share API" : "アプリã‹ã‚‰ã®å…±æœ‰APIã®åˆ©ç”¨ã‚’許å¯ã™ã‚‹", "Allow users to share via link" : "URLリンクã§ã®å…±æœ‰ã‚’許å¯ã™ã‚‹", "Allow public uploads" : "パブリックãªã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã‚’許å¯ã™ã‚‹", + "Always ask for a password" : "常ã«ãƒ‘スワードを尋ãã‚‹", "Enforce password protection" : "常ã«ãƒ‘スワードä¿è·ã‚’有効ã«ã™ã‚‹", "Set default expiration date" : "有効期é™ã®ãƒ‡ãƒ•ォルト値をè¨å®šã™ã‚‹", "Expire after " : "無効ã«ãªã‚‹ã¾ã§", @@ -319,12 +320,11 @@ "Subscribe to our twitter channel!" : "twitterãƒãƒ£ãƒ³ãƒãƒ«ã‚’è³¼èªã™ã‚‹ï¼", "Subscribe to our news feed!" : "ç§ãŸã¡ã®ãƒ‹ãƒ¥ãƒ¼ã‚¹ãƒ•ィードを購èªï¼", "Subscribe to our newsletter!" : "ニュースレターを購èªã™ã‚‹ï¼", + "Settings" : "è¨å®š", "Show storage location" : "データã®ä¿å˜å ´æ‰€ã‚’表示", - "Show last log in" : "最終ãƒã‚°ã‚¤ãƒ³ã‚’表示", "Show user backend" : "ユーザーãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã‚’表示", - "Send email to new user" : "æ–°è¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ãƒ¡ãƒ¼ãƒ«ã‚’é€ä¿¡", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "æ–°ã—ã„ユーザーã®ãƒ‘スワードを空ã®ã¾ã¾ã«ã™ã‚‹ã¨ã€ãƒ‘スワードをè¨å®šã™ã‚‹ãŸã‚ã®ãƒªãƒ³ã‚¯ã‚’å«ã‚€ã‚¢ã‚¯ãƒ†ã‚£ãƒ™ãƒ¼ã‚·ãƒ§ãƒ³ã®ãƒ¡ãƒ¼ãƒ«ãŒãƒ¦ãƒ¼ã‚¶ãƒ¼ã«é€ä¿¡ã•れã¾ã™", "Show email address" : "メールアドレスを表示", + "Send email to new user" : "æ–°è¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ãƒ¡ãƒ¼ãƒ«ã‚’é€ä¿¡", "E-Mail" : "メール", "Create" : "作æˆ", "Admin Recovery Password" : "管ç†è€…リカãƒãƒªãƒ‘スワード", @@ -348,6 +348,7 @@ "Admins can't remove themself from the admin group" : "管ç†è€…ã¯è‡ªèº«ã‚’管ç†è€…グループã‹ã‚‰å‰Šé™¤ã§ãã¾ã›ã‚“。", "Unable to add user to group %s" : "ユーザーをグループ %s ã«è¿½åŠ ã§ãã¾ã›ã‚“", "Unable to remove user from group %s" : "ユーザーをグループ %s ã‹ã‚‰å‰Šé™¤ã§ãã¾ã›ã‚“", - "For password recovery and notifications" : "パスワード回復ã¨é€šçŸ¥ç”¨" + "For password recovery and notifications" : "パスワード回復ã¨é€šçŸ¥ç”¨", + "Show last log in" : "最終ãƒã‚°ã‚¤ãƒ³ã‚’表示" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/settings/l10n/ko.js b/settings/l10n/ko.js index 4d559a9c87f..0d7c080c4c7 100644 --- a/settings/l10n/ko.js +++ b/settings/l10n/ko.js @@ -307,10 +307,9 @@ OC.L10N.register( "Subscribe to our news feed!" : "뉴스 피드를 구ë…하세요!", "Subscribe to our newsletter!" : "뉴스 ë ˆí„°ë¥¼ 구ë…하세요!", "Show storage location" : "ì €ìž¥ì†Œ 위치 ë³´ì´ê¸°", - "Show last log in" : "마지막 ë¡œê·¸ì¸ ì‹œê°„ ë³´ì´ê¸°", "Show user backend" : "ì‚¬ìš©ìž ë°±ì—”ë“œ ë³´ì´ê¸°", - "Send email to new user" : "새 사용ìžì—게 ì´ë©”ì¼ ë³´ë‚´ê¸°", "Show email address" : "ì´ë©”ì¼ ì£¼ì†Œ ë³´ì´ê¸°", + "Send email to new user" : "새 사용ìžì—게 ì´ë©”ì¼ ë³´ë‚´ê¸°", "E-Mail" : "ì´ë©”ì¼", "Create" : "만들기", "Admin Recovery Password" : "ê´€ë¦¬ìž ë³µêµ¬ 암호", @@ -334,6 +333,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "ê´€ë¦¬ìž ìžì‹ ì„ ê´€ë¦¬ìž ê·¸ë£¹ì—서 ì‚ì œí• ìˆ˜ ì—†ìŒ", "Unable to add user to group %s" : "그룹 %sì— ì‚¬ìš©ìžë¥¼ ì¶”ê°€í• ìˆ˜ ì—†ìŒ", "Unable to remove user from group %s" : "그룹 %sì—서 사용ìžë¥¼ ì‚ì œí• ìˆ˜ ì—†ìŒ", - "For password recovery and notifications" : "암호 복구와 ì•Œë¦¼ì— ì‚¬ìš©" + "For password recovery and notifications" : "암호 복구와 ì•Œë¦¼ì— ì‚¬ìš©", + "Show last log in" : "마지막 ë¡œê·¸ì¸ ì‹œê°„ ë³´ì´ê¸°" }, "nplurals=1; plural=0;"); diff --git a/settings/l10n/ko.json b/settings/l10n/ko.json index 1d3f7008062..3e94a5f73b7 100644 --- a/settings/l10n/ko.json +++ b/settings/l10n/ko.json @@ -305,10 +305,9 @@ "Subscribe to our news feed!" : "뉴스 피드를 구ë…하세요!", "Subscribe to our newsletter!" : "뉴스 ë ˆí„°ë¥¼ 구ë…하세요!", "Show storage location" : "ì €ìž¥ì†Œ 위치 ë³´ì´ê¸°", - "Show last log in" : "마지막 ë¡œê·¸ì¸ ì‹œê°„ ë³´ì´ê¸°", "Show user backend" : "ì‚¬ìš©ìž ë°±ì—”ë“œ ë³´ì´ê¸°", - "Send email to new user" : "새 사용ìžì—게 ì´ë©”ì¼ ë³´ë‚´ê¸°", "Show email address" : "ì´ë©”ì¼ ì£¼ì†Œ ë³´ì´ê¸°", + "Send email to new user" : "새 사용ìžì—게 ì´ë©”ì¼ ë³´ë‚´ê¸°", "E-Mail" : "ì´ë©”ì¼", "Create" : "만들기", "Admin Recovery Password" : "ê´€ë¦¬ìž ë³µêµ¬ 암호", @@ -332,6 +331,7 @@ "Admins can't remove themself from the admin group" : "ê´€ë¦¬ìž ìžì‹ ì„ ê´€ë¦¬ìž ê·¸ë£¹ì—서 ì‚ì œí• ìˆ˜ ì—†ìŒ", "Unable to add user to group %s" : "그룹 %sì— ì‚¬ìš©ìžë¥¼ ì¶”ê°€í• ìˆ˜ ì—†ìŒ", "Unable to remove user from group %s" : "그룹 %sì—서 사용ìžë¥¼ ì‚ì œí• ìˆ˜ ì—†ìŒ", - "For password recovery and notifications" : "암호 복구와 ì•Œë¦¼ì— ì‚¬ìš©" + "For password recovery and notifications" : "암호 복구와 ì•Œë¦¼ì— ì‚¬ìš©", + "Show last log in" : "마지막 ë¡œê·¸ì¸ ì‹œê°„ ë³´ì´ê¸°" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/settings/l10n/lb.js b/settings/l10n/lb.js index f4453e9b2e0..3127f533cba 100644 --- a/settings/l10n/lb.js +++ b/settings/l10n/lb.js @@ -8,9 +8,13 @@ OC.L10N.register( "Email sent" : "Email geschéckt", "Invalid request" : "Ongülteg Requête", "Email saved" : "E-mail gespäichert", + "Not saved" : "Nët gespäichert", "All" : "All", + "The app will be downloaded from the app store" : "D'App gett aus dem App Store erofgelueden", "Disable" : "Ofschalten", "Enable" : "Aschalten", + "Error while enabling app" : "Fehler beim Aktivéieren vun der App", + "Error while uninstalling app" : "Fehler beim Deinstalléieren vun der App", "Delete" : "Läschen", "Groups" : "Gruppen", "undo" : "réckgängeg man", diff --git a/settings/l10n/lb.json b/settings/l10n/lb.json index d244bcac634..96abf908abd 100644 --- a/settings/l10n/lb.json +++ b/settings/l10n/lb.json @@ -6,9 +6,13 @@ "Email sent" : "Email geschéckt", "Invalid request" : "Ongülteg Requête", "Email saved" : "E-mail gespäichert", + "Not saved" : "Nët gespäichert", "All" : "All", + "The app will be downloaded from the app store" : "D'App gett aus dem App Store erofgelueden", "Disable" : "Ofschalten", "Enable" : "Aschalten", + "Error while enabling app" : "Fehler beim Aktivéieren vun der App", + "Error while uninstalling app" : "Fehler beim Deinstalléieren vun der App", "Delete" : "Läschen", "Groups" : "Gruppen", "undo" : "réckgängeg man", diff --git a/settings/l10n/lv.js b/settings/l10n/lv.js index 2517a9b34b4..c106d310765 100644 --- a/settings/l10n/lv.js +++ b/settings/l10n/lv.js @@ -254,9 +254,8 @@ OC.L10N.register( "Follow us on Google Plus!" : "Seko mums Google Plus!", "Subscribe to our newsletter!" : "AbonÄ“t mÅ«su jaunumus!", "Show storage location" : "RÄdÄ«t krÄtuves atraÅ¡anÄs vietu", - "Show last log in" : "RÄdÄ«t pÄ“dÄ“jo autorizÄciju", - "Send email to new user" : "SÅ«tÄ«t e-pastu jaunajam lietotÄjam", "Show email address" : "RÄdÄ«t e-pasta adreses", + "Send email to new user" : "SÅ«tÄ«t e-pastu jaunajam lietotÄjam", "E-Mail" : "E-pasts", "Create" : "Izveidot", "Admin Recovery Password" : "Administratora atgūšanas parole", @@ -279,6 +278,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "Administratori nevar izņemt paÅ¡i sevi no administratoru grupas", "Unable to add user to group %s" : "Nevar pievienot lietotÄju grupai %s", "Unable to remove user from group %s" : "Nevar izņemt lietotÄju no grupas %s", - "For password recovery and notifications" : "Paroles atjaunoÅ¡anai un paziņojumiem" + "For password recovery and notifications" : "Paroles atjaunoÅ¡anai un paziņojumiem", + "Show last log in" : "RÄdÄ«t pÄ“dÄ“jo autorizÄciju" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"); diff --git a/settings/l10n/lv.json b/settings/l10n/lv.json index 657bb2478f0..5165f96b310 100644 --- a/settings/l10n/lv.json +++ b/settings/l10n/lv.json @@ -252,9 +252,8 @@ "Follow us on Google Plus!" : "Seko mums Google Plus!", "Subscribe to our newsletter!" : "AbonÄ“t mÅ«su jaunumus!", "Show storage location" : "RÄdÄ«t krÄtuves atraÅ¡anÄs vietu", - "Show last log in" : "RÄdÄ«t pÄ“dÄ“jo autorizÄciju", - "Send email to new user" : "SÅ«tÄ«t e-pastu jaunajam lietotÄjam", "Show email address" : "RÄdÄ«t e-pasta adreses", + "Send email to new user" : "SÅ«tÄ«t e-pastu jaunajam lietotÄjam", "E-Mail" : "E-pasts", "Create" : "Izveidot", "Admin Recovery Password" : "Administratora atgūšanas parole", @@ -277,6 +276,7 @@ "Admins can't remove themself from the admin group" : "Administratori nevar izņemt paÅ¡i sevi no administratoru grupas", "Unable to add user to group %s" : "Nevar pievienot lietotÄju grupai %s", "Unable to remove user from group %s" : "Nevar izņemt lietotÄju no grupas %s", - "For password recovery and notifications" : "Paroles atjaunoÅ¡anai un paziņojumiem" + "For password recovery and notifications" : "Paroles atjaunoÅ¡anai un paziņojumiem", + "Show last log in" : "RÄdÄ«t pÄ“dÄ“jo autorizÄciju" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);" }
\ No newline at end of file diff --git a/settings/l10n/nb.js b/settings/l10n/nb.js index c3b7c3973f5..d446d426d69 100644 --- a/settings/l10n/nb.js +++ b/settings/l10n/nb.js @@ -316,11 +316,9 @@ OC.L10N.register( "Subscribe to our news feed!" : "Abonner på vår nyhetsstrøm!", "Subscribe to our newsletter!" : "Abonner på vårt nyhetsbrev!", "Show storage location" : "Vis lagringssted", - "Show last log in" : "Vis site innlogging", "Show user backend" : "Vis bruker-server", - "Send email to new user" : "Send e-post til ny bruker", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Når passordet til den nye brukeren er utelatt, vil det sendes en aktiveringslink til brukeren.", "Show email address" : "Vis e-postadresse", + "Send email to new user" : "Send e-post til ny bruker", "E-Mail" : "E-post", "Create" : "Opprett", "Admin Recovery Password" : "Administrativt gjenopprettingspassord", @@ -344,6 +342,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "Admin kan ikke flytte seg selv fra admingruppen", "Unable to add user to group %s" : "Kan ikke legge bruker til gruppen %s", "Unable to remove user from group %s" : "Kan ikke slette bruker fra gruppen %s", - "For password recovery and notifications" : "For passord-gjenoppretting og varsler" + "For password recovery and notifications" : "For passord-gjenoppretting og varsler", + "Show last log in" : "Vis site innlogging" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/nb.json b/settings/l10n/nb.json index cf650533a3c..bd2327cdf07 100644 --- a/settings/l10n/nb.json +++ b/settings/l10n/nb.json @@ -314,11 +314,9 @@ "Subscribe to our news feed!" : "Abonner på vår nyhetsstrøm!", "Subscribe to our newsletter!" : "Abonner på vårt nyhetsbrev!", "Show storage location" : "Vis lagringssted", - "Show last log in" : "Vis site innlogging", "Show user backend" : "Vis bruker-server", - "Send email to new user" : "Send e-post til ny bruker", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Når passordet til den nye brukeren er utelatt, vil det sendes en aktiveringslink til brukeren.", "Show email address" : "Vis e-postadresse", + "Send email to new user" : "Send e-post til ny bruker", "E-Mail" : "E-post", "Create" : "Opprett", "Admin Recovery Password" : "Administrativt gjenopprettingspassord", @@ -342,6 +340,7 @@ "Admins can't remove themself from the admin group" : "Admin kan ikke flytte seg selv fra admingruppen", "Unable to add user to group %s" : "Kan ikke legge bruker til gruppen %s", "Unable to remove user from group %s" : "Kan ikke slette bruker fra gruppen %s", - "For password recovery and notifications" : "For passord-gjenoppretting og varsler" + "For password recovery and notifications" : "For passord-gjenoppretting og varsler", + "Show last log in" : "Vis site innlogging" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/nl.js b/settings/l10n/nl.js index d8fed55a983..7890ca9871d 100644 --- a/settings/l10n/nl.js +++ b/settings/l10n/nl.js @@ -321,12 +321,11 @@ OC.L10N.register( "Subscribe to our twitter channel!" : "Abonneer jezelf op ons twitter kanaal!", "Subscribe to our news feed!" : "Abonneer jezelf op onze nieuwsfeed!", "Subscribe to our newsletter!" : "Abonneer jezelf op onze nieuwsbrief!", + "Settings" : "Instellingen", "Show storage location" : "Toon opslaglocatie", - "Show last log in" : "Toon laatste inlog", "Show user backend" : "Toon backend gebruiker", - "Send email to new user" : "Verstuur e-mail aan nieuwe gebruiker", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Als het wachtwoord van de nieuwe gebruiker blanco blijft, wordt een activeringsmailtje naar de gebruiker gestuurd met een link om het wachtwoord in te stellen", "Show email address" : "Toon e-mailadres", + "Send email to new user" : "Verstuur e-mail aan nieuwe gebruiker", "E-Mail" : "E-mail", "Create" : "Aanmaken", "Admin Recovery Password" : "Beheer herstel wachtwoord", @@ -350,6 +349,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "Admins kunnen zichzelf niet uit de admin groep verwijderen", "Unable to add user to group %s" : "Niet in staat om gebruiker toe te voegen aan groep %s", "Unable to remove user from group %s" : "Niet in staat om gebruiker te verwijderen uit groep %s", - "For password recovery and notifications" : "Voor wachtwoordherstel en meldingen" + "For password recovery and notifications" : "Voor wachtwoordherstel en meldingen", + "Show last log in" : "Toon laatste inlog" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/nl.json b/settings/l10n/nl.json index af63568c31b..0f1250a7620 100644 --- a/settings/l10n/nl.json +++ b/settings/l10n/nl.json @@ -319,12 +319,11 @@ "Subscribe to our twitter channel!" : "Abonneer jezelf op ons twitter kanaal!", "Subscribe to our news feed!" : "Abonneer jezelf op onze nieuwsfeed!", "Subscribe to our newsletter!" : "Abonneer jezelf op onze nieuwsbrief!", + "Settings" : "Instellingen", "Show storage location" : "Toon opslaglocatie", - "Show last log in" : "Toon laatste inlog", "Show user backend" : "Toon backend gebruiker", - "Send email to new user" : "Verstuur e-mail aan nieuwe gebruiker", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Als het wachtwoord van de nieuwe gebruiker blanco blijft, wordt een activeringsmailtje naar de gebruiker gestuurd met een link om het wachtwoord in te stellen", "Show email address" : "Toon e-mailadres", + "Send email to new user" : "Verstuur e-mail aan nieuwe gebruiker", "E-Mail" : "E-mail", "Create" : "Aanmaken", "Admin Recovery Password" : "Beheer herstel wachtwoord", @@ -348,6 +347,7 @@ "Admins can't remove themself from the admin group" : "Admins kunnen zichzelf niet uit de admin groep verwijderen", "Unable to add user to group %s" : "Niet in staat om gebruiker toe te voegen aan groep %s", "Unable to remove user from group %s" : "Niet in staat om gebruiker te verwijderen uit groep %s", - "For password recovery and notifications" : "Voor wachtwoordherstel en meldingen" + "For password recovery and notifications" : "Voor wachtwoordherstel en meldingen", + "Show last log in" : "Toon laatste inlog" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/pl.js b/settings/l10n/pl.js index a1d69766114..2d7816f3c32 100644 --- a/settings/l10n/pl.js +++ b/settings/l10n/pl.js @@ -213,6 +213,7 @@ OC.L10N.register( "Allow apps to use the Share API" : "Zezwalaj aplikacjom na korzystanie z API udostępniania", "Allow users to share via link" : "Pozwól użytkownikom współdzielić przez link", "Allow public uploads" : "Pozwól na publiczne wczytywanie", + "Always ask for a password" : "Zawsze pytaj o hasło", "Enforce password protection" : "Wymuś zabezpieczenie hasłem", "Set default expiration date" : "Ustaw domyślną datę wygaśnięcia", "Expire after " : "Wygaś po", @@ -323,11 +324,9 @@ OC.L10N.register( "Subscribe to our newsletter!" : "Zapisz się do naszego newslettera!", "Settings" : "Ustawienia", "Show storage location" : "Pokaż miejsce przechowywania", - "Show last log in" : "Pokaż ostatni login", "Show user backend" : "Pokaż moduł użytkownika", - "Send email to new user" : "Wyślij email do nowego użytkownika", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Kiedy hasło nowego użytkownika jest puste użytkownikowi jest wysyłany e-mieil aktywacyjny z linkiem do ustawienia hasła", "Show email address" : "Pokaż adres email", + "Send email to new user" : "Wyślij email do nowego użytkownika", "E-Mail" : "E-mail", "Create" : "Utwórz", "Admin Recovery Password" : "Hasło klucza odzyskiwania", @@ -351,6 +350,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "Administratorzy nie mogą usunąć siebie samych z grupy administratorów", "Unable to add user to group %s" : "Nie można dodać użytkownika do grupy %s", "Unable to remove user from group %s" : "Nie można usunąć użytkownika z grupy %s", - "For password recovery and notifications" : "W celu odzyskania hasła i powiadomień" + "For password recovery and notifications" : "W celu odzyskania hasła i powiadomień", + "Show last log in" : "Pokaż ostatni login" }, "nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"); diff --git a/settings/l10n/pl.json b/settings/l10n/pl.json index 2c3729f9cda..09e4723ff64 100644 --- a/settings/l10n/pl.json +++ b/settings/l10n/pl.json @@ -211,6 +211,7 @@ "Allow apps to use the Share API" : "Zezwalaj aplikacjom na korzystanie z API udostępniania", "Allow users to share via link" : "Pozwól użytkownikom współdzielić przez link", "Allow public uploads" : "Pozwól na publiczne wczytywanie", + "Always ask for a password" : "Zawsze pytaj o hasło", "Enforce password protection" : "Wymuś zabezpieczenie hasłem", "Set default expiration date" : "Ustaw domyślną datę wygaśnięcia", "Expire after " : "Wygaś po", @@ -321,11 +322,9 @@ "Subscribe to our newsletter!" : "Zapisz się do naszego newslettera!", "Settings" : "Ustawienia", "Show storage location" : "Pokaż miejsce przechowywania", - "Show last log in" : "Pokaż ostatni login", "Show user backend" : "Pokaż moduł użytkownika", - "Send email to new user" : "Wyślij email do nowego użytkownika", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Kiedy hasło nowego użytkownika jest puste użytkownikowi jest wysyłany e-mieil aktywacyjny z linkiem do ustawienia hasła", "Show email address" : "Pokaż adres email", + "Send email to new user" : "Wyślij email do nowego użytkownika", "E-Mail" : "E-mail", "Create" : "Utwórz", "Admin Recovery Password" : "Hasło klucza odzyskiwania", @@ -349,6 +348,7 @@ "Admins can't remove themself from the admin group" : "Administratorzy nie mogą usunąć siebie samych z grupy administratorów", "Unable to add user to group %s" : "Nie można dodać użytkownika do grupy %s", "Unable to remove user from group %s" : "Nie można usunąć użytkownika z grupy %s", - "For password recovery and notifications" : "W celu odzyskania hasła i powiadomień" + "For password recovery and notifications" : "W celu odzyskania hasła i powiadomień", + "Show last log in" : "Pokaż ostatni login" },"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);" }
\ No newline at end of file diff --git a/settings/l10n/pt_BR.js b/settings/l10n/pt_BR.js index f472ef1b1f5..81b3ab9dd41 100644 --- a/settings/l10n/pt_BR.js +++ b/settings/l10n/pt_BR.js @@ -213,6 +213,7 @@ OC.L10N.register( "Allow apps to use the Share API" : "Permitir que aplicativos usem a API de Compartilhamento", "Allow users to share via link" : "Permitir que os usuários compartilhem por link", "Allow public uploads" : "Permitir envio público", + "Always ask for a password" : "Sempre pedir a senha", "Enforce password protection" : "Reforce a proteção por senha", "Set default expiration date" : "Configurar a data de expiração", "Expire after " : "Expirar depois de", @@ -321,12 +322,11 @@ OC.L10N.register( "Subscribe to our twitter channel!" : "Assine o nosso canal no Twitter!", "Subscribe to our news feed!" : "Assine nosso feed de notÃcias!", "Subscribe to our newsletter!" : "Inscreva-se para receber nosso boletim informativo!", + "Settings" : "Configurações", "Show storage location" : "Mostrar localização de armazenamento", - "Show last log in" : "Mostrar o último acesso", "Show user backend" : "Mostrar administrador do usuário", - "Send email to new user" : "Enviar um email para o novo usuário", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Quando a senha do novo usuário é deixada em branco, um e-mail de ativação com um link para definir a senha é enviado para o usuário", "Show email address" : "Mostrar o endereço de email", + "Send email to new user" : "Enviar um email para o novo usuário", "E-Mail" : "E-Mail", "Create" : "Criar", "Admin Recovery Password" : "Recuperação da Senha do Administrador", @@ -350,6 +350,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "Administradores não pode remover a si mesmos do grupo de administração", "Unable to add user to group %s" : "Não foi possÃvel adicionar usuário ao grupo %s", "Unable to remove user from group %s" : "Não foi possÃvel remover usuário do grupo %s", - "For password recovery and notifications" : "Para recuperação de senha e notificações" + "For password recovery and notifications" : "Para recuperação de senha e notificações", + "Show last log in" : "Mostrar o último acesso" }, "nplurals=2; plural=(n > 1);"); diff --git a/settings/l10n/pt_BR.json b/settings/l10n/pt_BR.json index 27af9bc2270..55cfdb77286 100644 --- a/settings/l10n/pt_BR.json +++ b/settings/l10n/pt_BR.json @@ -211,6 +211,7 @@ "Allow apps to use the Share API" : "Permitir que aplicativos usem a API de Compartilhamento", "Allow users to share via link" : "Permitir que os usuários compartilhem por link", "Allow public uploads" : "Permitir envio público", + "Always ask for a password" : "Sempre pedir a senha", "Enforce password protection" : "Reforce a proteção por senha", "Set default expiration date" : "Configurar a data de expiração", "Expire after " : "Expirar depois de", @@ -319,12 +320,11 @@ "Subscribe to our twitter channel!" : "Assine o nosso canal no Twitter!", "Subscribe to our news feed!" : "Assine nosso feed de notÃcias!", "Subscribe to our newsletter!" : "Inscreva-se para receber nosso boletim informativo!", + "Settings" : "Configurações", "Show storage location" : "Mostrar localização de armazenamento", - "Show last log in" : "Mostrar o último acesso", "Show user backend" : "Mostrar administrador do usuário", - "Send email to new user" : "Enviar um email para o novo usuário", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Quando a senha do novo usuário é deixada em branco, um e-mail de ativação com um link para definir a senha é enviado para o usuário", "Show email address" : "Mostrar o endereço de email", + "Send email to new user" : "Enviar um email para o novo usuário", "E-Mail" : "E-Mail", "Create" : "Criar", "Admin Recovery Password" : "Recuperação da Senha do Administrador", @@ -348,6 +348,7 @@ "Admins can't remove themself from the admin group" : "Administradores não pode remover a si mesmos do grupo de administração", "Unable to add user to group %s" : "Não foi possÃvel adicionar usuário ao grupo %s", "Unable to remove user from group %s" : "Não foi possÃvel remover usuário do grupo %s", - "For password recovery and notifications" : "Para recuperação de senha e notificações" + "For password recovery and notifications" : "Para recuperação de senha e notificações", + "Show last log in" : "Mostrar o último acesso" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/settings/l10n/pt_PT.js b/settings/l10n/pt_PT.js index c9c5b861b8d..6bc634294ac 100644 --- a/settings/l10n/pt_PT.js +++ b/settings/l10n/pt_PT.js @@ -230,10 +230,9 @@ OC.L10N.register( "Username" : "Nome de utilizador", "Done" : "ConcluÃdo", "Show storage location" : "Mostrar a localização do armazenamento", - "Show last log in" : "Mostrar ultimo acesso de entrada", "Show user backend" : "Mostrar interface do utilizador", - "Send email to new user" : "Enviar email ao novo utilizador", "Show email address" : "Mostrar endereço de email", + "Send email to new user" : "Enviar email ao novo utilizador", "E-Mail" : "Correio Eletrónico", "Create" : "Criar", "Admin Recovery Password" : "Recuperação da Palavra-passe de Administrador", @@ -251,6 +250,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "Os administradores não se podem remover a eles próprios do grupo 'admin'.", "Unable to add user to group %s" : "Não é possÃvel adicionar o utilizador ao grupo %s", "Unable to remove user from group %s" : "Não é possÃvel remover o utilizador do grupo %s", - "For password recovery and notifications" : "Para recuperação da palavra-passe e notificações" + "For password recovery and notifications" : "Para recuperação da palavra-passe e notificações", + "Show last log in" : "Mostrar ultimo acesso de entrada" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/pt_PT.json b/settings/l10n/pt_PT.json index 3b78d8e2128..3ebc15f2408 100644 --- a/settings/l10n/pt_PT.json +++ b/settings/l10n/pt_PT.json @@ -228,10 +228,9 @@ "Username" : "Nome de utilizador", "Done" : "ConcluÃdo", "Show storage location" : "Mostrar a localização do armazenamento", - "Show last log in" : "Mostrar ultimo acesso de entrada", "Show user backend" : "Mostrar interface do utilizador", - "Send email to new user" : "Enviar email ao novo utilizador", "Show email address" : "Mostrar endereço de email", + "Send email to new user" : "Enviar email ao novo utilizador", "E-Mail" : "Correio Eletrónico", "Create" : "Criar", "Admin Recovery Password" : "Recuperação da Palavra-passe de Administrador", @@ -249,6 +248,7 @@ "Admins can't remove themself from the admin group" : "Os administradores não se podem remover a eles próprios do grupo 'admin'.", "Unable to add user to group %s" : "Não é possÃvel adicionar o utilizador ao grupo %s", "Unable to remove user from group %s" : "Não é possÃvel remover o utilizador do grupo %s", - "For password recovery and notifications" : "Para recuperação da palavra-passe e notificações" + "For password recovery and notifications" : "Para recuperação da palavra-passe e notificações", + "Show last log in" : "Mostrar ultimo acesso de entrada" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/ru.js b/settings/l10n/ru.js index a68ee39e83e..8d5bb9744ca 100644 --- a/settings/l10n/ru.js +++ b/settings/l10n/ru.js @@ -323,11 +323,9 @@ OC.L10N.register( "Subscribe to our newsletter!" : "ПодпиÑывайтеÑÑŒ на нашу новоÑтную раÑÑылку!", "Settings" : "ÐаÑтройки", "Show storage location" : "Показать меÑтонахождение хранилища", - "Show last log in" : "Показать поÑледний вход в ÑиÑтему", "Show user backend" : "Показать механизм учёта пользователей", - "Send email to new user" : "ОтправлÑть пиÑьмо новому пользователю", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "ЕÑли поле Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¾Ñтавить пуÑтым, то пользователю будет отправлено Ñл.пиÑьмо, Ñодержащее ÑÑылку на Ñтраницу уÑтановки паролÑ.", "Show email address" : "Показывать Ð°Ð´Ñ€ÐµÑ Ñлектронной почты", + "Send email to new user" : "ОтправлÑть пиÑьмо новому пользователю", "E-Mail" : "Почта", "Create" : "Создать", "Admin Recovery Password" : "Пароль админиÑтративного воÑÑтановлениÑ", @@ -351,6 +349,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "ÐдминиÑтратор не может удалить Ñам ÑÐµÐ±Ñ Ð¸Ð· группы админиÑтраторов", "Unable to add user to group %s" : "Ðевозможно добавить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² группу %s", "Unable to remove user from group %s" : "Ðевозможно удалить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð· группы %s", - "For password recovery and notifications" : "Ð”Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð¸ уведомлений" + "For password recovery and notifications" : "Ð”Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð¸ уведомлений", + "Show last log in" : "Показать поÑледний вход в ÑиÑтему" }, "nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"); diff --git a/settings/l10n/ru.json b/settings/l10n/ru.json index 52b6ce97f00..5c77f89885f 100644 --- a/settings/l10n/ru.json +++ b/settings/l10n/ru.json @@ -321,11 +321,9 @@ "Subscribe to our newsletter!" : "ПодпиÑывайтеÑÑŒ на нашу новоÑтную раÑÑылку!", "Settings" : "ÐаÑтройки", "Show storage location" : "Показать меÑтонахождение хранилища", - "Show last log in" : "Показать поÑледний вход в ÑиÑтему", "Show user backend" : "Показать механизм учёта пользователей", - "Send email to new user" : "ОтправлÑть пиÑьмо новому пользователю", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "ЕÑли поле Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¾Ñтавить пуÑтым, то пользователю будет отправлено Ñл.пиÑьмо, Ñодержащее ÑÑылку на Ñтраницу уÑтановки паролÑ.", "Show email address" : "Показывать Ð°Ð´Ñ€ÐµÑ Ñлектронной почты", + "Send email to new user" : "ОтправлÑть пиÑьмо новому пользователю", "E-Mail" : "Почта", "Create" : "Создать", "Admin Recovery Password" : "Пароль админиÑтративного воÑÑтановлениÑ", @@ -349,6 +347,7 @@ "Admins can't remove themself from the admin group" : "ÐдминиÑтратор не может удалить Ñам ÑÐµÐ±Ñ Ð¸Ð· группы админиÑтраторов", "Unable to add user to group %s" : "Ðевозможно добавить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² группу %s", "Unable to remove user from group %s" : "Ðевозможно удалить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð· группы %s", - "For password recovery and notifications" : "Ð”Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð¸ уведомлений" + "For password recovery and notifications" : "Ð”Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð¸ уведомлений", + "Show last log in" : "Показать поÑледний вход в ÑиÑтему" },"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);" }
\ No newline at end of file diff --git a/settings/l10n/sk.js b/settings/l10n/sk.js index 4df23ab8c16..d93ad261d52 100644 --- a/settings/l10n/sk.js +++ b/settings/l10n/sk.js @@ -275,10 +275,9 @@ OC.L10N.register( "Done" : "Hotovo", "Follow us on Google Plus!" : "Sleduj nás na Google Plus!", "Show storage location" : "ZobraziÅ¥ umiestnenie úložiska", - "Show last log in" : "ZobraziÅ¥ posledné prihlásenie", "Show user backend" : "ZobraziÅ¥ backend použÃvateľa", - "Send email to new user" : "OdoslaÅ¥ email novému použÃvateľovi", "Show email address" : "ZobraziÅ¥ emailovú adresu", + "Send email to new user" : "OdoslaÅ¥ email novému použÃvateľovi", "E-Mail" : "email", "Create" : "VytvoriÅ¥", "Admin Recovery Password" : "Obnovenie hesla administrátora", @@ -302,6 +301,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "Administrátori nesmú odstrániÅ¥ sami seba zo skupiny admin", "Unable to add user to group %s" : "Nie je možné pridaÅ¥ použÃvateľa do skupiny %s", "Unable to remove user from group %s" : "Nie je možné odstrániÅ¥ použÃvateľa zo skupiny %s", - "For password recovery and notifications" : "Pre obnovu hesla a oznámenia" + "For password recovery and notifications" : "Pre obnovu hesla a oznámenia", + "Show last log in" : "ZobraziÅ¥ posledné prihlásenie" }, "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); diff --git a/settings/l10n/sk.json b/settings/l10n/sk.json index 9a767092d6d..b8453ef21f7 100644 --- a/settings/l10n/sk.json +++ b/settings/l10n/sk.json @@ -273,10 +273,9 @@ "Done" : "Hotovo", "Follow us on Google Plus!" : "Sleduj nás na Google Plus!", "Show storage location" : "ZobraziÅ¥ umiestnenie úložiska", - "Show last log in" : "ZobraziÅ¥ posledné prihlásenie", "Show user backend" : "ZobraziÅ¥ backend použÃvateľa", - "Send email to new user" : "OdoslaÅ¥ email novému použÃvateľovi", "Show email address" : "ZobraziÅ¥ emailovú adresu", + "Send email to new user" : "OdoslaÅ¥ email novému použÃvateľovi", "E-Mail" : "email", "Create" : "VytvoriÅ¥", "Admin Recovery Password" : "Obnovenie hesla administrátora", @@ -300,6 +299,7 @@ "Admins can't remove themself from the admin group" : "Administrátori nesmú odstrániÅ¥ sami seba zo skupiny admin", "Unable to add user to group %s" : "Nie je možné pridaÅ¥ použÃvateľa do skupiny %s", "Unable to remove user from group %s" : "Nie je možné odstrániÅ¥ použÃvateľa zo skupiny %s", - "For password recovery and notifications" : "Pre obnovu hesla a oznámenia" + "For password recovery and notifications" : "Pre obnovu hesla a oznámenia", + "Show last log in" : "ZobraziÅ¥ posledné prihlásenie" },"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" }
\ No newline at end of file diff --git a/settings/l10n/sl.js b/settings/l10n/sl.js index 83ad7e2646a..96a02cd990d 100644 --- a/settings/l10n/sl.js +++ b/settings/l10n/sl.js @@ -218,10 +218,9 @@ OC.L10N.register( "Username" : "UporabniÅ¡ko ime", "Done" : "KonÄano", "Show storage location" : "Pokaži mesto shrambe", - "Show last log in" : "Pokaži podatke zadnje prijave", "Show user backend" : "Pokaži ozadnji program", - "Send email to new user" : "PoÅ¡lji sporoÄilo novemu uporabniku", "Show email address" : "Pokaži naslov elektronske poÅ¡te", + "Send email to new user" : "PoÅ¡lji sporoÄilo novemu uporabniku", "E-Mail" : "Elektronska poÅ¡ta", "Create" : "Ustvari", "Admin Recovery Password" : "Obnovitev skrbniÅ¡kega gesla", @@ -239,6 +238,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "Skrbnikov ni mogoÄe odstraniti iz skupine skrbnikov (admin)", "Unable to add user to group %s" : "Uporabnika ni mogoÄe dodati k skupini %s", "Unable to remove user from group %s" : "Uporabnika ni mogoÄe odstraniti iz skupine %s", - "For password recovery and notifications" : "Za obnovo gesla in obveÅ¡Äanje" + "For password recovery and notifications" : "Za obnovo gesla in obveÅ¡Äanje", + "Show last log in" : "Pokaži podatke zadnje prijave" }, "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"); diff --git a/settings/l10n/sl.json b/settings/l10n/sl.json index 9139253a78e..c9f3496d73d 100644 --- a/settings/l10n/sl.json +++ b/settings/l10n/sl.json @@ -216,10 +216,9 @@ "Username" : "UporabniÅ¡ko ime", "Done" : "KonÄano", "Show storage location" : "Pokaži mesto shrambe", - "Show last log in" : "Pokaži podatke zadnje prijave", "Show user backend" : "Pokaži ozadnji program", - "Send email to new user" : "PoÅ¡lji sporoÄilo novemu uporabniku", "Show email address" : "Pokaži naslov elektronske poÅ¡te", + "Send email to new user" : "PoÅ¡lji sporoÄilo novemu uporabniku", "E-Mail" : "Elektronska poÅ¡ta", "Create" : "Ustvari", "Admin Recovery Password" : "Obnovitev skrbniÅ¡kega gesla", @@ -237,6 +236,7 @@ "Admins can't remove themself from the admin group" : "Skrbnikov ni mogoÄe odstraniti iz skupine skrbnikov (admin)", "Unable to add user to group %s" : "Uporabnika ni mogoÄe dodati k skupini %s", "Unable to remove user from group %s" : "Uporabnika ni mogoÄe odstraniti iz skupine %s", - "For password recovery and notifications" : "Za obnovo gesla in obveÅ¡Äanje" + "For password recovery and notifications" : "Za obnovo gesla in obveÅ¡Äanje", + "Show last log in" : "Pokaži podatke zadnje prijave" },"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);" }
\ No newline at end of file diff --git a/settings/l10n/sq.js b/settings/l10n/sq.js index 03dcb19b490..0c338b2559f 100644 --- a/settings/l10n/sq.js +++ b/settings/l10n/sq.js @@ -311,10 +311,9 @@ OC.L10N.register( "Subscribe to our news feed!" : "Abonohuni në kanalin tonë në twitter!", "Subscribe to our newsletter!" : "Abonohuni në buletinin tonë informativ!", "Show storage location" : "Shfaq vendndodhje depozite", - "Show last log in" : "Shfaq hyrjen e fundit", "Show user backend" : "Shfaq programin klient të përdoruesit", - "Send email to new user" : "Dërgo email përdoruesi të ri", "Show email address" : "Shfaq adresë email", + "Send email to new user" : "Dërgo email përdoruesi të ri", "E-Mail" : "Email", "Create" : "Krijoje", "Admin Recovery Password" : "Fjalëkalim Rikthimesh Nga Përgjegjësi", @@ -338,6 +337,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "Administratorët s’mund të heqin veten prej grupit admin", "Unable to add user to group %s" : "S’arrin të shtojë përdorues te grupi %s", "Unable to remove user from group %s" : "S’arrin të heqë përdorues nga grupi %s", - "For password recovery and notifications" : "Për rimarrje fjalëkalimesh dhe njoftime " + "For password recovery and notifications" : "Për rimarrje fjalëkalimesh dhe njoftime ", + "Show last log in" : "Shfaq hyrjen e fundit" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/sq.json b/settings/l10n/sq.json index afee26d26ad..06a7c354ba0 100644 --- a/settings/l10n/sq.json +++ b/settings/l10n/sq.json @@ -309,10 +309,9 @@ "Subscribe to our news feed!" : "Abonohuni në kanalin tonë në twitter!", "Subscribe to our newsletter!" : "Abonohuni në buletinin tonë informativ!", "Show storage location" : "Shfaq vendndodhje depozite", - "Show last log in" : "Shfaq hyrjen e fundit", "Show user backend" : "Shfaq programin klient të përdoruesit", - "Send email to new user" : "Dërgo email përdoruesi të ri", "Show email address" : "Shfaq adresë email", + "Send email to new user" : "Dërgo email përdoruesi të ri", "E-Mail" : "Email", "Create" : "Krijoje", "Admin Recovery Password" : "Fjalëkalim Rikthimesh Nga Përgjegjësi", @@ -336,6 +335,7 @@ "Admins can't remove themself from the admin group" : "Administratorët s’mund të heqin veten prej grupit admin", "Unable to add user to group %s" : "S’arrin të shtojë përdorues te grupi %s", "Unable to remove user from group %s" : "S’arrin të heqë përdorues nga grupi %s", - "For password recovery and notifications" : "Për rimarrje fjalëkalimesh dhe njoftime " + "For password recovery and notifications" : "Për rimarrje fjalëkalimesh dhe njoftime ", + "Show last log in" : "Shfaq hyrjen e fundit" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/sr.js b/settings/l10n/sr.js index 9965f2ceeaf..7f048f7f78f 100644 --- a/settings/l10n/sr.js +++ b/settings/l10n/sr.js @@ -191,10 +191,9 @@ OC.L10N.register( "Username" : "КориÑничко име", "Done" : "Завршено", "Show storage location" : "Прикажи локацију Ñкладишта", - "Show last log in" : "Прикажи поÑледњу пријаву", "Show user backend" : "Прикажи позадину за кориÑнике", - "Send email to new user" : "Пошаљи е-пошту новом кориÑнику", "Show email address" : "Прикажи е-адреÑу", + "Send email to new user" : "Пошаљи е-пошту новом кориÑнику", "E-Mail" : "Е-пошта", "Create" : "Ðаправи", "Admin Recovery Password" : "ÐдминиÑтраторÑка лозинка за опоравак", @@ -211,6 +210,7 @@ OC.L10N.register( "Please provide an admin recovery password, otherwise all user data will be lost" : "Ðаведите админиÑтраторÑку лозинку опоравка. У Ñупротном, Ñви кориÑнички подаци биће изгубљени.", "Admins can't remove themself from the admin group" : "ÐдминиÑтратор не може Ñебе да уклони из admin групе", "Unable to add user to group %s" : "Ðе могу да додам кориÑника у групу %s", - "Unable to remove user from group %s" : "Ðе могу да уклоним кориÑника из групе %s" + "Unable to remove user from group %s" : "Ðе могу да уклоним кориÑника из групе %s", + "Show last log in" : "Прикажи поÑледњу пријаву" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/settings/l10n/sr.json b/settings/l10n/sr.json index 5ddf6ed1744..33f1e1e61fa 100644 --- a/settings/l10n/sr.json +++ b/settings/l10n/sr.json @@ -189,10 +189,9 @@ "Username" : "КориÑничко име", "Done" : "Завршено", "Show storage location" : "Прикажи локацију Ñкладишта", - "Show last log in" : "Прикажи поÑледњу пријаву", "Show user backend" : "Прикажи позадину за кориÑнике", - "Send email to new user" : "Пошаљи е-пошту новом кориÑнику", "Show email address" : "Прикажи е-адреÑу", + "Send email to new user" : "Пошаљи е-пошту новом кориÑнику", "E-Mail" : "Е-пошта", "Create" : "Ðаправи", "Admin Recovery Password" : "ÐдминиÑтраторÑка лозинка за опоравак", @@ -209,6 +208,7 @@ "Please provide an admin recovery password, otherwise all user data will be lost" : "Ðаведите админиÑтраторÑку лозинку опоравка. У Ñупротном, Ñви кориÑнички подаци биће изгубљени.", "Admins can't remove themself from the admin group" : "ÐдминиÑтратор не може Ñебе да уклони из admin групе", "Unable to add user to group %s" : "Ðе могу да додам кориÑника у групу %s", - "Unable to remove user from group %s" : "Ðе могу да уклоним кориÑника из групе %s" + "Unable to remove user from group %s" : "Ðе могу да уклоним кориÑника из групе %s", + "Show last log in" : "Прикажи поÑледњу пријаву" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/settings/l10n/sv.js b/settings/l10n/sv.js index e4573535f30..19b2823ca36 100644 --- a/settings/l10n/sv.js +++ b/settings/l10n/sv.js @@ -320,11 +320,9 @@ OC.L10N.register( "Subscribe to our news feed!" : "Prenumerera på vårt nyhetsflöde!", "Subscribe to our newsletter!" : "Prenumerera på vårt nyhetsbrev!", "Show storage location" : "Visa lagringsplats", - "Show last log in" : "Visa senaste inloggning", "Show user backend" : "Visa användar-backend", - "Send email to new user" : "Skicka e-post till ny användare", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "När lösenordet för en ny användare lämnas tomt så skickas ett aktiveringsmail till användaren med ett länk där användaren kan välja ett lösenord", "Show email address" : "Visa e-postadress", + "Send email to new user" : "Skicka e-post till ny användare", "E-Mail" : "E-post", "Create" : "Skapa", "Admin Recovery Password" : "Admin-återställningslösen", @@ -348,6 +346,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "Administratörer kan inte ta bort sig själva från admingruppen", "Unable to add user to group %s" : "Kan inte lägga till användare i gruppen %s", "Unable to remove user from group %s" : "Kan inte radera användare från gruppen %s", - "For password recovery and notifications" : "För lösenordsåterställning och notifieringar" + "For password recovery and notifications" : "För lösenordsåterställning och notifieringar", + "Show last log in" : "Visa senaste inloggning" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/sv.json b/settings/l10n/sv.json index 759ce9bfe31..9fd6e1e66eb 100644 --- a/settings/l10n/sv.json +++ b/settings/l10n/sv.json @@ -318,11 +318,9 @@ "Subscribe to our news feed!" : "Prenumerera på vårt nyhetsflöde!", "Subscribe to our newsletter!" : "Prenumerera på vårt nyhetsbrev!", "Show storage location" : "Visa lagringsplats", - "Show last log in" : "Visa senaste inloggning", "Show user backend" : "Visa användar-backend", - "Send email to new user" : "Skicka e-post till ny användare", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "När lösenordet för en ny användare lämnas tomt så skickas ett aktiveringsmail till användaren med ett länk där användaren kan välja ett lösenord", "Show email address" : "Visa e-postadress", + "Send email to new user" : "Skicka e-post till ny användare", "E-Mail" : "E-post", "Create" : "Skapa", "Admin Recovery Password" : "Admin-återställningslösen", @@ -346,6 +344,7 @@ "Admins can't remove themself from the admin group" : "Administratörer kan inte ta bort sig själva från admingruppen", "Unable to add user to group %s" : "Kan inte lägga till användare i gruppen %s", "Unable to remove user from group %s" : "Kan inte radera användare från gruppen %s", - "For password recovery and notifications" : "För lösenordsåterställning och notifieringar" + "For password recovery and notifications" : "För lösenordsåterställning och notifieringar", + "Show last log in" : "Visa senaste inloggning" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/th.js b/settings/l10n/th.js index 71f14e35f6b..0e672183415 100644 --- a/settings/l10n/th.js +++ b/settings/l10n/th.js @@ -220,10 +220,9 @@ OC.L10N.register( "Username" : "ชื่à¸à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™", "Done" : "เสร็จสิ้น", "Show storage location" : "à¹à¸ªà¸”งสถานที่จัดเà¸à¹‡à¸šà¸‚้à¸à¸¡à¸¹à¸¥", - "Show last log in" : "à¹à¸ªà¸”งà¸à¸²à¸£à¹€à¸‚้าสู่ระบบล่าสุด", "Show user backend" : "à¹à¸ªà¸”งà¹à¸šà¹‡à¸à¹€à¸à¸™à¸”์ขà¸à¸‡à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰", - "Send email to new user" : "ส่งà¸à¸µà¹€à¸¡à¸¥à¹„ปยังผู้ใช้ใหม่", "Show email address" : "à¹à¸ªà¸”งที่à¸à¸¢à¸¹à¹ˆà¸à¸µà¹€à¸¡à¸¥", + "Send email to new user" : "ส่งà¸à¸µà¹€à¸¡à¸¥à¹„ปยังผู้ใช้ใหม่", "E-Mail" : "à¸à¸µà¹€à¸¡à¸¥", "Create" : "สร้าง", "Admin Recovery Password" : "à¸à¸¹à¹‰à¸„ืนรหัสผ่านดูà¹à¸¥à¸£à¸°à¸šà¸š", @@ -241,6 +240,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "ผู้ดูà¹à¸¥à¸£à¸°à¸šà¸šà¹„ม่สามารถลบตัวเà¸à¸‡à¸à¸à¸à¸ˆà¸²à¸à¸à¸¥à¸¸à¹ˆà¸¡à¸œà¸¹à¹‰à¸”ูà¹à¸¥à¹„ด้", "Unable to add user to group %s" : "ไม่สามารถเพิ่มผู้ใช้งานเข้าไปที่à¸à¸¥à¸¸à¹ˆà¸¡ %s ได้", "Unable to remove user from group %s" : "ไม่สามารถลบผู้ใช้งานà¸à¸à¸à¸ˆà¸²à¸à¸à¸¥à¸¸à¹ˆà¸¡ %s ได้", - "For password recovery and notifications" : "สำหรับà¸à¸²à¸£à¸à¸¹à¹‰à¸„ืนรหัสผ่านà¹à¸¥à¸°à¸à¸²à¸£à¹à¸ˆà¹‰à¸‡à¹€à¸•ืà¸à¸™" + "For password recovery and notifications" : "สำหรับà¸à¸²à¸£à¸à¸¹à¹‰à¸„ืนรหัสผ่านà¹à¸¥à¸°à¸à¸²à¸£à¹à¸ˆà¹‰à¸‡à¹€à¸•ืà¸à¸™", + "Show last log in" : "à¹à¸ªà¸”งà¸à¸²à¸£à¹€à¸‚้าสู่ระบบล่าสุด" }, "nplurals=1; plural=0;"); diff --git a/settings/l10n/th.json b/settings/l10n/th.json index ff03fccd2c0..cb3676e0aa0 100644 --- a/settings/l10n/th.json +++ b/settings/l10n/th.json @@ -218,10 +218,9 @@ "Username" : "ชื่à¸à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™", "Done" : "เสร็จสิ้น", "Show storage location" : "à¹à¸ªà¸”งสถานที่จัดเà¸à¹‡à¸šà¸‚้à¸à¸¡à¸¹à¸¥", - "Show last log in" : "à¹à¸ªà¸”งà¸à¸²à¸£à¹€à¸‚้าสู่ระบบล่าสุด", "Show user backend" : "à¹à¸ªà¸”งà¹à¸šà¹‡à¸à¹€à¸à¸™à¸”์ขà¸à¸‡à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰", - "Send email to new user" : "ส่งà¸à¸µà¹€à¸¡à¸¥à¹„ปยังผู้ใช้ใหม่", "Show email address" : "à¹à¸ªà¸”งที่à¸à¸¢à¸¹à¹ˆà¸à¸µà¹€à¸¡à¸¥", + "Send email to new user" : "ส่งà¸à¸µà¹€à¸¡à¸¥à¹„ปยังผู้ใช้ใหม่", "E-Mail" : "à¸à¸µà¹€à¸¡à¸¥", "Create" : "สร้าง", "Admin Recovery Password" : "à¸à¸¹à¹‰à¸„ืนรหัสผ่านดูà¹à¸¥à¸£à¸°à¸šà¸š", @@ -239,6 +238,7 @@ "Admins can't remove themself from the admin group" : "ผู้ดูà¹à¸¥à¸£à¸°à¸šà¸šà¹„ม่สามารถลบตัวเà¸à¸‡à¸à¸à¸à¸ˆà¸²à¸à¸à¸¥à¸¸à¹ˆà¸¡à¸œà¸¹à¹‰à¸”ูà¹à¸¥à¹„ด้", "Unable to add user to group %s" : "ไม่สามารถเพิ่มผู้ใช้งานเข้าไปที่à¸à¸¥à¸¸à¹ˆà¸¡ %s ได้", "Unable to remove user from group %s" : "ไม่สามารถลบผู้ใช้งานà¸à¸à¸à¸ˆà¸²à¸à¸à¸¥à¸¸à¹ˆà¸¡ %s ได้", - "For password recovery and notifications" : "สำหรับà¸à¸²à¸£à¸à¸¹à¹‰à¸„ืนรหัสผ่านà¹à¸¥à¸°à¸à¸²à¸£à¹à¸ˆà¹‰à¸‡à¹€à¸•ืà¸à¸™" + "For password recovery and notifications" : "สำหรับà¸à¸²à¸£à¸à¸¹à¹‰à¸„ืนรหัสผ่านà¹à¸¥à¸°à¸à¸²à¸£à¹à¸ˆà¹‰à¸‡à¹€à¸•ืà¸à¸™", + "Show last log in" : "à¹à¸ªà¸”งà¸à¸²à¸£à¹€à¸‚้าสู่ระบบล่าสุด" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/settings/l10n/tr.js b/settings/l10n/tr.js index dcd4fbe32cd..c09394414f5 100644 --- a/settings/l10n/tr.js +++ b/settings/l10n/tr.js @@ -57,7 +57,7 @@ OC.L10N.register( "The app will be downloaded from the app store" : "Uygulama uygulama mağazasından indirilecek", "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Resmi uygulamalar topluluk tarafından geliştirilmiştir. Merkezi işlevleri yerine getirdikleri gibi kullanıma da hazırdırlar.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Onaylanmış uygulamalar güvenilir geliştiriciler tarafından hazırlanmış ve ayrıntılı olmayan bir güvenlik denetiminden geçirilmiştir. Bu uygulamalar açık kaynak kod deposunda bulunur ve normal kullanım için kararlı oldukları varsayılır.", - "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Bu uygulama güvenlik denetiminden geçirilmemiş ve yeni ya da kararsız olarak biliniyor. Kullanımından doğabilecek riskler size aittir.", + "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Bu uygulama güvenlik denetiminden geçirilmemiş ve yeni ya da kararsız olarak biliniyor. Kurulmasından doğabilecek riskler size aittir.", "Disabling app …" : "Uygulama devre dışı bırakılıyor ...", "Error while disabling app" : "Uygulama devre dışı bırakılırken sorun çıktı", "Disable" : "Devre Dışı Bırak", @@ -213,6 +213,7 @@ OC.L10N.register( "Allow apps to use the Share API" : "Uygulamalar Paylaşım API kullanabilsin", "Allow users to share via link" : "Kullanıcıların bağlantı ile paylaşabilsin", "Allow public uploads" : "Herkes yükleme yapabilsin", + "Always ask for a password" : "Her zaman parola sorulsun", "Enforce password protection" : "Parola koruması dayatılsın", "Set default expiration date" : "Varsayılan son kullanma tarihini ayarla", "Expire after " : "Kullanım süresi", @@ -250,7 +251,7 @@ OC.L10N.register( "This app has an update available." : "Bu uygulama için bir güncelleme yayınlanmış.", "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Bu uygulama için en düşük Nextcloud sürümü belirtilmemiş. Bu durum ileride sorun çıkarır.", "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Bu uygulama için en yüksek Nextcloud sürümü belirtilmemiş. Bu durum ileride sorun çıkarır.", - "This app cannot be installed because the following dependencies are not fulfilled:" : "Aşağıdaki bağımlılıklar sağlanmadığından bu uygulama yüklenemedi:", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Aşağıdaki bağımlılıklar sağlanmadığından bu uygulama kurulamıyor:", "Enable only for specific groups" : "Yalnız belirli gruplar için etkinleştir", "Uninstall app" : "Uygulamayı Kaldır", "SSL Root Certificates" : "SSL Kök Sertifikaları", @@ -323,11 +324,9 @@ OC.L10N.register( "Subscribe to our newsletter!" : " Bültenimize abone olun!", "Settings" : "Ayarlar", "Show storage location" : "Depolama konumu görüntülensin", - "Show last log in" : "Son oturum açma zamanı görüntülensin", "Show user backend" : "Kullanıcı arka ucu görüntülensin", - "Send email to new user" : "Yeni kullanıcıya e-posta gönderilsin", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Yeni kullanıcının parolası boş bırakıldığında, kullanıcıya parola ayarlama bağlantısını içeren bir ektinleştirme e-postası gönderilir.", "Show email address" : "E-posta adresi görüntülensin", + "Send email to new user" : "Yeni kullanıcıya e-posta gönderilsin", "E-Mail" : "E-posta", "Create" : "Oluştur", "Admin Recovery Password" : "Yönetici Kurtarma Parolası", @@ -351,6 +350,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "Yöneticiler kendilerini admin grubundan çıkartamaz", "Unable to add user to group %s" : "Kullanıcı %s grubuna eklenemedi", "Unable to remove user from group %s" : "Kullanıcı %s grubundan çıkartılamadı", - "For password recovery and notifications" : "Parola sıfırlama ve bildirimler için" + "For password recovery and notifications" : "Parola sıfırlama ve bildirimler için", + "Show last log in" : "Son oturum açma zamanı görüntülensin" }, "nplurals=2; plural=(n > 1);"); diff --git a/settings/l10n/tr.json b/settings/l10n/tr.json index 930ff54103c..982a4fe81f8 100644 --- a/settings/l10n/tr.json +++ b/settings/l10n/tr.json @@ -55,7 +55,7 @@ "The app will be downloaded from the app store" : "Uygulama uygulama mağazasından indirilecek", "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Resmi uygulamalar topluluk tarafından geliştirilmiştir. Merkezi işlevleri yerine getirdikleri gibi kullanıma da hazırdırlar.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Onaylanmış uygulamalar güvenilir geliştiriciler tarafından hazırlanmış ve ayrıntılı olmayan bir güvenlik denetiminden geçirilmiştir. Bu uygulamalar açık kaynak kod deposunda bulunur ve normal kullanım için kararlı oldukları varsayılır.", - "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Bu uygulama güvenlik denetiminden geçirilmemiş ve yeni ya da kararsız olarak biliniyor. Kullanımından doğabilecek riskler size aittir.", + "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Bu uygulama güvenlik denetiminden geçirilmemiş ve yeni ya da kararsız olarak biliniyor. Kurulmasından doğabilecek riskler size aittir.", "Disabling app …" : "Uygulama devre dışı bırakılıyor ...", "Error while disabling app" : "Uygulama devre dışı bırakılırken sorun çıktı", "Disable" : "Devre Dışı Bırak", @@ -211,6 +211,7 @@ "Allow apps to use the Share API" : "Uygulamalar Paylaşım API kullanabilsin", "Allow users to share via link" : "Kullanıcıların bağlantı ile paylaşabilsin", "Allow public uploads" : "Herkes yükleme yapabilsin", + "Always ask for a password" : "Her zaman parola sorulsun", "Enforce password protection" : "Parola koruması dayatılsın", "Set default expiration date" : "Varsayılan son kullanma tarihini ayarla", "Expire after " : "Kullanım süresi", @@ -248,7 +249,7 @@ "This app has an update available." : "Bu uygulama için bir güncelleme yayınlanmış.", "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Bu uygulama için en düşük Nextcloud sürümü belirtilmemiş. Bu durum ileride sorun çıkarır.", "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Bu uygulama için en yüksek Nextcloud sürümü belirtilmemiş. Bu durum ileride sorun çıkarır.", - "This app cannot be installed because the following dependencies are not fulfilled:" : "Aşağıdaki bağımlılıklar sağlanmadığından bu uygulama yüklenemedi:", + "This app cannot be installed because the following dependencies are not fulfilled:" : "Aşağıdaki bağımlılıklar sağlanmadığından bu uygulama kurulamıyor:", "Enable only for specific groups" : "Yalnız belirli gruplar için etkinleştir", "Uninstall app" : "Uygulamayı Kaldır", "SSL Root Certificates" : "SSL Kök Sertifikaları", @@ -321,11 +322,9 @@ "Subscribe to our newsletter!" : " Bültenimize abone olun!", "Settings" : "Ayarlar", "Show storage location" : "Depolama konumu görüntülensin", - "Show last log in" : "Son oturum açma zamanı görüntülensin", "Show user backend" : "Kullanıcı arka ucu görüntülensin", - "Send email to new user" : "Yeni kullanıcıya e-posta gönderilsin", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "Yeni kullanıcının parolası boş bırakıldığında, kullanıcıya parola ayarlama bağlantısını içeren bir ektinleştirme e-postası gönderilir.", "Show email address" : "E-posta adresi görüntülensin", + "Send email to new user" : "Yeni kullanıcıya e-posta gönderilsin", "E-Mail" : "E-posta", "Create" : "Oluştur", "Admin Recovery Password" : "Yönetici Kurtarma Parolası", @@ -349,6 +348,7 @@ "Admins can't remove themself from the admin group" : "Yöneticiler kendilerini admin grubundan çıkartamaz", "Unable to add user to group %s" : "Kullanıcı %s grubuna eklenemedi", "Unable to remove user from group %s" : "Kullanıcı %s grubundan çıkartılamadı", - "For password recovery and notifications" : "Parola sıfırlama ve bildirimler için" + "For password recovery and notifications" : "Parola sıfırlama ve bildirimler için", + "Show last log in" : "Son oturum açma zamanı görüntülensin" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/settings/l10n/uk.js b/settings/l10n/uk.js index b98115e9387..50bb05b436f 100644 --- a/settings/l10n/uk.js +++ b/settings/l10n/uk.js @@ -195,10 +195,9 @@ OC.L10N.register( "Username" : "Ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача", "Done" : "Готово", "Show storage location" : "Показати міÑÑ†ÐµÐ·Ð½Ð°Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ñховища", - "Show last log in" : "Показати оÑтанній вхід в ÑиÑтему", "Show user backend" : "Показати кориÑтувача", - "Send email to new user" : "ÐадіÑлати email новому кориÑтувачу", "Show email address" : "Показати адреÑу електронної пошти", + "Send email to new user" : "ÐадіÑлати email новому кориÑтувачу", "E-Mail" : "ÐдреÑа електронної пошти", "Create" : "Створити", "Admin Recovery Password" : "Пароль адмініÑтратора Ð´Ð»Ñ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ", @@ -215,6 +214,7 @@ OC.L10N.register( "Please provide an admin recovery password, otherwise all user data will be lost" : "Будь лаÑка введіть пароль Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð°Ð´Ð¼Ñ–Ð½Ñ–Ñтратора, інакше вÑÑ– дані будуть втрачені", "Admins can't remove themself from the admin group" : "ÐдмініÑтратор не може видалити Ñебе з групи адмініÑтраторів", "Unable to add user to group %s" : "Ðе вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ кориÑтувача у групу %s", - "Unable to remove user from group %s" : "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ кориÑтувача із групи %s" + "Unable to remove user from group %s" : "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ кориÑтувача із групи %s", + "Show last log in" : "Показати оÑтанній вхід в ÑиÑтему" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/settings/l10n/uk.json b/settings/l10n/uk.json index 8f212f7ac15..b23f6059c4f 100644 --- a/settings/l10n/uk.json +++ b/settings/l10n/uk.json @@ -193,10 +193,9 @@ "Username" : "Ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача", "Done" : "Готово", "Show storage location" : "Показати міÑÑ†ÐµÐ·Ð½Ð°Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ñховища", - "Show last log in" : "Показати оÑтанній вхід в ÑиÑтему", "Show user backend" : "Показати кориÑтувача", - "Send email to new user" : "ÐадіÑлати email новому кориÑтувачу", "Show email address" : "Показати адреÑу електронної пошти", + "Send email to new user" : "ÐадіÑлати email новому кориÑтувачу", "E-Mail" : "ÐдреÑа електронної пошти", "Create" : "Створити", "Admin Recovery Password" : "Пароль адмініÑтратора Ð´Ð»Ñ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ", @@ -213,6 +212,7 @@ "Please provide an admin recovery password, otherwise all user data will be lost" : "Будь лаÑка введіть пароль Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð°Ð´Ð¼Ñ–Ð½Ñ–Ñтратора, інакше вÑÑ– дані будуть втрачені", "Admins can't remove themself from the admin group" : "ÐдмініÑтратор не може видалити Ñебе з групи адмініÑтраторів", "Unable to add user to group %s" : "Ðе вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ кориÑтувача у групу %s", - "Unable to remove user from group %s" : "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ кориÑтувача із групи %s" + "Unable to remove user from group %s" : "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ кориÑтувача із групи %s", + "Show last log in" : "Показати оÑтанній вхід в ÑиÑтему" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/settings/l10n/zh_CN.js b/settings/l10n/zh_CN.js index d4d96efff73..e44085facf8 100644 --- a/settings/l10n/zh_CN.js +++ b/settings/l10n/zh_CN.js @@ -322,11 +322,9 @@ OC.L10N.register( "Subscribe to our news feed!" : "订阅我们 RSS 最新消æ¯!", "Subscribe to our newsletter!" : "订阅我们的最新消æ¯!", "Show storage location" : "显示å˜å‚¨ä½ç½®", - "Show last log in" : "显示最åŽç™»å½•", "Show user backend" : "æ˜¾ç¤ºç”¨æˆ·æ¥æº", - "Send email to new user" : "å‘é€ç”µå邮件给新用户", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "当新用户密ç 为空时, 一个需è¦è®¾ç½®å¯†ç 的激活邮件将会å‘é€ç»™ç”¨æˆ·.", "Show email address" : "显示邮件地å€", + "Send email to new user" : "å‘é€ç”µå邮件给新用户", "E-Mail" : "E-Mail", "Create" : "创建", "Admin Recovery Password" : "ç®¡ç†æ¢å¤å¯†ç ", @@ -350,6 +348,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "管ç†å‘˜ä¸èƒ½å°†è‡ªå·±ç§»å‡ºç®¡ç†ç»„", "Unable to add user to group %s" : "æ— æ³•å°†ç”¨æˆ·æ·»åŠ åˆ°åˆ†ç»„ %s", "Unable to remove user from group %s" : "æ— æ³•ä»Žåˆ†ç»„ %s ä¸ç§»é™¤ç”¨æˆ·", - "For password recovery and notifications" : "ç”¨äºŽå¯†ç æ¢å¤å’Œé€šçŸ¥" + "For password recovery and notifications" : "ç”¨äºŽå¯†ç æ¢å¤å’Œé€šçŸ¥", + "Show last log in" : "显示最åŽç™»å½•" }, "nplurals=1; plural=0;"); diff --git a/settings/l10n/zh_CN.json b/settings/l10n/zh_CN.json index 5741af6d2d8..3c9fb91913e 100644 --- a/settings/l10n/zh_CN.json +++ b/settings/l10n/zh_CN.json @@ -320,11 +320,9 @@ "Subscribe to our news feed!" : "订阅我们 RSS 最新消æ¯!", "Subscribe to our newsletter!" : "订阅我们的最新消æ¯!", "Show storage location" : "显示å˜å‚¨ä½ç½®", - "Show last log in" : "显示最åŽç™»å½•", "Show user backend" : "æ˜¾ç¤ºç”¨æˆ·æ¥æº", - "Send email to new user" : "å‘é€ç”µå邮件给新用户", - "When the password of the new user is left empty an activation email with a link to set the password is send to the user" : "当新用户密ç 为空时, 一个需è¦è®¾ç½®å¯†ç 的激活邮件将会å‘é€ç»™ç”¨æˆ·.", "Show email address" : "显示邮件地å€", + "Send email to new user" : "å‘é€ç”µå邮件给新用户", "E-Mail" : "E-Mail", "Create" : "创建", "Admin Recovery Password" : "ç®¡ç†æ¢å¤å¯†ç ", @@ -348,6 +346,7 @@ "Admins can't remove themself from the admin group" : "管ç†å‘˜ä¸èƒ½å°†è‡ªå·±ç§»å‡ºç®¡ç†ç»„", "Unable to add user to group %s" : "æ— æ³•å°†ç”¨æˆ·æ·»åŠ åˆ°åˆ†ç»„ %s", "Unable to remove user from group %s" : "æ— æ³•ä»Žåˆ†ç»„ %s ä¸ç§»é™¤ç”¨æˆ·", - "For password recovery and notifications" : "ç”¨äºŽå¯†ç æ¢å¤å’Œé€šçŸ¥" + "For password recovery and notifications" : "ç”¨äºŽå¯†ç æ¢å¤å’Œé€šçŸ¥", + "Show last log in" : "显示最åŽç™»å½•" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/settings/l10n/zh_TW.js b/settings/l10n/zh_TW.js index 79266ae84b0..8d13bb42ad7 100644 --- a/settings/l10n/zh_TW.js +++ b/settings/l10n/zh_TW.js @@ -229,10 +229,9 @@ OC.L10N.register( "Name" : "å稱", "Username" : "使用者å稱", "Show storage location" : "顯示儲å˜ä½ç½®", - "Show last log in" : "顯示最近登入", "Show user backend" : "顯示用戶後å°", - "Send email to new user" : "寄é€éƒµä»¶çµ¦æ–°ç”¨æˆ¶", "Show email address" : "顯示電å郵件信箱", + "Send email to new user" : "寄é€éƒµä»¶çµ¦æ–°ç”¨æˆ¶", "E-Mail" : "é›»å郵件", "Create" : "建立", "Admin Recovery Password" : "管ç†è€…復原密碼", @@ -250,6 +249,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "管ç†è€…帳號無法從管ç†è€…群組ä¸ç§»é™¤", "Unable to add user to group %s" : "ç„¡æ³•å°‡ä½¿ç”¨è€…åŠ å…¥ç¾¤çµ„ %s", "Unable to remove user from group %s" : "無法將使用者移出群組 %s", - "For password recovery and notifications" : "用於密碼é‡è¨å’Œé€šçŸ¥" + "For password recovery and notifications" : "用於密碼é‡è¨å’Œé€šçŸ¥", + "Show last log in" : "顯示最近登入" }, "nplurals=1; plural=0;"); diff --git a/settings/l10n/zh_TW.json b/settings/l10n/zh_TW.json index 10e55e333a6..7ff754fe4e4 100644 --- a/settings/l10n/zh_TW.json +++ b/settings/l10n/zh_TW.json @@ -227,10 +227,9 @@ "Name" : "å稱", "Username" : "使用者å稱", "Show storage location" : "顯示儲å˜ä½ç½®", - "Show last log in" : "顯示最近登入", "Show user backend" : "顯示用戶後å°", - "Send email to new user" : "寄é€éƒµä»¶çµ¦æ–°ç”¨æˆ¶", "Show email address" : "顯示電å郵件信箱", + "Send email to new user" : "寄é€éƒµä»¶çµ¦æ–°ç”¨æˆ¶", "E-Mail" : "é›»å郵件", "Create" : "建立", "Admin Recovery Password" : "管ç†è€…復原密碼", @@ -248,6 +247,7 @@ "Admins can't remove themself from the admin group" : "管ç†è€…帳號無法從管ç†è€…群組ä¸ç§»é™¤", "Unable to add user to group %s" : "ç„¡æ³•å°‡ä½¿ç”¨è€…åŠ å…¥ç¾¤çµ„ %s", "Unable to remove user from group %s" : "無法將使用者移出群組 %s", - "For password recovery and notifications" : "用於密碼é‡è¨å’Œé€šçŸ¥" + "For password recovery and notifications" : "用於密碼é‡è¨å’Œé€šçŸ¥", + "Show last log in" : "顯示最近登入" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/settings/templates/admin/sharing.php b/settings/templates/admin/sharing.php index db025c8f205..9de71c58990 100644 --- a/settings/templates/admin/sharing.php +++ b/settings/templates/admin/sharing.php @@ -46,7 +46,9 @@ <input type="checkbox" name="shareapi_allow_public_upload" id="allowPublicUpload" class="checkbox" value="1" <?php if ($_['allowPublicUpload'] == 'yes') print_unescaped('checked="checked"'); ?> /> <label for="allowPublicUpload"><?php p($l->t('Allow public uploads'));?></label><br/> - + <input type="checkbox" name="shareapi_enable_link_password_by_default" id="enableLinkPasswordByDefault" class="checkbox" + value="1" <?php if ($_['enableLinkPasswordByDefault'] === 'yes') print_unescaped('checked="checked"'); ?> /> + <label for="enableLinkPasswordByDefault"><?php p($l->t('Always ask for a password'));?></label><br/> <input type="checkbox" name="shareapi_enforce_links_password" id="enforceLinkPassword" class="checkbox" value="1" <?php if ($_['enforceLinkPassword']) print_unescaped('checked="checked"'); ?> /> <label for="enforceLinkPassword"><?php p($l->t('Enforce password protection'));?></label><br/> diff --git a/settings/templates/users/main.php b/settings/templates/users/main.php index 4fd8572029a..3688f2296cd 100644 --- a/settings/templates/users/main.php +++ b/settings/templates/users/main.php @@ -52,17 +52,24 @@ translation('settings'); </label> </p> <p> + <input type="checkbox" name="UserBackend" value="UserBackend" id="CheckboxUserBackend" + class="checkbox" <?php if ($_['show_backend'] === 'true') print_unescaped('checked="checked"'); ?> /> + <label for="CheckboxUserBackend"> + <?php p($l->t('Show user backend')) ?> + </label> + </p> + <p> <input type="checkbox" name="LastLogin" value="LastLogin" id="CheckboxLastLogin" class="checkbox" <?php if ($_['show_last_login'] === 'true') print_unescaped('checked="checked"'); ?> /> <label for="CheckboxLastLogin"> - <?php p($l->t('Show last log in')) ?> + <?php p($l->t('Show last login')) ?> </label> </p> <p> - <input type="checkbox" name="UserBackend" value="UserBackend" id="CheckboxUserBackend" - class="checkbox" <?php if ($_['show_backend'] === 'true') print_unescaped('checked="checked"'); ?> /> - <label for="CheckboxUserBackend"> - <?php p($l->t('Show user backend')) ?> + <input type="checkbox" name="EmailAddress" value="EmailAddress" id="CheckboxEmailAddress" + class="checkbox" <?php if ($_['show_email'] === 'true') print_unescaped('checked="checked"'); ?> /> + <label for="CheckboxEmailAddress"> + <?php p($l->t('Show email address')) ?> </label> </p> <p> @@ -73,14 +80,7 @@ translation('settings'); </label> </p> <p class="info-text"> - <?php p($l->t('When the password of the new user is left empty an activation email with a link to set the password is send to the user')) ?> - </p> - <p> - <input type="checkbox" name="EmailAddress" value="EmailAddress" id="CheckboxEmailAddress" - class="checkbox" <?php if ($_['show_email'] === 'true') print_unescaped('checked="checked"'); ?> /> - <label for="CheckboxEmailAddress"> - <?php p($l->t('Show email address')) ?> - </label> + <?php p($l->t('When the password of a new user is left empty, an activation email with a link to set the password is sent.')) ?> </p> </div> </div> diff --git a/tests/Core/Controller/CssControllerTest.php b/tests/Core/Controller/CssControllerTest.php index 7fa358e056e..30bbc12809e 100644 --- a/tests/Core/Controller/CssControllerTest.php +++ b/tests/Core/Controller/CssControllerTest.php @@ -121,7 +121,7 @@ class CssControllerTest extends TestCase { ->willReturn($folder); $folder->method('getFile') - ->with('file.css.gz') + ->with('file.css.gzip') ->willReturn($gzipFile); $this->request->method('getHeader') diff --git a/tests/Core/Controller/JsControllerTest.php b/tests/Core/Controller/JsControllerTest.php index 8f48a7c3390..8456ba8b6e3 100644 --- a/tests/Core/Controller/JsControllerTest.php +++ b/tests/Core/Controller/JsControllerTest.php @@ -120,7 +120,7 @@ class JsControllerTest extends TestCase { ->willReturn($folder); $folder->method('getFile') - ->with('file.js.gz') + ->with('file.js.gzip') ->willReturn($gzipFile); $this->request->method('getHeader') diff --git a/tests/Core/Controller/LostControllerTest.php b/tests/Core/Controller/LostControllerTest.php index 0f9dcaead35..255c6ace359 100644 --- a/tests/Core/Controller/LostControllerTest.php +++ b/tests/Core/Controller/LostControllerTest.php @@ -76,8 +76,12 @@ class LostControllerTest extends \Test\TestCase { parent::setUp(); $this->existingUser = $this->createMock(IUser::class); - $this->existingUser->method('getEMailAddress') + $this->existingUser->expects($this->any()) + ->method('getEMailAddress') ->willReturn('test@example.com'); + $this->existingUser->expects($this->any()) + ->method('getUID') + ->willReturn('ExistingUser'); $this->config = $this->createMock(IConfig::class); $this->config->method('getSystemValue') @@ -280,11 +284,6 @@ class LostControllerTest extends \Test\TestCase { ->with('21') ->will($this->returnValue('ThisIsMaybeANotSoSecretToken!')); $this->userManager - ->expects($this->once()) - ->method('userExists') - ->with('ExistingUser') - ->will($this->returnValue(true)); - $this->userManager ->expects($this->any()) ->method('get') ->with('ExistingUser') @@ -344,17 +343,83 @@ class LostControllerTest extends \Test\TestCase { $this->assertSame($expectedResponse, $response); } - public function testEmailCantSendException() { + public function testEmailWithMailSuccessful() { $this->secureRandom ->expects($this->once()) ->method('generate') ->with('21') ->will($this->returnValue('ThisIsMaybeANotSoSecretToken!')); $this->userManager + ->expects($this->any()) + ->method('get') + ->with('test@example.com') + ->willReturn(null); + $this->userManager + ->expects($this->any()) + ->method('getByEmail') + ->with('test@example.com') + ->willReturn([$this->existingUser]); + $this->timeFactory ->expects($this->once()) - ->method('userExists') - ->with('ExistingUser') - ->will($this->returnValue(true)); + ->method('getTime') + ->will($this->returnValue(12348)); + $this->config + ->expects($this->once()) + ->method('setUserValue') + ->with('ExistingUser', 'core', 'lostpassword', 'encryptedToken'); + $this->urlGenerator + ->expects($this->once()) + ->method('linkToRouteAbsolute') + ->with('core.lost.resetform', array('userId' => 'ExistingUser', 'token' => 'ThisIsMaybeANotSoSecretToken!')) + ->will($this->returnValue('https://example.tld/index.php/lostpassword/')); + $message = $this->getMockBuilder('\OC\Mail\Message') + ->disableOriginalConstructor()->getMock(); + $message + ->expects($this->at(0)) + ->method('setTo') + ->with(['test@example.com' => 'ExistingUser']); + $message + ->expects($this->at(1)) + ->method('setSubject') + ->with(' password reset'); + $message + ->expects($this->at(2)) + ->method('setPlainBody') + ->with('Use the following link to reset your password: https://example.tld/index.php/lostpassword/'); + $message + ->expects($this->at(3)) + ->method('setFrom') + ->with(['lostpassword-noreply@localhost' => null]); + $this->mailer + ->expects($this->at(0)) + ->method('createMessage') + ->will($this->returnValue($message)); + $this->mailer + ->expects($this->at(1)) + ->method('send') + ->with($message); + + $this->config->method('getSystemValue') + ->with('secret', '') + ->willReturn('SECRET'); + + $this->crypto->method('encrypt') + ->with( + $this->equalTo('12348:ThisIsMaybeANotSoSecretToken!'), + $this->equalTo('test@example.comSECRET') + )->willReturn('encryptedToken'); + + $response = $this->lostController->email('test@example.com'); + $expectedResponse = array('status' => 'success'); + $this->assertSame($expectedResponse, $response); + } + + public function testEmailCantSendException() { + $this->secureRandom + ->expects($this->once()) + ->method('generate') + ->with('21') + ->will($this->returnValue('ThisIsMaybeANotSoSecretToken!')); $this->userManager ->expects($this->any()) ->method('get') diff --git a/tests/lib/AppFramework/Http/RequestTest.php b/tests/lib/AppFramework/Http/RequestTest.php index cc4bbee2d8d..f80bffcb480 100644 --- a/tests/lib/AppFramework/Http/RequestTest.php +++ b/tests/lib/AppFramework/Http/RequestTest.php @@ -305,7 +305,10 @@ class RequestTest extends \Test\TestCase { $vars = array( 'put' => $data, 'method' => 'PUT', - 'server' => array('CONTENT_TYPE' => 'image/png'), + 'server' => [ + 'CONTENT_TYPE' => 'image/png', + 'CONTENT_LENGTH' => strlen($data) + ], ); $request = new Request( diff --git a/tests/lib/DB/QueryBuilder/ExpressionBuilderDBTest.php b/tests/lib/DB/QueryBuilder/ExpressionBuilderDBTest.php new file mode 100644 index 00000000000..c71e83f5fd6 --- /dev/null +++ b/tests/lib/DB/QueryBuilder/ExpressionBuilderDBTest.php @@ -0,0 +1,106 @@ +<?php +/** + * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace Test\DB\QueryBuilder; + +use OC\DB\QueryBuilder\Literal; +use Test\TestCase; + +/** + * @group DB + */ +class ExpressionBuilderDBTest extends TestCase { + /** @var \Doctrine\DBAL\Connection|\OCP\IDBConnection */ + protected $connection; + + protected function setUp() { + parent::setUp(); + + $this->connection = \OC::$server->getDatabaseConnection(); + } + + public function likeProvider() { + $connection = \OC::$server->getDatabaseConnection(); + + return [ + ['foo', 'bar', false], + ['foo', 'foo', true], + ['foo', 'f%', true], + ['foo', '%o', true], + ['foo', '%', true], + ['foo', 'fo_', true], + ['foo', 'foo_', false], + ['foo', $connection->escapeLikeParameter('fo_'), false], + ['foo', $connection->escapeLikeParameter('f%'), false], + ]; + } + + /** + * @dataProvider likeProvider + * + * @param string $param1 + * @param string $param2 + * @param boolean $match + */ + public function testLike($param1, $param2, $match) { + $query = $this->connection->getQueryBuilder(); + + $query->select(new Literal('1')) + ->from('users') + ->where($query->expr()->like($query->createNamedParameter($param1), $query->createNamedParameter($param2))); + + $this->assertEquals($match, $query->execute()->fetchColumn()); + } + + public function ilikeProvider() { + $connection = \OC::$server->getDatabaseConnection(); + + return [ + ['foo', 'bar', false], + ['foo', 'foo', true], + ['foo', 'Foo', true], + ['foo', 'f%', true], + ['foo', '%o', true], + ['foo', '%', true], + ['foo', 'fo_', true], + ['foo', 'foo_', false], + ['foo', $connection->escapeLikeParameter('fo_'), false], + ['foo', $connection->escapeLikeParameter('f%'), false], + ]; + } + + /** + * @dataProvider ilikeProvider + * + * @param string $param1 + * @param string $param2 + * @param boolean $match + */ + public function testILike($param1, $param2, $match) { + $query = $this->connection->getQueryBuilder(); + + $query->select(new Literal('1')) + ->from('users') + ->where($query->expr()->iLike($query->createNamedParameter($param1), $query->createNamedParameter($param2))); + + $this->assertEquals($match, $query->execute()->fetchColumn()); + } +} diff --git a/tests/lib/DB/QueryBuilder/ExpressionBuilderTest.php b/tests/lib/DB/QueryBuilder/ExpressionBuilderTest.php index 4122f300c86..ff58b3f6e0b 100644 --- a/tests/lib/DB/QueryBuilder/ExpressionBuilderTest.php +++ b/tests/lib/DB/QueryBuilder/ExpressionBuilderTest.php @@ -352,24 +352,26 @@ class ExpressionBuilderTest extends TestCase { return [ ['eq', '5', IQueryBuilder::PARAM_STR, false, 3], ['eq', '5', IQueryBuilder::PARAM_STR, true, 1], - ['neq', '5', IQueryBuilder::PARAM_STR, false, 6], - ['neq', '5', IQueryBuilder::PARAM_STR, true, 4], + ['neq', '5', IQueryBuilder::PARAM_STR, false, 8], + ['neq', '5', IQueryBuilder::PARAM_STR, true, 6], ['lt', '5', IQueryBuilder::PARAM_STR, false, 3], ['lt', '5', IQueryBuilder::PARAM_STR, true, 1], ['lte', '5', IQueryBuilder::PARAM_STR, false, 6], ['lte', '5', IQueryBuilder::PARAM_STR, true, 4], - ['gt', '5', IQueryBuilder::PARAM_STR, false, 3], + ['gt', '5', IQueryBuilder::PARAM_STR, false, 5], ['gt', '5', IQueryBuilder::PARAM_STR, true, 1], - ['gte', '5', IQueryBuilder::PARAM_STR, false, 6], + ['gte', '5', IQueryBuilder::PARAM_STR, false, 8], ['gte', '5', IQueryBuilder::PARAM_STR, true, 4], ['like', '%5%', IQueryBuilder::PARAM_STR, false, 3], ['like', '%5%', IQueryBuilder::PARAM_STR, true, 1], - ['notLike', '%5%', IQueryBuilder::PARAM_STR, false, 6], - ['notLike', '%5%', IQueryBuilder::PARAM_STR, true, 4], + ['like', 'under_%', IQueryBuilder::PARAM_STR, false, 2], + ['like', 'under\_%', IQueryBuilder::PARAM_STR, false, 1], + ['notLike', '%5%', IQueryBuilder::PARAM_STR, false, 8], + ['notLike', '%5%', IQueryBuilder::PARAM_STR, true, 6], ['in', ['5'], IQueryBuilder::PARAM_STR_ARRAY, false, 3], ['in', ['5'], IQueryBuilder::PARAM_STR_ARRAY, true, 1], - ['notIn', ['5'], IQueryBuilder::PARAM_STR_ARRAY, false, 6], - ['notIn', ['5'], IQueryBuilder::PARAM_STR_ARRAY, true, 4], + ['notIn', ['5'], IQueryBuilder::PARAM_STR_ARRAY, false, 8], + ['notIn', ['5'], IQueryBuilder::PARAM_STR_ARRAY, true, 6], ]; } @@ -392,6 +394,8 @@ class ExpressionBuilderTest extends TestCase { $this->createConfig($appId, 7, 4); $this->createConfig($appId, 8, 5); $this->createConfig($appId, 9, 6); + $this->createConfig($appId, 10, 'under_score'); + $this->createConfig($appId, 11, 'underscore'); $query = $this->connection->getQueryBuilder(); $query->select($query->createFunction('COUNT(*) AS `count`')) diff --git a/tests/lib/DB/QueryBuilder/FunctionBuilderTest.php b/tests/lib/DB/QueryBuilder/FunctionBuilderTest.php new file mode 100644 index 00000000000..c270e105fc1 --- /dev/null +++ b/tests/lib/DB/QueryBuilder/FunctionBuilderTest.php @@ -0,0 +1,74 @@ +<?php +/** + * @author Robin Appelman <robin@icewind.nl> + * + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace Test\DB\QueryBuilder; + +use OC\DB\QueryBuilder\Literal; +use Test\TestCase; + +/** + * Class FunctionBuilderTest + * + * @group DB + * + * @package Test\DB\QueryBuilder + */ +class FunctionBuilderTest extends TestCase { + /** @var \Doctrine\DBAL\Connection|\OCP\IDBConnection */ + protected $connection; + + protected function setUp() { + parent::setUp(); + + $this->connection = \OC::$server->getDatabaseConnection(); + } + + public function testConcat() { + $query = $this->connection->getQueryBuilder(); + + $query->select($query->func()->concat($query->createNamedParameter('foo'), new Literal("'bar'"))); + + $this->assertEquals('foobar', $query->execute()->fetchColumn()); + } + + public function testMd5() { + $query = $this->connection->getQueryBuilder(); + + $query->select($query->func()->md5($query->createNamedParameter('foobar'))); + + $this->assertEquals(md5('foobar'), $query->execute()->fetchColumn()); + } + + public function testSubstring() { + $query = $this->connection->getQueryBuilder(); + + $query->select($query->func()->substring($query->createNamedParameter('foobar'), new Literal(2), $query->createNamedParameter(2))); + + $this->assertEquals('oo', $query->execute()->fetchColumn()); + } + + public function testSubstringNoLength() { + $query = $this->connection->getQueryBuilder(); + + $query->select($query->func()->substring($query->createNamedParameter('foobar'), new Literal(2))); + + $this->assertEquals('oobar', $query->execute()->fetchColumn()); + } +} diff --git a/tests/lib/Lockdown/LockdownManagerTest.php b/tests/lib/Lockdown/LockdownManagerTest.php index 4cbd9d71a5c..1d206dbf409 100644 --- a/tests/lib/Lockdown/LockdownManagerTest.php +++ b/tests/lib/Lockdown/LockdownManagerTest.php @@ -23,18 +23,29 @@ namespace Test\Lockdown; use OC\Authentication\Token\DefaultToken; use OC\Lockdown\LockdownManager; +use OCP\ISession; use Test\TestCase; class LockdownManagerTest extends TestCase { + private $sessionCallback; + + public function setUp() { + parent::setUp(); + + $this->sessionCallback = function() { + return $this->createMock(ISession::class); + }; + } + public function testCanAccessFilesystemDisabled() { - $manager = new LockdownManager(); + $manager = new LockdownManager($this->sessionCallback); $this->assertTrue($manager->canAccessFilesystem()); } public function testCanAccessFilesystemAllowed() { $token = new DefaultToken(); $token->setScope(['filesystem' => true]); - $manager = new LockdownManager(); + $manager = new LockdownManager($this->sessionCallback); $manager->setToken($token); $this->assertTrue($manager->canAccessFilesystem()); } @@ -42,7 +53,7 @@ class LockdownManagerTest extends TestCase { public function testCanAccessFilesystemNotAllowed() { $token = new DefaultToken(); $token->setScope(['filesystem' => false]); - $manager = new LockdownManager(); + $manager = new LockdownManager($this->sessionCallback); $manager->setToken($token); $this->assertFalse($manager->canAccessFilesystem()); } diff --git a/tests/lib/Security/Bruteforce/ThrottlerTest.php b/tests/lib/Security/Bruteforce/ThrottlerTest.php index 604aecd3a65..02d5b701679 100644 --- a/tests/lib/Security/Bruteforce/ThrottlerTest.php +++ b/tests/lib/Security/Bruteforce/ThrottlerTest.php @@ -40,7 +40,7 @@ class ThrottlerTest extends TestCase { private $dbConnection; /** @var ILogger */ private $logger; - /** @var IConfig */ + /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */ private $config; public function setUp() { @@ -120,4 +120,92 @@ class ThrottlerTest extends TestCase { $this->invokePrivate($this->throttler, 'getIPv6Subnet', ['2001:0db8:85a3:0000:0000:8a2e:0370:7334', 40]) ); } + + public function dataIsIPWhitelisted() { + return [ + [ + '10.10.10.10', + [ + 'whitelist_0' => '10.10.10.0/24', + ], + true, + ], + [ + '10.10.10.10', + [ + 'whitelist_0' => '192.168.0.0/16', + ], + false, + ], + [ + '10.10.10.10', + [ + 'whitelist_0' => '192.168.0.0/16', + 'whitelist_1' => '10.10.10.0/24', + ], + true, + ], + [ + 'dead:beef:cafe::1', + [ + 'whitelist_0' => '192.168.0.0/16', + 'whitelist_1' => '10.10.10.0/24', + 'whitelist_2' => 'deaf:beef:cafe:1234::/64' + ], + false, + ], + [ + 'dead:beef:cafe::1', + [ + 'whitelist_0' => '192.168.0.0/16', + 'whitelist_1' => '10.10.10.0/24', + 'whitelist_2' => 'deaf:beef::/64' + ], + false, + ], + [ + 'dead:beef:cafe::1', + [ + 'whitelist_0' => '192.168.0.0/16', + 'whitelist_1' => '10.10.10.0/24', + 'whitelist_2' => 'deaf:cafe::/8' + ], + true, + ], + [ + 'invalid', + [], + false, + ], + ]; + } + + /** + * @dataProvider dataIsIPWhitelisted + * + * @param string $ip + * @param string[] $whitelists + * @param bool $isWhiteListed + */ + public function testIsIPWhitelisted($ip, $whitelists, $isWhiteListed) { + $this->config->method('getAppKeys') + ->with($this->equalTo('bruteForce')) + ->willReturn(array_keys($whitelists)); + + $this->config->method('getAppValue') + ->will($this->returnCallback(function($app, $key, $default) use ($whitelists) { + if ($app !== 'bruteForce') { + return $default; + } + if (isset($whitelists[$key])) { + return $whitelists[$key]; + } + return $default; + })); + + $this->assertSame( + $isWhiteListed, + $this->invokePrivate($this->throttler, 'isIPWhitelisted', [$ip]) + ); + } } diff --git a/tests/lib/Settings/Admin/SharingTest.php b/tests/lib/Settings/Admin/SharingTest.php index 122bf2b6caf..0bf03559683 100644 --- a/tests/lib/Settings/Admin/SharingTest.php +++ b/tests/lib/Settings/Admin/SharingTest.php @@ -104,6 +104,11 @@ class SharingTest extends TestCase { ->method('getAppValue') ->with('core', 'shareapi_public_link_disclaimertext', null) ->willReturn('Lorem ipsum'); + $this->config + ->expects($this->at(12)) + ->method('getAppValue') + ->with('core', 'shareapi_enable_link_password_by_default', 'no') + ->willReturn('yes'); $expected = new TemplateResponse( 'settings', @@ -122,7 +127,8 @@ class SharingTest extends TestCase { 'shareEnforceExpireDate' => 'no', 'shareExcludeGroups' => false, 'shareExcludedGroupsList' => '', - 'publicShareDisclaimerText' => 'Lorem ipsum', + 'publicShareDisclaimerText' => 'Lorem ipsum', + 'enableLinkPasswordByDefault' => 'yes' ], '' ); @@ -191,6 +197,11 @@ class SharingTest extends TestCase { ->method('getAppValue') ->with('core', 'shareapi_public_link_disclaimertext', null) ->willReturn('Lorem ipsum'); + $this->config + ->expects($this->at(12)) + ->method('getAppValue') + ->with('core', 'shareapi_enable_link_password_by_default', 'no') + ->willReturn('yes'); $expected = new TemplateResponse( 'settings', @@ -209,7 +220,8 @@ class SharingTest extends TestCase { 'shareEnforceExpireDate' => 'no', 'shareExcludeGroups' => true, 'shareExcludedGroupsList' => 'NoSharers|OtherNoSharers', - 'publicShareDisclaimerText' => 'Lorem ipsum', + 'publicShareDisclaimerText' => 'Lorem ipsum', + 'enableLinkPasswordByDefault' => 'yes' ], '' ); diff --git a/tests/lib/Settings/ManagerTest.php b/tests/lib/Settings/ManagerTest.php index 2122c8b3750..497a0df9f4e 100644 --- a/tests/lib/Settings/ManagerTest.php +++ b/tests/lib/Settings/ManagerTest.php @@ -146,7 +146,7 @@ class ManagerTest extends TestCase { ['class' => \OCA\WorkflowEngine\Settings\Section::class, 'priority' => 90] ])); - $this->url->expects($this->exactly(5)) + $this->url->expects($this->exactly(6)) ->method('imagePath') ->willReturnMap([ ['settings', 'admin.svg', '1'], @@ -159,6 +159,7 @@ class ManagerTest extends TestCase { $this->assertEquals([ 0 => [new Section('server', 'Server settings', 0, '1')], 5 => [new Section('sharing', 'Sharing', 0, '2')], + 10 => [new Section('security', 'Security', 0, '3')], 45 => [new Section('encryption', 'Encryption', 0, '3')], 90 => [\OC::$server->query(\OCA\WorkflowEngine\Settings\Section::class)], 98 => [new Section('additional', 'Additional settings', 0, '4')], @@ -177,7 +178,7 @@ class ManagerTest extends TestCase { ->will($this->returnValue([ ])); - $this->url->expects($this->exactly(5)) + $this->url->expects($this->exactly(6)) ->method('imagePath') ->willReturnMap([ ['settings', 'admin.svg', '1'], @@ -190,6 +191,7 @@ class ManagerTest extends TestCase { $this->assertEquals([ 0 => [new Section('server', 'Server settings', 0, '1')], 5 => [new Section('sharing', 'Sharing', 0, '2')], + 10 => [new Section('security', 'Security', 0, '3')], 45 => [new Section('encryption', 'Encryption', 0, '3')], 98 => [new Section('additional', 'Additional settings', 0, '4')], 99 => [new Section('tips-tricks', 'Tips & tricks', 0, '5')], diff --git a/tests/lib/Template/JSCombinerTest.php b/tests/lib/Template/JSCombinerTest.php index 1e6234a062c..89bb13338c8 100644 --- a/tests/lib/Template/JSCombinerTest.php +++ b/tests/lib/Template/JSCombinerTest.php @@ -111,7 +111,7 @@ class JSCombinerTest extends \Test\TestCase { return $file; } else if ($path === 'combine.js.deps') { throw new NotFoundException(); - } else if ($path === 'combine.js.gz') { + } else if ($path === 'combine.js.gzip') { return $gzfile; } $this->fail(); @@ -148,7 +148,7 @@ class JSCombinerTest extends \Test\TestCase { return $file; } else if ($path === 'combine.js.deps') { throw new NotFoundException(); - } else if ($path === 'combine.js.gz') { + } else if ($path === 'combine.js.gzip') { return $gzfile; } $this->fail(); @@ -302,7 +302,7 @@ class JSCombinerTest extends \Test\TestCase { return $file; } else if ($filename === 'combine.js.deps') { return $depsFile; - } else if ($filename === 'combine.js.gz') { + } else if ($filename === 'combine.js.gzip') { return $gzFile; } $this->fail(); @@ -333,7 +333,7 @@ class JSCombinerTest extends \Test\TestCase { return $file; } else if ($filename === 'combine.js.deps') { return $depsFile; - } else if ($filename === 'combine.js.gz') { + } else if ($filename === 'combine.js.gzip') { return $gzFile; } $this->fail(); @@ -401,7 +401,7 @@ var b = \'world\'; return $file; } else if ($filename === 'combine.js.deps') { return $depsFile; - } else if ($filename === 'combine.js.gz') { + } else if ($filename === 'combine.js.gzip') { return $gzFile; } $this->fail(); diff --git a/tests/lib/Template/SCSSCacherTest.php b/tests/lib/Template/SCSSCacherTest.php index 887fa1ed605..24865b9ae45 100644 --- a/tests/lib/Template/SCSSCacherTest.php +++ b/tests/lib/Template/SCSSCacherTest.php @@ -81,7 +81,7 @@ class SCSSCacherTest extends \Test\TestCase { return $file; } else if ($path === 'styles.css.deps') { throw new NotFoundException(); - } else if ($path === 'styles.css.gz') { + } else if ($path === 'styles.css.gzip') { return $gzfile; } else { $this->fail(); @@ -110,7 +110,7 @@ class SCSSCacherTest extends \Test\TestCase { return $file; } else if ($path === 'styles.css.deps') { throw new NotFoundException(); - } else if ($path === 'styles.css.gz') { + } else if ($path === 'styles.css.gzip') { return $gzfile; }else { $this->fail(); @@ -228,7 +228,7 @@ class SCSSCacherTest extends \Test\TestCase { return $file; } else if ($fileName === 'styles.css.deps') { return $depsFile; - } else if ($fileName === 'styles.css.gz') { + } else if ($fileName === 'styles.css.gzip') { return $gzipFile; } throw new \Exception(); @@ -258,7 +258,7 @@ class SCSSCacherTest extends \Test\TestCase { return $file; } else if ($fileName === 'styles.css.deps') { return $depsFile; - } else if ($fileName === 'styles.css.gz') { + } else if ($fileName === 'styles.css.gzip') { return $gzipFile; } throw new \Exception(); @@ -288,7 +288,7 @@ class SCSSCacherTest extends \Test\TestCase { return $file; } else if ($fileName === 'styles-success.css.deps') { return $depsFile; - } else if ($fileName === 'styles-success.css.gz') { + } else if ($fileName === 'styles-success.css.gzip') { return $gzipFile; } throw new \Exception(); diff --git a/tests/lib/User/SessionTest.php b/tests/lib/User/SessionTest.php index 51560d78a6a..1bcc6ce3a4d 100644 --- a/tests/lib/User/SessionTest.php +++ b/tests/lib/User/SessionTest.php @@ -26,6 +26,7 @@ use OCP\IRequest; use OCP\ISession; use OCP\IUser; use OCP\IUserManager; +use OCP\Lockdown\ILockdownManager; use OCP\Security\ICrypto; use OCP\Security\ISecureRandom; @@ -50,6 +51,8 @@ class SessionTest extends \Test\TestCase { private $session; /** @var Session|\PHPUnit_Framework_MockObject_MockObject */ private $userSession; + /** @var ILockdownManager|\PHPUnit_Framework_MockObject_MockObject */ + private $lockdownManager; protected function setUp() { parent::setUp(); @@ -64,6 +67,7 @@ class SessionTest extends \Test\TestCase { $this->random = $this->createMock(ISecureRandom::class); $this->manager = $this->createMock(IUserManager::class); $this->session = $this->createMock(ISession::class); + $this->lockdownManager = $this->createMock(ILockdownManager::class); $this->userSession = $this->getMockBuilder(Session::class) ->setConstructorArgs([ $this->manager, @@ -72,6 +76,7 @@ class SessionTest extends \Test\TestCase { $this->tokenProvider, $this->config, $this->random, + $this->lockdownManager ]) ->setMethods([ 'setMagicInCookie', @@ -132,7 +137,7 @@ class SessionTest extends \Test\TestCase { ->with($expectedUser->getUID()) ->will($this->returnValue($expectedUser)); - $userSession = new \OC\User\Session($manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random); + $userSession = new \OC\User\Session($manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager); $user = $userSession->getUser(); $this->assertSame($expectedUser, $user); $this->assertSame(10000, $token->getLastCheck()); @@ -154,7 +159,7 @@ class SessionTest extends \Test\TestCase { $manager = $this->createMock(Manager::class); $userSession = $this->getMockBuilder(Session::class) - ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random]) + ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager]) ->setMethods([ 'getUser' ]) @@ -181,7 +186,7 @@ class SessionTest extends \Test\TestCase { ->method('getUID') ->will($this->returnValue('foo')); - $userSession = new \OC\User\Session($manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random); + $userSession = new \OC\User\Session($manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager); $userSession->setUser($user); } @@ -233,7 +238,7 @@ class SessionTest extends \Test\TestCase { ->will($this->returnValue($user)); $userSession = $this->getMockBuilder(Session::class) - ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random]) + ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager]) ->setMethods([ 'prepareUserLogin' ]) @@ -280,7 +285,7 @@ class SessionTest extends \Test\TestCase { ->with('foo', 'bar') ->will($this->returnValue($user)); - $userSession = new \OC\User\Session($manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random); + $userSession = new \OC\User\Session($manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager); $userSession->login('foo', 'bar'); } @@ -294,7 +299,7 @@ class SessionTest extends \Test\TestCase { ->setConstructorArgs([$this->config]) ->getMock(); $backend = $this->createMock(\Test\Util\User\Dummy::class); - $userSession = new \OC\User\Session($manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random); + $userSession = new \OC\User\Session($manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager); $user = $this->getMockBuilder(User::class)->setConstructorArgs(['foo', $backend])->getMock(); @@ -323,7 +328,7 @@ class SessionTest extends \Test\TestCase { public function testLoginNonExisting() { $session = $this->getMockBuilder(Memory::class)->setConstructorArgs([''])->getMock(); $manager = $this->createMock(Manager::class); - $userSession = new \OC\User\Session($manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random); + $userSession = new \OC\User\Session($manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager); $session->expects($this->never()) ->method('set'); @@ -349,7 +354,7 @@ class SessionTest extends \Test\TestCase { public function testLoginWithDifferentTokenLoginName() { $session = $this->getMockBuilder(Memory::class)->setConstructorArgs([''])->getMock(); $manager = $this->createMock(Manager::class); - $userSession = new \OC\User\Session($manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random); + $userSession = new \OC\User\Session($manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager); $username = 'user123'; $token = new \OC\Authentication\Token\DefaultToken(); $token->setLoginName($username); @@ -381,7 +386,7 @@ class SessionTest extends \Test\TestCase { /** @var \OC\User\Session $userSession */ $userSession = $this->getMockBuilder(Session::class) - ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random]) + ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager]) ->setMethods(['login', 'supportsCookies', 'createSessionToken', 'getUser']) ->getMock(); @@ -417,7 +422,7 @@ class SessionTest extends \Test\TestCase { /** @var Session $userSession */ $userSession = $this->getMockBuilder(Session::class) - ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random]) + ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager]) ->setMethods(['login', 'supportsCookies', 'createSessionToken', 'getUser']) ->getMock(); @@ -440,7 +445,7 @@ class SessionTest extends \Test\TestCase { /** @var \OC\User\Session $userSession */ $userSession = $this->getMockBuilder(Session::class) - ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random]) + ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager]) ->setMethods(['isTokenPassword', 'login', 'supportsCookies', 'createSessionToken', 'getUser']) ->getMock(); @@ -482,7 +487,7 @@ class SessionTest extends \Test\TestCase { /** @var \OC\User\Session $userSession */ $userSession = $this->getMockBuilder(Session::class) - ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random]) + ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager]) ->setMethods(['login', 'isTwoFactorEnforced']) ->getMock(); @@ -529,7 +534,7 @@ class SessionTest extends \Test\TestCase { $userSession = $this->getMockBuilder(Session::class) //override, otherwise tests will fail because of setcookie() ->setMethods(['setMagicInCookie', 'setLoginName']) - ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random]) + ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager]) ->getMock(); $user = $this->createMock(IUser::class); @@ -606,7 +611,7 @@ class SessionTest extends \Test\TestCase { $userSession = $this->getMockBuilder(Session::class) //override, otherwise tests will fail because of setcookie() ->setMethods(['setMagicInCookie']) - ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random]) + ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager]) ->getMock(); $user = $this->createMock(IUser::class); @@ -666,7 +671,7 @@ class SessionTest extends \Test\TestCase { $userSession = $this->getMockBuilder(Session::class) //override, otherwise tests will fail because of setcookie() ->setMethods(['setMagicInCookie']) - ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random]) + ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager]) ->getMock(); $user = $this->createMock(IUser::class); @@ -714,7 +719,7 @@ class SessionTest extends \Test\TestCase { $userSession = $this->getMockBuilder(Session::class) //override, otherwise tests will fail because of setcookie() ->setMethods(['setMagicInCookie']) - ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random]) + ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager]) ->getMock(); $token = 'goodToken'; $oldSessionId = 'sess321'; @@ -762,7 +767,7 @@ class SessionTest extends \Test\TestCase { $session = new Memory(''); $session->set('user_id', 'foo'); $userSession = $this->getMockBuilder('\OC\User\Session') - ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random]) + ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager]) ->setMethods([ 'validateSession' ]) @@ -782,7 +787,7 @@ class SessionTest extends \Test\TestCase { $manager = $this->createMock(Manager::class); $session = $this->createMock(ISession::class); $user = $this->createMock(IUser::class); - $userSession = new \OC\User\Session($manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random); + $userSession = new \OC\User\Session($manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager); $random = $this->createMock(ISecureRandom::class); $config = $this->createMock(IConfig::class); @@ -823,7 +828,7 @@ class SessionTest extends \Test\TestCase { $manager = $this->createMock(Manager::class); $session = $this->createMock(ISession::class); $user = $this->createMock(IUser::class); - $userSession = new \OC\User\Session($manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random); + $userSession = new \OC\User\Session($manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager); $random = $this->createMock(ISecureRandom::class); $config = $this->createMock(IConfig::class); @@ -867,7 +872,7 @@ class SessionTest extends \Test\TestCase { $session = $this->createMock(ISession::class); $token = $this->createMock(IToken::class); $user = $this->createMock(IUser::class); - $userSession = new \OC\User\Session($manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random); + $userSession = new \OC\User\Session($manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager); $random = $this->createMock(ISecureRandom::class); $config = $this->createMock(IConfig::class); @@ -914,7 +919,7 @@ class SessionTest extends \Test\TestCase { ->disableOriginalConstructor() ->getMock(); $session = $this->createMock(ISession::class); - $userSession = new \OC\User\Session($manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random); + $userSession = new \OC\User\Session($manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager); $request = $this->createMock(IRequest::class); $uid = 'user123'; @@ -944,7 +949,7 @@ class SessionTest extends \Test\TestCase { $user = $this->createMock(IUser::class); $userSession = $this->getMockBuilder('\OC\User\Session') ->setMethods(['logout']) - ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random]) + ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager]) ->getMock(); $request = $this->createMock(IRequest::class); @@ -973,7 +978,7 @@ class SessionTest extends \Test\TestCase { $timeFactory = $this->createMock(ITimeFactory::class); $tokenProvider = $this->createMock(IProvider::class); $userSession = $this->getMockBuilder('\OC\User\Session') - ->setConstructorArgs([$userManager, $session, $timeFactory, $tokenProvider, $this->config, $this->random]) + ->setConstructorArgs([$userManager, $session, $timeFactory, $tokenProvider, $this->config, $this->random, $this->lockdownManager]) ->setMethods(['logout']) ->getMock(); @@ -1020,7 +1025,7 @@ class SessionTest extends \Test\TestCase { $timeFactory = $this->createMock(ITimeFactory::class); $tokenProvider = $this->createMock(IProvider::class); $userSession = $this->getMockBuilder('\OC\User\Session') - ->setConstructorArgs([$userManager, $session, $timeFactory, $tokenProvider, $this->config, $this->random]) + ->setConstructorArgs([$userManager, $session, $timeFactory, $tokenProvider, $this->config, $this->random, $this->lockdownManager]) ->setMethods(['logout']) ->getMock(); @@ -1054,7 +1059,7 @@ class SessionTest extends \Test\TestCase { $session = $this->createMock(ISession::class); $timeFactory = $this->createMock(ITimeFactory::class); $tokenProvider = $this->createMock(IProvider::class); - $userSession = new \OC\User\Session($userManager, $session, $timeFactory, $tokenProvider, $this->config, $this->random); + $userSession = new \OC\User\Session($userManager, $session, $timeFactory, $tokenProvider, $this->config, $this->random, $this->lockdownManager); $password = '123456'; $sessionId = 'session1234'; @@ -1079,7 +1084,7 @@ class SessionTest extends \Test\TestCase { $session = $this->createMock(ISession::class); $timeFactory = $this->createMock(ITimeFactory::class); $tokenProvider = $this->createMock(IProvider::class); - $userSession = new \OC\User\Session($userManager, $session, $timeFactory, $tokenProvider, $this->config, $this->random); + $userSession = new \OC\User\Session($userManager, $session, $timeFactory, $tokenProvider, $this->config, $this->random, $this->lockdownManager); $session->expects($this->once()) ->method('getId') @@ -1093,7 +1098,7 @@ class SessionTest extends \Test\TestCase { $session = $this->createMock(ISession::class); $timeFactory = $this->createMock(ITimeFactory::class); $tokenProvider = $this->createMock(IProvider::class); - $userSession = new \OC\User\Session($userManager, $session, $timeFactory, $tokenProvider, $this->config, $this->random); + $userSession = new \OC\User\Session($userManager, $session, $timeFactory, $tokenProvider, $this->config, $this->random, $this->lockdownManager); $password = '123456'; $sessionId = 'session1234'; @@ -1133,7 +1138,7 @@ class SessionTest extends \Test\TestCase { $tokenProvider = new DefaultTokenProvider($mapper, $crypto, $this->config, $logger, $this->timeFactory); /** @var \OC\User\Session $userSession */ - $userSession = new Session($manager, $session, $this->timeFactory, $tokenProvider, $this->config, $this->random); + $userSession = new Session($manager, $session, $this->timeFactory, $tokenProvider, $this->config, $this->random, $this->lockdownManager); $mapper->expects($this->any()) ->method('getToken') @@ -1183,7 +1188,7 @@ class SessionTest extends \Test\TestCase { $tokenProvider = new DefaultTokenProvider($mapper, $crypto, $this->config, $logger, $this->timeFactory); /** @var \OC\User\Session $userSession */ - $userSession = new Session($manager, $session, $this->timeFactory, $tokenProvider, $this->config, $this->random); + $userSession = new Session($manager, $session, $this->timeFactory, $tokenProvider, $this->config, $this->random, $this->lockdownManager); $mapper->expects($this->any()) ->method('getToken') @@ -1271,6 +1276,7 @@ class SessionTest extends \Test\TestCase { $this->tokenProvider, $this->config, $this->random, + $this->lockdownManager ]) ->setMethods([ 'logClientIn', @@ -1320,6 +1326,7 @@ class SessionTest extends \Test\TestCase { $this->tokenProvider, $this->config, $this->random, + $this->lockdownManager ]) ->setMethods([ 'logClientIn', |