Почему Inflector::slug в Yii2 генерирует неверную латинскую строку из кириллицы?
Inflector::slug
в Yii2
генерирует неверную строку из кириллицы.
Пример: автоматизация
-> avtomatizacia
, но это должно быть avtomatizaciya
; зачислить
-> zacislit
, но это должно быть zachislit
, Как это исправить?
Я использую это для SEO URL. Может ли это повлиять, если поисковые системы не распознают правильное ключевое слово, чтобы улучшить результаты SEO для моего сайта?
1 ответ
Решение
Потому что он использует ISO 9 для обработки кириллицы и, очевидно, его версию ISO 9:1995. Теперь, когда я положил:
echo \yii\helpers\Inflector::transliterate('автоматизация', 'Cyrillic; Any-Latin');
echo yii\helpers\Inflector::transliterate('зачислить', $a);
Я получил:
avtomatizaciâ
začislitʹ
Как в ISO 9:1995. Slug метод выполняет преобразование в символ ASCII в charcter и поэтому, например, č изменяется на c.
Вы все еще можете делать, как хотите, просто str-replace, где это необходимо. Или вы можете сделать транслитерацию другим способом.