*

reflexus

  • ***
  • 130 posts
Cyrillic title and url
« on: March 17, 2018, 05:23:33 PM »
Slugs do not work for Cyrillic characters, can you fix this? With Cyrillic to Latin convert
« Last Edit: March 17, 2018, 05:28:14 PM by reflexus »

*

MB Themes

Re: Cyrillic title and url
« Reply #1 on: March 17, 2018, 08:42:14 PM »
@reflexus
There is nothing to fix as osclass routes does not ask if it is cyrilic or not. Is your server properly configured?
You could place some conversion function everywhere you see osc_route_url function in code, but I do not think it's right.
  To get fast support, we need following details: Detail description, URL to reproduce problem, Screenshots

*

reflexus

  • ***
  • 130 posts
Re: Cyrillic title and url
« Reply #2 on: March 17, 2018, 11:36:20 PM »
@reflexus
There is nothing to fix as osclass routes does not ask if it is cyrilic or not. Is your server properly configured?
You could place some conversion function everywhere you see osc_route_url function in code, but I do not think it's right.

I have did it myself, you are not right, you need to add an additional function for this in admin.js and user.js

*

MB Themes

Re: Cyrillic title and url
« Reply #3 on: March 18, 2018, 02:54:04 PM »
What function? You mean to get slug text? What you use?
Anyway this still is not enough, for authors and categories it only slugify their names.
  To get fast support, we need following details: Detail description, URL to reproduce problem, Screenshots

*

MB Themes

Re: Cyrillic title and url
« Reply #4 on: March 19, 2018, 08:21:26 AM »
I've updated plugin, used osc_sanitizeString function. Anyway I've tried to use cyrilic chars on my test domain and everything worked fine.
  To get fast support, we need following details: Detail description, URL to reproduce problem, Screenshots

*

reflexus

  • ***
  • 130 posts
Re: Cyrillic title and url
« Reply #5 on: March 19, 2018, 03:31:03 PM »
What function? You mean to get slug text? What you use?
Anyway this still is not enough, for authors and categories it only slugify their names.

for Categories and Authors you can use this function:

