Почему 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, где это необходимо. Или вы можете сделать транслитерацию другим способом.

Другие вопросы по тегам