diff --git a/config-templates/config.php b/config-templates/config.php
index 64818e6254e35f742144f5151a44e9419e0a1530..dc63b94ed3172d6cddccbdef3b0435007e863d24 100644
--- a/config-templates/config.php
+++ b/config-templates/config.php
@@ -277,6 +277,14 @@ $config = array (
 	'language.rtl'		=> array('ar','dv','fa','ur','he'),
 	'language.default'		=> 'en',
 
+	/*
+	 * Options to override the default settings for the language cookie
+	 */
+	'language.cookie.name'		=> 'language',
+	'language.cookie.domain'		=> NULL,
+	'language.cookie.path'		=> '/',
+	'language.cookie.lifetime'		=> (60*60*24*900),
+
 	/**
 	 * Custom getLanguage function called from SimpleSAML_XHTML_Template::getLanguage().
 	 * Function should return language code of one of the available languages or NULL.
diff --git a/lib/SimpleSAML/XHTML/Template.php b/lib/SimpleSAML/XHTML/Template.php
index c7db50eb398638b77901f5f0cc8b5c2c38aa8d4f..b58af7e2135e5c8fe3f58b1235ec2ac887e12dea 100644
--- a/lib/SimpleSAML/XHTML/Template.php
+++ b/lib/SimpleSAML/XHTML/Template.php
@@ -669,9 +669,10 @@ class SimpleSAML_XHTML_Template {
 	public static function getLanguageCookie() {
 		$config = SimpleSAML_Configuration::getInstance();
 		$availableLanguages = $config->getArray('language.available', array('en'));
+		$name = $config->getString('language.cookie.name', 'language');
 
-		if (isset($_COOKIE['language'])) {
-			$language = strtolower((string)$_COOKIE['language']);
+		if (isset($_COOKIE[$name])) {
+			$language = strtolower((string)$_COOKIE[$name]);
 			if (in_array($language, $availableLanguages, TRUE)) {
 				return $language;
 			}
@@ -696,7 +697,19 @@ class SimpleSAML_XHTML_Template {
 		if (!in_array($language, $availableLanguages, TRUE) || headers_sent()) {
 			return;
 		}
-		setcookie('language', $language, time()+60*60*24*900, '/');
+
+		$name = $config->getString('language.cookie.name', 'language');
+		$domain = $config->getString('language.cookie.domain', NULL);
+		$path = $config->getString('language.cookie.path', '/');
+		$lifetime = $config->getInteger('language.cookie.lifetime', 60*60*24*900);
+
+		if ($lifetime === 0) {
+			$expire = 0;
+		} else {
+			$expire = time() + $lifetime;
+		}
+
+		setcookie($name, $language, $expire, $path, $domain);
 	}
 
 }