Многоязычный сайт Drupal 7: URL каждого узла дублируется на всех языках - PullRequest
0 голосов
/ 24 октября 2018

У меня есть многоязычный сайт Drupal 7 с 3 языками: английским, арабским и китайским.

Все это работает хорошо, но я только что заметил, что у непереведенных страниц есть дублированный URL для каждогоlanguage.

Например, скажем, у меня есть www.example.com/node/12 (язык по умолчанию = английский).Этот узел не имеет перевода.

Однако www.example.com/ar/node/12 и www.example.com/zh/node/12 существуют и указывают на английскую страницу.Они даже индексируются в Google.

Как я могу заставить эти URL отображать "Страница не найдена" (что должно быть ожидаемым поведением)?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Ну, в конце концов, я решил это с помощью некоторого пользовательского кода в hook_init:

$lang_name = $language->language ;
if ($lang_name == "ar" || $lang_name == "zh-hans") {
    $has_translation = false;
    if ($is_node) {
      $translation_array = translation_node_get_translations($node->tnid);
      $has_translation = isset($translation_array[$lang_name]);
    }
    if (!$has_translation) {
      $path = drupal_get_path_alias(current_path());
      $installed_languages = language_list();
      $en = $installed_languages["en"];
      drupal_goto($path, array('language' => $en), 301);
    }
  }

Так что, в основном, на каждой странице я проверяю, не находим ли мы язык, отличный от английского (что означает, что мыВы находитесь в пути, начинающемся с / ar или / zh).Если это так, и если мы находимся на узле, я проверяю, существует ли существующий перевод для этого узла и этого языка.Если это так, мы ничего не делаем, но если нет, мы перенаправляем на путь по умолчанию (без префикса языка).

0 голосов
/ 25 октября 2018

Существует другой способ перевода вашего контента, вы можете использовать Модуль перевода сущностей .С помощью этого модуля вы можете сказать, что ваш контент не полностью переводим, но есть только некоторые поля в нем (или все, если все переводимые).В этой системе у вас есть только один узел для каждого языка, и это лучше, если вы перейдете к «ar / node / 12», узел будет по-арабски, если вы перейдете к «zh / node / 12».", узел будет на китайском языке.И вообще это лучше, потому что есть некоторые поля, которые не нужно переводить, потому что они одинаковы на каждом языке, например, ссылка на сущность, адрес и т. Д.

Не стесняйтесь, если у вас есть другиевопрос.

...