diff --git a/administrator/components/com_languages/models/language.php b/administrator/components/com_languages/models/language.php
index 4155f21449e9b..355dc969a2101 100644
--- a/administrator/components/com_languages/models/language.php
+++ b/administrator/components/com_languages/models/language.php
@@ -190,6 +190,15 @@ public function save($data)
$spaces = array('/\xE3\x80\x80/', ' ');
$data['lang_code'] = str_replace($spaces, '', $data['lang_code']);
+
+ // Prevent saving an incorrect language tag
+ if (!preg_match('#\b([a-z]{2,3})[-]([A-Z]{2})\b#', $data['lang_code']))
+ {
+ $this->setError(JText::_('COM_LANGUAGES_ERROR_LANG_TAG'));
+
+ return false;
+ }
+
$data['sef'] = str_replace($spaces, '', $data['sef']);
$data['sef'] = JApplicationHelper::stringURLSafe($data['sef']);
diff --git a/administrator/language/en-GB/en-GB.com_languages.ini b/administrator/language/en-GB/en-GB.com_languages.ini
index b6040a750d913..808135ae5e3d7 100644
--- a/administrator/language/en-GB/en-GB.com_languages.ini
+++ b/administrator/language/en-GB/en-GB.com_languages.ini
@@ -7,6 +7,7 @@ COM_LANGUAGES="Language Manager"
COM_LANGUAGES_CONFIGURATION="Language Manager Options"
COM_LANGUAGES_ERR_DELETE="Select a language to delete"
COM_LANGUAGES_ERR_NO_LANGUAGE_SELECTED="No language selected."
+COM_LANGUAGES_ERROR_LANG_TAG="
The Language Tag should contain 2 or 3 lowercase letters corresponding to the ISO language, a dash and 2 uppercase letters corresponding to the ISO country code.
This should be the exact prefix used for the language installed or to be installed. Example: en-GB, srp-ME."
COM_LANGUAGES_ERR_PUBLISH="Select a language to publish."
COM_LANGUAGES_FIELD_DESCRIPTION_DESC="Enter a description for the language."
COM_LANGUAGES_FIELD_IMAGE_DESC="Prefix of the image file for this language when using the "Use image flags" Language Switcher basic option. Example: if 'en' is chosen, then the image will be en.gif. Images and CSS for this module are in media/mod_languages/."