Code: [Select]
function blg_slug($str, $options = array()) {
  $str = mb_convert_encoding((string)$str, 'UTF-8', mb_list_encodings());

$defaults = array(
'delimiter' => '-',
'limit' => null,
'lowercase' => true,
'replacements' => array(),
'transliterate' => true,
);

// Merge options
$options = array_merge($defaults, $options);

$char_map = array(
// Latin
'À' => 'A', 'Á' => 'A', 'Â' => 'A', 'Ã' => 'A', 'Ä' => 'A', 'Å' => 'A', 'Æ' => 'AE', 'Ç' => 'C',
'È' => 'E', 'É' => 'E', 'Ê' => 'E', 'Ë' => 'E', 'Ì' => 'I', 'Í' => 'I', 'Î' => 'I', 'Ï' => 'I',
'Ð' => 'D', 'Ñ' => 'N', 'Ò' => 'O', 'Ó' => 'O', 'Ô' => 'O', 'Õ' => 'O', 'Ö' => 'O', 'Ő' => 'O',
'Ø' => 'O', 'Ù' => 'U', 'Ú' => 'U', 'Û' => 'U', 'Ü' => 'U', 'Ű' => 'U', 'Ý' => 'Y', 'Þ' => 'TH',
'ß' => 'ss',
'à' => 'a', 'á' => 'a', 'â' => 'a', 'ã' => 'a', 'ä' => 'a', 'å' => 'a', 'æ' => 'ae', 'ç' => 'c',
'è' => 'e', 'é' => 'e', 'ê' => 'e', 'ë' => 'e', 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i',
'ð' => 'd', 'ñ' => 'n', 'ò' => 'o', 'ó' => 'o', 'ô' => 'o', 'õ' => 'o', 'ö' => 'o', 'ő' => 'o',
'ø' => 'o', 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ü' => 'u', 'ű' => 'u', 'ý' => 'y', 'þ' => 'th',
'ÿ' => 'y',

// Latin symbols
'©' => '(c)',

// Greek
'Α' => 'A', 'Β' => 'B', 'Γ' => 'G', 'Δ' => 'D', 'Ε' => 'E', 'Ζ' => 'Z', 'Η' => 'H', 'Θ' => '8',
'Ι' => 'I', 'Κ' => 'K', 'Λ' => 'L', 'Μ' => 'M', 'Ν' => 'N', 'Ξ' => '3', 'Ο' => 'O', 'Π' => 'P',
'Ρ' => 'R', 'Σ' => 'S', 'Τ' => 'T', 'Υ' => 'Y', 'Φ' => 'F', 'Χ' => 'X', 'Ψ' => 'PS', 'Ω' => 'W',
'Ά' => 'A', 'Έ' => 'E', 'Ί' => 'I', 'Ό' => 'O', 'Ύ' => 'Y', 'Ή' => 'H', 'Ώ' => 'W', 'Ϊ' => 'I',
'Ϋ' => 'Y',
'α' => 'a', 'β' => 'b', 'γ' => 'g', 'δ' => 'd', 'ε' => 'e', 'ζ' => 'z', 'η' => 'h', 'θ' => '8',
'ι' => 'i', 'κ' => 'k', 'λ' => 'l', 'μ' => 'm', 'ν' => 'n', 'ξ' => '3', 'ο' => 'o', 'π' => 'p',
'ρ' => 'r', 'σ' => 's', 'τ' => 't', 'υ' => 'y', 'φ' => 'f', 'χ' => 'x', 'ψ' => 'ps', 'ω' => 'w',
'ά' => 'a', 'έ' => 'e', 'ί' => 'i', 'ό' => 'o', 'ύ' => 'y', 'ή' => 'h', 'ώ' => 'w', 'ς' => 's',
'ϊ' => 'i', 'ΰ' => 'y', 'ϋ' => 'y', 'ΐ' => 'i',

// Turkish
'Ş' => 'S', 'İ' => 'I', 'Ç' => 'C', 'Ü' => 'U', 'Ö' => 'O', 'Ğ' => 'G',
'ş' => 's', 'ı' => 'i', 'ç' => 'c', 'ü' => 'u', 'ö' => 'o', 'ğ' => 'g',

// Russian
'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D', 'Е' => 'E', 'Ё' => 'Yo', 'Ж' => 'Zh',
'З' => 'Z', 'И' => 'I', 'Й' => 'J', 'К' => 'K', 'Л' => 'L', 'М' => 'M', 'Н' => 'N', 'О' => 'O',
'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U', 'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C',
'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sh', 'Ъ' => '', 'Ы' => 'Y', 'Ь' => '', 'Э' => 'E', 'Ю' => 'Yu',
'Я' => 'Ya',
'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'yo', 'ж' => 'zh',
'з' => 'z', 'и' => 'i', 'й' => 'j', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o',
'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c',
'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sh', 'ъ' => '', 'ы' => 'y', 'ь' => '', 'э' => 'e', 'ю' => 'yu',
'я' => 'ya',

// Ukrainian
'Є' => 'Ye', 'І' => 'I', 'Ї' => 'Yi', 'Ґ' => 'G',
'є' => 'ye', 'і' => 'i', 'ї' => 'yi', 'ґ' => 'g',

// Czech
'Č' => 'C', 'Ď' => 'D', 'Ě' => 'E', 'Ň' => 'N', 'Ř' => 'R', 'Š' => 'S', 'Ť' => 'T', 'Ů' => 'U',
'Ž' => 'Z',
'č' => 'c', 'ď' => 'd', 'ě' => 'e', 'ň' => 'n', 'ř' => 'r', 'š' => 's', 'ť' => 't', 'ů' => 'u',
'ž' => 'z',

// Polish
'Ą' => 'A', 'Ć' => 'C', 'Ę' => 'e', 'Ł' => 'L', 'Ń' => 'N', 'Ó' => 'o', 'Ś' => 'S', 'Ź' => 'Z',
'Ż' => 'Z',
'ą' => 'a', 'ć' => 'c', 'ę' => 'e', 'ł' => 'l', 'ń' => 'n', 'ó' => 'o', 'ś' => 's', 'ź' => 'z',
'ż' => 'z',

// Latvian
'Ā' => 'A', 'Č' => 'C', 'Ē' => 'E', 'Ģ' => 'G', 'Ī' => 'i', 'Ķ' => 'k', 'Ļ' => 'L', 'Ņ' => 'N',
'Š' => 'S', 'Ū' => 'u', 'Ž' => 'Z',
'ā' => 'a', 'č' => 'c', 'ē' => 'e', 'ģ' => 'g', 'ī' => 'i', 'ķ' => 'k', 'ļ' => 'l', 'ņ' => 'n',
'š' => 's', 'ū' => 'u', 'ž' => 'z'
);

// Make custom replacements
$str = preg_replace(array_keys($options['replacements']), $options['replacements'], $str);

// Transliterate characters to ASCII
if ($options['transliterate']) {
$str = str_replace(array_keys($char_map), $char_map, $str);
}

// Replace non-alphanumeric characters with our delimiter
$str = preg_replace('/[^\p{L}\p{Nd}]+/u', $options['delimiter'], $str);

// Remove duplicate delimiters
$str = preg_replace('/(' . preg_quote($options['delimiter'], '/') . '){2,}/', '$1', $str);

// Truncate slug to max. characters
$str = mb_substr($str, 0, ($options['limit'] ? $options['limit'] : mb_strlen($str, 'UTF-8')), 'UTF-8');

// Remove delimiter from ends
$str = trim($str, $options['delimiter']);

return $options['lowercase'] ? mb_strtolower($str, 'UTF-8') : $str;
}

