Ну, в конце концов, я решил это с помощью некоторого пользовательского кода в 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).Если это так, и если мы находимся на узле, я проверяю, существует ли существующий перевод для этого узла и этого языка.Если это так, мы ничего не делаем, но если нет, мы перенаправляем на путь по умолчанию (без префикса языка).