中国語のコンテンツが90%、英語が10%のサイトがあります。
したがって、クライアントの要件は、英語で記事を表示する場合、その周りのすべてが中国語のままであることです。ブロック、メニューなど
a)言語プレフィックスを有効にする
これにより、英語の記事にen/[node:title]
が設定されます。しかし、メニューやその他の場所のすべてのURLに追加されるため、問題が発生します。したがって、それらは正しくないen/categories/CHINESE-CHARACTERS
のようになり、コンテンツは表示されません。
したがって、英語の記事のpathautoで、具体的に[node:title]
を指定して試しました。それでもen
が前に付きます。
b)言語プレフィックスを無効にします。
これで私のリンクはすべて問題ありません。しかし、英語の記事はnode/[nid]
になりました。この場合、URLエイリアスが機能していないようです。この場合、URLエイリアスだけを機能させることができれば、それも素晴らしいことです。
私の悲惨さに対するどんな解決も歓迎します。
URLの言語接頭辞を無効にすると、エイリアスが実際にデフォルト以外の言語のノードから消えます。その解決策は簡単ですが、Pathautoのhook_pathauto_alias_alter()
を使用してコードで実行する必要があります。
基本的にあなたがする必要があるのは:
function yourcustommodule_pathauto_alias_alter(&$alias, array &$context) {
// Force all aliases to be saved as language neutral.
$context['language'] = LANGUAGE_NONE;
}
このようにして、保存されたエイリアス(ノードではない!)の言語が常にund
になるようにします。つまり、すべての言語のノードで表示されます。
注:既存のエイリアスの場合、ノードを再保存するだけでは不十分です。最初にエイリアスを削除してから、再作成する必要があります。多くの場合、最も簡単なのは、Pathautoの構成インターフェイスを介して一括で行うことです。最初にすべてのパスを削除してから、それらを一括再作成します。
詳細については、 https://www.drupal.org/node/1234924 を参照してください
これは古い質問ですが、将来の読者のために Pathauto i18n module を参照することをお勧めします。モジュールページから:
ご存知のように、デフォルトでは、Pathautoは1つの言語に対してのみエイリアスを作成するか、すべての言語に対して1つのエイリアスを作成します。このモジュールは、各言語のエイリアスを作成する機能を提供します。また、このモジュールは、フィールド翻訳を使用していて、node/nidとは異なるパスを持つすべての言語でノードを表示したい場合に役立ちます。
例
Pathauto_i18nなしでノードを作成する場合:英語のエイリアス:en/articles/first_article Italianoエイリアス:存在しないドイツ語のエイリアス:存在しない
Pathauto_i18nでノードを作成する場合:英語のエイリアス:en/articles/first_article Italianoエイリアス:it/articolo/first_articleドイツ語のエイリアス:de/artikel/first_article
分類法とユーザーについても同じです。
このモジュールには、3つのサブモジュールpathauto_i18n_node、pathauto_i18n_user、pathauto_i18n_taxonomyが含まれており、エンティティごとに個別の機能を有効にできます。
使い方
- ノードの多言語サポートを有効にする(ノードにのみ必要)
- ページadmin/config/search/path/patternsでエイリアスパターンを構成する
- 「他の言語の自動URLエイリアスを生成する」オプションでエンティティを作成する
Pathauto Persistent State モジュールを試してください。プロジェクトページの詳細:
Pathautoは、ノードのエイリアスを自動的に継続できるようにする必要があるかどうかを覚えておくことをお勧めしますが、場合によっては、[自動エイリアス]チェックボックスをクリックしたかどうかを本当に覚えておく必要があります。それをデータベースに保存しましょう!
多言語設定の処理に問題があるため、pathautoのように見えます。モジュールは、これらの設定を「忘れる」のを防ぎます。