and for admin.js and user.js you need add additional javascript function to convert cyrilic or any others language strings to latin strings
« Last Edit: March 19, 2018, 03:36:34 PM by reflexus »

*

reflexus

  • ***
  • 130 posts
Re: Cyrillic title and url
« Reply #6 on: March 19, 2018, 03:37:21 PM »
I've updated plugin, used osc_sanitizeString function. Anyway I've tried to use cyrilic chars on my test domain and everything worked fine.

not work

*

MB Themes

Re: Cyrillic title and url
« Reply #7 on: March 19, 2018, 03:48:28 PM »
@reflexus
I still think it's your hosting issue, look there:
https://plugins2.abprofitrade.eu/blog/low-cost-energy-now-affordable-%D0%91%D0%B1%D0%93%D0%B3%D0%99%D0%B9%D0%A8%D1%88%D0%AE%D1%8E%D0%AF%D1%8F-b4

Cyrilic characters in URL, no issues.
  To get fast support, we need following details: Detail description, URL to reproduce problem, Screenshots

*

reflexus

  • ***
  • 130 posts
Re: Cyrillic title and url
« Reply #8 on: March 19, 2018, 05:10:43 PM »
@reflexus
I still think it's your hosting issue, look there:
https://plugins2.abprofitrade.eu/blog/low-cost-energy-now-affordable-%D0%91%D0%B1%D0%93%D0%B3%D0%99%D0%B9%D0%A8%D1%88%D0%AE%D1%8E%D0%AF%D1%8F-b4

Cyrilic characters in URL, no issues.

I did not mean Russian letters in the URL address bar, i mean converting russian or any non latin letters to latin, i make video and show what was meant, difficult to explain.

Why Cyrillic characters are bad for links, you can see your link:
https://plugins2.abprofitrade.eu/blog/low-cost-energy-now-affordable-%D0%91%D0%B1%D0%93%D0%B3%D0%99%D0%B9%D0%A8%D1%88%D0%AE%D1%8E%D0%AF%D1%8F-b4
« Last Edit: March 19, 2018, 05:13:44 PM by reflexus »

*

MB Themes

Re: Cyrillic title and url
« Reply #9 on: March 19, 2018, 08:40:47 PM »
@reflexus
It is not bad, it is url encoded and for browser or search engine it is same.
  To get fast support, we need following details: Detail description, URL to reproduce problem, Screenshots