/**
* Gets a unique language SEF string.
*
* This function checks other existing language with the same code, if they exist provides a unique SEF name.
* For instance: en-GB, en-US and en-AU will share the same SEF code by default: www.mywebsite.com/en/
* To avoid this conflict, this function creates an specific SEF in case of existing conflict:
* For example: www.mywebsite.com/en-au/
*
* @param string $itemLanguageTag Language Tag.
*
* @return string
*
* @since 3.7.0
*/
protected function getSefString($itemLanguageTag)
{
$langs = explode('-', $itemLanguageTag);
$prefixToFind = $langs[0];
$numberPrefixesFound = 0;
// Get the sef value of all current content languages.
$db = Factory::getDbo();
$query = $db->getQuery(true)->select($db->quoteName('sef'))->from($db->quoteName('#__languages'));
$db->setQuery($query);
$siteLanguages = $db->loadObjectList();
foreach ($siteLanguages as $siteLang) {
if ($siteLang->sef === $prefixToFind) {
$numberPrefixesFound++;
}
}
return $numberPrefixesFound === 0 ? $prefixToFind : strtolower($itemLanguageTag);
}