Back to LanguageAdapter class

Method getSefString

protected string
getSefString
(mixed $itemLanguageTag)
Gets a unique language SEF string.
Parameters
  • string $itemLanguageTag Language Tag.
Returns
  • string
Since
  • 3.7.0

Method getSefString - Source code

/**
 * 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);
}