diff --git a/apps/dav/l10n/.gitkeep b/apps/dav/l10n/.gitkeep
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/apps/dav/lib/CalDAV/CalDavBackend.php b/apps/dav/lib/CalDAV/CalDavBackend.php
index d742061428b2ee037711c892ec83e922c60dc2d1..07b61285eca2679bfd764b3defdda0c62f8b7f6b 100644
--- a/apps/dav/lib/CalDAV/CalDavBackend.php
+++ b/apps/dav/lib/CalDAV/CalDavBackend.php
@@ -59,6 +59,9 @@ use Sabre\VObject\Recur\EventIterator;
  */
 class CalDavBackend extends AbstractBackend implements SyncSupport, SubscriptionSupport, SchedulingSupport {
 
+	const PERSONAL_CALENDAR_URI = 'personal';
+	const PERSONAL_CALENDAR_NAME = 'Personal';
+
 	/**
 	 * We need to specify a max date, because we need to stop *somewhere*
 	 *
diff --git a/apps/dav/lib/CalDAV/Calendar.php b/apps/dav/lib/CalDAV/Calendar.php
index 3fbcd87acc09d21a861b19512905e43ed2d0ec85..fc08c9ac87a61f9788e960fe60ac15a37fbe1bef 100644
--- a/apps/dav/lib/CalDAV/Calendar.php
+++ b/apps/dav/lib/CalDAV/Calendar.php
@@ -38,6 +38,10 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable {
 		if ($this->getName() === BirthdayService::BIRTHDAY_CALENDAR_URI) {
 			$this->calendarInfo['{DAV:}displayname'] = $l10n->t('Contact birthdays');
 		}
+		if ($this->getName() === CalDavBackend::PERSONAL_CALENDAR_URI &&
+			$this->calendarInfo['{DAV:}displayname'] === CalDavBackend::PERSONAL_CALENDAR_NAME) {
+			$this->calendarInfo['{DAV:}displayname'] = $l10n->t('Personal');
+		}
 	}
 
 	/**
diff --git a/apps/dav/lib/CardDAV/AddressBook.php b/apps/dav/lib/CardDAV/AddressBook.php
index 76633511504c7548d7c2d310ff1bd304be18bd48..1c13ac00aec24cd73b89a0fe8617e41ff65a8cec 100644
--- a/apps/dav/lib/CardDAV/AddressBook.php
+++ b/apps/dav/lib/CardDAV/AddressBook.php
@@ -22,6 +22,8 @@
 namespace OCA\DAV\CardDAV;
 
 use OCA\DAV\DAV\Sharing\IShareable;
+use OCP\IL10N;
+use Sabre\CardDAV\Backend\BackendInterface;
 use Sabre\CardDAV\Card;
 use Sabre\DAV\Exception\Forbidden;
 use Sabre\DAV\Exception\NotFound;
@@ -29,6 +31,22 @@ use Sabre\DAV\PropPatch;
 
 class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable {
 
+	/**
+	 * AddressBook constructor.
+	 *
+	 * @param BackendInterface $carddavBackend
+	 * @param array $addressBookInfo
+	 * @param IL10N $l10n
+	 */
+	public function __construct(BackendInterface $carddavBackend, array $addressBookInfo, IL10N $l10n) {
+		parent::__construct($carddavBackend, $addressBookInfo);
+
+		if ($this->getName() === CardDavBackend::PERSONAL_ADDRESSBOOK_URI &&
+			$this->addressBookInfo['{DAV:}displayname'] === CardDavBackend::PERSONAL_ADDRESSBOOK_NAME) {
+			$this->addressBookInfo['{DAV:}displayname'] = $l10n->t('Contacts');
+		}
+	}
+
 	/**
 	 * Updates the list of shares.
 	 *
diff --git a/apps/dav/lib/CardDAV/AddressBookRoot.php b/apps/dav/lib/CardDAV/AddressBookRoot.php
index 41c858e35ecca895e87808f1aade0c511aed6e91..88435165a8839eaf3f44a57b93b95b95ec280415 100644
--- a/apps/dav/lib/CardDAV/AddressBookRoot.php
+++ b/apps/dav/lib/CardDAV/AddressBookRoot.php
@@ -21,8 +21,23 @@
  */
 namespace OCA\DAV\CardDAV;
 
+use OCP\IL10N;
+
 class AddressBookRoot extends \Sabre\CardDAV\AddressBookRoot {
 
+	/** @var IL10N */
+	protected $l10n;
+
+	/**
+	 * @param \Sabre\DAVACL\PrincipalBackend\BackendInterface $principalBackend
+	 * @param \Sabre\CardDAV\Backend\BackendInterface $carddavBackend
+	 * @param string $principalPrefix
+	 */
+	public function __construct(\Sabre\DAVACL\PrincipalBackend\BackendInterface $principalBackend, \Sabre\CardDAV\Backend\BackendInterface $carddavBackend, $principalPrefix = 'principals') {
+		parent::__construct($principalBackend, $carddavBackend, $principalPrefix);
+		$this->l10n = \OC::$server->getL10N('dav');
+	}
+
 	/**
 	 * This method returns a node for a principal.
 	 *
@@ -35,7 +50,7 @@ class AddressBookRoot extends \Sabre\CardDAV\AddressBookRoot {
 	 */
 	function getChildForPrincipal(array $principal) {
 
-		return new UserAddressBooks($this->carddavBackend, $principal['uri']);
+		return new UserAddressBooks($this->carddavBackend, $principal['uri'], $this->l10n);
 
 	}
 
diff --git a/apps/dav/lib/CardDAV/CardDavBackend.php b/apps/dav/lib/CardDAV/CardDavBackend.php
index 3aab2712125477ed7c16f2adb6a848920d148c18..de717a176427d8626985be6475542c6b940f22c1 100644
--- a/apps/dav/lib/CardDAV/CardDavBackend.php
+++ b/apps/dav/lib/CardDAV/CardDavBackend.php
@@ -48,6 +48,9 @@ use Symfony\Component\EventDispatcher\GenericEvent;
 
 class CardDavBackend implements BackendInterface, SyncSupport {
 
+	const PERSONAL_ADDRESSBOOK_URI = 'contacts';
+	const PERSONAL_ADDRESSBOOK_NAME = 'Contacts';
+
 	/** @var Principal */
 	private $principalBackend;
 
diff --git a/apps/dav/lib/CardDAV/ContactsManager.php b/apps/dav/lib/CardDAV/ContactsManager.php
index 3f2019d582b49d1a514276c90bbe727b7a9a9562..b2e3544b287f3059c94e2234f56f4a3400a76e11 100644
--- a/apps/dav/lib/CardDAV/ContactsManager.php
+++ b/apps/dav/lib/CardDAV/ContactsManager.php
@@ -25,19 +25,25 @@
 namespace OCA\DAV\CardDAV;
 
 use OCP\Contacts\IManager;
+use OCP\IL10N;
 use OCP\IURLGenerator;
 
 class ContactsManager {
 	/** @var CardDavBackend  */
 	private $backend;
 
+	/** @var IL10N  */
+	private $l10n;
+
 	/**
 	 * ContactsManager constructor.
 	 *
 	 * @param CardDavBackend $backend
+	 * @param IL10N $l10n
 	 */
-	public function __construct(CardDavBackend $backend) {
+	public function __construct(CardDavBackend $backend, IL10N $l10n) {
 		$this->backend = $backend;
+		$this->l10n = $l10n;
 	}
 
 	/**
@@ -59,7 +65,7 @@ class ContactsManager {
 	 */
 	private function register(IManager $cm, $addressBooks, $urlGenerator) {
 		foreach ($addressBooks as $addressBookInfo) {
-			$addressBook = new \OCA\DAV\CardDAV\AddressBook($this->backend, $addressBookInfo);
+			$addressBook = new \OCA\DAV\CardDAV\AddressBook($this->backend, $addressBookInfo, $this->l10n);
 			$cm->registerAddressBook(
 				new AddressBookImpl(
 					$addressBook,
diff --git a/apps/dav/lib/CardDAV/UserAddressBooks.php b/apps/dav/lib/CardDAV/UserAddressBooks.php
index 2ac89f302fdf2ae82314e1ac80a60b6ce4f79a86..4c7626ba42bc7a92ee60ffb330e81125ebd716c9 100644
--- a/apps/dav/lib/CardDAV/UserAddressBooks.php
+++ b/apps/dav/lib/CardDAV/UserAddressBooks.php
@@ -21,19 +21,27 @@
  */
 namespace OCA\DAV\CardDAV;
 
+use OCP\IL10N;
+
 class UserAddressBooks extends \Sabre\CardDAV\AddressBookHome {
 
+	/** @var IL10N */
+	protected $l10n;
+
 	/**
 	 * Returns a list of addressbooks
 	 *
 	 * @return array
 	 */
 	function getChildren() {
+		if ($this->l10n === null) {
+			$this->l10n = \OC::$server->getL10N('dav');
+		}
 
 		$addressBooks = $this->carddavBackend->getAddressBooksForUser($this->principalUri);
 		$objects = [];
 		foreach($addressBooks as $addressBook) {
-			$objects[] = new AddressBook($this->carddavBackend, $addressBook);
+			$objects[] = new AddressBook($this->carddavBackend, $addressBook, $this->l10n);
 		}
 		return $objects;
 
diff --git a/apps/dav/lib/HookManager.php b/apps/dav/lib/HookManager.php
index 364db19d76aa39b07075e50571bb904b7680bef3..92aa4fce7fa371de76607eb34b65c9b104954055 100644
--- a/apps/dav/lib/HookManager.php
+++ b/apps/dav/lib/HookManager.php
@@ -21,7 +21,6 @@
  */
 namespace OCA\DAV;
 
-use OCA\DAV\CalDAV\BirthdayService;
 use OCA\DAV\CalDAV\CalDavBackend;
 use OCA\DAV\CardDAV\CardDavBackend;
 use OCA\DAV\CardDAV\SyncService;
@@ -124,16 +123,18 @@ class HookManager {
 			$principal = 'principals/users/' . $user->getUID();
 			if ($this->calDav->getCalendarsForUserCount($principal) === 0) {
 				try {
-					$this->calDav->createCalendar($principal, 'personal', [
-						'{DAV:}displayname' => 'Personal']);
+					$this->calDav->createCalendar($principal, CalDavBackend::PERSONAL_CALENDAR_URI, [
+						'{DAV:}displayname' => CalDavBackend::PERSONAL_CALENDAR_NAME,
+					]);
 				} catch (\Exception $ex) {
 					\OC::$server->getLogger()->logException($ex);
 				}
 			}
 			if ($this->cardDav->getAddressBooksForUserCount($principal) === 0) {
 				try {
-					$this->cardDav->createAddressBook($principal, 'contacts', [
-						'{DAV:}displayname' => 'Contacts']);
+					$this->cardDav->createAddressBook($principal, CardDavBackend::PERSONAL_ADDRESSBOOK_URI, [
+						'{DAV:}displayname' => CardDavBackend::PERSONAL_ADDRESSBOOK_NAME,
+					]);
 				} catch (\Exception $ex) {
 					\OC::$server->getLogger()->logException($ex);
 				}
diff --git a/apps/dav/tests/unit/CardDAV/AddressBookTest.php b/apps/dav/tests/unit/CardDAV/AddressBookTest.php
index 8a608e277e2a198ea9a16215a8e36e1a87863cf5..22992d564f6275610987742ebfcdd869d5a1f40e 100644
--- a/apps/dav/tests/unit/CardDAV/AddressBookTest.php
+++ b/apps/dav/tests/unit/CardDAV/AddressBookTest.php
@@ -25,6 +25,7 @@ namespace OCA\DAV\Tests\unit\CardDAV;
 
 use OCA\DAV\CardDAV\AddressBook;
 use OCA\DAV\CardDAV\CardDavBackend;
+use OCP\IL10N;
 use Sabre\DAV\PropPatch;
 use Test\TestCase;
 
@@ -40,9 +41,11 @@ class AddressBookTest extends TestCase {
 		$calendarInfo = [
 			'{http://owncloud.org/ns}owner-principal' => 'user1',
 			'principaluri' => 'user2',
-			'id' => 666
+			'id' => 666,
+			'uri' => 'default',
 		];
-		$c = new AddressBook($backend, $calendarInfo);
+		$l = $this->createMock(IL10N::class);
+		$c = new AddressBook($backend, $calendarInfo, $l);
 		$c->delete();
 	}
 
@@ -59,9 +62,11 @@ class AddressBookTest extends TestCase {
 		$calendarInfo = [
 			'{http://owncloud.org/ns}owner-principal' => 'user1',
 			'principaluri' => 'user2',
-			'id' => 666
+			'id' => 666,
+			'uri' => 'default',
 		];
-		$c = new AddressBook($backend, $calendarInfo);
+		$l = $this->createMock(IL10N::class);
+		$c = new AddressBook($backend, $calendarInfo, $l);
 		$c->delete();
 	}
 
@@ -74,9 +79,11 @@ class AddressBookTest extends TestCase {
 		$calendarInfo = [
 			'{http://owncloud.org/ns}owner-principal' => 'user1',
 			'principaluri' => 'user2',
-			'id' => 666
+			'id' => 666,
+			'uri' => 'default',
 		];
-		$c = new AddressBook($backend, $calendarInfo);
+		$l = $this->createMock(IL10N::class);
+		$c = new AddressBook($backend, $calendarInfo, $l);
 		$c->propPatch(new PropPatch([]));
 	}
 
@@ -98,7 +105,8 @@ class AddressBookTest extends TestCase {
 		if ($hasOwnerSet) {
 			$calendarInfo['{http://owncloud.org/ns}owner-principal'] = 'user1';
 		}
-		$c = new AddressBook($backend, $calendarInfo);
+		$l = $this->createMock(IL10N::class);
+		$c = new AddressBook($backend, $calendarInfo, $l);
 		$acl = $c->getACL();
 		$childAcl = $c->getChildACL();
 
diff --git a/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php b/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php
index cf5972f79bf56b9f097cbc032315c80973a9652d..890b70d6afa7f6ce2265c135fa09725c2cad4a4d 100644
--- a/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php
+++ b/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php
@@ -33,6 +33,7 @@ use OCA\DAV\CardDAV\CardDavBackend;
 use OCA\DAV\Connector\Sabre\Principal;
 use OCP\DB\QueryBuilder\IQueryBuilder;
 use OCP\IDBConnection;
+use OCP\IL10N;
 use Sabre\DAV\PropPatch;
 use Sabre\VObject\Component\VCard;
 use Sabre\VObject\Property\Text;
@@ -146,7 +147,8 @@ class CardDavBackendTest extends TestCase {
 		$this->backend->createAddressBook(self::UNIT_TEST_USER, 'Example', []);
 		$books = $this->backend->getAddressBooksForUser(self::UNIT_TEST_USER);
 		$this->assertEquals(1, count($books));
-		$addressBook = new AddressBook($this->backend, $books[0]);
+		$l = $this->createMock(IL10N::class);
+		$addressBook = new AddressBook($this->backend, $books[0], $l);
 		$this->backend->updateShares($addressBook, [
 			[
 				'href' => 'principal:' . self::UNIT_TEST_USER1,
@@ -329,7 +331,8 @@ class CardDavBackendTest extends TestCase {
 		$books = $this->backend->getAddressBooksForUser(self::UNIT_TEST_USER);
 		$this->assertEquals(1, count($books));
 
-		$exampleBook = new AddressBook($this->backend, $books[0]);
+		$l = $this->createMock(IL10N::class);
+		$exampleBook = new AddressBook($this->backend, $books[0], $l);
 		$this->backend->updateShares($exampleBook, [['href' => 'principal:principals/best-friend']], []);
 
 		$shares = $this->backend->getShares($exampleBook->getResourceId());
diff --git a/apps/dav/tests/unit/CardDAV/ContactsManagerTest.php b/apps/dav/tests/unit/CardDAV/ContactsManagerTest.php
index 6859d0686df0ab54ba21284c63a1b64a086edc0c..062ef72dbf068fb5f6d67dd63d8b5c6e68ee2710 100644
--- a/apps/dav/tests/unit/CardDAV/ContactsManagerTest.php
+++ b/apps/dav/tests/unit/CardDAV/ContactsManagerTest.php
@@ -27,6 +27,7 @@ namespace OCA\DAV\Tests\unit\CardDAV;
 use OCA\DAV\CardDAV\CardDavBackend;
 use OCA\DAV\CardDAV\ContactsManager;
 use OCP\Contacts\IManager;
+use OCP\IL10N;
 use Test\TestCase;
 
 class ContactsManagerTest extends TestCase {
@@ -38,10 +39,11 @@ class ContactsManagerTest extends TestCase {
 		/** @var CardDavBackend | \PHPUnit_Framework_MockObject_MockObject $backEnd */
 		$backEnd = $this->getMockBuilder('OCA\DAV\CardDAV\CardDavBackend')->disableOriginalConstructor()->getMock();
 		$backEnd->method('getAddressBooksForUser')->willReturn([
-				[]
+				['uri' => 'default'],
 			]);
 
-		$app = new ContactsManager($backEnd);
+		$l = $this->createMock(IL10N::class);
+		$app = new ContactsManager($backEnd, $l);
 		$app->setupContactsProvider($cm, 'user01', $urlGenerator);
 	}
 }
diff --git a/l10n/.tx/config b/l10n/.tx/config
index 6f489f031d58a250bcd243c2d8dec02606fffc18..3554cf6954b22417e13a2d0015c52dcace08ac3a 100644
--- a/l10n/.tx/config
+++ b/l10n/.tx/config
@@ -26,6 +26,12 @@ source_file = templates/lib.pot
 source_lang = en
 type = PO
 
+[nextcloud.dav]
+file_filter = <lang>/dav.po
+source_file = templates/dav.pot
+source_lang = en
+type = PO
+
 [nextcloud.files_encryption]
 file_filter = <lang>/encryption.po
 source_file = templates/encryption.pot