Как мне получить переведенную метку для определения базового поля?
Как упоминалось здесь и здесь , существует (сложный) способ получить переведенные метки для полей пакетов.
use Drupal\field\Entity\FieldConfig;
// Override language before loading field configuration.
$language = \Drupal::languageManager()->getLanguage('fr');
\Drupal::languageManager()->setConfigOverrideLanguage($language);
// $entity_type, $bundle, $field.
$field_info = FieldConfig::loadByName('entity_type', 'bundle', 'myField');
$label = $field_info->getLabel();
Однако я не могу найти способ, как добиться этого для базовых полей. Взлом, подобный поставке (любого) пакета, также не приводит к успеху.
2
Author: informatik-handwerk.de, 2020-03-01
1 answers
Существует два возможных метода перевода базового поля: перевод интерфейса и перевод конфигурации.
Базовые поля определяются в коде и переводятся с помощью t(), который получает переводимую строку из таблицы перевода основного интерфейса.
$translatableMarkup = t($label, [], ["langcode" => $langcode]);
//optionally, render to string
$translatedLabel = $translatableMarkup->render();
Если переопределение базового поля существует в конфигурации, то оно содержит переводимую метку:
// Override language before loading field configuration.
$language = \Drupal::languageManager()->getLanguage('fr');
\Drupal::languageManager()->setConfigOverrideLanguage($language);
$field_override = BaseFieldOverride::loadByName('entity_type', 'bundle', 'myField');
if ($field_override) {
$label = $field_override->getLabel();
}
3
Author: 4k4, 2020-03-01 15:41:28