diff --git a/lib/private/l10n.php b/lib/private/l10n.php
index 6c66bee3e7975f5f2a167e225558a2fef39366b1..4e9316c333e561954b48df11eed4a65d628b651c 100644
--- a/lib/private/l10n.php
+++ b/lib/private/l10n.php
@@ -358,24 +358,15 @@ class OC_L10N implements \OCP\IL10N {
 		self::$language = $lang;
 	}
 
-
 	/**
-	 * find the best language
-	 *
-	 * @param array|string $app details below
-	 *
-	 * If $app is an array, ownCloud assumes that these are the available
-	 * languages. Otherwise ownCloud tries to find the files in the l10n
-	 * folder.
+	 * The code (en, de, ...) of the language that is used for this OC_L10N object
 	 *
-	 * If nothing works it returns 'en'
 	 * @return string language
 	 */
-	public function getLanguageCode($app=null) {
-		return self::findLanguage($app);
+	public function getLanguageCode() {
+		return $this->lang ? $this->lang : self::findLanguage();
 	}
 
-
 	/**
 	 * find the best language
 	 * @param array|string $app details below
@@ -515,7 +506,7 @@ class OC_L10N implements \OCP\IL10N {
 	 * @throws \Punic\Exception\ValueNotInList
 	 */
 	public function getDateFormat() {
-		$locale = self::findLanguage();
+		$locale = $this->getLanguageCode();
 		return Punic\Calendar::getDateFormat('short', $locale);
 	}
 
@@ -523,7 +514,7 @@ class OC_L10N implements \OCP\IL10N {
 	 * @return int
 	 */
 	public function getFirstWeekDay() {
-		$locale = self::findLanguage();
+		$locale = $this->getLanguageCode();
 		return Punic\Calendar::getFirstWeekday($locale);
 	}
 }
diff --git a/lib/private/util.php b/lib/private/util.php
index 3a0d7f653ed8f5902bfa801457ae055373a75224..4c60af881895714c47236edc1b0fecaea5ef7a60 100644
--- a/lib/private/util.php
+++ b/lib/private/util.php
@@ -396,8 +396,7 @@ class OC_Util {
 	 */
 	public static function addTranslations($application, $languageCode = null) {
 		if (is_null($languageCode)) {
-			$l = new \OC_L10N($application);
-			$languageCode = $l->getLanguageCode($application);
+			$languageCode = \OC_L10N::findLanguage($application);
 		}
 		if (!empty($application)) {
 			$path = "$application/l10n/$languageCode";
diff --git a/lib/public/il10n.php b/lib/public/il10n.php
index 2c95ddfec181f88628a9f6aa4bd73060b6809d6b..c63c18209e451bc38bc7031f153fede3c286d5f2 100644
--- a/lib/public/il10n.php
+++ b/lib/public/il10n.php
@@ -75,15 +75,9 @@ interface IL10N {
 
 
 	/**
-	 * find the best language
-	 * @param array|string $app details below
-	 * @return string language
-	 *
-	 * If $app is an array, ownCloud assumes that these are the available
-	 * languages. Otherwise ownCloud tries to find the files in the l10n
-	 * folder.
+	 * The code (en, de, ...) of the language that is used for this OC_L10N object
 	 *
-	 * If nothing works it returns 'en'
+	 * @return string language
 	 */
-	public function getLanguageCode($app=null);
+	public function getLanguageCode();
 }
diff --git a/tests/lib/l10n.php b/tests/lib/l10n.php
index 2235581add87b5f2eae619250917fb6e652a88be..0307dd459e5b7d89004619e1e3adb2a4a629615b 100644
--- a/tests/lib/l10n.php
+++ b/tests/lib/l10n.php
@@ -173,4 +173,20 @@ class Test_L10n extends \Test\TestCase {
 			array(null, null, 'en'),
 		);
 	}
+
+	public function testGetLanguageCode() {
+		$l = OC_L10N::get('lib', 'de');
+		$this->assertEquals('de', $l->getLanguageCode());
+	}
+
+	public function testFactoryGetLanguageCode() {
+		$factory = new \OC\L10N\Factory();
+		$l = $factory->get('lib', 'de');
+		$this->assertEquals('de', $l->getLanguageCode());
+	}
+
+	public function testServiceGetLanguageCode() {
+		$l = \OC::$server->getL10N('lib', 'de');
+		$this->assertEquals('de', $l->getLanguageCode());
+	}
 }