web-dev-qa-db-ja.com

カスタム言語交渉モジュールが機能しない

標準のプレフィックスではなく、言語のサフィックス(-engまたは-fraの形式)を使用できるようにするカスタムモジュールを作成しています。

言語の構成済みのプレフィックスを使用しており、いくつかの機能を備えています。

私はhook_language_negotiation_infoを実装し、言語セレクター、スイッチャー、リライターを配置しています。

メニューやその他の場所に印刷されたときにURLがサフィックスで更新されないことを除いて、サフィックスが付いたパスは機能します。

関数にdsm()呼び出しを配置することでリライタコールバックが呼び出されていることを確認し、「node/45」を取得し、エイリアスに基づいて「page/45-eng」を返しているようです。そのエイリアスパスは機能しますが、 "node/45"へのURLは "page/45"を返します

function custom_lang_language_negotiation_info() {
 return array(
    'custom_language_provider' => array(
      'callbacks' => array(
        'language' => 'custom_lang_language_getter',
        'switcher' => 'custom_lang_language_switcher_url',
        'url_rewrite' => 'custom_lang_url_rewriter',
      ),
      'file' => drupal_get_path('module', 'custom_lang') . '/custom_lang.inc',
      'weight' => -10,
      'types' => array(LANGUAGE_TYPE_CONTENT, LANGUAGE_TYPE_INTERFACE, LANGUAGE_TYPE_URL),
      'name' => t('Custom path suffix'),
      'description' => t('Determine the language from the URL suffix.'),
      'cache' => 0,
    ),
  );
}

私が試すことができる考えや何か?

URLの生成方法に何か足りない、またはパスがどこかに戻されている可能性があります。

4
Eric Goodwin

私はymlファイルで構成を行いました。この解決策を試してください

https://www.drupal.org/node/2775809#comment-1150228

それは私のために働いた。

1
Carlos