Мультиязычность D8, главная, переключатель и т.п.

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

Аватар пользователя sdm98 sdm98 7 мая 2018 в 15:51

Решился сделать первый сайт на 8. сайт будет двуязычным. и сразу грабли:
1. Хочу сделать переключатель языка EN RU. захожу в admin/config/regional/language И переименовываю. Русский язык переименовался. Английский не меняется. остаётся English. Куда копать?

2.переключатель языка не показывается, если залогиниться на сайт.

3.выбрал тему icemagic. У этой темы контент главной страницы (слайдер, тексты,... ) жёстко забит в оформление темы admin/appearance, а сайт должен быть двуязычный. как лучше поступить? посоздавать свои блоки в двух версиях EN/RU, выковырять контент из темы и раскидать по блокам? Или есть более элегантное решение?

4. имена шаблонов страниц так же как в 7 формируются? только вместо tpl twig в расширении файлов?

Комментарии

Аватар пользователя Andruxa Andruxa 7 мая 2018 в 22:43
1

sdm98 wrote:

Английский не меняется. остаётся English.

А не надо его переименовывать. Заходит на сайт англоязычный юзер и видит ссылку "Английский".
Поймет он, о чем речь, если его родной язык - английский, а русского он не знает?

Если бы вы зашли на японский сайт, было бы вам понятно, что ロシア語 - это ссылка для переключения на русский?

Аватар пользователя sdm98 sdm98 8 мая 2018 в 9:58

Вы не поняли. Мне нужно, чтобы названия языков были короткие. Не English, а EN, не Русский, а RU. Иконки тоже не подойдут. В D7 делал десятки раз. а тут глюк какой-то

Аватар пользователя Andruxa Andruxa 12 мая 2018 в 12:37

Ага, удалось воспроизвести ошибку:

  • добавил русский
  • в переводах /admin/config/regional/language/edit/ru/translate перевел Russian как Русский

и всё, в блоке Language switcher - он навсегда стал Русский, не помогло ни удаление перевода, вообще ничего.
Решилось переустановкой корного модуля Language.
Срань какая-то.

Аватар пользователя gun_dose gun_dose 8 мая 2018 в 10:37

В .theme-файле своей темы пропишите

<?php
function my_theme_preprocess_links__language_block(&$variables) {

  foreach (

$variables['links'] as $i => $link) {
    
/** @var \Drupal\language\Entity\ConfigurableLanguage $linkLanguage */
    
$linkLanguage $link['link']['#options']['language'];
    
$variables['links'][$i]['link']['#title'] = $linkLanguage->get('id');
  }
}
?>

Айдишники языков - это как раз их двухбуквенные обозначения. Если ничего не путаю, они пишутся маленькими буквами, но регистр можно поправить в css

Аватар пользователя sdm98 sdm98 8 мая 2018 в 13:42

Спасибо. не помогло. Всё равно тут /admin/config/regional/language названия языков EN и RU. А в блоке выводятся RU и English. Если с костылями, можно и JS -ом менять. Хочу понять. Это глюк D8?
С пп.3 и 4 разобрался.
По поводу того, что блок переключения языков перестаёт выводиться после входа на сайт не подскажете? Явно глюк темы. т.к. переключаю на стандартную, выводится. но куда копать не понимаю.

Аватар пользователя sdm98 sdm98 8 мая 2018 в 14:02

вместо переключателя выводится такая муть

<div class="mb-menu-vertical mb-menu-dropdown region region-langs">
    <span data-big-pipe-placeholder-id="callback=Drupal%5Cblock%5CBlockViewBuilder%3A%3AlazyBuilder&amp;args%5B0%5D=pereklucatelazyka&amp;args%5B1%5D=full&amp;args%5B2%5D&amp;token=J7xQxO5vnrJMk8lbDtvW6vtYHaSFG5PruwivvRuo-Gs"></span>
  </div>
Аватар пользователя sdm98 sdm98 10 мая 2018 в 11:25

Kaylang wrote:

sdm98 написал:

С пп.3 и 4 разобрался.

Если не секрет, как разобрались с контентом (п.3)?


в теме отключил, выдрав оттуда контент. создал свои блоки в двух языковых версиях и забросил контент в них.

Аватар пользователя sdm98 sdm98 10 мая 2018 в 11:27

gun_dose wrote:

Странно, у меня работало. Вы my_theme на машинное имя своей темы заменили?


заменял. после обеда попробую ещё раз. сейчас с выводом блока борюсь. глюк в базовой теме mbase. сейчас разбираю её и пытаюсь найти где косяк.