Как изменить стандартную транслитерацию буквы в drupal 9?

Главные вкладки

Аватар пользователя NikolaiT NikolaiT 30 июля 2021 в 21:44

Создан материал, который привязан к термину таксономии. Поскольку термины представляют собой буквы алфавита, то появляется проблема с буквами Е и Э: адрес у первой - "e", у второй - "e-0". Таким образом, при создании материала и привязке его к термину Э, в адресе у него указывается ссылка на "e".

Может кто сталкивался с подобным: с необходимостью подправить букву транслитерации, и где именно лежит сей файл.

Вот здесь нашел обсуждение нечто похожего, но без конечного решения.

Комментарии

Аватар пользователя ivnish ivnish 31 июля 2021 в 12:14

Хук hook_transliteration_overrides_alter пробовали?

Пример:

<?php
function MYMODULE_transliteration_overrides_alter(&$overrides$langcode) {

  

// Provide special overrides for German for a custom site.
  
if ($langcode == 'de') {

    

// The core-provided transliteration of Ä is Ae, but we want just A.
    
$overrides[0xc4] = 'A';
  }
}
?>
Аватар пользователя NikolaiT NikolaiT 1 августа 2021 в 13:49

Не пробовал, т.к. хз какая переменная [0xc4] отвечает за букву Э.

ivnish wrote: Хук hook_transliteration_overrides_alter пробовали?

Пример: ...

Не пробовал, т.к. хз какая переменная [0xc4] отвечает за букву Э.

Аватар пользователя NikolaiT NikolaiT 1 августа 2021 в 14:04

VVS wrote: В D6 можно было так.

Пытался в модулях ядра найти файлы с библиотеками:
..\vendor\symfony\polyfill-iconv\Resources\charset\много фалов типа from.windows-1251.php с кодировками
и
..\core\lib\Drupal\Component\Transliteration\data\много фалов типа x6d.php
есть там файлы типа da.php, de.php, eo.php, kg.php, uk.php, а русского (ru.php) нет.
В общем и там пытался найти букву Э, находил, но там только какие-то кракозябры.

Аватар пользователя NikolaiT NikolaiT 1 августа 2021 в 14:25

NikolaiT wrote: Не пробовал, т.к. хз какая переменная [0xc4] отвечает за букву Э.

Нашел на Википедии кирилицу в юникоде:
[042D] - Э
[044D] - э

попробовал хук изменить в
\core\lib\Drupal\Core\Language\language.api.php

<?php
function hook_transliteration_overrides_alter(&$overrides$langcode) {
  
// Provide special overrides for German for a custom site.
  
if ($langcode == 'en') {
    
// The core-provided transliteration of Ä is Ae, but we want just A.
    
$overrides[042D] = 'eh';
  }
}
?>

Ничего не изменилось