0

URLにロケール情報が含まれており、クライアントのAccept-Languageヘッダー(または各ページの選択ボックス)で言語が選択され、現在のページのローカライズされたURLにリダイレクトされます。デフォルトの英語URLは次のとおりです。サイトのページの http://example.com/ロケール固有のバージョンは、ロケール値が含まれています。 http://example.com/de/またはhttp://example.com/es/など国際化されたWebサイトのオフラインアプリケーションキャッシュマニフェストを提供するにはどうすればよいですか?

私はこのような状況でオフラインアプリケーションキャッシュマニフェストを指定して対処する方法についてのアドバイスをしたいと思います。オフラインページのローカライズ版をユーザーのURLに基​​づいてキャッシュすることをお勧めします。スペイン語を選択すると、スペイン語マニフェストで指定されたスペイン語のURLがダウンロードされます。

各ロケールのルートページ(例:en.manifest、es.manifest)のマニフェストファイルの名前を変更する必要がありますか。または、ユーザーが異なるロケール(および異なるサイズのマニフェストファイル)に変更した場合、同じ名前のマニフェストを各ロケールのルートURLで使用すると、そのURLを再度読み込みます。ウェブサーバーはマニフェストファイルをキャッシュしないように指定します(s))?または、ユーザーがロケールを変更した場合、JavaScript経由でロケール固有のマニフェストを明示的にロードする必要がありますか?

私は、デフォルトの英語マニフェストで指定されたURLのダウンロードを開始して、優先ロケールを選択し、新しいロケール固有マニフェストを読み込み、選択したロケールのマニフェストのURLを読み込まないようにします。

私はいくつかの検索を行っていますが、この状況に関する議論には触れていません。

答えて

1

私は、これが広範に合意されたベストプラクティスになるのに十分長い間は行っていないとは思いますが、私はあなたの質問に答えようとします。すなわち、英語のページで、ユーザーの着陸

、その後 うスペイン語を選択(再?) スペイン語マニフェストで指定されたスペイン語のURLをダウンロードしてください。

は、私は信じているが、現在あなたが両方の(例えば)en.manifestにリストされているファイルを持っているし、その後es.manifest場合、そのファイルのコピーが1つだけのブラウザに保持されることを、確認することはできません。したがって、各マニフェストにすべての共有ファイルを含めてください。そうすることで、2つのマニフェストをダウンロードするためにホームページに最初にぶつかる人を心配する必要はありません。すべての静的コンテンツにヘッダーが期限切れになっている限り、ブラウザーはappcacheを再度取得するのではなく、ローカルキャッシュから取得する必要があります。

私は、各 ロケール(例えばen.manifest、es.manifest)のルート・ページのための異なったマニフェストファイルに名前を付けるべきでしょうか?

さまざまな言語がある場合は、すべての訪問者に各言語固有のファイルをダウンロードさせることは必要ありません。したがって、このシナリオでは、各ユーザーがダウンロードする内容を細かく制御できるように、各言語ごとに別々のマニフェストを作成することをお勧めします。

または私はそれが再読み込みされる各ロケール のルートURLのマニフェストの名前と同じを使用している場合であれば異なる ロケール(およびおそらく異なるサイズのマニフェストファイルを持つページへのユーザの変更 - Webサーバー はマニフェストファイルをキャッシュしないように指定します)?

マニフェストは更新されるたびに再読み込みされます。これにより、キャッシュ全体が破棄されて再ダウンロードされます。これを回避する方法はありません。最善の方法は、マニフェストファイルを非常に頻繁に更新することではありません。

または、ユーザーがロケールを変更した場合は、 JavaScript経由でロケール固有のマニフェストを明示的に読み込む必要がありますか?私の知る限り、あなたがJavaScriptで異なるマニフェストファイル、あなたはmanifest属性によって、現在でいるページに関連した一つだけをダウンロードすることはできません承知しているよう

+0

あなたの答えに感謝します。私はロケール(es.manifest、en.manifestなど)を反映したマニフェストの名前で、各言語のマニフェストファイルを別々に作成しました。私はDjangoとテンプレートの継承を使ってマニフェストファイルを管理し、マニフェスト全体で共通のコンテンツを共有しています。 – saschwarz

関連する問題