web-dev-qa-db-ja.com

Drupal 7メニューの翻訳とURLエイリアス

Drupal7で多言語サイトを構築し、i18nとメニュー翻訳モジュールを有効にしています。メニュー項目を翻訳できますが、小さな問題が1つだけあれば問題なく機能します。

メニュー項目が内部ページ(つまり/ user)を指している場合は問題ありませんが、メニュー項目がノードを指している場合、タイトルは翻訳されますが、指定できるパスは1つだけです。

つまり:node/1である英語のページ「About us」があり、URLエイリアス/ about-usがあります。

node/18およびURLエイリアス/ magunkrolの下にこのノード「Manunkról」のハンガリー語翻訳があります。

各言語で正しいタイトルが表示され、クリックすると正しい言語バージョンが表示されます。 [〜#〜] but [〜#〜]英語のページでは、リンクに/ about-usが含まれていますHREF、ただしハンガリー語のページにはnode/1(英語版のノードパス)があります。リンクはリダイレクトされますが、これはSEOに関して理想的なソリューションではありません。各言語のHREFにURLエイリアスを表示する方法はありますか?

3
Moha

言語ごとにメニューを設定すること(他の回答で述べたように)は、問題を修正するのではなく、回避することに似ているようです。 https://drupal.org/node/2051041 で問題を作成し、パッチを添付しました。

そのパッチを使用すると、hrefが期待どおりにレンダリングされないという理由だけで、言語ごとに大量のメニュー項目を設定するという不必要な手間を省くことができます。

1
Morgan

これを行う方法は、各言語に1つずつ「固定言語」メニューを作成することです。私はこのトピックについての投稿を書きました。 D7での多言語メニューの設定

0
Bisonbleu

これに対するもう1つのアプローチは、エンティティ変換を使用し、すべてのノードに単一の言語に依存しないエイリアスを持つことです。 URLは(すべての言語で同じ)ニースではありませんが、他のすべてはうまく機能するはずです。

言語固有のエイリアスすべきは実際に機能するようですが、機能しません。結果は404になります。これはEntity Translationモジュールのバグ/既知の制限のようです。

エイリアスのデフォルトは現在の言語です。この方法を使用する場合は、すべてのエイリアスを手動で編集して「すべての言語」にリセットするか、コードを微調整してこれを自動化する方法を理解してください。

0
RomanSt