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/."