3

多地域および多言語の Web サイトを作成する必要があります。例えば:

多言語の場合、django-cmsi18n_patternsは非常にうまく処理します。しかし、django サイト フレームワークを使用してマルチリージョン サポートを追加しようとすると、期待どおりに動作しません:(。サブドメインでサイトを追加します: mysite.com/au 、 mysite.com/vn、mysite.com/us。 -cms 管理ページ サイトにコンテンツを追加しましたが、サイトに合わせて URL を設定する方法がわかりません。

そして、私はしたいのですがhttp://mysite.com/<region>/<language>/i18n_patternsは のような URL を強制しているようhttp://mysite.com/<language>/<region>/です。こちらも変更方法

助けてください

4

2 に答える 2

3

あなたの URL スキームがどれほど柔軟かはわかりませんが、次のような場合はどうでしょうか。

標準の django CMS i18n URL ルールを使用します (つまり、yoursite.com/ja/ と yoursite.com/en/ になります)。

次に、「au」と「jp」の 2 つのページを作成します。ホームページを 2 つのページのいずれかにリダイレクトします (または、ミドルウェアなどでそのためのよりスマートなロジックを記述します)。これら 2 つのサブツリーに地域のコンテンツを保持します。

「au」サブツリーのページを日本語に翻訳しないでください。

于 2013-05-28T13:44:38.793 に答える
1

の独自のコピーを作成することで作成できますi18n_patterns

したがって、定義により:

URL パターンの言語プレフィックス

i18n_patterns(*urls, prefix_default_language=True)[source]

この関数はルート URLconf で使用でき、Django は現在アクティブな言語コードを i18n_patterns() 内で定義されたすべての URL パターンに自動的に追加します。

これはテンプレート内で作成された例ですが、実装に必要な変数/オブジェクトは同じです。

テンプレートでのリバース

ローカライズされた URL がテンプレートで逆になった場合、常に現在の言語が使用されます。別の言語の URL にリンクするには、言語テンプレート タグを使用します。同封のテンプレートセクションで指定された言語を有効にします。

{% load i18n %}

{% get_available_languages as languages %}

{% trans "View this category in:" %}
{% for lang_code, lang_name in languages %}
    {% language lang_code %}
    <a href="{% url 'category' slug=category.slug %}">{{ lang_name }}</a>
    {% endlanguage %}
{% endfor %}

language タグは、唯一の引数として言語コードを想定しています。

参照: Django ドキュメント - i18n/translation

于 2018-04-06T11:52:32.353 に答える